From 8010e6b0690df58ac7ed6f45b0f9dcbb4c6106aa Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Thu, 5 Sep 2024 01:24:57 -0400 Subject: [PATCH] Feature/update dockerfile (#6) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions --- .air.toml | 72 - .cz.toml | 2 +- .github/workflows/auto-bump.yml | 26 - .github/workflows/buf-publish.yml | 2 +- .github/workflows/docker-release.yml | 2 +- .github/workflows/docker-vm-release.yml | 48 + ...{release-binary.yml => run-goreleaser.yml} | 11 +- .github/workflows/tag-on-merge.yml | 62 + .gitignore | 1 + CHANGELOG.md | 114 + Dockerfile | 18 +- Makefile | 46 +- README.md | 28 +- api/did/module/v1/module.pulsar.go | 48 +- api/did/v1/accounts.pulsar.go | 2 +- api/did/v1/constants.pulsar.go | 727 ++ api/did/v1/genesis.pulsar.go | 6283 +++++++++++------ api/did/v1/models.pulsar.go | 4705 +++++++++--- api/did/v1/query.pulsar.go | 4988 ++++--------- api/did/v1/query_grpc.pb.go | 138 +- api/did/v1/state.cosmos_orm.go | 545 +- api/did/v1/state.pulsar.go | 1339 +++- api/did/v1/tx.pulsar.go | 3941 ++++++++--- api/did/v1/tx_grpc.pb.go | 70 +- api/oracle/module/v1/module.pulsar.go | 48 +- api/oracle/v1/genesis.pulsar.go | 2 +- api/oracle/v1/query.pulsar.go | 2 +- api/oracle/v1/tx.pulsar.go | 2 +- app/app.go | 12 +- app/decorators/msg_filter_test.go | 4 +- app/encoding.go | 2 +- app/local.go | 5 + app/upgrades.go | 4 +- app/upgrades/noop/upgrades.go | 2 +- chains.yaml | 9 +- client/go.mod | 3 - cmd/sonrd/commands.go | 2 +- cmd/sonrd/main.go | 2 +- cmd/sonrd/root.go | 4 +- cmd/sonrd/testnet.go | 2 +- cmd/vault/main.go | 104 + devbox.json | 22 +- docker-compose.yaml | 2 +- go.mod | 50 +- go.sum | 80 +- internal/db/db.go | 174 + internal/db/enums.go | 36 + internal/db/options.go | 83 + internal/db/queries.go | 79 + internal/db/tables.go | 104 + internal/files/assemble.go | 63 + internal/files/embed.go | 58 + internal/files/sw.templ | 32 + internal/files/sw_templ.go | 74 + internal/files/vault.wasm | Bin 0 -> 5362794 bytes internal/ipfs/base.go | 88 + internal/ipfs/ipfs.go | 173 + internal/ipfs/vfs.go | 119 + new.Dockerfile | 15 - proto/buf.gen.pulsar.yaml | 2 +- proto/buf.yaml | 2 +- proto/did/module/v1/module.proto | 4 +- proto/did/v1/accounts.proto | 2 +- proto/did/v1/constants.proto | 101 + proto/did/v1/genesis.proto | 163 +- proto/did/v1/models.proto | 69 +- proto/did/v1/query.proto | 114 +- proto/did/v1/state.proto | 112 +- proto/did/v1/tx.proto | 188 +- proto/oracle/module/v1/module.proto | 4 +- proto/oracle/v1/genesis.proto | 2 +- proto/oracle/v1/query.proto | 4 +- proto/oracle/v1/tx.proto | 4 +- scripts/protocgen.sh | 2 +- scripts/test_ics_node.sh | 152 + scripts/test_node.sh | 14 +- x/did/autocli.go | 2 +- x/did/depinject.go | 4 +- x/did/keeper/genesis.go | 2 +- x/did/keeper/genesis_test.go | 3 +- x/did/keeper/keeper.go | 4 +- x/did/keeper/keeper_test.go | 6 +- x/did/keeper/querier.go | 26 +- x/did/keeper/server.go | 42 +- x/did/keeper/server_test.go | 55 - x/did/keeper/state.go | 29 +- x/did/keeper/validate.go | 14 + x/did/module.go | 4 +- x/did/types/accounts.pb.go | 8 +- x/did/types/codec.go | 10 +- x/did/types/{coins.go => constants.go} | 0 x/did/types/constants.pb.go | 445 ++ x/did/types/defaults.go | 109 + x/did/types/{pub_key.go => ec_point.go} | 4 +- x/did/types/enums.pb.go | 120 - x/did/types/errors.go | 1 + x/did/types/extractor.go | 18 + x/did/types/genesis.go | 7 +- x/did/types/genesis.pb.go | 2803 +++++--- x/did/types/genesis_test.go | 10 +- x/did/types/info.go | 89 + x/did/types/models.pb.go | 2154 ++++-- x/did/types/msgs.go | 43 +- x/did/types/openid.go | 27 + x/did/types/perms.go | 6 +- x/did/types/pubkey.go | 40 + x/did/types/query.pb.go | 2021 ++---- x/did/types/query.pb.gw.go | 340 +- x/did/types/state.go | 8 + x/did/types/state.pb.go | 682 +- x/did/types/tx.pb.go | 2022 ++++-- x/did/types/types.go | 15 - x/did/types/types.pb.go | 2274 ------ x/did/types/{bip32.go => utils.go} | 4 +- x/did/types/verifier.go | 11 + x/did/types/zkprop.go | 145 + x/oracle/ibc_middleware.go | 2 +- x/oracle/keeper/genesis.go | 2 +- x/oracle/keeper/keeper.go | 2 +- x/oracle/module.go | 4 +- x/oracle/types/genesis.pb.go | 7 +- x/oracle/types/query.pb.go | 8 +- x/oracle/types/tx.pb.go | 7 +- 123 files changed, 24666 insertions(+), 14591 deletions(-) delete mode 100644 .air.toml delete mode 100644 .github/workflows/auto-bump.yml create mode 100644 .github/workflows/docker-vm-release.yml rename .github/workflows/{release-binary.yml => run-goreleaser.yml} (78%) create mode 100644 .github/workflows/tag-on-merge.yml create mode 100644 CHANGELOG.md create mode 100644 api/did/v1/constants.pulsar.go delete mode 100644 client/go.mod create mode 100644 cmd/vault/main.go create mode 100644 internal/db/db.go create mode 100644 internal/db/enums.go create mode 100644 internal/db/options.go create mode 100644 internal/db/queries.go create mode 100644 internal/db/tables.go create mode 100644 internal/files/assemble.go create mode 100644 internal/files/embed.go create mode 100644 internal/files/sw.templ create mode 100644 internal/files/sw_templ.go create mode 100755 internal/files/vault.wasm create mode 100644 internal/ipfs/base.go create mode 100644 internal/ipfs/ipfs.go create mode 100644 internal/ipfs/vfs.go delete mode 100644 new.Dockerfile create mode 100644 proto/did/v1/constants.proto create mode 100644 scripts/test_ics_node.sh delete mode 100644 x/did/keeper/server_test.go create mode 100644 x/did/keeper/validate.go rename x/did/types/{coins.go => constants.go} (100%) create mode 100644 x/did/types/constants.pb.go create mode 100644 x/did/types/defaults.go rename x/did/types/{pub_key.go => ec_point.go} (91%) delete mode 100644 x/did/types/enums.pb.go create mode 100644 x/did/types/extractor.go create mode 100644 x/did/types/info.go create mode 100644 x/did/types/openid.go create mode 100644 x/did/types/pubkey.go delete mode 100644 x/did/types/types.go delete mode 100644 x/did/types/types.pb.go rename x/did/types/{bip32.go => utils.go} (87%) create mode 100644 x/did/types/verifier.go create mode 100644 x/did/types/zkprop.go diff --git a/.air.toml b/.air.toml deleted file mode 100644 index afd174c32..000000000 --- a/.air.toml +++ /dev/null @@ -1,72 +0,0 @@ -root = "." -testdata_dir = "testdata" -tmp_dir = "tmp" - -[build] -# Array of commands to run before each build -pre_cmd = ["task templ"] -# Just plain old shell command. You could use `make` as well. -cmd = "go build -o ./tmp/vltd ./cmd/vltd" -# Array of commands to run after ^C -bin = "tmp/vltd" -# Watch these filename extensions. -include_ext = ["go", "proto", "templ"] -# Ignore these filename extensions or directories. -exclude_dir = ["api", "crypto", "pkl", "scripts", "tmp", ".github"] -# Watch these directories if you specified. -include_dir = ["pkg", "x", "internal", ".github"] -# Watch these files. -include_file = [] -# Exclude files. -exclude_file = [] -# Exclude specific regular expressions. -exclude_regex = ["_test\\.go"] -# Exclude unchanged files. -exclude_unchanged = true -# Follow symlink for directories -follow_symlink = true -# This log file places in your tmp_dir. -log = "air.log" -# Poll files for changes instead of using fsnotify. -poll = false -# Poll interval (defaults to the minimum interval of 500ms). -poll_interval = 500 # ms -# It's not necessary to trigger build each time file changes if it's too frequent. -delay = 0 # ms -# Stop running old binary when build errors occur. -stop_on_error = true -# Send Interrupt signal before killing process (windows does not support this feature) -send_interrupt = false -# Delay after sending Interrupt signal -kill_delay = 500 # nanosecond -# Rerun binary or not -rerun = false -# Delay after each execution -rerun_delay = 500 - -[log] -# Show log time -time = false -# Only show main log (silences watcher, build, runner) -main_only = false - -[color] -# Customize each part's color. If no color found, use the raw app log. -main = "magenta" -watcher = "cyan" -build = "yellow" -runner = "green" - -[misc] -# Delete tmp directory on exit -clean_on_exit = true - -[screen] -clear_on_rebuild = true -keep_scroll = true - -# Enable live-reloading on the browser. -[proxy] -enabled = true -proxy_port = 8090 -app_port = 8080 diff --git a/.cz.toml b/.cz.toml index 50372f0f5..f033b5b67 100644 --- a/.cz.toml +++ b/.cz.toml @@ -2,6 +2,6 @@ name = "cz_conventional_commits" tag_format = "$version" version_scheme = "semver" -version = "0.6.0" +version = "0.7.0" update_changelog_on_bump = true major_version_zero = true diff --git a/.github/workflows/auto-bump.yml b/.github/workflows/auto-bump.yml deleted file mode 100644 index 7a7db6141..000000000 --- a/.github/workflows/auto-bump.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Automatic Tag Bump -on: - pull_request: - types: - - closed - branches: - - main - -jobs: - build: - if: github.event.pull_request.merged == true - runs-on: ubuntu-22.04 - permissions: - contents: write - steps: - - uses: actions/checkout@v4 - with: - ref: ${{ github.event.pull_request.merge_commit_sha }} - fetch-depth: "0" - - - name: Bump version and push tag - uses: anothrNick/github-tag-action@v1 # Don't use @master or @v1 unless you're happy to test the latest version - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # if you don't want to set write permissions use a PAT token - WITH_V: true - PRERELEASE: true diff --git a/.github/workflows/buf-publish.yml b/.github/workflows/buf-publish.yml index 2cf261ab1..97f76d5c2 100644 --- a/.github/workflows/buf-publish.yml +++ b/.github/workflows/buf-publish.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: # Run `git checkout` - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 # Install the `buf` CLI - uses: bufbuild/buf-setup-action@v1 # Push only the Input in `proto` to the BSR diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml index 973f818b6..91e8a8260 100644 --- a/.github/workflows/docker-release.yml +++ b/.github/workflows/docker-release.yml @@ -1,4 +1,4 @@ -name: docker image release +name: Publish Docker Image # NOTE: For this action to work, you must enable write permissions in your github repository settings. # Settings -> Actions -> General. "Workflow Permissions". Select "Read and write permissions". diff --git a/.github/workflows/docker-vm-release.yml b/.github/workflows/docker-vm-release.yml new file mode 100644 index 000000000..6747a2db3 --- /dev/null +++ b/.github/workflows/docker-vm-release.yml @@ -0,0 +1,48 @@ +name: Publish VM Image + +on: + push: + branches: [master, develop, feature/*] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +env: + GO_VERSION: 1.22 + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + release-image: + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + # all lowercase ghcr registry + - run: | + DOCKER_REGISTRY=`echo "${{ env.REGISTRY }}/${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]'` + echo "DOCKER_REGISTRY=$DOCKER_REGISTRY" >> $GITHUB_ENV + + REPO_NAME=`echo "${{ github.repository }}" | awk -F'/' '{print $2}' | tr '[:upper:]' '[:lower:]'` + echo "REPO_NAME=$REPO_NAME" >> $GITHUB_ENV + + - name: Parse tag + id: tag + run: | + # v0.0.1 + VERSION=$(echo ${{ github.ref_name }} | sed "s/v//") + # 0.0.1 + echo "VERSION=$VERSION" >> $GITHUB_ENV + + # build and publish package to ghcr (public) with codebase remaining private + - name: Log in to the Container registry + uses: docker/login-action@v2 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release-binary.yml b/.github/workflows/run-goreleaser.yml similarity index 78% rename from .github/workflows/release-binary.yml rename to .github/workflows/run-goreleaser.yml index 59b309562..341347524 100644 --- a/.github/workflows/release-binary.yml +++ b/.github/workflows/run-goreleaser.yml @@ -5,10 +5,7 @@ name: "Release Binary" on: push: tags: - - '**' - -# Test Locally with: -# goreleaser build --skip-validate --snapshot --clean + - "**" jobs: goreleaser: @@ -20,9 +17,9 @@ jobs: with: fetch-depth: 0 - - uses: actions/setup-go@v2 + - uses: actions/setup-go@v3 with: - go-version: '1.21' + go-version: "1.21" - name: Clean up dist directory run: rm -rf dist @@ -40,4 +37,4 @@ jobs: version: latest args: release --skip-validate --clean env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/tag-on-merge.yml b/.github/workflows/tag-on-merge.yml new file mode 100644 index 000000000..227c0b7dd --- /dev/null +++ b/.github/workflows/tag-on-merge.yml @@ -0,0 +1,62 @@ +name: Automatic Tag Bump +on: + pull_request: + types: + - closed + branches: + - develop + - master + +permissions: + contents: write + +jobs: + build: + if: github.event.pull_request.merged == true + runs-on: ubuntu-22.04 + permissions: + contents: write + steps: + - uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.merge_commit_sha }} + fetch-depth: "0" + + - name: Bump version and push tag + uses: anothrNick/github-tag-action@v1 # Don't use @master or @v1 unless you're happy to test the latest version + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # if you don't want to set write permissions use a PAT token + WITH_V: true + + release-image: + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + # all lowercase ghcr registry + - run: | + DOCKER_REGISTRY=`echo "${{ env.REGISTRY }}/${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]'` + echo "DOCKER_REGISTRY=$DOCKER_REGISTRY" >> $GITHUB_ENV + + REPO_NAME=`echo "${{ github.repository }}" | awk -F'/' '{print $2}' | tr '[:upper:]' '[:lower:]'` + echo "REPO_NAME=$REPO_NAME" >> $GITHUB_ENV + + - name: Parse tag + id: tag + run: | + # v0.0.1 + VERSION=$(echo ${{ github.ref_name }} | sed "s/v//") + # 0.0.1 + echo "VERSION=$VERSION" >> $GITHUB_ENV + + # build and publish package to ghcr (public) with codebase remaining private + - name: Log in to the Container registry + uses: docker/login-action@v2 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 2e48dbf2f..f93bcc367 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ # Binaries +.data *.exe *.exe~ *.dll diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..aa1869be8 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,114 @@ +## 0.7.0 (2024-09-05) + +### Feat + +- add SQLite database support +- Add targets for templ and vault in Makefile and use only make in devbox.json +- Add models.go file with database table structs +- Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements +- Simplify db.go implementation +- Update the db implementation to use the provided go library +- Add DBConfig and DBOption types +- Add DIDNamespace and PermissionScope enums +- Add database enum types +- Update `createPermissionsTable` to match Permissions struct +- Add createKeysharesTable to internal/db/db.go +- Add constant SQL queries to queries.go and use prepared statements in db.go +- Update createProfilesTable and add createPropertiesTable +- Update the `createCredentialsTable` method to match the proper Credential struct +- Add keyshares table +- Implement database layer for Vault node +- introduce database layer +- Add method to initialize SQLite database +- add persistent SQLite database support in WASM +- **orm**: remove unused ORM models +- implement API endpoints for profile management +- Merge zkgate.go and zkprop.go logic +- Uncomment and modify zkgate code to work with Property struct +- Add zkgate.go file +- add WASM build step to devbox.json +- add KeyCurve and KeyType to KeyInfo in genesis +- Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods +- add basic vault command operations +- add initial wasm entrypoint +- Implement IPFS file, location, and filesystem abstractions +- add IPFS file system abstraction +- Add AddFile and AddFolder methods +- Update GetCID and GetIPNS functions to read data from IPFS node +- Add local filesystem check for IPFS and IPNS +- Improve IPFS client initialization and mount checking +- Update `EncodePublicKey` to be the inverse of `DecodePublicKey` +- add DID model definitions +- add DID method for each coin +- Expand KeyType enum and update KeyInfo message in genesis.proto +- Add whitelisted key types to genesis params +- Add DID grants protobuf definition +- Add fields to KeyInfo struct to distinguish CBOR and standard blockchain key types +- Add new message types for AssetInfo, ChainInfo, Endpoint, ExplorerInfo, FeeInfo, and KeyInfo +- run sonr-node container in testnet network and make network external +- Add docker-compose.yaml file to start a Sonr testnet node + +### Fix + +- update Makefile to use sonrd instead of wasmd +- Remove unused statement map and prepare statements +- Refactor database connection and statement handling +- update db implementation to use go-sqlite3 v0.18.2 +- Reorder the SQL statements in the tables.go file +- update go-sqlite3 dependency to version 1.14.23 +- Update module names in protobuf files +- Ensure IPFS client is initialized before pinning CID +- Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval +- Initialize IPFS client and check for mounted directories +- update default assets with correct asset types +- Fix EncodePublicKey method in KeyInfo struct +- remove unused imports and simplify KeyInfo message +- bind node ports to localhost +- Update docker-compose network name to dokploy-network +- Update network name to dokploy +- remove unused port mapping +- Update docker-compose.yaml to use correct volume path +- update docker-compose volume name +- Update docker-compose.yaml to use shell directly for sonrd command +- replace "sh" with "/bin/sh" in docker-compose.yaml command + +### Refactor + +- remove unused template file +- Replace PrimaryKey with Property struct in zkprop.go +- remove unused FileSystem interface +- remove unused functions and types +- update AssetInfo protobuf definition +- add field to +- Update KeyKind Enum to have proper naming conventions +- Update `DIDNamespace` to have proper naming convention +- expose ports directly in docker-compose +- remove unused port mappings +- streamline script execution +- use CMD instead of ENTRYPOINT in Dockerfile + +## v0.0.1 (2024-08-28) + +### Feat + +- configure Sonr testnet environment +- Update Dockerfile to start and run a testnet +- add Equal methods for AssetInfo and ChainInfo types +- Add ProveWitness and SyncVault RPCs +- Add MsgRegisterService to handle service registration +- Add MsgRegisterService to handle service registration +- add enums.pulsar.go file for PermissionScope enum + +### Fix + +- Update runner image dependencies for debian-11 +- **deps**: update golang image to 1.21 +- **chains**: update nomic chain build target +- Remove unused `Meta` message from `genesis.proto` +- Add ProveWitness and SyncVault RPCs + +### Refactor + +- **deps**: Upgrade Debian base image to 11 +- Simplify the types and properties to keep a consistent structure for the blockchain +- remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value diff --git a/Dockerfile b/Dockerfile index 06a441335..48e3cb96c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,20 @@ +FROM jetpackio/devbox:latest as sonrvm + +# Installing your devbox project +WORKDIR /code +USER root:root + +RUN mkdir -p /code && chown ${DEVBOX_USER}:${DEVBOX_USER} /code + +USER ${DEVBOX_USER}:${DEVBOX_USER} + +COPY --chown=${DEVBOX_USER}:${DEVBOX_USER} devbox.json devbox.json + +RUN devbox run -- echo "Installed Packages." + +ENTRYPOINT ["devbox", "run"] + +# -------------------------------------------------------- FROM golang:1.22-alpine AS go-builder SHELL ["/bin/sh", "-ecuxo", "pipefail"] @@ -33,7 +50,6 @@ FROM debian:11-slim COPY --from=go-builder /code/build/sonrd /usr/bin/sonrd - # Install dependencies for Debian 11 RUN apt-get update && apt-get install -y \ curl \ diff --git a/Makefile b/Makefile index 200e23b1d..1159b3d32 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ SIMAPP = ./app # for dockerized protobuf tools DOCKER := $(shell which docker) -HTTPS_GIT := github.com/onsonr/hway.git +HTTPS_GIT := github.com/onsonr/sonr.git export GO111MODULE = on @@ -213,7 +213,7 @@ proto-check-breaking: ## --- Testnet Utilities --- get-localic: @echo "Installing local-interchain" - git clone --branch v8.2.0 https://github.com/strangelove-ventures/interchaintest.git interchaintest-downloader + git clone --branch v8.7.0 https://github.com/strangelove-ventures/interchaintest.git interchaintest-downloader cd interchaintest-downloader/local-interchain && make install @echo ✅ local-interchain installed $(shell which local-ic) @@ -230,7 +230,7 @@ local-image: ifeq (,$(shell which heighliner)) echo 'heighliner' binary not found. Consider running `make get-heighliner` else - heighliner build -c sonr --local -f chains.yaml + heighliner build -c sonrd --local -f chains.yaml endif .PHONY: get-heighliner local-image is-localic-installed @@ -292,3 +292,43 @@ sh-testnet: mod-tidy CHAIN_ID="sonr-testnet-1" BLOCK_TIME="1000ms" CLEAN=true sh scripts/test_node.sh .PHONY: setup-testnet set-testnet-configs testnet testnet-basic sh-testnet + + + +############################################################################### +### templ & vault ### +############################################################################### + +.PHONY: templ vault + +templ: + @echo "Generating templ files" + templ generate + +vault: + @echo "Building vault.wasm" + GOOS=js GOARCH=wasm go build -o ./internal/files/vault.wasm ./cmd/vault/main.go + +############################################################################### +### help ### +############################################################################### + +.PHONY: explorer +explorer: + docker compose up + +help: + @echo "Usage: make " + @echo "" + @echo "Available targets:" + @echo " install : Install the binary" + @echo " local-image : Install the docker image" + @echo " proto-gen : Generate code from proto files" + @echo " testnet : Local devnet with IBC" + @echo " sh-testnet : Shell local devnet" + @echo " ictest-basic : Basic end-to-end test" + @echo " ictest-ibc : IBC end-to-end test" + @echo " templ : Generate templ files" + @echo " vault : Build vault.wasm" + +.PHONY: help diff --git a/README.md b/README.md index 53e3230b4..5945b3aee 100644 --- a/README.md +++ b/README.md @@ -3,13 +3,13 @@ # `sonr` - Sonr Chain -[![Go Reference](https://pkg.go.dev/badge/github.com/didao-org/sonr.svg)](https://pkg.go.dev/github.com/didao-org/sonr) -![GitHub commit activity](https://img.shields.io/github/commit-activity/w/didao-org/sonr) -![GitHub Release Date - Published_At](https://img.shields.io/github/release-date/didao-org/sonr) +[![Go Reference](https://pkg.go.dev/badge/github.com/onsonr/sonr.svg)](https://pkg.go.dev/github.com/onsonr/sonr) +![GitHub commit activity](https://img.shields.io/github/commit-activity/w/onsonr/sonr) +![GitHub Release Date - Published_At](https://img.shields.io/github/release-date/onsonr/sonr) [![Static Badge](https://img.shields.io/badge/homepage-sonr.io-blue?style=flat-square)](https://sonr.io) ![Discord](https://img.shields.io/discord/843061375160156170?logo=discord&label=Discord%20Chat) -[![Go Report Card](https://goreportcard.com/badge/github.com/didao-org/sonr)](https://goreportcard.com/report/github.com/didao-org/sonr) +[![Go Report Card](https://goreportcard.com/badge/github.com/onsonr/sonr)](https://goreportcard.com/report/github.com/onsonr/sonr) [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=sonrhq_sonr&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=sonr-io_sonr) [![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=sonrhq_sonr&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=sonr-io_sonr) [![Mutable.ai Auto Wiki](https://img.shields.io/badge/Auto_Wiki-Mutable.ai-blue)](https://wiki.mutable.ai/di-dao/sonr) @@ -21,6 +21,22 @@ Sonr is a combination of decentralized primitives. Fundamentally, it is a peer-t
+## Components + +### `sonrd` + +The main blockchain node that runs the `sonr` chain. It is responsible for maintaining the state of the chain, including IPFS based vaults, and did documents. + +### `vault` + +The `vault` is a wasm module that is compiled and deployed to IPFS on behalf of the user. It is responsible for storing and retrieving encrypted data. + +- SQLite Database backend +- Encryption via admonition +- Authentication via webauthn +- Authorization via Macroons +- HTTP API + ## Acknowledgements Sonr would not have been possible without the direct and indirect support of the following organizations and individuals: @@ -35,7 +51,7 @@ Sonr would not have been possible without the direct and indirect support of the ## Community & Support -- [Forum](https://github.com/onsonr/hway/discussions) -- [Issues](https://github.com/onsonr/hway/issues) +- [Forum](https://github.com/onsonr/sonr/discussions) +- [Issues](https://github.com/onsonr/sonr/issues) - [Twitter](https://sonr.io/twitter) - [Dev Chat](https://sonr.io/discord) diff --git a/api/did/module/v1/module.pulsar.go b/api/did/module/v1/module.pulsar.go index 7c1691072..2b23de2d5 100644 --- a/api/did/module/v1/module.pulsar.go +++ b/api/did/module/v1/module.pulsar.go @@ -104,9 +104,9 @@ func (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.hway.did.module.v1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.sonr.did.module.v1.Module")) } - panic(fmt.Errorf("message onsonr.hway.did.module.v1.Module does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message onsonr.sonr.did.module.v1.Module does not contain field %s", fd.FullName())) } } @@ -120,9 +120,9 @@ func (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.hway.did.module.v1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.sonr.did.module.v1.Module")) } - panic(fmt.Errorf("message onsonr.hway.did.module.v1.Module does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message onsonr.sonr.did.module.v1.Module does not contain field %s", fd.FullName())) } } @@ -136,9 +136,9 @@ func (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) pro switch descriptor.FullName() { default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.hway.did.module.v1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.sonr.did.module.v1.Module")) } - panic(fmt.Errorf("message onsonr.hway.did.module.v1.Module does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message onsonr.sonr.did.module.v1.Module does not contain field %s", descriptor.FullName())) } } @@ -156,9 +156,9 @@ func (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value proto switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.hway.did.module.v1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.sonr.did.module.v1.Module")) } - panic(fmt.Errorf("message onsonr.hway.did.module.v1.Module does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message onsonr.sonr.did.module.v1.Module does not contain field %s", fd.FullName())) } } @@ -176,9 +176,9 @@ func (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protore switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.hway.did.module.v1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.sonr.did.module.v1.Module")) } - panic(fmt.Errorf("message onsonr.hway.did.module.v1.Module does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message onsonr.sonr.did.module.v1.Module does not contain field %s", fd.FullName())) } } @@ -189,9 +189,9 @@ func (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protor switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.hway.did.module.v1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.sonr.did.module.v1.Module")) } - panic(fmt.Errorf("message onsonr.hway.did.module.v1.Module does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message onsonr.sonr.did.module.v1.Module does not contain field %s", fd.FullName())) } } @@ -201,7 +201,7 @@ func (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protor func (x *fastReflection_Module) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in onsonr.hway.did.module.v1.Module", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in onsonr.sonr.did.module.v1.Module", d.FullName())) } panic("unreachable") } @@ -415,26 +415,26 @@ var File_did_module_v1_module_proto protoreflect.FileDescriptor var file_did_module_v1_module_proto_rawDesc = []byte{ 0x0a, 0x1a, 0x64, 0x69, 0x64, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x6f, 0x6e, - 0x73, 0x6f, 0x6e, 0x72, 0x2e, 0x68, 0x77, 0x61, 0x79, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x6d, 0x6f, + 0x73, 0x6f, 0x6e, 0x72, 0x2e, 0x73, 0x6f, 0x6e, 0x72, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x20, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x28, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x1e, 0xba, 0xc0, 0x96, 0xda, 0x01, 0x18, 0x0a, 0x16, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x68, - 0x77, 0x61, 0x79, 0x42, 0xe8, 0x01, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x6f, 0x6e, 0x73, 0x6f, - 0x6e, 0x72, 0x2e, 0x68, 0x77, 0x61, 0x79, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x6d, 0x6f, 0x64, 0x75, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, + 0x6f, 0x6e, 0x72, 0x42, 0xe8, 0x01, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x6f, 0x6e, 0x73, 0x6f, + 0x6e, 0x72, 0x2e, 0x73, 0x6f, 0x6e, 0x72, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x68, 0x77, 0x61, 0x79, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, - 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x04, 0x4f, 0x48, 0x44, 0x4d, 0xaa, 0x02, - 0x19, 0x4f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2e, 0x48, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x69, 0x64, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x04, 0x4f, 0x53, 0x44, 0x4d, 0xaa, 0x02, + 0x19, 0x4f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2e, 0x53, 0x6f, 0x6e, 0x72, 0x2e, 0x44, 0x69, 0x64, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x19, 0x4f, 0x6e, 0x73, - 0x6f, 0x6e, 0x72, 0x5c, 0x48, 0x77, 0x61, 0x79, 0x5c, 0x44, 0x69, 0x64, 0x5c, 0x4d, 0x6f, 0x64, + 0x6f, 0x6e, 0x72, 0x5c, 0x53, 0x6f, 0x6e, 0x72, 0x5c, 0x44, 0x69, 0x64, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x25, 0x4f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x5c, - 0x48, 0x77, 0x61, 0x79, 0x5c, 0x44, 0x69, 0x64, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, + 0x53, 0x6f, 0x6e, 0x72, 0x5c, 0x44, 0x69, 0x64, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, - 0x1d, 0x4f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x3a, 0x3a, 0x48, 0x77, 0x61, 0x79, 0x3a, 0x3a, 0x44, + 0x1d, 0x4f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x3a, 0x3a, 0x53, 0x6f, 0x6e, 0x72, 0x3a, 0x3a, 0x44, 0x69, 0x64, 0x3a, 0x3a, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } @@ -453,7 +453,7 @@ func file_did_module_v1_module_proto_rawDescGZIP() []byte { var file_did_module_v1_module_proto_msgTypes = make([]protoimpl.MessageInfo, 1) var file_did_module_v1_module_proto_goTypes = []interface{}{ - (*Module)(nil), // 0: onsonr.hway.did.module.v1.Module + (*Module)(nil), // 0: onsonr.sonr.did.module.v1.Module } var file_did_module_v1_module_proto_depIdxs = []int32{ 0, // [0:0] is the sub-list for method output_type diff --git a/api/did/v1/accounts.pulsar.go b/api/did/v1/accounts.pulsar.go index fd493d1c7..44bb1d4a2 100644 --- a/api/did/v1/accounts.pulsar.go +++ b/api/did/v1/accounts.pulsar.go @@ -1564,7 +1564,7 @@ var file_did_v1_accounts_proto_rawDesc = []byte{ 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x7d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x68, 0x77, 0x61, 0x79, 0x2f, 0x61, + 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x69, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x44, 0x69, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, diff --git a/api/did/v1/constants.pulsar.go b/api/did/v1/constants.pulsar.go new file mode 100644 index 000000000..44e845b41 --- /dev/null +++ b/api/did/v1/constants.pulsar.go @@ -0,0 +1,727 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package didv1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: did/v1/constants.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// AssetType defines the type of asset: native, wrapped, staking, pool, or unspecified +type AssetType int32 + +const ( + AssetType_ASSET_TYPE_UNSPECIFIED AssetType = 0 + AssetType_ASSET_TYPE_NATIVE AssetType = 1 + AssetType_ASSET_TYPE_WRAPPED AssetType = 2 + AssetType_ASSET_TYPE_STAKING AssetType = 3 + AssetType_ASSET_TYPE_POOL AssetType = 4 + AssetType_ASSET_TYPE_IBC AssetType = 5 + AssetType_ASSET_TYPE_CW20 AssetType = 6 +) + +// Enum value maps for AssetType. +var ( + AssetType_name = map[int32]string{ + 0: "ASSET_TYPE_UNSPECIFIED", + 1: "ASSET_TYPE_NATIVE", + 2: "ASSET_TYPE_WRAPPED", + 3: "ASSET_TYPE_STAKING", + 4: "ASSET_TYPE_POOL", + 5: "ASSET_TYPE_IBC", + 6: "ASSET_TYPE_CW20", + } + AssetType_value = map[string]int32{ + "ASSET_TYPE_UNSPECIFIED": 0, + "ASSET_TYPE_NATIVE": 1, + "ASSET_TYPE_WRAPPED": 2, + "ASSET_TYPE_STAKING": 3, + "ASSET_TYPE_POOL": 4, + "ASSET_TYPE_IBC": 5, + "ASSET_TYPE_CW20": 6, + } +) + +func (x AssetType) Enum() *AssetType { + p := new(AssetType) + *p = x + return p +} + +func (x AssetType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AssetType) Descriptor() protoreflect.EnumDescriptor { + return file_did_v1_constants_proto_enumTypes[0].Descriptor() +} + +func (AssetType) Type() protoreflect.EnumType { + return &file_did_v1_constants_proto_enumTypes[0] +} + +func (x AssetType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AssetType.Descriptor instead. +func (AssetType) EnumDescriptor() ([]byte, []int) { + return file_did_v1_constants_proto_rawDescGZIP(), []int{0} +} + +// DIDNamespace define the different namespaces of DID +type DIDNamespace int32 + +const ( + DIDNamespace_DID_NAMESPACE_UNSPECIFIED DIDNamespace = 0 + DIDNamespace_DID_NAMESPACE_IPFS DIDNamespace = 1 + DIDNamespace_DID_NAMESPACE_SONR DIDNamespace = 2 + DIDNamespace_DID_NAMESPACE_BITCOIN DIDNamespace = 3 + DIDNamespace_DID_NAMESPACE_ETHEREUM DIDNamespace = 4 + DIDNamespace_DID_NAMESPACE_IBC DIDNamespace = 5 + DIDNamespace_DID_NAMESPACE_WEBAUTHN DIDNamespace = 6 + DIDNamespace_DID_NAMESPACE_DWN DIDNamespace = 7 + DIDNamespace_DID_NAMESPACE_SERVICE DIDNamespace = 8 +) + +// Enum value maps for DIDNamespace. +var ( + DIDNamespace_name = map[int32]string{ + 0: "DID_NAMESPACE_UNSPECIFIED", + 1: "DID_NAMESPACE_IPFS", + 2: "DID_NAMESPACE_SONR", + 3: "DID_NAMESPACE_BITCOIN", + 4: "DID_NAMESPACE_ETHEREUM", + 5: "DID_NAMESPACE_IBC", + 6: "DID_NAMESPACE_WEBAUTHN", + 7: "DID_NAMESPACE_DWN", + 8: "DID_NAMESPACE_SERVICE", + } + DIDNamespace_value = map[string]int32{ + "DID_NAMESPACE_UNSPECIFIED": 0, + "DID_NAMESPACE_IPFS": 1, + "DID_NAMESPACE_SONR": 2, + "DID_NAMESPACE_BITCOIN": 3, + "DID_NAMESPACE_ETHEREUM": 4, + "DID_NAMESPACE_IBC": 5, + "DID_NAMESPACE_WEBAUTHN": 6, + "DID_NAMESPACE_DWN": 7, + "DID_NAMESPACE_SERVICE": 8, + } +) + +func (x DIDNamespace) Enum() *DIDNamespace { + p := new(DIDNamespace) + *p = x + return p +} + +func (x DIDNamespace) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DIDNamespace) Descriptor() protoreflect.EnumDescriptor { + return file_did_v1_constants_proto_enumTypes[1].Descriptor() +} + +func (DIDNamespace) Type() protoreflect.EnumType { + return &file_did_v1_constants_proto_enumTypes[1] +} + +func (x DIDNamespace) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DIDNamespace.Descriptor instead. +func (DIDNamespace) EnumDescriptor() ([]byte, []int) { + return file_did_v1_constants_proto_rawDescGZIP(), []int{1} +} + +// KeyAlgorithm defines the key algorithm +type KeyAlgorithm int32 + +const ( + KeyAlgorithm_KEY_ALGORITHM_UNSPECIFIED KeyAlgorithm = 0 + KeyAlgorithm_KEY_ALGORITHM_ES256 KeyAlgorithm = 1 + KeyAlgorithm_KEY_ALGORITHM_ES384 KeyAlgorithm = 2 + KeyAlgorithm_KEY_ALGORITHM_ES512 KeyAlgorithm = 3 + KeyAlgorithm_KEY_ALGORITHM_EDDSA KeyAlgorithm = 4 + KeyAlgorithm_KEY_ALGORITHM_ES256K KeyAlgorithm = 5 + KeyAlgorithm_KEY_ALGORITHM_BLS12377 KeyAlgorithm = 6 + KeyAlgorithm_KEY_ALGORITHM_KECCAK256 KeyAlgorithm = 7 +) + +// Enum value maps for KeyAlgorithm. +var ( + KeyAlgorithm_name = map[int32]string{ + 0: "KEY_ALGORITHM_UNSPECIFIED", + 1: "KEY_ALGORITHM_ES256", + 2: "KEY_ALGORITHM_ES384", + 3: "KEY_ALGORITHM_ES512", + 4: "KEY_ALGORITHM_EDDSA", + 5: "KEY_ALGORITHM_ES256K", + 6: "KEY_ALGORITHM_BLS12377", + 7: "KEY_ALGORITHM_KECCAK256", + } + KeyAlgorithm_value = map[string]int32{ + "KEY_ALGORITHM_UNSPECIFIED": 0, + "KEY_ALGORITHM_ES256": 1, + "KEY_ALGORITHM_ES384": 2, + "KEY_ALGORITHM_ES512": 3, + "KEY_ALGORITHM_EDDSA": 4, + "KEY_ALGORITHM_ES256K": 5, + "KEY_ALGORITHM_BLS12377": 6, + "KEY_ALGORITHM_KECCAK256": 7, + } +) + +func (x KeyAlgorithm) Enum() *KeyAlgorithm { + p := new(KeyAlgorithm) + *p = x + return p +} + +func (x KeyAlgorithm) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (KeyAlgorithm) Descriptor() protoreflect.EnumDescriptor { + return file_did_v1_constants_proto_enumTypes[2].Descriptor() +} + +func (KeyAlgorithm) Type() protoreflect.EnumType { + return &file_did_v1_constants_proto_enumTypes[2] +} + +func (x KeyAlgorithm) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use KeyAlgorithm.Descriptor instead. +func (KeyAlgorithm) EnumDescriptor() ([]byte, []int) { + return file_did_v1_constants_proto_rawDescGZIP(), []int{2} +} + +// KeyCurve defines the key curve +type KeyCurve int32 + +const ( + KeyCurve_KEY_CURVE_UNSPECIFIED KeyCurve = 0 + KeyCurve_KEY_CURVE_P256 KeyCurve = 1 + KeyCurve_KEY_CURVE_P384 KeyCurve = 2 + KeyCurve_KEY_CURVE_P521 KeyCurve = 3 + KeyCurve_KEY_CURVE_X25519 KeyCurve = 4 + KeyCurve_KEY_CURVE_X448 KeyCurve = 5 + KeyCurve_KEY_CURVE_ED25519 KeyCurve = 6 + KeyCurve_KEY_CURVE_ED448 KeyCurve = 7 + KeyCurve_KEY_CURVE_SECP256K1 KeyCurve = 8 +) + +// Enum value maps for KeyCurve. +var ( + KeyCurve_name = map[int32]string{ + 0: "KEY_CURVE_UNSPECIFIED", + 1: "KEY_CURVE_P256", + 2: "KEY_CURVE_P384", + 3: "KEY_CURVE_P521", + 4: "KEY_CURVE_X25519", + 5: "KEY_CURVE_X448", + 6: "KEY_CURVE_ED25519", + 7: "KEY_CURVE_ED448", + 8: "KEY_CURVE_SECP256K1", + } + KeyCurve_value = map[string]int32{ + "KEY_CURVE_UNSPECIFIED": 0, + "KEY_CURVE_P256": 1, + "KEY_CURVE_P384": 2, + "KEY_CURVE_P521": 3, + "KEY_CURVE_X25519": 4, + "KEY_CURVE_X448": 5, + "KEY_CURVE_ED25519": 6, + "KEY_CURVE_ED448": 7, + "KEY_CURVE_SECP256K1": 8, + } +) + +func (x KeyCurve) Enum() *KeyCurve { + p := new(KeyCurve) + *p = x + return p +} + +func (x KeyCurve) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (KeyCurve) Descriptor() protoreflect.EnumDescriptor { + return file_did_v1_constants_proto_enumTypes[3].Descriptor() +} + +func (KeyCurve) Type() protoreflect.EnumType { + return &file_did_v1_constants_proto_enumTypes[3] +} + +func (x KeyCurve) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use KeyCurve.Descriptor instead. +func (KeyCurve) EnumDescriptor() ([]byte, []int) { + return file_did_v1_constants_proto_rawDescGZIP(), []int{3} +} + +// KeyEncoding defines the key encoding +type KeyEncoding int32 + +const ( + KeyEncoding_KEY_ENCODING_UNSPECIFIED KeyEncoding = 0 + KeyEncoding_KEY_ENCODING_RAW KeyEncoding = 1 + KeyEncoding_KEY_ENCODING_HEX KeyEncoding = 2 + KeyEncoding_KEY_ENCODING_MULTIBASE KeyEncoding = 3 + KeyEncoding_KEY_ENCODING_JWK KeyEncoding = 4 +) + +// Enum value maps for KeyEncoding. +var ( + KeyEncoding_name = map[int32]string{ + 0: "KEY_ENCODING_UNSPECIFIED", + 1: "KEY_ENCODING_RAW", + 2: "KEY_ENCODING_HEX", + 3: "KEY_ENCODING_MULTIBASE", + 4: "KEY_ENCODING_JWK", + } + KeyEncoding_value = map[string]int32{ + "KEY_ENCODING_UNSPECIFIED": 0, + "KEY_ENCODING_RAW": 1, + "KEY_ENCODING_HEX": 2, + "KEY_ENCODING_MULTIBASE": 3, + "KEY_ENCODING_JWK": 4, + } +) + +func (x KeyEncoding) Enum() *KeyEncoding { + p := new(KeyEncoding) + *p = x + return p +} + +func (x KeyEncoding) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (KeyEncoding) Descriptor() protoreflect.EnumDescriptor { + return file_did_v1_constants_proto_enumTypes[4].Descriptor() +} + +func (KeyEncoding) Type() protoreflect.EnumType { + return &file_did_v1_constants_proto_enumTypes[4] +} + +func (x KeyEncoding) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use KeyEncoding.Descriptor instead. +func (KeyEncoding) EnumDescriptor() ([]byte, []int) { + return file_did_v1_constants_proto_rawDescGZIP(), []int{4} +} + +// KeyRole defines the kind of key +type KeyRole int32 + +const ( + KeyRole_KEY_ROLE_UNSPECIFIED KeyRole = 0 + // Blockchain key types + KeyRole_KEY_ROLE_AUTHENTICATION KeyRole = 1 // Passkeys and FIDO + KeyRole_KEY_ROLE_ASSERTION KeyRole = 2 // Zk Identifiers + KeyRole_KEY_ROLE_DELEGATION KeyRole = 3 // ETH,BTC,IBC addresses + KeyRole_KEY_ROLE_INVOCATION KeyRole = 4 // DWN Controllers +) + +// Enum value maps for KeyRole. +var ( + KeyRole_name = map[int32]string{ + 0: "KEY_ROLE_UNSPECIFIED", + 1: "KEY_ROLE_AUTHENTICATION", + 2: "KEY_ROLE_ASSERTION", + 3: "KEY_ROLE_DELEGATION", + 4: "KEY_ROLE_INVOCATION", + } + KeyRole_value = map[string]int32{ + "KEY_ROLE_UNSPECIFIED": 0, + "KEY_ROLE_AUTHENTICATION": 1, + "KEY_ROLE_ASSERTION": 2, + "KEY_ROLE_DELEGATION": 3, + "KEY_ROLE_INVOCATION": 4, + } +) + +func (x KeyRole) Enum() *KeyRole { + p := new(KeyRole) + *p = x + return p +} + +func (x KeyRole) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (KeyRole) Descriptor() protoreflect.EnumDescriptor { + return file_did_v1_constants_proto_enumTypes[5].Descriptor() +} + +func (KeyRole) Type() protoreflect.EnumType { + return &file_did_v1_constants_proto_enumTypes[5] +} + +func (x KeyRole) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use KeyRole.Descriptor instead. +func (KeyRole) EnumDescriptor() ([]byte, []int) { + return file_did_v1_constants_proto_rawDescGZIP(), []int{5} +} + +// KeyType defines the key type +type KeyType int32 + +const ( + KeyType_KEY_TYPE_UNSPECIFIED KeyType = 0 + KeyType_KEY_TYPE_OCTET KeyType = 1 + KeyType_KEY_TYPE_ELLIPTIC KeyType = 2 + KeyType_KEY_TYPE_RSA KeyType = 3 + KeyType_KEY_TYPE_SYMMETRIC KeyType = 4 + KeyType_KEY_TYPE_HMAC KeyType = 5 +) + +// Enum value maps for KeyType. +var ( + KeyType_name = map[int32]string{ + 0: "KEY_TYPE_UNSPECIFIED", + 1: "KEY_TYPE_OCTET", + 2: "KEY_TYPE_ELLIPTIC", + 3: "KEY_TYPE_RSA", + 4: "KEY_TYPE_SYMMETRIC", + 5: "KEY_TYPE_HMAC", + } + KeyType_value = map[string]int32{ + "KEY_TYPE_UNSPECIFIED": 0, + "KEY_TYPE_OCTET": 1, + "KEY_TYPE_ELLIPTIC": 2, + "KEY_TYPE_RSA": 3, + "KEY_TYPE_SYMMETRIC": 4, + "KEY_TYPE_HMAC": 5, + } +) + +func (x KeyType) Enum() *KeyType { + p := new(KeyType) + *p = x + return p +} + +func (x KeyType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (KeyType) Descriptor() protoreflect.EnumDescriptor { + return file_did_v1_constants_proto_enumTypes[6].Descriptor() +} + +func (KeyType) Type() protoreflect.EnumType { + return &file_did_v1_constants_proto_enumTypes[6] +} + +func (x KeyType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use KeyType.Descriptor instead. +func (KeyType) EnumDescriptor() ([]byte, []int) { + return file_did_v1_constants_proto_rawDescGZIP(), []int{6} +} + +// PermissionScope define the Capabilities Controllers can grant for Services +type PermissionScope int32 + +const ( + PermissionScope_PERMISSION_SCOPE_UNSPECIFIED PermissionScope = 0 + PermissionScope_PERMISSION_SCOPE_BASIC_INFO PermissionScope = 1 + PermissionScope_PERMISSION_SCOPE_RECORDS_READ PermissionScope = 2 + PermissionScope_PERMISSION_SCOPE_RECORDS_WRITE PermissionScope = 3 + PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_READ PermissionScope = 4 + PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_WRITE PermissionScope = 5 + PermissionScope_PERMISSION_SCOPE_WALLETS_READ PermissionScope = 6 + PermissionScope_PERMISSION_SCOPE_WALLETS_CREATE PermissionScope = 7 + PermissionScope_PERMISSION_SCOPE_WALLETS_SUBSCRIBE PermissionScope = 8 + PermissionScope_PERMISSION_SCOPE_WALLETS_UPDATE PermissionScope = 9 + PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_VERIFY PermissionScope = 10 + PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_BROADCAST PermissionScope = 11 + PermissionScope_PERMISSION_SCOPE_ADMIN_USER PermissionScope = 12 + PermissionScope_PERMISSION_SCOPE_ADMIN_VALIDATOR PermissionScope = 13 +) + +// Enum value maps for PermissionScope. +var ( + PermissionScope_name = map[int32]string{ + 0: "PERMISSION_SCOPE_UNSPECIFIED", + 1: "PERMISSION_SCOPE_BASIC_INFO", + 2: "PERMISSION_SCOPE_RECORDS_READ", + 3: "PERMISSION_SCOPE_RECORDS_WRITE", + 4: "PERMISSION_SCOPE_TRANSACTIONS_READ", + 5: "PERMISSION_SCOPE_TRANSACTIONS_WRITE", + 6: "PERMISSION_SCOPE_WALLETS_READ", + 7: "PERMISSION_SCOPE_WALLETS_CREATE", + 8: "PERMISSION_SCOPE_WALLETS_SUBSCRIBE", + 9: "PERMISSION_SCOPE_WALLETS_UPDATE", + 10: "PERMISSION_SCOPE_TRANSACTIONS_VERIFY", + 11: "PERMISSION_SCOPE_TRANSACTIONS_BROADCAST", + 12: "PERMISSION_SCOPE_ADMIN_USER", + 13: "PERMISSION_SCOPE_ADMIN_VALIDATOR", + } + PermissionScope_value = map[string]int32{ + "PERMISSION_SCOPE_UNSPECIFIED": 0, + "PERMISSION_SCOPE_BASIC_INFO": 1, + "PERMISSION_SCOPE_RECORDS_READ": 2, + "PERMISSION_SCOPE_RECORDS_WRITE": 3, + "PERMISSION_SCOPE_TRANSACTIONS_READ": 4, + "PERMISSION_SCOPE_TRANSACTIONS_WRITE": 5, + "PERMISSION_SCOPE_WALLETS_READ": 6, + "PERMISSION_SCOPE_WALLETS_CREATE": 7, + "PERMISSION_SCOPE_WALLETS_SUBSCRIBE": 8, + "PERMISSION_SCOPE_WALLETS_UPDATE": 9, + "PERMISSION_SCOPE_TRANSACTIONS_VERIFY": 10, + "PERMISSION_SCOPE_TRANSACTIONS_BROADCAST": 11, + "PERMISSION_SCOPE_ADMIN_USER": 12, + "PERMISSION_SCOPE_ADMIN_VALIDATOR": 13, + } +) + +func (x PermissionScope) Enum() *PermissionScope { + p := new(PermissionScope) + *p = x + return p +} + +func (x PermissionScope) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PermissionScope) Descriptor() protoreflect.EnumDescriptor { + return file_did_v1_constants_proto_enumTypes[7].Descriptor() +} + +func (PermissionScope) Type() protoreflect.EnumType { + return &file_did_v1_constants_proto_enumTypes[7] +} + +func (x PermissionScope) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PermissionScope.Descriptor instead. +func (PermissionScope) EnumDescriptor() ([]byte, []int) { + return file_did_v1_constants_proto_rawDescGZIP(), []int{7} +} + +var File_did_v1_constants_proto protoreflect.FileDescriptor + +var file_did_v1_constants_proto_rawDesc = []byte{ + 0x0a, 0x16, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, + 0x2a, 0xac, 0x01, 0x0a, 0x09, 0x41, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, + 0x0a, 0x16, 0x41, 0x53, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x53, + 0x53, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, + 0x01, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x53, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x57, 0x52, 0x41, 0x50, 0x50, 0x45, 0x44, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x53, 0x53, + 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x4b, 0x49, 0x4e, 0x47, 0x10, + 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x53, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x53, 0x53, 0x45, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x42, 0x43, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x53, + 0x53, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x57, 0x32, 0x30, 0x10, 0x06, 0x2a, + 0xf9, 0x01, 0x0a, 0x0c, 0x44, 0x49, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x16, 0x0a, 0x12, 0x44, 0x49, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, + 0x5f, 0x49, 0x50, 0x46, 0x53, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x49, 0x44, 0x5f, 0x4e, + 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x4f, 0x4e, 0x52, 0x10, 0x02, 0x12, + 0x19, 0x0a, 0x15, 0x44, 0x49, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, + 0x5f, 0x42, 0x49, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, + 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x45, 0x54, 0x48, 0x45, + 0x52, 0x45, 0x55, 0x4d, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x49, 0x44, 0x5f, 0x4e, 0x41, + 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x42, 0x43, 0x10, 0x05, 0x12, 0x1a, 0x0a, + 0x16, 0x44, 0x49, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x57, + 0x45, 0x42, 0x41, 0x55, 0x54, 0x48, 0x4e, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x49, 0x44, + 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x57, 0x4e, 0x10, 0x07, + 0x12, 0x19, 0x0a, 0x15, 0x44, 0x49, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, + 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x08, 0x2a, 0xe4, 0x01, 0x0a, 0x0c, + 0x4b, 0x65, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1d, 0x0a, 0x19, + 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4b, + 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x45, 0x53, 0x32, + 0x35, 0x36, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x4f, + 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x45, 0x53, 0x33, 0x38, 0x34, 0x10, 0x02, 0x12, 0x17, 0x0a, + 0x13, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x45, + 0x53, 0x35, 0x31, 0x32, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, + 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x45, 0x44, 0x44, 0x53, 0x41, 0x10, 0x04, 0x12, + 0x18, 0x0a, 0x14, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, + 0x5f, 0x45, 0x53, 0x32, 0x35, 0x36, 0x4b, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x4b, 0x45, 0x59, + 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x42, 0x4c, 0x53, 0x31, 0x32, + 0x33, 0x37, 0x37, 0x10, 0x06, 0x12, 0x1b, 0x0a, 0x17, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, + 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x4b, 0x45, 0x43, 0x43, 0x41, 0x4b, 0x32, 0x35, 0x36, + 0x10, 0x07, 0x2a, 0xd0, 0x01, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x43, 0x75, 0x72, 0x76, 0x65, 0x12, + 0x19, 0x0a, 0x15, 0x4b, 0x45, 0x59, 0x5f, 0x43, 0x55, 0x52, 0x56, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4b, 0x45, + 0x59, 0x5f, 0x43, 0x55, 0x52, 0x56, 0x45, 0x5f, 0x50, 0x32, 0x35, 0x36, 0x10, 0x01, 0x12, 0x12, + 0x0a, 0x0e, 0x4b, 0x45, 0x59, 0x5f, 0x43, 0x55, 0x52, 0x56, 0x45, 0x5f, 0x50, 0x33, 0x38, 0x34, + 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4b, 0x45, 0x59, 0x5f, 0x43, 0x55, 0x52, 0x56, 0x45, 0x5f, + 0x50, 0x35, 0x32, 0x31, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4b, 0x45, 0x59, 0x5f, 0x43, 0x55, + 0x52, 0x56, 0x45, 0x5f, 0x58, 0x32, 0x35, 0x35, 0x31, 0x39, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, + 0x4b, 0x45, 0x59, 0x5f, 0x43, 0x55, 0x52, 0x56, 0x45, 0x5f, 0x58, 0x34, 0x34, 0x38, 0x10, 0x05, + 0x12, 0x15, 0x0a, 0x11, 0x4b, 0x45, 0x59, 0x5f, 0x43, 0x55, 0x52, 0x56, 0x45, 0x5f, 0x45, 0x44, + 0x32, 0x35, 0x35, 0x31, 0x39, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x4b, 0x45, 0x59, 0x5f, 0x43, + 0x55, 0x52, 0x56, 0x45, 0x5f, 0x45, 0x44, 0x34, 0x34, 0x38, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, + 0x4b, 0x45, 0x59, 0x5f, 0x43, 0x55, 0x52, 0x56, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x50, 0x32, 0x35, + 0x36, 0x4b, 0x31, 0x10, 0x08, 0x2a, 0x89, 0x01, 0x0a, 0x0b, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x63, + 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x18, 0x4b, 0x45, 0x59, 0x5f, 0x45, 0x4e, 0x43, + 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4b, 0x45, 0x59, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, + 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x41, 0x57, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4b, 0x45, 0x59, + 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x48, 0x45, 0x58, 0x10, 0x02, 0x12, + 0x1a, 0x0a, 0x16, 0x4b, 0x45, 0x59, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x5f, + 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x42, 0x41, 0x53, 0x45, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4b, + 0x45, 0x59, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x4a, 0x57, 0x4b, 0x10, + 0x04, 0x2a, 0x8a, 0x01, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x18, 0x0a, + 0x14, 0x4b, 0x45, 0x59, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x4b, 0x45, 0x59, 0x5f, 0x52, + 0x4f, 0x4c, 0x45, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x45, 0x4e, 0x54, 0x49, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4b, 0x45, 0x59, 0x5f, 0x52, 0x4f, 0x4c, 0x45, + 0x5f, 0x41, 0x53, 0x53, 0x45, 0x52, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, + 0x4b, 0x45, 0x59, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x47, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x4b, 0x45, 0x59, 0x5f, 0x52, 0x4f, 0x4c, + 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x2a, 0x8b, + 0x01, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x4b, 0x45, + 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x4b, 0x45, 0x59, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4c, 0x4c, 0x49, 0x50, 0x54, 0x49, 0x43, 0x10, 0x02, 0x12, + 0x10, 0x0a, 0x0c, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x53, 0x41, 0x10, + 0x03, 0x12, 0x16, 0x0a, 0x12, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x59, + 0x4d, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x4b, 0x45, 0x59, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x4d, 0x41, 0x43, 0x10, 0x05, 0x2a, 0x9f, 0x04, 0x0a, + 0x0f, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x6f, 0x70, 0x65, + 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, + 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, + 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x49, 0x4e, 0x46, + 0x4f, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, + 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x53, 0x5f, + 0x52, 0x45, 0x41, 0x44, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, + 0x44, 0x53, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x03, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x45, + 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x54, + 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, + 0x10, 0x04, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, + 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x53, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x05, 0x12, 0x21, 0x0a, 0x1d, 0x50, + 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, + 0x57, 0x41, 0x4c, 0x4c, 0x45, 0x54, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x06, 0x12, 0x23, + 0x0a, 0x1f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, + 0x50, 0x45, 0x5f, 0x57, 0x41, 0x4c, 0x4c, 0x45, 0x54, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, + 0x45, 0x10, 0x07, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, + 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x57, 0x41, 0x4c, 0x4c, 0x45, 0x54, 0x53, 0x5f, + 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x10, 0x08, 0x12, 0x23, 0x0a, 0x1f, 0x50, + 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, + 0x57, 0x41, 0x4c, 0x4c, 0x45, 0x54, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x09, + 0x12, 0x28, 0x0a, 0x24, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, + 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x53, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x10, 0x0a, 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x45, + 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x54, + 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x42, 0x52, 0x4f, 0x41, + 0x44, 0x43, 0x41, 0x53, 0x54, 0x10, 0x0b, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x45, 0x52, 0x4d, 0x49, + 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, + 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x0c, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x45, 0x52, 0x4d, + 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x41, 0x44, 0x4d, + 0x49, 0x4e, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x0d, 0x42, 0x7e, + 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x43, 0x6f, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, + 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x76, + 0x31, 0x3b, 0x64, 0x69, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, 0x06, + 0x44, 0x69, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0xe2, + 0x02, 0x12, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_did_v1_constants_proto_rawDescOnce sync.Once + file_did_v1_constants_proto_rawDescData = file_did_v1_constants_proto_rawDesc +) + +func file_did_v1_constants_proto_rawDescGZIP() []byte { + file_did_v1_constants_proto_rawDescOnce.Do(func() { + file_did_v1_constants_proto_rawDescData = protoimpl.X.CompressGZIP(file_did_v1_constants_proto_rawDescData) + }) + return file_did_v1_constants_proto_rawDescData +} + +var file_did_v1_constants_proto_enumTypes = make([]protoimpl.EnumInfo, 8) +var file_did_v1_constants_proto_goTypes = []interface{}{ + (AssetType)(0), // 0: did.v1.AssetType + (DIDNamespace)(0), // 1: did.v1.DIDNamespace + (KeyAlgorithm)(0), // 2: did.v1.KeyAlgorithm + (KeyCurve)(0), // 3: did.v1.KeyCurve + (KeyEncoding)(0), // 4: did.v1.KeyEncoding + (KeyRole)(0), // 5: did.v1.KeyRole + (KeyType)(0), // 6: did.v1.KeyType + (PermissionScope)(0), // 7: did.v1.PermissionScope +} +var file_did_v1_constants_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_did_v1_constants_proto_init() } +func file_did_v1_constants_proto_init() { + if File_did_v1_constants_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_did_v1_constants_proto_rawDesc, + NumEnums: 8, + NumMessages: 0, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_did_v1_constants_proto_goTypes, + DependencyIndexes: file_did_v1_constants_proto_depIdxs, + EnumInfos: file_did_v1_constants_proto_enumTypes, + }.Build() + File_did_v1_constants_proto = out.File + file_did_v1_constants_proto_rawDesc = nil + file_did_v1_constants_proto_goTypes = nil + file_did_v1_constants_proto_depIdxs = nil +} diff --git a/api/did/v1/genesis.pulsar.go b/api/did/v1/genesis.pulsar.go index c56d95123..c526c1028 100644 --- a/api/did/v1/genesis.pulsar.go +++ b/api/did/v1/genesis.pulsar.go @@ -609,6 +609,7 @@ var ( fd_Params_whitelisted_assets protoreflect.FieldDescriptor fd_Params_whitelisted_chains protoreflect.FieldDescriptor fd_Params_allowed_public_keys protoreflect.FieldDescriptor + fd_Params_openid_config protoreflect.FieldDescriptor ) func init() { @@ -617,6 +618,7 @@ func init() { fd_Params_whitelisted_assets = md_Params.Fields().ByName("whitelisted_assets") fd_Params_whitelisted_chains = md_Params.Fields().ByName("whitelisted_chains") fd_Params_allowed_public_keys = md_Params.Fields().ByName("allowed_public_keys") + fd_Params_openid_config = md_Params.Fields().ByName("openid_config") } var _ protoreflect.Message = (*fastReflection_Params)(nil) @@ -702,6 +704,12 @@ func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, proto return } } + if x.OpenidConfig != nil { + value := protoreflect.ValueOfMessage(x.OpenidConfig.ProtoReflect()) + if !f(fd_Params_openid_config, value) { + return + } + } } // Has reports whether a field is populated. @@ -723,6 +731,8 @@ func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { return len(x.WhitelistedChains) != 0 case "did.v1.Params.allowed_public_keys": return len(x.AllowedPublicKeys) != 0 + case "did.v1.Params.openid_config": + return x.OpenidConfig != nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Params")) @@ -745,6 +755,8 @@ func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { x.WhitelistedChains = nil case "did.v1.Params.allowed_public_keys": x.AllowedPublicKeys = nil + case "did.v1.Params.openid_config": + x.OpenidConfig = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Params")) @@ -779,6 +791,9 @@ func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) pro } listValue := &_Params_3_list{list: &x.AllowedPublicKeys} return protoreflect.ValueOfList(listValue) + case "did.v1.Params.openid_config": + value := x.OpenidConfig + return protoreflect.ValueOfMessage(value.ProtoReflect()) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Params")) @@ -811,6 +826,8 @@ func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value proto lv := value.List() clv := lv.(*_Params_3_list) x.AllowedPublicKeys = *clv.list + case "did.v1.Params.openid_config": + x.OpenidConfig = value.Message().Interface().(*OpenIDConfig) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Params")) @@ -849,6 +866,11 @@ func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protore } value := &_Params_3_list{list: &x.AllowedPublicKeys} return protoreflect.ValueOfList(value) + case "did.v1.Params.openid_config": + if x.OpenidConfig == nil { + x.OpenidConfig = new(OpenIDConfig) + } + return protoreflect.ValueOfMessage(x.OpenidConfig.ProtoReflect()) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Params")) @@ -871,6 +893,9 @@ func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protor case "did.v1.Params.allowed_public_keys": list := []*KeyInfo{} return protoreflect.ValueOfList(&_Params_3_list{list: &list}) + case "did.v1.Params.openid_config": + m := new(OpenIDConfig) + return protoreflect.ValueOfMessage(m.ProtoReflect()) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Params")) @@ -958,6 +983,10 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { n += 1 + l + runtime.Sov(uint64(l)) } } + if x.OpenidConfig != nil { + l = options.Size(x.OpenidConfig) + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -987,6 +1016,20 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if x.OpenidConfig != nil { + encoded, err := options.Marshal(x.OpenidConfig) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x22 + } if len(x.AllowedPublicKeys) > 0 { for iNdEx := len(x.AllowedPublicKeys) - 1; iNdEx >= 0; iNdEx-- { encoded, err := options.Marshal(x.AllowedPublicKeys[iNdEx]) @@ -1186,6 +1229,42 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field OpenidConfig", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.OpenidConfig == nil { + x.OpenidConfig = &OpenIDConfig{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.OpenidConfig); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -1222,40 +1301,26 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { } var ( - md_AssetInfo protoreflect.MessageDescriptor - fd_AssetInfo_id protoreflect.FieldDescriptor - fd_AssetInfo_denom protoreflect.FieldDescriptor - fd_AssetInfo_symbol protoreflect.FieldDescriptor - fd_AssetInfo_asset_type protoreflect.FieldDescriptor - fd_AssetInfo_origin_chain protoreflect.FieldDescriptor - fd_AssetInfo_origin_denom protoreflect.FieldDescriptor - fd_AssetInfo_decimals protoreflect.FieldDescriptor - fd_AssetInfo_description protoreflect.FieldDescriptor - fd_AssetInfo_image_url protoreflect.FieldDescriptor - fd_AssetInfo_coingecko_id protoreflect.FieldDescriptor - fd_AssetInfo_is_enabled protoreflect.FieldDescriptor - fd_AssetInfo_ibc_path protoreflect.FieldDescriptor - fd_AssetInfo_ibc_channel protoreflect.FieldDescriptor - fd_AssetInfo_ibc_port protoreflect.FieldDescriptor + md_AssetInfo protoreflect.MessageDescriptor + fd_AssetInfo_index protoreflect.FieldDescriptor + fd_AssetInfo_hrp protoreflect.FieldDescriptor + fd_AssetInfo_symbol protoreflect.FieldDescriptor + fd_AssetInfo_asset_type protoreflect.FieldDescriptor + fd_AssetInfo_name protoreflect.FieldDescriptor + fd_AssetInfo_method protoreflect.FieldDescriptor + fd_AssetInfo_icon_url protoreflect.FieldDescriptor ) func init() { file_did_v1_genesis_proto_init() md_AssetInfo = File_did_v1_genesis_proto.Messages().ByName("AssetInfo") - fd_AssetInfo_id = md_AssetInfo.Fields().ByName("id") - fd_AssetInfo_denom = md_AssetInfo.Fields().ByName("denom") + fd_AssetInfo_index = md_AssetInfo.Fields().ByName("index") + fd_AssetInfo_hrp = md_AssetInfo.Fields().ByName("hrp") fd_AssetInfo_symbol = md_AssetInfo.Fields().ByName("symbol") fd_AssetInfo_asset_type = md_AssetInfo.Fields().ByName("asset_type") - fd_AssetInfo_origin_chain = md_AssetInfo.Fields().ByName("origin_chain") - fd_AssetInfo_origin_denom = md_AssetInfo.Fields().ByName("origin_denom") - fd_AssetInfo_decimals = md_AssetInfo.Fields().ByName("decimals") - fd_AssetInfo_description = md_AssetInfo.Fields().ByName("description") - fd_AssetInfo_image_url = md_AssetInfo.Fields().ByName("image_url") - fd_AssetInfo_coingecko_id = md_AssetInfo.Fields().ByName("coingecko_id") - fd_AssetInfo_is_enabled = md_AssetInfo.Fields().ByName("is_enabled") - fd_AssetInfo_ibc_path = md_AssetInfo.Fields().ByName("ibc_path") - fd_AssetInfo_ibc_channel = md_AssetInfo.Fields().ByName("ibc_channel") - fd_AssetInfo_ibc_port = md_AssetInfo.Fields().ByName("ibc_port") + fd_AssetInfo_name = md_AssetInfo.Fields().ByName("name") + fd_AssetInfo_method = md_AssetInfo.Fields().ByName("method") + fd_AssetInfo_icon_url = md_AssetInfo.Fields().ByName("icon_url") } var _ protoreflect.Message = (*fastReflection_AssetInfo)(nil) @@ -1323,15 +1388,15 @@ func (x *fastReflection_AssetInfo) Interface() protoreflect.ProtoMessage { // While iterating, mutating operations may only be performed // on the current field descriptor. func (x *fastReflection_AssetInfo) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Id != "" { - value := protoreflect.ValueOfString(x.Id) - if !f(fd_AssetInfo_id, value) { + if x.Index != int64(0) { + value := protoreflect.ValueOfInt64(x.Index) + if !f(fd_AssetInfo_index, value) { return } } - if x.Denom != "" { - value := protoreflect.ValueOfString(x.Denom) - if !f(fd_AssetInfo_denom, value) { + if x.Hrp != "" { + value := protoreflect.ValueOfString(x.Hrp) + if !f(fd_AssetInfo_hrp, value) { return } } @@ -1341,69 +1406,27 @@ func (x *fastReflection_AssetInfo) Range(f func(protoreflect.FieldDescriptor, pr return } } - if x.AssetType != "" { - value := protoreflect.ValueOfString(x.AssetType) + if x.AssetType != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.AssetType)) if !f(fd_AssetInfo_asset_type, value) { return } } - if x.OriginChain != "" { - value := protoreflect.ValueOfString(x.OriginChain) - if !f(fd_AssetInfo_origin_chain, value) { + if x.Name != "" { + value := protoreflect.ValueOfString(x.Name) + if !f(fd_AssetInfo_name, value) { return } } - if x.OriginDenom != "" { - value := protoreflect.ValueOfString(x.OriginDenom) - if !f(fd_AssetInfo_origin_denom, value) { + if x.Method != "" { + value := protoreflect.ValueOfString(x.Method) + if !f(fd_AssetInfo_method, value) { return } } - if x.Decimals != int32(0) { - value := protoreflect.ValueOfInt32(x.Decimals) - if !f(fd_AssetInfo_decimals, value) { - return - } - } - if x.Description != "" { - value := protoreflect.ValueOfString(x.Description) - if !f(fd_AssetInfo_description, value) { - return - } - } - if x.ImageUrl != "" { - value := protoreflect.ValueOfString(x.ImageUrl) - if !f(fd_AssetInfo_image_url, value) { - return - } - } - if x.CoingeckoId != "" { - value := protoreflect.ValueOfString(x.CoingeckoId) - if !f(fd_AssetInfo_coingecko_id, value) { - return - } - } - if x.IsEnabled != false { - value := protoreflect.ValueOfBool(x.IsEnabled) - if !f(fd_AssetInfo_is_enabled, value) { - return - } - } - if x.IbcPath != "" { - value := protoreflect.ValueOfString(x.IbcPath) - if !f(fd_AssetInfo_ibc_path, value) { - return - } - } - if x.IbcChannel != "" { - value := protoreflect.ValueOfString(x.IbcChannel) - if !f(fd_AssetInfo_ibc_channel, value) { - return - } - } - if x.IbcPort != "" { - value := protoreflect.ValueOfString(x.IbcPort) - if !f(fd_AssetInfo_ibc_port, value) { + if x.IconUrl != "" { + value := protoreflect.ValueOfString(x.IconUrl) + if !f(fd_AssetInfo_icon_url, value) { return } } @@ -1422,34 +1445,20 @@ func (x *fastReflection_AssetInfo) Range(f func(protoreflect.FieldDescriptor, pr // a repeated field is populated if it is non-empty. func (x *fastReflection_AssetInfo) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "did.v1.AssetInfo.id": - return x.Id != "" - case "did.v1.AssetInfo.denom": - return x.Denom != "" + case "did.v1.AssetInfo.index": + return x.Index != int64(0) + case "did.v1.AssetInfo.hrp": + return x.Hrp != "" case "did.v1.AssetInfo.symbol": return x.Symbol != "" case "did.v1.AssetInfo.asset_type": - return x.AssetType != "" - case "did.v1.AssetInfo.origin_chain": - return x.OriginChain != "" - case "did.v1.AssetInfo.origin_denom": - return x.OriginDenom != "" - case "did.v1.AssetInfo.decimals": - return x.Decimals != int32(0) - case "did.v1.AssetInfo.description": - return x.Description != "" - case "did.v1.AssetInfo.image_url": - return x.ImageUrl != "" - case "did.v1.AssetInfo.coingecko_id": - return x.CoingeckoId != "" - case "did.v1.AssetInfo.is_enabled": - return x.IsEnabled != false - case "did.v1.AssetInfo.ibc_path": - return x.IbcPath != "" - case "did.v1.AssetInfo.ibc_channel": - return x.IbcChannel != "" - case "did.v1.AssetInfo.ibc_port": - return x.IbcPort != "" + return x.AssetType != 0 + case "did.v1.AssetInfo.name": + return x.Name != "" + case "did.v1.AssetInfo.method": + return x.Method != "" + case "did.v1.AssetInfo.icon_url": + return x.IconUrl != "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.AssetInfo")) @@ -1466,34 +1475,20 @@ func (x *fastReflection_AssetInfo) Has(fd protoreflect.FieldDescriptor) bool { // Clear is a mutating operation and unsafe for concurrent use. func (x *fastReflection_AssetInfo) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "did.v1.AssetInfo.id": - x.Id = "" - case "did.v1.AssetInfo.denom": - x.Denom = "" + case "did.v1.AssetInfo.index": + x.Index = int64(0) + case "did.v1.AssetInfo.hrp": + x.Hrp = "" case "did.v1.AssetInfo.symbol": x.Symbol = "" case "did.v1.AssetInfo.asset_type": - x.AssetType = "" - case "did.v1.AssetInfo.origin_chain": - x.OriginChain = "" - case "did.v1.AssetInfo.origin_denom": - x.OriginDenom = "" - case "did.v1.AssetInfo.decimals": - x.Decimals = int32(0) - case "did.v1.AssetInfo.description": - x.Description = "" - case "did.v1.AssetInfo.image_url": - x.ImageUrl = "" - case "did.v1.AssetInfo.coingecko_id": - x.CoingeckoId = "" - case "did.v1.AssetInfo.is_enabled": - x.IsEnabled = false - case "did.v1.AssetInfo.ibc_path": - x.IbcPath = "" - case "did.v1.AssetInfo.ibc_channel": - x.IbcChannel = "" - case "did.v1.AssetInfo.ibc_port": - x.IbcPort = "" + x.AssetType = 0 + case "did.v1.AssetInfo.name": + x.Name = "" + case "did.v1.AssetInfo.method": + x.Method = "" + case "did.v1.AssetInfo.icon_url": + x.IconUrl = "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.AssetInfo")) @@ -1510,47 +1505,26 @@ func (x *fastReflection_AssetInfo) Clear(fd protoreflect.FieldDescriptor) { // of the value; to obtain a mutable reference, use Mutable. func (x *fastReflection_AssetInfo) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "did.v1.AssetInfo.id": - value := x.Id - return protoreflect.ValueOfString(value) - case "did.v1.AssetInfo.denom": - value := x.Denom + case "did.v1.AssetInfo.index": + value := x.Index + return protoreflect.ValueOfInt64(value) + case "did.v1.AssetInfo.hrp": + value := x.Hrp return protoreflect.ValueOfString(value) case "did.v1.AssetInfo.symbol": value := x.Symbol return protoreflect.ValueOfString(value) case "did.v1.AssetInfo.asset_type": value := x.AssetType + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + case "did.v1.AssetInfo.name": + value := x.Name return protoreflect.ValueOfString(value) - case "did.v1.AssetInfo.origin_chain": - value := x.OriginChain + case "did.v1.AssetInfo.method": + value := x.Method return protoreflect.ValueOfString(value) - case "did.v1.AssetInfo.origin_denom": - value := x.OriginDenom - return protoreflect.ValueOfString(value) - case "did.v1.AssetInfo.decimals": - value := x.Decimals - return protoreflect.ValueOfInt32(value) - case "did.v1.AssetInfo.description": - value := x.Description - return protoreflect.ValueOfString(value) - case "did.v1.AssetInfo.image_url": - value := x.ImageUrl - return protoreflect.ValueOfString(value) - case "did.v1.AssetInfo.coingecko_id": - value := x.CoingeckoId - return protoreflect.ValueOfString(value) - case "did.v1.AssetInfo.is_enabled": - value := x.IsEnabled - return protoreflect.ValueOfBool(value) - case "did.v1.AssetInfo.ibc_path": - value := x.IbcPath - return protoreflect.ValueOfString(value) - case "did.v1.AssetInfo.ibc_channel": - value := x.IbcChannel - return protoreflect.ValueOfString(value) - case "did.v1.AssetInfo.ibc_port": - value := x.IbcPort + case "did.v1.AssetInfo.icon_url": + value := x.IconUrl return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { @@ -1572,34 +1546,20 @@ func (x *fastReflection_AssetInfo) Get(descriptor protoreflect.FieldDescriptor) // Set is a mutating operation and unsafe for concurrent use. func (x *fastReflection_AssetInfo) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "did.v1.AssetInfo.id": - x.Id = value.Interface().(string) - case "did.v1.AssetInfo.denom": - x.Denom = value.Interface().(string) + case "did.v1.AssetInfo.index": + x.Index = value.Int() + case "did.v1.AssetInfo.hrp": + x.Hrp = value.Interface().(string) case "did.v1.AssetInfo.symbol": x.Symbol = value.Interface().(string) case "did.v1.AssetInfo.asset_type": - x.AssetType = value.Interface().(string) - case "did.v1.AssetInfo.origin_chain": - x.OriginChain = value.Interface().(string) - case "did.v1.AssetInfo.origin_denom": - x.OriginDenom = value.Interface().(string) - case "did.v1.AssetInfo.decimals": - x.Decimals = int32(value.Int()) - case "did.v1.AssetInfo.description": - x.Description = value.Interface().(string) - case "did.v1.AssetInfo.image_url": - x.ImageUrl = value.Interface().(string) - case "did.v1.AssetInfo.coingecko_id": - x.CoingeckoId = value.Interface().(string) - case "did.v1.AssetInfo.is_enabled": - x.IsEnabled = value.Bool() - case "did.v1.AssetInfo.ibc_path": - x.IbcPath = value.Interface().(string) - case "did.v1.AssetInfo.ibc_channel": - x.IbcChannel = value.Interface().(string) - case "did.v1.AssetInfo.ibc_port": - x.IbcPort = value.Interface().(string) + x.AssetType = (AssetType)(value.Enum()) + case "did.v1.AssetInfo.name": + x.Name = value.Interface().(string) + case "did.v1.AssetInfo.method": + x.Method = value.Interface().(string) + case "did.v1.AssetInfo.icon_url": + x.IconUrl = value.Interface().(string) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.AssetInfo")) @@ -1620,34 +1580,20 @@ func (x *fastReflection_AssetInfo) Set(fd protoreflect.FieldDescriptor, value pr // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_AssetInfo) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.AssetInfo.id": - panic(fmt.Errorf("field id of message did.v1.AssetInfo is not mutable")) - case "did.v1.AssetInfo.denom": - panic(fmt.Errorf("field denom of message did.v1.AssetInfo is not mutable")) + case "did.v1.AssetInfo.index": + panic(fmt.Errorf("field index of message did.v1.AssetInfo is not mutable")) + case "did.v1.AssetInfo.hrp": + panic(fmt.Errorf("field hrp of message did.v1.AssetInfo is not mutable")) case "did.v1.AssetInfo.symbol": panic(fmt.Errorf("field symbol of message did.v1.AssetInfo is not mutable")) case "did.v1.AssetInfo.asset_type": panic(fmt.Errorf("field asset_type of message did.v1.AssetInfo is not mutable")) - case "did.v1.AssetInfo.origin_chain": - panic(fmt.Errorf("field origin_chain of message did.v1.AssetInfo is not mutable")) - case "did.v1.AssetInfo.origin_denom": - panic(fmt.Errorf("field origin_denom of message did.v1.AssetInfo is not mutable")) - case "did.v1.AssetInfo.decimals": - panic(fmt.Errorf("field decimals of message did.v1.AssetInfo is not mutable")) - case "did.v1.AssetInfo.description": - panic(fmt.Errorf("field description of message did.v1.AssetInfo is not mutable")) - case "did.v1.AssetInfo.image_url": - panic(fmt.Errorf("field image_url of message did.v1.AssetInfo is not mutable")) - case "did.v1.AssetInfo.coingecko_id": - panic(fmt.Errorf("field coingecko_id of message did.v1.AssetInfo is not mutable")) - case "did.v1.AssetInfo.is_enabled": - panic(fmt.Errorf("field is_enabled of message did.v1.AssetInfo is not mutable")) - case "did.v1.AssetInfo.ibc_path": - panic(fmt.Errorf("field ibc_path of message did.v1.AssetInfo is not mutable")) - case "did.v1.AssetInfo.ibc_channel": - panic(fmt.Errorf("field ibc_channel of message did.v1.AssetInfo is not mutable")) - case "did.v1.AssetInfo.ibc_port": - panic(fmt.Errorf("field ibc_port of message did.v1.AssetInfo is not mutable")) + case "did.v1.AssetInfo.name": + panic(fmt.Errorf("field name of message did.v1.AssetInfo is not mutable")) + case "did.v1.AssetInfo.method": + panic(fmt.Errorf("field method of message did.v1.AssetInfo is not mutable")) + case "did.v1.AssetInfo.icon_url": + panic(fmt.Errorf("field icon_url of message did.v1.AssetInfo is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.AssetInfo")) @@ -1661,33 +1607,19 @@ func (x *fastReflection_AssetInfo) Mutable(fd protoreflect.FieldDescriptor) prot // For lists, maps, and messages, this returns a new, empty, mutable value. func (x *fastReflection_AssetInfo) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.AssetInfo.id": - return protoreflect.ValueOfString("") - case "did.v1.AssetInfo.denom": + case "did.v1.AssetInfo.index": + return protoreflect.ValueOfInt64(int64(0)) + case "did.v1.AssetInfo.hrp": return protoreflect.ValueOfString("") case "did.v1.AssetInfo.symbol": return protoreflect.ValueOfString("") case "did.v1.AssetInfo.asset_type": + return protoreflect.ValueOfEnum(0) + case "did.v1.AssetInfo.name": return protoreflect.ValueOfString("") - case "did.v1.AssetInfo.origin_chain": + case "did.v1.AssetInfo.method": return protoreflect.ValueOfString("") - case "did.v1.AssetInfo.origin_denom": - return protoreflect.ValueOfString("") - case "did.v1.AssetInfo.decimals": - return protoreflect.ValueOfInt32(int32(0)) - case "did.v1.AssetInfo.description": - return protoreflect.ValueOfString("") - case "did.v1.AssetInfo.image_url": - return protoreflect.ValueOfString("") - case "did.v1.AssetInfo.coingecko_id": - return protoreflect.ValueOfString("") - case "did.v1.AssetInfo.is_enabled": - return protoreflect.ValueOfBool(false) - case "did.v1.AssetInfo.ibc_path": - return protoreflect.ValueOfString("") - case "did.v1.AssetInfo.ibc_channel": - return protoreflect.ValueOfString("") - case "did.v1.AssetInfo.ibc_port": + case "did.v1.AssetInfo.icon_url": return protoreflect.ValueOfString("") default: if fd.IsExtension() { @@ -1758,11 +1690,10 @@ func (x *fastReflection_AssetInfo) ProtoMethods() *protoiface.Methods { var n int var l int _ = l - l = len(x.Id) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) + if x.Index != 0 { + n += 1 + runtime.Sov(uint64(x.Index)) } - l = len(x.Denom) + l = len(x.Hrp) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } @@ -1770,45 +1701,18 @@ func (x *fastReflection_AssetInfo) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - l = len(x.AssetType) + if x.AssetType != 0 { + n += 1 + runtime.Sov(uint64(x.AssetType)) + } + l = len(x.Name) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - l = len(x.OriginChain) + l = len(x.Method) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - l = len(x.OriginDenom) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.Decimals != 0 { - n += 1 + runtime.Sov(uint64(x.Decimals)) - } - l = len(x.Description) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.ImageUrl) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.CoingeckoId) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.IsEnabled { - n += 2 - } - l = len(x.IbcPath) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.IbcChannel) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.IbcPort) + l = len(x.IconUrl) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } @@ -1841,83 +1745,31 @@ func (x *fastReflection_AssetInfo) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } - if len(x.IbcPort) > 0 { - i -= len(x.IbcPort) - copy(dAtA[i:], x.IbcPort) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.IbcPort))) + if len(x.IconUrl) > 0 { + i -= len(x.IconUrl) + copy(dAtA[i:], x.IconUrl) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.IconUrl))) i-- - dAtA[i] = 0x72 + dAtA[i] = 0x3a } - if len(x.IbcChannel) > 0 { - i -= len(x.IbcChannel) - copy(dAtA[i:], x.IbcChannel) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.IbcChannel))) - i-- - dAtA[i] = 0x6a - } - if len(x.IbcPath) > 0 { - i -= len(x.IbcPath) - copy(dAtA[i:], x.IbcPath) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.IbcPath))) - i-- - dAtA[i] = 0x62 - } - if x.IsEnabled { - i-- - if x.IsEnabled { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x58 - } - if len(x.CoingeckoId) > 0 { - i -= len(x.CoingeckoId) - copy(dAtA[i:], x.CoingeckoId) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.CoingeckoId))) - i-- - dAtA[i] = 0x52 - } - if len(x.ImageUrl) > 0 { - i -= len(x.ImageUrl) - copy(dAtA[i:], x.ImageUrl) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ImageUrl))) - i-- - dAtA[i] = 0x4a - } - if len(x.Description) > 0 { - i -= len(x.Description) - copy(dAtA[i:], x.Description) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) - i-- - dAtA[i] = 0x42 - } - if x.Decimals != 0 { - i = runtime.EncodeVarint(dAtA, i, uint64(x.Decimals)) - i-- - dAtA[i] = 0x38 - } - if len(x.OriginDenom) > 0 { - i -= len(x.OriginDenom) - copy(dAtA[i:], x.OriginDenom) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.OriginDenom))) + if len(x.Method) > 0 { + i -= len(x.Method) + copy(dAtA[i:], x.Method) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Method))) i-- dAtA[i] = 0x32 } - if len(x.OriginChain) > 0 { - i -= len(x.OriginChain) - copy(dAtA[i:], x.OriginChain) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.OriginChain))) + if len(x.Name) > 0 { + i -= len(x.Name) + copy(dAtA[i:], x.Name) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Name))) i-- dAtA[i] = 0x2a } - if len(x.AssetType) > 0 { - i -= len(x.AssetType) - copy(dAtA[i:], x.AssetType) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.AssetType))) + if x.AssetType != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.AssetType)) i-- - dAtA[i] = 0x22 + dAtA[i] = 0x20 } if len(x.Symbol) > 0 { i -= len(x.Symbol) @@ -1926,19 +1778,17 @@ func (x *fastReflection_AssetInfo) ProtoMethods() *protoiface.Methods { i-- dAtA[i] = 0x1a } - if len(x.Denom) > 0 { - i -= len(x.Denom) - copy(dAtA[i:], x.Denom) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Denom))) + if len(x.Hrp) > 0 { + i -= len(x.Hrp) + copy(dAtA[i:], x.Hrp) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Hrp))) i-- dAtA[i] = 0x12 } - if len(x.Id) > 0 { - i -= len(x.Id) - copy(dAtA[i:], x.Id) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id))) + if x.Index != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Index)) i-- - dAtA[i] = 0xa + dAtA[i] = 0x8 } if input.Buf != nil { input.Buf = append(input.Buf, dAtA...) @@ -1990,10 +1840,10 @@ func (x *fastReflection_AssetInfo) ProtoMethods() *protoiface.Methods { } switch fieldNum { case 1: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Index", wireType) } - var stringLen uint64 + x.Index = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -2003,27 +1853,14 @@ func (x *fastReflection_AssetInfo) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + x.Index |= int64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 2: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Hrp", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2051,7 +1888,7 @@ func (x *fastReflection_AssetInfo) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.Denom = string(dAtA[iNdEx:postIndex]) + x.Hrp = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { @@ -2086,10 +1923,10 @@ func (x *fastReflection_AssetInfo) ProtoMethods() *protoiface.Methods { x.Symbol = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: - if wireType != 2 { + if wireType != 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AssetType", wireType) } - var stringLen uint64 + x.AssetType = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -2099,27 +1936,14 @@ func (x *fastReflection_AssetInfo) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + x.AssetType |= AssetType(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.AssetType = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 5: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field OriginChain", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2147,11 +1971,11 @@ func (x *fastReflection_AssetInfo) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.OriginChain = string(dAtA[iNdEx:postIndex]) + x.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 6: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field OriginDenom", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Method", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2179,30 +2003,11 @@ func (x *fastReflection_AssetInfo) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.OriginDenom = string(dAtA[iNdEx:postIndex]) + x.Method = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 7: - if wireType != 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Decimals", wireType) - } - x.Decimals = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - x.Decimals |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 8: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field IconUrl", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2230,187 +2035,7 @@ func (x *fastReflection_AssetInfo) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 9: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ImageUrl", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.ImageUrl = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 10: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field CoingeckoId", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.CoingeckoId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 11: - if wireType != 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field IsEnabled", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - x.IsEnabled = bool(v != 0) - case 12: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field IbcPath", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.IbcPath = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 13: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field IbcChannel", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.IbcChannel = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 14: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field IbcPort", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.IbcPort = string(dAtA[iNdEx:postIndex]) + x.IconUrl = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -2447,120 +2072,64 @@ func (x *fastReflection_AssetInfo) ProtoMethods() *protoiface.Methods { } } -var _ protoreflect.List = (*_ChainInfo_7_list)(nil) +var _ protoreflect.List = (*_ChainInfo_5_list)(nil) -type _ChainInfo_7_list struct { - list *[]*ChainInfo_Endpoint +type _ChainInfo_5_list struct { + list *[]*ValidatorInfo } -func (x *_ChainInfo_7_list) Len() int { +func (x *_ChainInfo_5_list) Len() int { if x.list == nil { return 0 } return len(*x.list) } -func (x *_ChainInfo_7_list) Get(i int) protoreflect.Value { +func (x *_ChainInfo_5_list) Get(i int) protoreflect.Value { return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) } -func (x *_ChainInfo_7_list) Set(i int, value protoreflect.Value) { +func (x *_ChainInfo_5_list) Set(i int, value protoreflect.Value) { valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*ChainInfo_Endpoint) + concreteValue := valueUnwrapped.Interface().(*ValidatorInfo) (*x.list)[i] = concreteValue } -func (x *_ChainInfo_7_list) Append(value protoreflect.Value) { +func (x *_ChainInfo_5_list) Append(value protoreflect.Value) { valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*ChainInfo_Endpoint) + concreteValue := valueUnwrapped.Interface().(*ValidatorInfo) *x.list = append(*x.list, concreteValue) } -func (x *_ChainInfo_7_list) AppendMutable() protoreflect.Value { - v := new(ChainInfo_Endpoint) +func (x *_ChainInfo_5_list) AppendMutable() protoreflect.Value { + v := new(ValidatorInfo) *x.list = append(*x.list, v) return protoreflect.ValueOfMessage(v.ProtoReflect()) } -func (x *_ChainInfo_7_list) Truncate(n int) { +func (x *_ChainInfo_5_list) Truncate(n int) { for i := n; i < len(*x.list); i++ { (*x.list)[i] = nil } *x.list = (*x.list)[:n] } -func (x *_ChainInfo_7_list) NewElement() protoreflect.Value { - v := new(ChainInfo_Endpoint) +func (x *_ChainInfo_5_list) NewElement() protoreflect.Value { + v := new(ValidatorInfo) return protoreflect.ValueOfMessage(v.ProtoReflect()) } -func (x *_ChainInfo_7_list) IsValid() bool { - return x.list != nil -} - -var _ protoreflect.List = (*_ChainInfo_8_list)(nil) - -type _ChainInfo_8_list struct { - list *[]*ChainInfo_Endpoint -} - -func (x *_ChainInfo_8_list) Len() int { - if x.list == nil { - return 0 - } - return len(*x.list) -} - -func (x *_ChainInfo_8_list) Get(i int) protoreflect.Value { - return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) -} - -func (x *_ChainInfo_8_list) Set(i int, value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*ChainInfo_Endpoint) - (*x.list)[i] = concreteValue -} - -func (x *_ChainInfo_8_list) Append(value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*ChainInfo_Endpoint) - *x.list = append(*x.list, concreteValue) -} - -func (x *_ChainInfo_8_list) AppendMutable() protoreflect.Value { - v := new(ChainInfo_Endpoint) - *x.list = append(*x.list, v) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_ChainInfo_8_list) Truncate(n int) { - for i := n; i < len(*x.list); i++ { - (*x.list)[i] = nil - } - *x.list = (*x.list)[:n] -} - -func (x *_ChainInfo_8_list) NewElement() protoreflect.Value { - v := new(ChainInfo_Endpoint) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_ChainInfo_8_list) IsValid() bool { +func (x *_ChainInfo_5_list) IsValid() bool { return x.list != nil } var ( - md_ChainInfo protoreflect.MessageDescriptor - fd_ChainInfo_id protoreflect.FieldDescriptor - fd_ChainInfo_chain_id protoreflect.FieldDescriptor - fd_ChainInfo_name protoreflect.FieldDescriptor - fd_ChainInfo_symbol protoreflect.FieldDescriptor - fd_ChainInfo_bech32_prefix protoreflect.FieldDescriptor - fd_ChainInfo_genesis_time protoreflect.FieldDescriptor - fd_ChainInfo_grpc_endpoints protoreflect.FieldDescriptor - fd_ChainInfo_rest_endpoints protoreflect.FieldDescriptor - fd_ChainInfo_explorer protoreflect.FieldDescriptor - fd_ChainInfo_fee_info protoreflect.FieldDescriptor + md_ChainInfo protoreflect.MessageDescriptor + fd_ChainInfo_id protoreflect.FieldDescriptor + fd_ChainInfo_chain_id protoreflect.FieldDescriptor + fd_ChainInfo_name protoreflect.FieldDescriptor + fd_ChainInfo_symbol protoreflect.FieldDescriptor + fd_ChainInfo_validators protoreflect.FieldDescriptor ) func init() { @@ -2570,12 +2139,7 @@ func init() { fd_ChainInfo_chain_id = md_ChainInfo.Fields().ByName("chain_id") fd_ChainInfo_name = md_ChainInfo.Fields().ByName("name") fd_ChainInfo_symbol = md_ChainInfo.Fields().ByName("symbol") - fd_ChainInfo_bech32_prefix = md_ChainInfo.Fields().ByName("bech32_prefix") - fd_ChainInfo_genesis_time = md_ChainInfo.Fields().ByName("genesis_time") - fd_ChainInfo_grpc_endpoints = md_ChainInfo.Fields().ByName("grpc_endpoints") - fd_ChainInfo_rest_endpoints = md_ChainInfo.Fields().ByName("rest_endpoints") - fd_ChainInfo_explorer = md_ChainInfo.Fields().ByName("explorer") - fd_ChainInfo_fee_info = md_ChainInfo.Fields().ByName("fee_info") + fd_ChainInfo_validators = md_ChainInfo.Fields().ByName("validators") } var _ protoreflect.Message = (*fastReflection_ChainInfo)(nil) @@ -2667,39 +2231,9 @@ func (x *fastReflection_ChainInfo) Range(f func(protoreflect.FieldDescriptor, pr return } } - if x.Bech32Prefix != "" { - value := protoreflect.ValueOfString(x.Bech32Prefix) - if !f(fd_ChainInfo_bech32_prefix, value) { - return - } - } - if x.GenesisTime != "" { - value := protoreflect.ValueOfString(x.GenesisTime) - if !f(fd_ChainInfo_genesis_time, value) { - return - } - } - if len(x.GrpcEndpoints) != 0 { - value := protoreflect.ValueOfList(&_ChainInfo_7_list{list: &x.GrpcEndpoints}) - if !f(fd_ChainInfo_grpc_endpoints, value) { - return - } - } - if len(x.RestEndpoints) != 0 { - value := protoreflect.ValueOfList(&_ChainInfo_8_list{list: &x.RestEndpoints}) - if !f(fd_ChainInfo_rest_endpoints, value) { - return - } - } - if x.Explorer != nil { - value := protoreflect.ValueOfMessage(x.Explorer.ProtoReflect()) - if !f(fd_ChainInfo_explorer, value) { - return - } - } - if x.FeeInfo != nil { - value := protoreflect.ValueOfMessage(x.FeeInfo.ProtoReflect()) - if !f(fd_ChainInfo_fee_info, value) { + if len(x.Validators) != 0 { + value := protoreflect.ValueOfList(&_ChainInfo_5_list{list: &x.Validators}) + if !f(fd_ChainInfo_validators, value) { return } } @@ -2726,18 +2260,8 @@ func (x *fastReflection_ChainInfo) Has(fd protoreflect.FieldDescriptor) bool { return x.Name != "" case "did.v1.ChainInfo.symbol": return x.Symbol != "" - case "did.v1.ChainInfo.bech32_prefix": - return x.Bech32Prefix != "" - case "did.v1.ChainInfo.genesis_time": - return x.GenesisTime != "" - case "did.v1.ChainInfo.grpc_endpoints": - return len(x.GrpcEndpoints) != 0 - case "did.v1.ChainInfo.rest_endpoints": - return len(x.RestEndpoints) != 0 - case "did.v1.ChainInfo.explorer": - return x.Explorer != nil - case "did.v1.ChainInfo.fee_info": - return x.FeeInfo != nil + case "did.v1.ChainInfo.validators": + return len(x.Validators) != 0 default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo")) @@ -2762,18 +2286,8 @@ func (x *fastReflection_ChainInfo) Clear(fd protoreflect.FieldDescriptor) { x.Name = "" case "did.v1.ChainInfo.symbol": x.Symbol = "" - case "did.v1.ChainInfo.bech32_prefix": - x.Bech32Prefix = "" - case "did.v1.ChainInfo.genesis_time": - x.GenesisTime = "" - case "did.v1.ChainInfo.grpc_endpoints": - x.GrpcEndpoints = nil - case "did.v1.ChainInfo.rest_endpoints": - x.RestEndpoints = nil - case "did.v1.ChainInfo.explorer": - x.Explorer = nil - case "did.v1.ChainInfo.fee_info": - x.FeeInfo = nil + case "did.v1.ChainInfo.validators": + x.Validators = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo")) @@ -2802,30 +2316,12 @@ func (x *fastReflection_ChainInfo) Get(descriptor protoreflect.FieldDescriptor) case "did.v1.ChainInfo.symbol": value := x.Symbol return protoreflect.ValueOfString(value) - case "did.v1.ChainInfo.bech32_prefix": - value := x.Bech32Prefix - return protoreflect.ValueOfString(value) - case "did.v1.ChainInfo.genesis_time": - value := x.GenesisTime - return protoreflect.ValueOfString(value) - case "did.v1.ChainInfo.grpc_endpoints": - if len(x.GrpcEndpoints) == 0 { - return protoreflect.ValueOfList(&_ChainInfo_7_list{}) + case "did.v1.ChainInfo.validators": + if len(x.Validators) == 0 { + return protoreflect.ValueOfList(&_ChainInfo_5_list{}) } - listValue := &_ChainInfo_7_list{list: &x.GrpcEndpoints} + listValue := &_ChainInfo_5_list{list: &x.Validators} return protoreflect.ValueOfList(listValue) - case "did.v1.ChainInfo.rest_endpoints": - if len(x.RestEndpoints) == 0 { - return protoreflect.ValueOfList(&_ChainInfo_8_list{}) - } - listValue := &_ChainInfo_8_list{list: &x.RestEndpoints} - return protoreflect.ValueOfList(listValue) - case "did.v1.ChainInfo.explorer": - value := x.Explorer - return protoreflect.ValueOfMessage(value.ProtoReflect()) - case "did.v1.ChainInfo.fee_info": - value := x.FeeInfo - return protoreflect.ValueOfMessage(value.ProtoReflect()) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo")) @@ -2854,22 +2350,10 @@ func (x *fastReflection_ChainInfo) Set(fd protoreflect.FieldDescriptor, value pr x.Name = value.Interface().(string) case "did.v1.ChainInfo.symbol": x.Symbol = value.Interface().(string) - case "did.v1.ChainInfo.bech32_prefix": - x.Bech32Prefix = value.Interface().(string) - case "did.v1.ChainInfo.genesis_time": - x.GenesisTime = value.Interface().(string) - case "did.v1.ChainInfo.grpc_endpoints": + case "did.v1.ChainInfo.validators": lv := value.List() - clv := lv.(*_ChainInfo_7_list) - x.GrpcEndpoints = *clv.list - case "did.v1.ChainInfo.rest_endpoints": - lv := value.List() - clv := lv.(*_ChainInfo_8_list) - x.RestEndpoints = *clv.list - case "did.v1.ChainInfo.explorer": - x.Explorer = value.Message().Interface().(*ChainInfo_ExplorerInfo) - case "did.v1.ChainInfo.fee_info": - x.FeeInfo = value.Message().Interface().(*ChainInfo_FeeInfo) + clv := lv.(*_ChainInfo_5_list) + x.Validators = *clv.list default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo")) @@ -2890,28 +2374,12 @@ func (x *fastReflection_ChainInfo) Set(fd protoreflect.FieldDescriptor, value pr // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_ChainInfo) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.ChainInfo.grpc_endpoints": - if x.GrpcEndpoints == nil { - x.GrpcEndpoints = []*ChainInfo_Endpoint{} + case "did.v1.ChainInfo.validators": + if x.Validators == nil { + x.Validators = []*ValidatorInfo{} } - value := &_ChainInfo_7_list{list: &x.GrpcEndpoints} + value := &_ChainInfo_5_list{list: &x.Validators} return protoreflect.ValueOfList(value) - case "did.v1.ChainInfo.rest_endpoints": - if x.RestEndpoints == nil { - x.RestEndpoints = []*ChainInfo_Endpoint{} - } - value := &_ChainInfo_8_list{list: &x.RestEndpoints} - return protoreflect.ValueOfList(value) - case "did.v1.ChainInfo.explorer": - if x.Explorer == nil { - x.Explorer = new(ChainInfo_ExplorerInfo) - } - return protoreflect.ValueOfMessage(x.Explorer.ProtoReflect()) - case "did.v1.ChainInfo.fee_info": - if x.FeeInfo == nil { - x.FeeInfo = new(ChainInfo_FeeInfo) - } - return protoreflect.ValueOfMessage(x.FeeInfo.ProtoReflect()) case "did.v1.ChainInfo.id": panic(fmt.Errorf("field id of message did.v1.ChainInfo is not mutable")) case "did.v1.ChainInfo.chain_id": @@ -2920,10 +2388,6 @@ func (x *fastReflection_ChainInfo) Mutable(fd protoreflect.FieldDescriptor) prot panic(fmt.Errorf("field name of message did.v1.ChainInfo is not mutable")) case "did.v1.ChainInfo.symbol": panic(fmt.Errorf("field symbol of message did.v1.ChainInfo is not mutable")) - case "did.v1.ChainInfo.bech32_prefix": - panic(fmt.Errorf("field bech32_prefix of message did.v1.ChainInfo is not mutable")) - case "did.v1.ChainInfo.genesis_time": - panic(fmt.Errorf("field genesis_time of message did.v1.ChainInfo is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo")) @@ -2945,22 +2409,9 @@ func (x *fastReflection_ChainInfo) NewField(fd protoreflect.FieldDescriptor) pro return protoreflect.ValueOfString("") case "did.v1.ChainInfo.symbol": return protoreflect.ValueOfString("") - case "did.v1.ChainInfo.bech32_prefix": - return protoreflect.ValueOfString("") - case "did.v1.ChainInfo.genesis_time": - return protoreflect.ValueOfString("") - case "did.v1.ChainInfo.grpc_endpoints": - list := []*ChainInfo_Endpoint{} - return protoreflect.ValueOfList(&_ChainInfo_7_list{list: &list}) - case "did.v1.ChainInfo.rest_endpoints": - list := []*ChainInfo_Endpoint{} - return protoreflect.ValueOfList(&_ChainInfo_8_list{list: &list}) - case "did.v1.ChainInfo.explorer": - m := new(ChainInfo_ExplorerInfo) - return protoreflect.ValueOfMessage(m.ProtoReflect()) - case "did.v1.ChainInfo.fee_info": - m := new(ChainInfo_FeeInfo) - return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "did.v1.ChainInfo.validators": + list := []*ValidatorInfo{} + return protoreflect.ValueOfList(&_ChainInfo_5_list{list: &list}) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo")) @@ -3046,34 +2497,12 @@ func (x *fastReflection_ChainInfo) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - l = len(x.Bech32Prefix) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.GenesisTime) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if len(x.GrpcEndpoints) > 0 { - for _, e := range x.GrpcEndpoints { + if len(x.Validators) > 0 { + for _, e := range x.Validators { l = options.Size(e) n += 1 + l + runtime.Sov(uint64(l)) } } - if len(x.RestEndpoints) > 0 { - for _, e := range x.RestEndpoints { - l = options.Size(e) - n += 1 + l + runtime.Sov(uint64(l)) - } - } - if x.Explorer != nil { - l = options.Size(x.Explorer) - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.FeeInfo != nil { - l = options.Size(x.FeeInfo) - n += 1 + l + runtime.Sov(uint64(l)) - } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -3103,37 +2532,9 @@ func (x *fastReflection_ChainInfo) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } - if x.FeeInfo != nil { - encoded, err := options.Marshal(x.FeeInfo) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) - i-- - dAtA[i] = 0x52 - } - if x.Explorer != nil { - encoded, err := options.Marshal(x.Explorer) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) - i-- - dAtA[i] = 0x4a - } - if len(x.RestEndpoints) > 0 { - for iNdEx := len(x.RestEndpoints) - 1; iNdEx >= 0; iNdEx-- { - encoded, err := options.Marshal(x.RestEndpoints[iNdEx]) + if len(x.Validators) > 0 { + for iNdEx := len(x.Validators) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Validators[iNdEx]) if err != nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -3144,39 +2545,9 @@ func (x *fastReflection_ChainInfo) ProtoMethods() *protoiface.Methods { copy(dAtA[i:], encoded) i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) i-- - dAtA[i] = 0x42 + dAtA[i] = 0x2a } } - if len(x.GrpcEndpoints) > 0 { - for iNdEx := len(x.GrpcEndpoints) - 1; iNdEx >= 0; iNdEx-- { - encoded, err := options.Marshal(x.GrpcEndpoints[iNdEx]) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) - i-- - dAtA[i] = 0x3a - } - } - if len(x.GenesisTime) > 0 { - i -= len(x.GenesisTime) - copy(dAtA[i:], x.GenesisTime) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.GenesisTime))) - i-- - dAtA[i] = 0x32 - } - if len(x.Bech32Prefix) > 0 { - i -= len(x.Bech32Prefix) - copy(dAtA[i:], x.Bech32Prefix) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Bech32Prefix))) - i-- - dAtA[i] = 0x2a - } if len(x.Symbol) > 0 { i -= len(x.Symbol) copy(dAtA[i:], x.Symbol) @@ -3384,71 +2755,7 @@ func (x *fastReflection_ChainInfo) ProtoMethods() *protoiface.Methods { iNdEx = postIndex case 5: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Bech32Prefix", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Bech32Prefix = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 6: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field GenesisTime", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.GenesisTime = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 7: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field GrpcEndpoints", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Validators", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3475,114 +2782,8 @@ func (x *fastReflection_ChainInfo) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.GrpcEndpoints = append(x.GrpcEndpoints, &ChainInfo_Endpoint{}) - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.GrpcEndpoints[len(x.GrpcEndpoints)-1]); err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - iNdEx = postIndex - case 8: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field RestEndpoints", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.RestEndpoints = append(x.RestEndpoints, &ChainInfo_Endpoint{}) - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.RestEndpoints[len(x.RestEndpoints)-1]); err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - iNdEx = postIndex - case 9: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Explorer", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if x.Explorer == nil { - x.Explorer = &ChainInfo_ExplorerInfo{} - } - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Explorer); err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - iNdEx = postIndex - case 10: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field FeeInfo", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if x.FeeInfo == nil { - x.FeeInfo = &ChainInfo_FeeInfo{} - } - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.FeeInfo); err != nil { + x.Validators = append(x.Validators, &ValidatorInfo{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Validators[len(x.Validators)-1]); err != nil { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex @@ -3622,28 +2823,34 @@ func (x *fastReflection_ChainInfo) ProtoMethods() *protoiface.Methods { } var ( - md_ChainInfo_Endpoint protoreflect.MessageDescriptor - fd_ChainInfo_Endpoint_url protoreflect.FieldDescriptor - fd_ChainInfo_Endpoint_is_primary protoreflect.FieldDescriptor + md_KeyInfo protoreflect.MessageDescriptor + fd_KeyInfo_role protoreflect.FieldDescriptor + fd_KeyInfo_algorithm protoreflect.FieldDescriptor + fd_KeyInfo_encoding protoreflect.FieldDescriptor + fd_KeyInfo_curve protoreflect.FieldDescriptor + fd_KeyInfo_type protoreflect.FieldDescriptor ) func init() { file_did_v1_genesis_proto_init() - md_ChainInfo_Endpoint = File_did_v1_genesis_proto.Messages().ByName("ChainInfo").Messages().ByName("Endpoint") - fd_ChainInfo_Endpoint_url = md_ChainInfo_Endpoint.Fields().ByName("url") - fd_ChainInfo_Endpoint_is_primary = md_ChainInfo_Endpoint.Fields().ByName("is_primary") + md_KeyInfo = File_did_v1_genesis_proto.Messages().ByName("KeyInfo") + fd_KeyInfo_role = md_KeyInfo.Fields().ByName("role") + fd_KeyInfo_algorithm = md_KeyInfo.Fields().ByName("algorithm") + fd_KeyInfo_encoding = md_KeyInfo.Fields().ByName("encoding") + fd_KeyInfo_curve = md_KeyInfo.Fields().ByName("curve") + fd_KeyInfo_type = md_KeyInfo.Fields().ByName("type") } -var _ protoreflect.Message = (*fastReflection_ChainInfo_Endpoint)(nil) +var _ protoreflect.Message = (*fastReflection_KeyInfo)(nil) -type fastReflection_ChainInfo_Endpoint ChainInfo_Endpoint +type fastReflection_KeyInfo KeyInfo -func (x *ChainInfo_Endpoint) ProtoReflect() protoreflect.Message { - return (*fastReflection_ChainInfo_Endpoint)(x) +func (x *KeyInfo) ProtoReflect() protoreflect.Message { + return (*fastReflection_KeyInfo)(x) } -func (x *ChainInfo_Endpoint) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_genesis_proto_msgTypes[5] +func (x *KeyInfo) slowProtoReflect() protoreflect.Message { + mi := &file_did_v1_genesis_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3654,43 +2861,43 @@ func (x *ChainInfo_Endpoint) slowProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -var _fastReflection_ChainInfo_Endpoint_messageType fastReflection_ChainInfo_Endpoint_messageType -var _ protoreflect.MessageType = fastReflection_ChainInfo_Endpoint_messageType{} +var _fastReflection_KeyInfo_messageType fastReflection_KeyInfo_messageType +var _ protoreflect.MessageType = fastReflection_KeyInfo_messageType{} -type fastReflection_ChainInfo_Endpoint_messageType struct{} +type fastReflection_KeyInfo_messageType struct{} -func (x fastReflection_ChainInfo_Endpoint_messageType) Zero() protoreflect.Message { - return (*fastReflection_ChainInfo_Endpoint)(nil) +func (x fastReflection_KeyInfo_messageType) Zero() protoreflect.Message { + return (*fastReflection_KeyInfo)(nil) } -func (x fastReflection_ChainInfo_Endpoint_messageType) New() protoreflect.Message { - return new(fastReflection_ChainInfo_Endpoint) +func (x fastReflection_KeyInfo_messageType) New() protoreflect.Message { + return new(fastReflection_KeyInfo) } -func (x fastReflection_ChainInfo_Endpoint_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_ChainInfo_Endpoint +func (x fastReflection_KeyInfo_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_KeyInfo } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_ChainInfo_Endpoint) Descriptor() protoreflect.MessageDescriptor { - return md_ChainInfo_Endpoint +func (x *fastReflection_KeyInfo) Descriptor() protoreflect.MessageDescriptor { + return md_KeyInfo } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_ChainInfo_Endpoint) Type() protoreflect.MessageType { - return _fastReflection_ChainInfo_Endpoint_messageType +func (x *fastReflection_KeyInfo) Type() protoreflect.MessageType { + return _fastReflection_KeyInfo_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_ChainInfo_Endpoint) New() protoreflect.Message { - return new(fastReflection_ChainInfo_Endpoint) +func (x *fastReflection_KeyInfo) New() protoreflect.Message { + return new(fastReflection_KeyInfo) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_ChainInfo_Endpoint) Interface() protoreflect.ProtoMessage { - return (*ChainInfo_Endpoint)(x) +func (x *fastReflection_KeyInfo) Interface() protoreflect.ProtoMessage { + return (*KeyInfo)(x) } // Range iterates over every populated field in an undefined order, @@ -3698,16 +2905,34 @@ func (x *fastReflection_ChainInfo_Endpoint) Interface() protoreflect.ProtoMessag // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_ChainInfo_Endpoint) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Url != "" { - value := protoreflect.ValueOfString(x.Url) - if !f(fd_ChainInfo_Endpoint_url, value) { +func (x *fastReflection_KeyInfo) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Role != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Role)) + if !f(fd_KeyInfo_role, value) { return } } - if x.IsPrimary != false { - value := protoreflect.ValueOfBool(x.IsPrimary) - if !f(fd_ChainInfo_Endpoint_is_primary, value) { + if x.Algorithm != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Algorithm)) + if !f(fd_KeyInfo_algorithm, value) { + return + } + } + if x.Encoding != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Encoding)) + if !f(fd_KeyInfo_encoding, value) { + return + } + } + if x.Curve != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Curve)) + if !f(fd_KeyInfo_curve, value) { + return + } + } + if x.Type_ != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Type_)) + if !f(fd_KeyInfo_type, value) { return } } @@ -3724,17 +2949,23 @@ func (x *fastReflection_ChainInfo_Endpoint) Range(f func(protoreflect.FieldDescr // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_ChainInfo_Endpoint) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_KeyInfo) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "did.v1.ChainInfo.Endpoint.url": - return x.Url != "" - case "did.v1.ChainInfo.Endpoint.is_primary": - return x.IsPrimary != false + case "did.v1.KeyInfo.role": + return x.Role != 0 + case "did.v1.KeyInfo.algorithm": + return x.Algorithm != 0 + case "did.v1.KeyInfo.encoding": + return x.Encoding != 0 + case "did.v1.KeyInfo.curve": + return x.Curve != 0 + case "did.v1.KeyInfo.type": + return x.Type_ != 0 default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.Endpoint")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.KeyInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.Endpoint does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.KeyInfo does not contain field %s", fd.FullName())) } } @@ -3744,17 +2975,23 @@ func (x *fastReflection_ChainInfo_Endpoint) Has(fd protoreflect.FieldDescriptor) // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_ChainInfo_Endpoint) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_KeyInfo) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "did.v1.ChainInfo.Endpoint.url": - x.Url = "" - case "did.v1.ChainInfo.Endpoint.is_primary": - x.IsPrimary = false + case "did.v1.KeyInfo.role": + x.Role = 0 + case "did.v1.KeyInfo.algorithm": + x.Algorithm = 0 + case "did.v1.KeyInfo.encoding": + x.Encoding = 0 + case "did.v1.KeyInfo.curve": + x.Curve = 0 + case "did.v1.KeyInfo.type": + x.Type_ = 0 default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.Endpoint")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.KeyInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.Endpoint does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.KeyInfo does not contain field %s", fd.FullName())) } } @@ -3764,19 +3001,28 @@ func (x *fastReflection_ChainInfo_Endpoint) Clear(fd protoreflect.FieldDescripto // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_ChainInfo_Endpoint) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_KeyInfo) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "did.v1.ChainInfo.Endpoint.url": - value := x.Url - return protoreflect.ValueOfString(value) - case "did.v1.ChainInfo.Endpoint.is_primary": - value := x.IsPrimary - return protoreflect.ValueOfBool(value) + case "did.v1.KeyInfo.role": + value := x.Role + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + case "did.v1.KeyInfo.algorithm": + value := x.Algorithm + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + case "did.v1.KeyInfo.encoding": + value := x.Encoding + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + case "did.v1.KeyInfo.curve": + value := x.Curve + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + case "did.v1.KeyInfo.type": + value := x.Type_ + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.Endpoint")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.KeyInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.Endpoint does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message did.v1.KeyInfo does not contain field %s", descriptor.FullName())) } } @@ -3790,17 +3036,23 @@ func (x *fastReflection_ChainInfo_Endpoint) Get(descriptor protoreflect.FieldDes // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_ChainInfo_Endpoint) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_KeyInfo) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "did.v1.ChainInfo.Endpoint.url": - x.Url = value.Interface().(string) - case "did.v1.ChainInfo.Endpoint.is_primary": - x.IsPrimary = value.Bool() + case "did.v1.KeyInfo.role": + x.Role = (KeyRole)(value.Enum()) + case "did.v1.KeyInfo.algorithm": + x.Algorithm = (KeyAlgorithm)(value.Enum()) + case "did.v1.KeyInfo.encoding": + x.Encoding = (KeyEncoding)(value.Enum()) + case "did.v1.KeyInfo.curve": + x.Curve = (KeyCurve)(value.Enum()) + case "did.v1.KeyInfo.type": + x.Type_ = (KeyType)(value.Enum()) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.Endpoint")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.KeyInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.Endpoint does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.KeyInfo does not contain field %s", fd.FullName())) } } @@ -3814,44 +3066,56 @@ func (x *fastReflection_ChainInfo_Endpoint) Set(fd protoreflect.FieldDescriptor, // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_ChainInfo_Endpoint) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_KeyInfo) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.ChainInfo.Endpoint.url": - panic(fmt.Errorf("field url of message did.v1.ChainInfo.Endpoint is not mutable")) - case "did.v1.ChainInfo.Endpoint.is_primary": - panic(fmt.Errorf("field is_primary of message did.v1.ChainInfo.Endpoint is not mutable")) + case "did.v1.KeyInfo.role": + panic(fmt.Errorf("field role of message did.v1.KeyInfo is not mutable")) + case "did.v1.KeyInfo.algorithm": + panic(fmt.Errorf("field algorithm of message did.v1.KeyInfo is not mutable")) + case "did.v1.KeyInfo.encoding": + panic(fmt.Errorf("field encoding of message did.v1.KeyInfo is not mutable")) + case "did.v1.KeyInfo.curve": + panic(fmt.Errorf("field curve of message did.v1.KeyInfo is not mutable")) + case "did.v1.KeyInfo.type": + panic(fmt.Errorf("field type of message did.v1.KeyInfo is not mutable")) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.Endpoint")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.KeyInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.Endpoint does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.KeyInfo does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_ChainInfo_Endpoint) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_KeyInfo) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.ChainInfo.Endpoint.url": - return protoreflect.ValueOfString("") - case "did.v1.ChainInfo.Endpoint.is_primary": - return protoreflect.ValueOfBool(false) + case "did.v1.KeyInfo.role": + return protoreflect.ValueOfEnum(0) + case "did.v1.KeyInfo.algorithm": + return protoreflect.ValueOfEnum(0) + case "did.v1.KeyInfo.encoding": + return protoreflect.ValueOfEnum(0) + case "did.v1.KeyInfo.curve": + return protoreflect.ValueOfEnum(0) + case "did.v1.KeyInfo.type": + return protoreflect.ValueOfEnum(0) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.Endpoint")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.KeyInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.Endpoint does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.KeyInfo does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_ChainInfo_Endpoint) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_KeyInfo) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.ChainInfo.Endpoint", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in did.v1.KeyInfo", d.FullName())) } panic("unreachable") } @@ -3859,7 +3123,7 @@ func (x *fastReflection_ChainInfo_Endpoint) WhichOneof(d protoreflect.OneofDescr // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_ChainInfo_Endpoint) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_KeyInfo) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -3870,7 +3134,7 @@ func (x *fastReflection_ChainInfo_Endpoint) GetUnknown() protoreflect.RawFields // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_ChainInfo_Endpoint) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_KeyInfo) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -3882,7 +3146,7 @@ func (x *fastReflection_ChainInfo_Endpoint) SetUnknown(fields protoreflect.RawFi // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_ChainInfo_Endpoint) IsValid() bool { +func (x *fastReflection_KeyInfo) IsValid() bool { return x != nil } @@ -3892,9 +3156,2831 @@ func (x *fastReflection_ChainInfo_Endpoint) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_ChainInfo_Endpoint) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_KeyInfo) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*ChainInfo_Endpoint) + x := input.Message.Interface().(*KeyInfo) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Role != 0 { + n += 1 + runtime.Sov(uint64(x.Role)) + } + if x.Algorithm != 0 { + n += 1 + runtime.Sov(uint64(x.Algorithm)) + } + if x.Encoding != 0 { + n += 1 + runtime.Sov(uint64(x.Encoding)) + } + if x.Curve != 0 { + n += 1 + runtime.Sov(uint64(x.Curve)) + } + if x.Type_ != 0 { + n += 1 + runtime.Sov(uint64(x.Type_)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*KeyInfo) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Type_ != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Type_)) + i-- + dAtA[i] = 0x28 + } + if x.Curve != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Curve)) + i-- + dAtA[i] = 0x20 + } + if x.Encoding != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Encoding)) + i-- + dAtA[i] = 0x18 + } + if x.Algorithm != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Algorithm)) + i-- + dAtA[i] = 0x10 + } + if x.Role != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Role)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*KeyInfo) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: KeyInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: KeyInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) + } + x.Role = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Role |= KeyRole(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Algorithm", wireType) + } + x.Algorithm = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Algorithm |= KeyAlgorithm(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Encoding", wireType) + } + x.Encoding = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Encoding |= KeyEncoding(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Curve", wireType) + } + x.Curve = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Curve |= KeyCurve(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Type_", wireType) + } + x.Type_ = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Type_ |= KeyType(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.List = (*_OpenIDConfig_5_list)(nil) + +type _OpenIDConfig_5_list struct { + list *[]string +} + +func (x *_OpenIDConfig_5_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_OpenIDConfig_5_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_OpenIDConfig_5_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_OpenIDConfig_5_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_OpenIDConfig_5_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message OpenIDConfig at list field ScopesSupported as it is not of Message kind")) +} + +func (x *_OpenIDConfig_5_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_OpenIDConfig_5_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_OpenIDConfig_5_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_OpenIDConfig_6_list)(nil) + +type _OpenIDConfig_6_list struct { + list *[]string +} + +func (x *_OpenIDConfig_6_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_OpenIDConfig_6_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_OpenIDConfig_6_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_OpenIDConfig_6_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_OpenIDConfig_6_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message OpenIDConfig at list field ResponseTypesSupported as it is not of Message kind")) +} + +func (x *_OpenIDConfig_6_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_OpenIDConfig_6_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_OpenIDConfig_6_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_OpenIDConfig_7_list)(nil) + +type _OpenIDConfig_7_list struct { + list *[]string +} + +func (x *_OpenIDConfig_7_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_OpenIDConfig_7_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_OpenIDConfig_7_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_OpenIDConfig_7_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_OpenIDConfig_7_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message OpenIDConfig at list field ResponseModesSupported as it is not of Message kind")) +} + +func (x *_OpenIDConfig_7_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_OpenIDConfig_7_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_OpenIDConfig_7_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_OpenIDConfig_8_list)(nil) + +type _OpenIDConfig_8_list struct { + list *[]string +} + +func (x *_OpenIDConfig_8_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_OpenIDConfig_8_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_OpenIDConfig_8_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_OpenIDConfig_8_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_OpenIDConfig_8_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message OpenIDConfig at list field GrantTypesSupported as it is not of Message kind")) +} + +func (x *_OpenIDConfig_8_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_OpenIDConfig_8_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_OpenIDConfig_8_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_OpenIDConfig_9_list)(nil) + +type _OpenIDConfig_9_list struct { + list *[]string +} + +func (x *_OpenIDConfig_9_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_OpenIDConfig_9_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_OpenIDConfig_9_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_OpenIDConfig_9_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_OpenIDConfig_9_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message OpenIDConfig at list field AcrValuesSupported as it is not of Message kind")) +} + +func (x *_OpenIDConfig_9_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_OpenIDConfig_9_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_OpenIDConfig_9_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_OpenIDConfig_10_list)(nil) + +type _OpenIDConfig_10_list struct { + list *[]string +} + +func (x *_OpenIDConfig_10_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_OpenIDConfig_10_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_OpenIDConfig_10_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_OpenIDConfig_10_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_OpenIDConfig_10_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message OpenIDConfig at list field SubjectTypesSupported as it is not of Message kind")) +} + +func (x *_OpenIDConfig_10_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_OpenIDConfig_10_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_OpenIDConfig_10_list) IsValid() bool { + return x.list != nil +} + +var ( + md_OpenIDConfig protoreflect.MessageDescriptor + fd_OpenIDConfig_issuer protoreflect.FieldDescriptor + fd_OpenIDConfig_authorization_endpoint protoreflect.FieldDescriptor + fd_OpenIDConfig_token_endpoint protoreflect.FieldDescriptor + fd_OpenIDConfig_userinfo_endpoint protoreflect.FieldDescriptor + fd_OpenIDConfig_scopes_supported protoreflect.FieldDescriptor + fd_OpenIDConfig_response_types_supported protoreflect.FieldDescriptor + fd_OpenIDConfig_response_modes_supported protoreflect.FieldDescriptor + fd_OpenIDConfig_grant_types_supported protoreflect.FieldDescriptor + fd_OpenIDConfig_acr_values_supported protoreflect.FieldDescriptor + fd_OpenIDConfig_subject_types_supported protoreflect.FieldDescriptor +) + +func init() { + file_did_v1_genesis_proto_init() + md_OpenIDConfig = File_did_v1_genesis_proto.Messages().ByName("OpenIDConfig") + fd_OpenIDConfig_issuer = md_OpenIDConfig.Fields().ByName("issuer") + fd_OpenIDConfig_authorization_endpoint = md_OpenIDConfig.Fields().ByName("authorization_endpoint") + fd_OpenIDConfig_token_endpoint = md_OpenIDConfig.Fields().ByName("token_endpoint") + fd_OpenIDConfig_userinfo_endpoint = md_OpenIDConfig.Fields().ByName("userinfo_endpoint") + fd_OpenIDConfig_scopes_supported = md_OpenIDConfig.Fields().ByName("scopes_supported") + fd_OpenIDConfig_response_types_supported = md_OpenIDConfig.Fields().ByName("response_types_supported") + fd_OpenIDConfig_response_modes_supported = md_OpenIDConfig.Fields().ByName("response_modes_supported") + fd_OpenIDConfig_grant_types_supported = md_OpenIDConfig.Fields().ByName("grant_types_supported") + fd_OpenIDConfig_acr_values_supported = md_OpenIDConfig.Fields().ByName("acr_values_supported") + fd_OpenIDConfig_subject_types_supported = md_OpenIDConfig.Fields().ByName("subject_types_supported") +} + +var _ protoreflect.Message = (*fastReflection_OpenIDConfig)(nil) + +type fastReflection_OpenIDConfig OpenIDConfig + +func (x *OpenIDConfig) ProtoReflect() protoreflect.Message { + return (*fastReflection_OpenIDConfig)(x) +} + +func (x *OpenIDConfig) slowProtoReflect() protoreflect.Message { + mi := &file_did_v1_genesis_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_OpenIDConfig_messageType fastReflection_OpenIDConfig_messageType +var _ protoreflect.MessageType = fastReflection_OpenIDConfig_messageType{} + +type fastReflection_OpenIDConfig_messageType struct{} + +func (x fastReflection_OpenIDConfig_messageType) Zero() protoreflect.Message { + return (*fastReflection_OpenIDConfig)(nil) +} +func (x fastReflection_OpenIDConfig_messageType) New() protoreflect.Message { + return new(fastReflection_OpenIDConfig) +} +func (x fastReflection_OpenIDConfig_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_OpenIDConfig +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_OpenIDConfig) Descriptor() protoreflect.MessageDescriptor { + return md_OpenIDConfig +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_OpenIDConfig) Type() protoreflect.MessageType { + return _fastReflection_OpenIDConfig_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_OpenIDConfig) New() protoreflect.Message { + return new(fastReflection_OpenIDConfig) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_OpenIDConfig) Interface() protoreflect.ProtoMessage { + return (*OpenIDConfig)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_OpenIDConfig) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Issuer != "" { + value := protoreflect.ValueOfString(x.Issuer) + if !f(fd_OpenIDConfig_issuer, value) { + return + } + } + if x.AuthorizationEndpoint != "" { + value := protoreflect.ValueOfString(x.AuthorizationEndpoint) + if !f(fd_OpenIDConfig_authorization_endpoint, value) { + return + } + } + if x.TokenEndpoint != "" { + value := protoreflect.ValueOfString(x.TokenEndpoint) + if !f(fd_OpenIDConfig_token_endpoint, value) { + return + } + } + if x.UserinfoEndpoint != "" { + value := protoreflect.ValueOfString(x.UserinfoEndpoint) + if !f(fd_OpenIDConfig_userinfo_endpoint, value) { + return + } + } + if len(x.ScopesSupported) != 0 { + value := protoreflect.ValueOfList(&_OpenIDConfig_5_list{list: &x.ScopesSupported}) + if !f(fd_OpenIDConfig_scopes_supported, value) { + return + } + } + if len(x.ResponseTypesSupported) != 0 { + value := protoreflect.ValueOfList(&_OpenIDConfig_6_list{list: &x.ResponseTypesSupported}) + if !f(fd_OpenIDConfig_response_types_supported, value) { + return + } + } + if len(x.ResponseModesSupported) != 0 { + value := protoreflect.ValueOfList(&_OpenIDConfig_7_list{list: &x.ResponseModesSupported}) + if !f(fd_OpenIDConfig_response_modes_supported, value) { + return + } + } + if len(x.GrantTypesSupported) != 0 { + value := protoreflect.ValueOfList(&_OpenIDConfig_8_list{list: &x.GrantTypesSupported}) + if !f(fd_OpenIDConfig_grant_types_supported, value) { + return + } + } + if len(x.AcrValuesSupported) != 0 { + value := protoreflect.ValueOfList(&_OpenIDConfig_9_list{list: &x.AcrValuesSupported}) + if !f(fd_OpenIDConfig_acr_values_supported, value) { + return + } + } + if len(x.SubjectTypesSupported) != 0 { + value := protoreflect.ValueOfList(&_OpenIDConfig_10_list{list: &x.SubjectTypesSupported}) + if !f(fd_OpenIDConfig_subject_types_supported, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_OpenIDConfig) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "did.v1.OpenIDConfig.issuer": + return x.Issuer != "" + case "did.v1.OpenIDConfig.authorization_endpoint": + return x.AuthorizationEndpoint != "" + case "did.v1.OpenIDConfig.token_endpoint": + return x.TokenEndpoint != "" + case "did.v1.OpenIDConfig.userinfo_endpoint": + return x.UserinfoEndpoint != "" + case "did.v1.OpenIDConfig.scopes_supported": + return len(x.ScopesSupported) != 0 + case "did.v1.OpenIDConfig.response_types_supported": + return len(x.ResponseTypesSupported) != 0 + case "did.v1.OpenIDConfig.response_modes_supported": + return len(x.ResponseModesSupported) != 0 + case "did.v1.OpenIDConfig.grant_types_supported": + return len(x.GrantTypesSupported) != 0 + case "did.v1.OpenIDConfig.acr_values_supported": + return len(x.AcrValuesSupported) != 0 + case "did.v1.OpenIDConfig.subject_types_supported": + return len(x.SubjectTypesSupported) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.OpenIDConfig")) + } + panic(fmt.Errorf("message did.v1.OpenIDConfig does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_OpenIDConfig) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "did.v1.OpenIDConfig.issuer": + x.Issuer = "" + case "did.v1.OpenIDConfig.authorization_endpoint": + x.AuthorizationEndpoint = "" + case "did.v1.OpenIDConfig.token_endpoint": + x.TokenEndpoint = "" + case "did.v1.OpenIDConfig.userinfo_endpoint": + x.UserinfoEndpoint = "" + case "did.v1.OpenIDConfig.scopes_supported": + x.ScopesSupported = nil + case "did.v1.OpenIDConfig.response_types_supported": + x.ResponseTypesSupported = nil + case "did.v1.OpenIDConfig.response_modes_supported": + x.ResponseModesSupported = nil + case "did.v1.OpenIDConfig.grant_types_supported": + x.GrantTypesSupported = nil + case "did.v1.OpenIDConfig.acr_values_supported": + x.AcrValuesSupported = nil + case "did.v1.OpenIDConfig.subject_types_supported": + x.SubjectTypesSupported = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.OpenIDConfig")) + } + panic(fmt.Errorf("message did.v1.OpenIDConfig does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_OpenIDConfig) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "did.v1.OpenIDConfig.issuer": + value := x.Issuer + return protoreflect.ValueOfString(value) + case "did.v1.OpenIDConfig.authorization_endpoint": + value := x.AuthorizationEndpoint + return protoreflect.ValueOfString(value) + case "did.v1.OpenIDConfig.token_endpoint": + value := x.TokenEndpoint + return protoreflect.ValueOfString(value) + case "did.v1.OpenIDConfig.userinfo_endpoint": + value := x.UserinfoEndpoint + return protoreflect.ValueOfString(value) + case "did.v1.OpenIDConfig.scopes_supported": + if len(x.ScopesSupported) == 0 { + return protoreflect.ValueOfList(&_OpenIDConfig_5_list{}) + } + listValue := &_OpenIDConfig_5_list{list: &x.ScopesSupported} + return protoreflect.ValueOfList(listValue) + case "did.v1.OpenIDConfig.response_types_supported": + if len(x.ResponseTypesSupported) == 0 { + return protoreflect.ValueOfList(&_OpenIDConfig_6_list{}) + } + listValue := &_OpenIDConfig_6_list{list: &x.ResponseTypesSupported} + return protoreflect.ValueOfList(listValue) + case "did.v1.OpenIDConfig.response_modes_supported": + if len(x.ResponseModesSupported) == 0 { + return protoreflect.ValueOfList(&_OpenIDConfig_7_list{}) + } + listValue := &_OpenIDConfig_7_list{list: &x.ResponseModesSupported} + return protoreflect.ValueOfList(listValue) + case "did.v1.OpenIDConfig.grant_types_supported": + if len(x.GrantTypesSupported) == 0 { + return protoreflect.ValueOfList(&_OpenIDConfig_8_list{}) + } + listValue := &_OpenIDConfig_8_list{list: &x.GrantTypesSupported} + return protoreflect.ValueOfList(listValue) + case "did.v1.OpenIDConfig.acr_values_supported": + if len(x.AcrValuesSupported) == 0 { + return protoreflect.ValueOfList(&_OpenIDConfig_9_list{}) + } + listValue := &_OpenIDConfig_9_list{list: &x.AcrValuesSupported} + return protoreflect.ValueOfList(listValue) + case "did.v1.OpenIDConfig.subject_types_supported": + if len(x.SubjectTypesSupported) == 0 { + return protoreflect.ValueOfList(&_OpenIDConfig_10_list{}) + } + listValue := &_OpenIDConfig_10_list{list: &x.SubjectTypesSupported} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.OpenIDConfig")) + } + panic(fmt.Errorf("message did.v1.OpenIDConfig does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_OpenIDConfig) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "did.v1.OpenIDConfig.issuer": + x.Issuer = value.Interface().(string) + case "did.v1.OpenIDConfig.authorization_endpoint": + x.AuthorizationEndpoint = value.Interface().(string) + case "did.v1.OpenIDConfig.token_endpoint": + x.TokenEndpoint = value.Interface().(string) + case "did.v1.OpenIDConfig.userinfo_endpoint": + x.UserinfoEndpoint = value.Interface().(string) + case "did.v1.OpenIDConfig.scopes_supported": + lv := value.List() + clv := lv.(*_OpenIDConfig_5_list) + x.ScopesSupported = *clv.list + case "did.v1.OpenIDConfig.response_types_supported": + lv := value.List() + clv := lv.(*_OpenIDConfig_6_list) + x.ResponseTypesSupported = *clv.list + case "did.v1.OpenIDConfig.response_modes_supported": + lv := value.List() + clv := lv.(*_OpenIDConfig_7_list) + x.ResponseModesSupported = *clv.list + case "did.v1.OpenIDConfig.grant_types_supported": + lv := value.List() + clv := lv.(*_OpenIDConfig_8_list) + x.GrantTypesSupported = *clv.list + case "did.v1.OpenIDConfig.acr_values_supported": + lv := value.List() + clv := lv.(*_OpenIDConfig_9_list) + x.AcrValuesSupported = *clv.list + case "did.v1.OpenIDConfig.subject_types_supported": + lv := value.List() + clv := lv.(*_OpenIDConfig_10_list) + x.SubjectTypesSupported = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.OpenIDConfig")) + } + panic(fmt.Errorf("message did.v1.OpenIDConfig does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_OpenIDConfig) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.OpenIDConfig.scopes_supported": + if x.ScopesSupported == nil { + x.ScopesSupported = []string{} + } + value := &_OpenIDConfig_5_list{list: &x.ScopesSupported} + return protoreflect.ValueOfList(value) + case "did.v1.OpenIDConfig.response_types_supported": + if x.ResponseTypesSupported == nil { + x.ResponseTypesSupported = []string{} + } + value := &_OpenIDConfig_6_list{list: &x.ResponseTypesSupported} + return protoreflect.ValueOfList(value) + case "did.v1.OpenIDConfig.response_modes_supported": + if x.ResponseModesSupported == nil { + x.ResponseModesSupported = []string{} + } + value := &_OpenIDConfig_7_list{list: &x.ResponseModesSupported} + return protoreflect.ValueOfList(value) + case "did.v1.OpenIDConfig.grant_types_supported": + if x.GrantTypesSupported == nil { + x.GrantTypesSupported = []string{} + } + value := &_OpenIDConfig_8_list{list: &x.GrantTypesSupported} + return protoreflect.ValueOfList(value) + case "did.v1.OpenIDConfig.acr_values_supported": + if x.AcrValuesSupported == nil { + x.AcrValuesSupported = []string{} + } + value := &_OpenIDConfig_9_list{list: &x.AcrValuesSupported} + return protoreflect.ValueOfList(value) + case "did.v1.OpenIDConfig.subject_types_supported": + if x.SubjectTypesSupported == nil { + x.SubjectTypesSupported = []string{} + } + value := &_OpenIDConfig_10_list{list: &x.SubjectTypesSupported} + return protoreflect.ValueOfList(value) + case "did.v1.OpenIDConfig.issuer": + panic(fmt.Errorf("field issuer of message did.v1.OpenIDConfig is not mutable")) + case "did.v1.OpenIDConfig.authorization_endpoint": + panic(fmt.Errorf("field authorization_endpoint of message did.v1.OpenIDConfig is not mutable")) + case "did.v1.OpenIDConfig.token_endpoint": + panic(fmt.Errorf("field token_endpoint of message did.v1.OpenIDConfig is not mutable")) + case "did.v1.OpenIDConfig.userinfo_endpoint": + panic(fmt.Errorf("field userinfo_endpoint of message did.v1.OpenIDConfig is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.OpenIDConfig")) + } + panic(fmt.Errorf("message did.v1.OpenIDConfig does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_OpenIDConfig) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.OpenIDConfig.issuer": + return protoreflect.ValueOfString("") + case "did.v1.OpenIDConfig.authorization_endpoint": + return protoreflect.ValueOfString("") + case "did.v1.OpenIDConfig.token_endpoint": + return protoreflect.ValueOfString("") + case "did.v1.OpenIDConfig.userinfo_endpoint": + return protoreflect.ValueOfString("") + case "did.v1.OpenIDConfig.scopes_supported": + list := []string{} + return protoreflect.ValueOfList(&_OpenIDConfig_5_list{list: &list}) + case "did.v1.OpenIDConfig.response_types_supported": + list := []string{} + return protoreflect.ValueOfList(&_OpenIDConfig_6_list{list: &list}) + case "did.v1.OpenIDConfig.response_modes_supported": + list := []string{} + return protoreflect.ValueOfList(&_OpenIDConfig_7_list{list: &list}) + case "did.v1.OpenIDConfig.grant_types_supported": + list := []string{} + return protoreflect.ValueOfList(&_OpenIDConfig_8_list{list: &list}) + case "did.v1.OpenIDConfig.acr_values_supported": + list := []string{} + return protoreflect.ValueOfList(&_OpenIDConfig_9_list{list: &list}) + case "did.v1.OpenIDConfig.subject_types_supported": + list := []string{} + return protoreflect.ValueOfList(&_OpenIDConfig_10_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.OpenIDConfig")) + } + panic(fmt.Errorf("message did.v1.OpenIDConfig does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_OpenIDConfig) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in did.v1.OpenIDConfig", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_OpenIDConfig) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_OpenIDConfig) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_OpenIDConfig) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_OpenIDConfig) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*OpenIDConfig) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Issuer) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.AuthorizationEndpoint) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.TokenEndpoint) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.UserinfoEndpoint) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.ScopesSupported) > 0 { + for _, s := range x.ScopesSupported { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.ResponseTypesSupported) > 0 { + for _, s := range x.ResponseTypesSupported { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.ResponseModesSupported) > 0 { + for _, s := range x.ResponseModesSupported { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.GrantTypesSupported) > 0 { + for _, s := range x.GrantTypesSupported { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.AcrValuesSupported) > 0 { + for _, s := range x.AcrValuesSupported { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.SubjectTypesSupported) > 0 { + for _, s := range x.SubjectTypesSupported { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*OpenIDConfig) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.SubjectTypesSupported) > 0 { + for iNdEx := len(x.SubjectTypesSupported) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.SubjectTypesSupported[iNdEx]) + copy(dAtA[i:], x.SubjectTypesSupported[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.SubjectTypesSupported[iNdEx]))) + i-- + dAtA[i] = 0x52 + } + } + if len(x.AcrValuesSupported) > 0 { + for iNdEx := len(x.AcrValuesSupported) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.AcrValuesSupported[iNdEx]) + copy(dAtA[i:], x.AcrValuesSupported[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.AcrValuesSupported[iNdEx]))) + i-- + dAtA[i] = 0x4a + } + } + if len(x.GrantTypesSupported) > 0 { + for iNdEx := len(x.GrantTypesSupported) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.GrantTypesSupported[iNdEx]) + copy(dAtA[i:], x.GrantTypesSupported[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.GrantTypesSupported[iNdEx]))) + i-- + dAtA[i] = 0x42 + } + } + if len(x.ResponseModesSupported) > 0 { + for iNdEx := len(x.ResponseModesSupported) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.ResponseModesSupported[iNdEx]) + copy(dAtA[i:], x.ResponseModesSupported[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ResponseModesSupported[iNdEx]))) + i-- + dAtA[i] = 0x3a + } + } + if len(x.ResponseTypesSupported) > 0 { + for iNdEx := len(x.ResponseTypesSupported) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.ResponseTypesSupported[iNdEx]) + copy(dAtA[i:], x.ResponseTypesSupported[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ResponseTypesSupported[iNdEx]))) + i-- + dAtA[i] = 0x32 + } + } + if len(x.ScopesSupported) > 0 { + for iNdEx := len(x.ScopesSupported) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.ScopesSupported[iNdEx]) + copy(dAtA[i:], x.ScopesSupported[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ScopesSupported[iNdEx]))) + i-- + dAtA[i] = 0x2a + } + } + if len(x.UserinfoEndpoint) > 0 { + i -= len(x.UserinfoEndpoint) + copy(dAtA[i:], x.UserinfoEndpoint) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.UserinfoEndpoint))) + i-- + dAtA[i] = 0x22 + } + if len(x.TokenEndpoint) > 0 { + i -= len(x.TokenEndpoint) + copy(dAtA[i:], x.TokenEndpoint) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.TokenEndpoint))) + i-- + dAtA[i] = 0x1a + } + if len(x.AuthorizationEndpoint) > 0 { + i -= len(x.AuthorizationEndpoint) + copy(dAtA[i:], x.AuthorizationEndpoint) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.AuthorizationEndpoint))) + i-- + dAtA[i] = 0x12 + } + if len(x.Issuer) > 0 { + i -= len(x.Issuer) + copy(dAtA[i:], x.Issuer) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Issuer))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*OpenIDConfig) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: OpenIDConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: OpenIDConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Issuer", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Issuer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AuthorizationEndpoint", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.AuthorizationEndpoint = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TokenEndpoint", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.TokenEndpoint = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field UserinfoEndpoint", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.UserinfoEndpoint = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ScopesSupported", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ScopesSupported = append(x.ScopesSupported, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ResponseTypesSupported", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ResponseTypesSupported = append(x.ResponseTypesSupported, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 7: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ResponseModesSupported", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ResponseModesSupported = append(x.ResponseModesSupported, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 8: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field GrantTypesSupported", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.GrantTypesSupported = append(x.GrantTypesSupported, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 9: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AcrValuesSupported", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.AcrValuesSupported = append(x.AcrValuesSupported, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 10: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field SubjectTypesSupported", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.SubjectTypesSupported = append(x.SubjectTypesSupported, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.List = (*_ValidatorInfo_2_list)(nil) + +type _ValidatorInfo_2_list struct { + list *[]*ValidatorInfo_Endpoint +} + +func (x *_ValidatorInfo_2_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_ValidatorInfo_2_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_ValidatorInfo_2_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*ValidatorInfo_Endpoint) + (*x.list)[i] = concreteValue +} + +func (x *_ValidatorInfo_2_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*ValidatorInfo_Endpoint) + *x.list = append(*x.list, concreteValue) +} + +func (x *_ValidatorInfo_2_list) AppendMutable() protoreflect.Value { + v := new(ValidatorInfo_Endpoint) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_ValidatorInfo_2_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_ValidatorInfo_2_list) NewElement() protoreflect.Value { + v := new(ValidatorInfo_Endpoint) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_ValidatorInfo_2_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_ValidatorInfo_3_list)(nil) + +type _ValidatorInfo_3_list struct { + list *[]*ValidatorInfo_Endpoint +} + +func (x *_ValidatorInfo_3_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_ValidatorInfo_3_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_ValidatorInfo_3_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*ValidatorInfo_Endpoint) + (*x.list)[i] = concreteValue +} + +func (x *_ValidatorInfo_3_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*ValidatorInfo_Endpoint) + *x.list = append(*x.list, concreteValue) +} + +func (x *_ValidatorInfo_3_list) AppendMutable() protoreflect.Value { + v := new(ValidatorInfo_Endpoint) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_ValidatorInfo_3_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_ValidatorInfo_3_list) NewElement() protoreflect.Value { + v := new(ValidatorInfo_Endpoint) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_ValidatorInfo_3_list) IsValid() bool { + return x.list != nil +} + +var ( + md_ValidatorInfo protoreflect.MessageDescriptor + fd_ValidatorInfo_moniker protoreflect.FieldDescriptor + fd_ValidatorInfo_grpc_endpoints protoreflect.FieldDescriptor + fd_ValidatorInfo_rest_endpoints protoreflect.FieldDescriptor + fd_ValidatorInfo_explorer protoreflect.FieldDescriptor + fd_ValidatorInfo_fee_info protoreflect.FieldDescriptor + fd_ValidatorInfo_ibc_channel protoreflect.FieldDescriptor +) + +func init() { + file_did_v1_genesis_proto_init() + md_ValidatorInfo = File_did_v1_genesis_proto.Messages().ByName("ValidatorInfo") + fd_ValidatorInfo_moniker = md_ValidatorInfo.Fields().ByName("moniker") + fd_ValidatorInfo_grpc_endpoints = md_ValidatorInfo.Fields().ByName("grpc_endpoints") + fd_ValidatorInfo_rest_endpoints = md_ValidatorInfo.Fields().ByName("rest_endpoints") + fd_ValidatorInfo_explorer = md_ValidatorInfo.Fields().ByName("explorer") + fd_ValidatorInfo_fee_info = md_ValidatorInfo.Fields().ByName("fee_info") + fd_ValidatorInfo_ibc_channel = md_ValidatorInfo.Fields().ByName("ibc_channel") +} + +var _ protoreflect.Message = (*fastReflection_ValidatorInfo)(nil) + +type fastReflection_ValidatorInfo ValidatorInfo + +func (x *ValidatorInfo) ProtoReflect() protoreflect.Message { + return (*fastReflection_ValidatorInfo)(x) +} + +func (x *ValidatorInfo) slowProtoReflect() protoreflect.Message { + mi := &file_did_v1_genesis_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_ValidatorInfo_messageType fastReflection_ValidatorInfo_messageType +var _ protoreflect.MessageType = fastReflection_ValidatorInfo_messageType{} + +type fastReflection_ValidatorInfo_messageType struct{} + +func (x fastReflection_ValidatorInfo_messageType) Zero() protoreflect.Message { + return (*fastReflection_ValidatorInfo)(nil) +} +func (x fastReflection_ValidatorInfo_messageType) New() protoreflect.Message { + return new(fastReflection_ValidatorInfo) +} +func (x fastReflection_ValidatorInfo_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_ValidatorInfo +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_ValidatorInfo) Descriptor() protoreflect.MessageDescriptor { + return md_ValidatorInfo +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_ValidatorInfo) Type() protoreflect.MessageType { + return _fastReflection_ValidatorInfo_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_ValidatorInfo) New() protoreflect.Message { + return new(fastReflection_ValidatorInfo) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_ValidatorInfo) Interface() protoreflect.ProtoMessage { + return (*ValidatorInfo)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_ValidatorInfo) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Moniker != "" { + value := protoreflect.ValueOfString(x.Moniker) + if !f(fd_ValidatorInfo_moniker, value) { + return + } + } + if len(x.GrpcEndpoints) != 0 { + value := protoreflect.ValueOfList(&_ValidatorInfo_2_list{list: &x.GrpcEndpoints}) + if !f(fd_ValidatorInfo_grpc_endpoints, value) { + return + } + } + if len(x.RestEndpoints) != 0 { + value := protoreflect.ValueOfList(&_ValidatorInfo_3_list{list: &x.RestEndpoints}) + if !f(fd_ValidatorInfo_rest_endpoints, value) { + return + } + } + if x.Explorer != nil { + value := protoreflect.ValueOfMessage(x.Explorer.ProtoReflect()) + if !f(fd_ValidatorInfo_explorer, value) { + return + } + } + if x.FeeInfo != nil { + value := protoreflect.ValueOfMessage(x.FeeInfo.ProtoReflect()) + if !f(fd_ValidatorInfo_fee_info, value) { + return + } + } + if x.IbcChannel != nil { + value := protoreflect.ValueOfMessage(x.IbcChannel.ProtoReflect()) + if !f(fd_ValidatorInfo_ibc_channel, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_ValidatorInfo) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "did.v1.ValidatorInfo.moniker": + return x.Moniker != "" + case "did.v1.ValidatorInfo.grpc_endpoints": + return len(x.GrpcEndpoints) != 0 + case "did.v1.ValidatorInfo.rest_endpoints": + return len(x.RestEndpoints) != 0 + case "did.v1.ValidatorInfo.explorer": + return x.Explorer != nil + case "did.v1.ValidatorInfo.fee_info": + return x.FeeInfo != nil + case "did.v1.ValidatorInfo.ibc_channel": + return x.IbcChannel != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo")) + } + panic(fmt.Errorf("message did.v1.ValidatorInfo does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ValidatorInfo) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "did.v1.ValidatorInfo.moniker": + x.Moniker = "" + case "did.v1.ValidatorInfo.grpc_endpoints": + x.GrpcEndpoints = nil + case "did.v1.ValidatorInfo.rest_endpoints": + x.RestEndpoints = nil + case "did.v1.ValidatorInfo.explorer": + x.Explorer = nil + case "did.v1.ValidatorInfo.fee_info": + x.FeeInfo = nil + case "did.v1.ValidatorInfo.ibc_channel": + x.IbcChannel = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo")) + } + panic(fmt.Errorf("message did.v1.ValidatorInfo does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_ValidatorInfo) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "did.v1.ValidatorInfo.moniker": + value := x.Moniker + return protoreflect.ValueOfString(value) + case "did.v1.ValidatorInfo.grpc_endpoints": + if len(x.GrpcEndpoints) == 0 { + return protoreflect.ValueOfList(&_ValidatorInfo_2_list{}) + } + listValue := &_ValidatorInfo_2_list{list: &x.GrpcEndpoints} + return protoreflect.ValueOfList(listValue) + case "did.v1.ValidatorInfo.rest_endpoints": + if len(x.RestEndpoints) == 0 { + return protoreflect.ValueOfList(&_ValidatorInfo_3_list{}) + } + listValue := &_ValidatorInfo_3_list{list: &x.RestEndpoints} + return protoreflect.ValueOfList(listValue) + case "did.v1.ValidatorInfo.explorer": + value := x.Explorer + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "did.v1.ValidatorInfo.fee_info": + value := x.FeeInfo + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "did.v1.ValidatorInfo.ibc_channel": + value := x.IbcChannel + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo")) + } + panic(fmt.Errorf("message did.v1.ValidatorInfo does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ValidatorInfo) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "did.v1.ValidatorInfo.moniker": + x.Moniker = value.Interface().(string) + case "did.v1.ValidatorInfo.grpc_endpoints": + lv := value.List() + clv := lv.(*_ValidatorInfo_2_list) + x.GrpcEndpoints = *clv.list + case "did.v1.ValidatorInfo.rest_endpoints": + lv := value.List() + clv := lv.(*_ValidatorInfo_3_list) + x.RestEndpoints = *clv.list + case "did.v1.ValidatorInfo.explorer": + x.Explorer = value.Message().Interface().(*ValidatorInfo_ExplorerInfo) + case "did.v1.ValidatorInfo.fee_info": + x.FeeInfo = value.Message().Interface().(*ValidatorInfo_FeeInfo) + case "did.v1.ValidatorInfo.ibc_channel": + x.IbcChannel = value.Message().Interface().(*ValidatorInfo_IBCChannel) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo")) + } + panic(fmt.Errorf("message did.v1.ValidatorInfo does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ValidatorInfo) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.ValidatorInfo.grpc_endpoints": + if x.GrpcEndpoints == nil { + x.GrpcEndpoints = []*ValidatorInfo_Endpoint{} + } + value := &_ValidatorInfo_2_list{list: &x.GrpcEndpoints} + return protoreflect.ValueOfList(value) + case "did.v1.ValidatorInfo.rest_endpoints": + if x.RestEndpoints == nil { + x.RestEndpoints = []*ValidatorInfo_Endpoint{} + } + value := &_ValidatorInfo_3_list{list: &x.RestEndpoints} + return protoreflect.ValueOfList(value) + case "did.v1.ValidatorInfo.explorer": + if x.Explorer == nil { + x.Explorer = new(ValidatorInfo_ExplorerInfo) + } + return protoreflect.ValueOfMessage(x.Explorer.ProtoReflect()) + case "did.v1.ValidatorInfo.fee_info": + if x.FeeInfo == nil { + x.FeeInfo = new(ValidatorInfo_FeeInfo) + } + return protoreflect.ValueOfMessage(x.FeeInfo.ProtoReflect()) + case "did.v1.ValidatorInfo.ibc_channel": + if x.IbcChannel == nil { + x.IbcChannel = new(ValidatorInfo_IBCChannel) + } + return protoreflect.ValueOfMessage(x.IbcChannel.ProtoReflect()) + case "did.v1.ValidatorInfo.moniker": + panic(fmt.Errorf("field moniker of message did.v1.ValidatorInfo is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo")) + } + panic(fmt.Errorf("message did.v1.ValidatorInfo does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_ValidatorInfo) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.ValidatorInfo.moniker": + return protoreflect.ValueOfString("") + case "did.v1.ValidatorInfo.grpc_endpoints": + list := []*ValidatorInfo_Endpoint{} + return protoreflect.ValueOfList(&_ValidatorInfo_2_list{list: &list}) + case "did.v1.ValidatorInfo.rest_endpoints": + list := []*ValidatorInfo_Endpoint{} + return protoreflect.ValueOfList(&_ValidatorInfo_3_list{list: &list}) + case "did.v1.ValidatorInfo.explorer": + m := new(ValidatorInfo_ExplorerInfo) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "did.v1.ValidatorInfo.fee_info": + m := new(ValidatorInfo_FeeInfo) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "did.v1.ValidatorInfo.ibc_channel": + m := new(ValidatorInfo_IBCChannel) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo")) + } + panic(fmt.Errorf("message did.v1.ValidatorInfo does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_ValidatorInfo) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in did.v1.ValidatorInfo", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_ValidatorInfo) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ValidatorInfo) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_ValidatorInfo) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_ValidatorInfo) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*ValidatorInfo) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Moniker) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.GrpcEndpoints) > 0 { + for _, e := range x.GrpcEndpoints { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.RestEndpoints) > 0 { + for _, e := range x.RestEndpoints { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.Explorer != nil { + l = options.Size(x.Explorer) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.FeeInfo != nil { + l = options.Size(x.FeeInfo) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.IbcChannel != nil { + l = options.Size(x.IbcChannel) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*ValidatorInfo) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.IbcChannel != nil { + encoded, err := options.Marshal(x.IbcChannel) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x32 + } + if x.FeeInfo != nil { + encoded, err := options.Marshal(x.FeeInfo) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x2a + } + if x.Explorer != nil { + encoded, err := options.Marshal(x.Explorer) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x22 + } + if len(x.RestEndpoints) > 0 { + for iNdEx := len(x.RestEndpoints) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.RestEndpoints[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + } + if len(x.GrpcEndpoints) > 0 { + for iNdEx := len(x.GrpcEndpoints) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.GrpcEndpoints[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + } + if len(x.Moniker) > 0 { + i -= len(x.Moniker) + copy(dAtA[i:], x.Moniker) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Moniker))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*ValidatorInfo) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ValidatorInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ValidatorInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Moniker", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Moniker = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field GrpcEndpoints", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.GrpcEndpoints = append(x.GrpcEndpoints, &ValidatorInfo_Endpoint{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.GrpcEndpoints[len(x.GrpcEndpoints)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field RestEndpoints", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.RestEndpoints = append(x.RestEndpoints, &ValidatorInfo_Endpoint{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.RestEndpoints[len(x.RestEndpoints)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Explorer", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Explorer == nil { + x.Explorer = &ValidatorInfo_ExplorerInfo{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Explorer); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field FeeInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.FeeInfo == nil { + x.FeeInfo = &ValidatorInfo_FeeInfo{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.FeeInfo); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field IbcChannel", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.IbcChannel == nil { + x.IbcChannel = &ValidatorInfo_IBCChannel{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.IbcChannel); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_ValidatorInfo_Endpoint protoreflect.MessageDescriptor + fd_ValidatorInfo_Endpoint_url protoreflect.FieldDescriptor + fd_ValidatorInfo_Endpoint_is_primary protoreflect.FieldDescriptor +) + +func init() { + file_did_v1_genesis_proto_init() + md_ValidatorInfo_Endpoint = File_did_v1_genesis_proto.Messages().ByName("ValidatorInfo").Messages().ByName("Endpoint") + fd_ValidatorInfo_Endpoint_url = md_ValidatorInfo_Endpoint.Fields().ByName("url") + fd_ValidatorInfo_Endpoint_is_primary = md_ValidatorInfo_Endpoint.Fields().ByName("is_primary") +} + +var _ protoreflect.Message = (*fastReflection_ValidatorInfo_Endpoint)(nil) + +type fastReflection_ValidatorInfo_Endpoint ValidatorInfo_Endpoint + +func (x *ValidatorInfo_Endpoint) ProtoReflect() protoreflect.Message { + return (*fastReflection_ValidatorInfo_Endpoint)(x) +} + +func (x *ValidatorInfo_Endpoint) slowProtoReflect() protoreflect.Message { + mi := &file_did_v1_genesis_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_ValidatorInfo_Endpoint_messageType fastReflection_ValidatorInfo_Endpoint_messageType +var _ protoreflect.MessageType = fastReflection_ValidatorInfo_Endpoint_messageType{} + +type fastReflection_ValidatorInfo_Endpoint_messageType struct{} + +func (x fastReflection_ValidatorInfo_Endpoint_messageType) Zero() protoreflect.Message { + return (*fastReflection_ValidatorInfo_Endpoint)(nil) +} +func (x fastReflection_ValidatorInfo_Endpoint_messageType) New() protoreflect.Message { + return new(fastReflection_ValidatorInfo_Endpoint) +} +func (x fastReflection_ValidatorInfo_Endpoint_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_ValidatorInfo_Endpoint +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_ValidatorInfo_Endpoint) Descriptor() protoreflect.MessageDescriptor { + return md_ValidatorInfo_Endpoint +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_ValidatorInfo_Endpoint) Type() protoreflect.MessageType { + return _fastReflection_ValidatorInfo_Endpoint_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_ValidatorInfo_Endpoint) New() protoreflect.Message { + return new(fastReflection_ValidatorInfo_Endpoint) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_ValidatorInfo_Endpoint) Interface() protoreflect.ProtoMessage { + return (*ValidatorInfo_Endpoint)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_ValidatorInfo_Endpoint) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Url != "" { + value := protoreflect.ValueOfString(x.Url) + if !f(fd_ValidatorInfo_Endpoint_url, value) { + return + } + } + if x.IsPrimary != false { + value := protoreflect.ValueOfBool(x.IsPrimary) + if !f(fd_ValidatorInfo_Endpoint_is_primary, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_ValidatorInfo_Endpoint) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "did.v1.ValidatorInfo.Endpoint.url": + return x.Url != "" + case "did.v1.ValidatorInfo.Endpoint.is_primary": + return x.IsPrimary != false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.Endpoint")) + } + panic(fmt.Errorf("message did.v1.ValidatorInfo.Endpoint does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ValidatorInfo_Endpoint) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "did.v1.ValidatorInfo.Endpoint.url": + x.Url = "" + case "did.v1.ValidatorInfo.Endpoint.is_primary": + x.IsPrimary = false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.Endpoint")) + } + panic(fmt.Errorf("message did.v1.ValidatorInfo.Endpoint does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_ValidatorInfo_Endpoint) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "did.v1.ValidatorInfo.Endpoint.url": + value := x.Url + return protoreflect.ValueOfString(value) + case "did.v1.ValidatorInfo.Endpoint.is_primary": + value := x.IsPrimary + return protoreflect.ValueOfBool(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.Endpoint")) + } + panic(fmt.Errorf("message did.v1.ValidatorInfo.Endpoint does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ValidatorInfo_Endpoint) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "did.v1.ValidatorInfo.Endpoint.url": + x.Url = value.Interface().(string) + case "did.v1.ValidatorInfo.Endpoint.is_primary": + x.IsPrimary = value.Bool() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.Endpoint")) + } + panic(fmt.Errorf("message did.v1.ValidatorInfo.Endpoint does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ValidatorInfo_Endpoint) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.ValidatorInfo.Endpoint.url": + panic(fmt.Errorf("field url of message did.v1.ValidatorInfo.Endpoint is not mutable")) + case "did.v1.ValidatorInfo.Endpoint.is_primary": + panic(fmt.Errorf("field is_primary of message did.v1.ValidatorInfo.Endpoint is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.Endpoint")) + } + panic(fmt.Errorf("message did.v1.ValidatorInfo.Endpoint does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_ValidatorInfo_Endpoint) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.ValidatorInfo.Endpoint.url": + return protoreflect.ValueOfString("") + case "did.v1.ValidatorInfo.Endpoint.is_primary": + return protoreflect.ValueOfBool(false) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.Endpoint")) + } + panic(fmt.Errorf("message did.v1.ValidatorInfo.Endpoint does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_ValidatorInfo_Endpoint) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in did.v1.ValidatorInfo.Endpoint", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_ValidatorInfo_Endpoint) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ValidatorInfo_Endpoint) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_ValidatorInfo_Endpoint) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_ValidatorInfo_Endpoint) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*ValidatorInfo_Endpoint) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -3923,7 +6009,7 @@ func (x *fastReflection_ChainInfo_Endpoint) ProtoMethods() *protoiface.Methods { } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*ChainInfo_Endpoint) + x := input.Message.Interface().(*ValidatorInfo_Endpoint) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -3970,7 +6056,7 @@ func (x *fastReflection_ChainInfo_Endpoint) ProtoMethods() *protoiface.Methods { }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*ChainInfo_Endpoint) + x := input.Message.Interface().(*ValidatorInfo_Endpoint) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -4002,10 +6088,10 @@ func (x *fastReflection_ChainInfo_Endpoint) ProtoMethods() *protoiface.Methods { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ChainInfo_Endpoint: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ValidatorInfo_Endpoint: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ChainInfo_Endpoint: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ValidatorInfo_Endpoint: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -4096,28 +6182,28 @@ func (x *fastReflection_ChainInfo_Endpoint) ProtoMethods() *protoiface.Methods { } var ( - md_ChainInfo_ExplorerInfo protoreflect.MessageDescriptor - fd_ChainInfo_ExplorerInfo_name protoreflect.FieldDescriptor - fd_ChainInfo_ExplorerInfo_url protoreflect.FieldDescriptor + md_ValidatorInfo_ExplorerInfo protoreflect.MessageDescriptor + fd_ValidatorInfo_ExplorerInfo_name protoreflect.FieldDescriptor + fd_ValidatorInfo_ExplorerInfo_url protoreflect.FieldDescriptor ) func init() { file_did_v1_genesis_proto_init() - md_ChainInfo_ExplorerInfo = File_did_v1_genesis_proto.Messages().ByName("ChainInfo").Messages().ByName("ExplorerInfo") - fd_ChainInfo_ExplorerInfo_name = md_ChainInfo_ExplorerInfo.Fields().ByName("name") - fd_ChainInfo_ExplorerInfo_url = md_ChainInfo_ExplorerInfo.Fields().ByName("url") + md_ValidatorInfo_ExplorerInfo = File_did_v1_genesis_proto.Messages().ByName("ValidatorInfo").Messages().ByName("ExplorerInfo") + fd_ValidatorInfo_ExplorerInfo_name = md_ValidatorInfo_ExplorerInfo.Fields().ByName("name") + fd_ValidatorInfo_ExplorerInfo_url = md_ValidatorInfo_ExplorerInfo.Fields().ByName("url") } -var _ protoreflect.Message = (*fastReflection_ChainInfo_ExplorerInfo)(nil) +var _ protoreflect.Message = (*fastReflection_ValidatorInfo_ExplorerInfo)(nil) -type fastReflection_ChainInfo_ExplorerInfo ChainInfo_ExplorerInfo +type fastReflection_ValidatorInfo_ExplorerInfo ValidatorInfo_ExplorerInfo -func (x *ChainInfo_ExplorerInfo) ProtoReflect() protoreflect.Message { - return (*fastReflection_ChainInfo_ExplorerInfo)(x) +func (x *ValidatorInfo_ExplorerInfo) ProtoReflect() protoreflect.Message { + return (*fastReflection_ValidatorInfo_ExplorerInfo)(x) } -func (x *ChainInfo_ExplorerInfo) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_genesis_proto_msgTypes[6] +func (x *ValidatorInfo_ExplorerInfo) slowProtoReflect() protoreflect.Message { + mi := &file_did_v1_genesis_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4128,43 +6214,43 @@ func (x *ChainInfo_ExplorerInfo) slowProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -var _fastReflection_ChainInfo_ExplorerInfo_messageType fastReflection_ChainInfo_ExplorerInfo_messageType -var _ protoreflect.MessageType = fastReflection_ChainInfo_ExplorerInfo_messageType{} +var _fastReflection_ValidatorInfo_ExplorerInfo_messageType fastReflection_ValidatorInfo_ExplorerInfo_messageType +var _ protoreflect.MessageType = fastReflection_ValidatorInfo_ExplorerInfo_messageType{} -type fastReflection_ChainInfo_ExplorerInfo_messageType struct{} +type fastReflection_ValidatorInfo_ExplorerInfo_messageType struct{} -func (x fastReflection_ChainInfo_ExplorerInfo_messageType) Zero() protoreflect.Message { - return (*fastReflection_ChainInfo_ExplorerInfo)(nil) +func (x fastReflection_ValidatorInfo_ExplorerInfo_messageType) Zero() protoreflect.Message { + return (*fastReflection_ValidatorInfo_ExplorerInfo)(nil) } -func (x fastReflection_ChainInfo_ExplorerInfo_messageType) New() protoreflect.Message { - return new(fastReflection_ChainInfo_ExplorerInfo) +func (x fastReflection_ValidatorInfo_ExplorerInfo_messageType) New() protoreflect.Message { + return new(fastReflection_ValidatorInfo_ExplorerInfo) } -func (x fastReflection_ChainInfo_ExplorerInfo_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_ChainInfo_ExplorerInfo +func (x fastReflection_ValidatorInfo_ExplorerInfo_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_ValidatorInfo_ExplorerInfo } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_ChainInfo_ExplorerInfo) Descriptor() protoreflect.MessageDescriptor { - return md_ChainInfo_ExplorerInfo +func (x *fastReflection_ValidatorInfo_ExplorerInfo) Descriptor() protoreflect.MessageDescriptor { + return md_ValidatorInfo_ExplorerInfo } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_ChainInfo_ExplorerInfo) Type() protoreflect.MessageType { - return _fastReflection_ChainInfo_ExplorerInfo_messageType +func (x *fastReflection_ValidatorInfo_ExplorerInfo) Type() protoreflect.MessageType { + return _fastReflection_ValidatorInfo_ExplorerInfo_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_ChainInfo_ExplorerInfo) New() protoreflect.Message { - return new(fastReflection_ChainInfo_ExplorerInfo) +func (x *fastReflection_ValidatorInfo_ExplorerInfo) New() protoreflect.Message { + return new(fastReflection_ValidatorInfo_ExplorerInfo) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_ChainInfo_ExplorerInfo) Interface() protoreflect.ProtoMessage { - return (*ChainInfo_ExplorerInfo)(x) +func (x *fastReflection_ValidatorInfo_ExplorerInfo) Interface() protoreflect.ProtoMessage { + return (*ValidatorInfo_ExplorerInfo)(x) } // Range iterates over every populated field in an undefined order, @@ -4172,16 +6258,16 @@ func (x *fastReflection_ChainInfo_ExplorerInfo) Interface() protoreflect.ProtoMe // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_ChainInfo_ExplorerInfo) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +func (x *fastReflection_ValidatorInfo_ExplorerInfo) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { if x.Name != "" { value := protoreflect.ValueOfString(x.Name) - if !f(fd_ChainInfo_ExplorerInfo_name, value) { + if !f(fd_ValidatorInfo_ExplorerInfo_name, value) { return } } if x.Url != "" { value := protoreflect.ValueOfString(x.Url) - if !f(fd_ChainInfo_ExplorerInfo_url, value) { + if !f(fd_ValidatorInfo_ExplorerInfo_url, value) { return } } @@ -4198,17 +6284,17 @@ func (x *fastReflection_ChainInfo_ExplorerInfo) Range(f func(protoreflect.FieldD // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_ChainInfo_ExplorerInfo) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_ValidatorInfo_ExplorerInfo) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "did.v1.ChainInfo.ExplorerInfo.name": + case "did.v1.ValidatorInfo.ExplorerInfo.name": return x.Name != "" - case "did.v1.ChainInfo.ExplorerInfo.url": + case "did.v1.ValidatorInfo.ExplorerInfo.url": return x.Url != "" default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.ExplorerInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.ExplorerInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.ExplorerInfo does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.ExplorerInfo does not contain field %s", fd.FullName())) } } @@ -4218,17 +6304,17 @@ func (x *fastReflection_ChainInfo_ExplorerInfo) Has(fd protoreflect.FieldDescrip // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_ChainInfo_ExplorerInfo) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_ValidatorInfo_ExplorerInfo) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "did.v1.ChainInfo.ExplorerInfo.name": + case "did.v1.ValidatorInfo.ExplorerInfo.name": x.Name = "" - case "did.v1.ChainInfo.ExplorerInfo.url": + case "did.v1.ValidatorInfo.ExplorerInfo.url": x.Url = "" default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.ExplorerInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.ExplorerInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.ExplorerInfo does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.ExplorerInfo does not contain field %s", fd.FullName())) } } @@ -4238,19 +6324,19 @@ func (x *fastReflection_ChainInfo_ExplorerInfo) Clear(fd protoreflect.FieldDescr // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_ChainInfo_ExplorerInfo) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_ValidatorInfo_ExplorerInfo) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "did.v1.ChainInfo.ExplorerInfo.name": + case "did.v1.ValidatorInfo.ExplorerInfo.name": value := x.Name return protoreflect.ValueOfString(value) - case "did.v1.ChainInfo.ExplorerInfo.url": + case "did.v1.ValidatorInfo.ExplorerInfo.url": value := x.Url return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.ExplorerInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.ExplorerInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.ExplorerInfo does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.ExplorerInfo does not contain field %s", descriptor.FullName())) } } @@ -4264,17 +6350,17 @@ func (x *fastReflection_ChainInfo_ExplorerInfo) Get(descriptor protoreflect.Fiel // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_ChainInfo_ExplorerInfo) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_ValidatorInfo_ExplorerInfo) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "did.v1.ChainInfo.ExplorerInfo.name": + case "did.v1.ValidatorInfo.ExplorerInfo.name": x.Name = value.Interface().(string) - case "did.v1.ChainInfo.ExplorerInfo.url": + case "did.v1.ValidatorInfo.ExplorerInfo.url": x.Url = value.Interface().(string) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.ExplorerInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.ExplorerInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.ExplorerInfo does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.ExplorerInfo does not contain field %s", fd.FullName())) } } @@ -4288,44 +6374,44 @@ func (x *fastReflection_ChainInfo_ExplorerInfo) Set(fd protoreflect.FieldDescrip // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_ChainInfo_ExplorerInfo) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_ValidatorInfo_ExplorerInfo) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.ChainInfo.ExplorerInfo.name": - panic(fmt.Errorf("field name of message did.v1.ChainInfo.ExplorerInfo is not mutable")) - case "did.v1.ChainInfo.ExplorerInfo.url": - panic(fmt.Errorf("field url of message did.v1.ChainInfo.ExplorerInfo is not mutable")) + case "did.v1.ValidatorInfo.ExplorerInfo.name": + panic(fmt.Errorf("field name of message did.v1.ValidatorInfo.ExplorerInfo is not mutable")) + case "did.v1.ValidatorInfo.ExplorerInfo.url": + panic(fmt.Errorf("field url of message did.v1.ValidatorInfo.ExplorerInfo is not mutable")) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.ExplorerInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.ExplorerInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.ExplorerInfo does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.ExplorerInfo does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_ChainInfo_ExplorerInfo) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_ValidatorInfo_ExplorerInfo) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.ChainInfo.ExplorerInfo.name": + case "did.v1.ValidatorInfo.ExplorerInfo.name": return protoreflect.ValueOfString("") - case "did.v1.ChainInfo.ExplorerInfo.url": + case "did.v1.ValidatorInfo.ExplorerInfo.url": return protoreflect.ValueOfString("") default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.ExplorerInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.ExplorerInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.ExplorerInfo does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.ExplorerInfo does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_ChainInfo_ExplorerInfo) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_ValidatorInfo_ExplorerInfo) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.ChainInfo.ExplorerInfo", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in did.v1.ValidatorInfo.ExplorerInfo", d.FullName())) } panic("unreachable") } @@ -4333,7 +6419,7 @@ func (x *fastReflection_ChainInfo_ExplorerInfo) WhichOneof(d protoreflect.OneofD // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_ChainInfo_ExplorerInfo) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_ValidatorInfo_ExplorerInfo) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -4344,7 +6430,7 @@ func (x *fastReflection_ChainInfo_ExplorerInfo) GetUnknown() protoreflect.RawFie // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_ChainInfo_ExplorerInfo) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_ValidatorInfo_ExplorerInfo) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -4356,7 +6442,7 @@ func (x *fastReflection_ChainInfo_ExplorerInfo) SetUnknown(fields protoreflect.R // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_ChainInfo_ExplorerInfo) IsValid() bool { +func (x *fastReflection_ValidatorInfo_ExplorerInfo) IsValid() bool { return x != nil } @@ -4366,9 +6452,9 @@ func (x *fastReflection_ChainInfo_ExplorerInfo) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_ChainInfo_ExplorerInfo) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_ValidatorInfo_ExplorerInfo) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*ChainInfo_ExplorerInfo) + x := input.Message.Interface().(*ValidatorInfo_ExplorerInfo) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -4398,7 +6484,7 @@ func (x *fastReflection_ChainInfo_ExplorerInfo) ProtoMethods() *protoiface.Metho } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*ChainInfo_ExplorerInfo) + x := input.Message.Interface().(*ValidatorInfo_ExplorerInfo) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -4442,7 +6528,7 @@ func (x *fastReflection_ChainInfo_ExplorerInfo) ProtoMethods() *protoiface.Metho }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*ChainInfo_ExplorerInfo) + x := input.Message.Interface().(*ValidatorInfo_ExplorerInfo) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -4474,10 +6560,10 @@ func (x *fastReflection_ChainInfo_ExplorerInfo) ProtoMethods() *protoiface.Metho fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ChainInfo_ExplorerInfo: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ValidatorInfo_ExplorerInfo: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ChainInfo_ExplorerInfo: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ValidatorInfo_ExplorerInfo: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -4579,81 +6665,81 @@ func (x *fastReflection_ChainInfo_ExplorerInfo) ProtoMethods() *protoiface.Metho } } -var _ protoreflect.List = (*_ChainInfo_FeeInfo_2_list)(nil) +var _ protoreflect.List = (*_ValidatorInfo_FeeInfo_2_list)(nil) -type _ChainInfo_FeeInfo_2_list struct { +type _ValidatorInfo_FeeInfo_2_list struct { list *[]string } -func (x *_ChainInfo_FeeInfo_2_list) Len() int { +func (x *_ValidatorInfo_FeeInfo_2_list) Len() int { if x.list == nil { return 0 } return len(*x.list) } -func (x *_ChainInfo_FeeInfo_2_list) Get(i int) protoreflect.Value { +func (x *_ValidatorInfo_FeeInfo_2_list) Get(i int) protoreflect.Value { return protoreflect.ValueOfString((*x.list)[i]) } -func (x *_ChainInfo_FeeInfo_2_list) Set(i int, value protoreflect.Value) { +func (x *_ValidatorInfo_FeeInfo_2_list) Set(i int, value protoreflect.Value) { valueUnwrapped := value.String() concreteValue := valueUnwrapped (*x.list)[i] = concreteValue } -func (x *_ChainInfo_FeeInfo_2_list) Append(value protoreflect.Value) { +func (x *_ValidatorInfo_FeeInfo_2_list) Append(value protoreflect.Value) { valueUnwrapped := value.String() concreteValue := valueUnwrapped *x.list = append(*x.list, concreteValue) } -func (x *_ChainInfo_FeeInfo_2_list) AppendMutable() protoreflect.Value { - panic(fmt.Errorf("AppendMutable can not be called on message ChainInfo_FeeInfo at list field FeeRates as it is not of Message kind")) +func (x *_ValidatorInfo_FeeInfo_2_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message ValidatorInfo_FeeInfo at list field FeeRates as it is not of Message kind")) } -func (x *_ChainInfo_FeeInfo_2_list) Truncate(n int) { +func (x *_ValidatorInfo_FeeInfo_2_list) Truncate(n int) { *x.list = (*x.list)[:n] } -func (x *_ChainInfo_FeeInfo_2_list) NewElement() protoreflect.Value { +func (x *_ValidatorInfo_FeeInfo_2_list) NewElement() protoreflect.Value { v := "" return protoreflect.ValueOfString(v) } -func (x *_ChainInfo_FeeInfo_2_list) IsValid() bool { +func (x *_ValidatorInfo_FeeInfo_2_list) IsValid() bool { return x.list != nil } var ( - md_ChainInfo_FeeInfo protoreflect.MessageDescriptor - fd_ChainInfo_FeeInfo_base_denom protoreflect.FieldDescriptor - fd_ChainInfo_FeeInfo_fee_rates protoreflect.FieldDescriptor - fd_ChainInfo_FeeInfo_init_gas_limit protoreflect.FieldDescriptor - fd_ChainInfo_FeeInfo_is_simulable protoreflect.FieldDescriptor - fd_ChainInfo_FeeInfo_gas_multiply protoreflect.FieldDescriptor + md_ValidatorInfo_FeeInfo protoreflect.MessageDescriptor + fd_ValidatorInfo_FeeInfo_base_denom protoreflect.FieldDescriptor + fd_ValidatorInfo_FeeInfo_fee_rates protoreflect.FieldDescriptor + fd_ValidatorInfo_FeeInfo_init_gas_limit protoreflect.FieldDescriptor + fd_ValidatorInfo_FeeInfo_is_simulable protoreflect.FieldDescriptor + fd_ValidatorInfo_FeeInfo_gas_multiply protoreflect.FieldDescriptor ) func init() { file_did_v1_genesis_proto_init() - md_ChainInfo_FeeInfo = File_did_v1_genesis_proto.Messages().ByName("ChainInfo").Messages().ByName("FeeInfo") - fd_ChainInfo_FeeInfo_base_denom = md_ChainInfo_FeeInfo.Fields().ByName("base_denom") - fd_ChainInfo_FeeInfo_fee_rates = md_ChainInfo_FeeInfo.Fields().ByName("fee_rates") - fd_ChainInfo_FeeInfo_init_gas_limit = md_ChainInfo_FeeInfo.Fields().ByName("init_gas_limit") - fd_ChainInfo_FeeInfo_is_simulable = md_ChainInfo_FeeInfo.Fields().ByName("is_simulable") - fd_ChainInfo_FeeInfo_gas_multiply = md_ChainInfo_FeeInfo.Fields().ByName("gas_multiply") + md_ValidatorInfo_FeeInfo = File_did_v1_genesis_proto.Messages().ByName("ValidatorInfo").Messages().ByName("FeeInfo") + fd_ValidatorInfo_FeeInfo_base_denom = md_ValidatorInfo_FeeInfo.Fields().ByName("base_denom") + fd_ValidatorInfo_FeeInfo_fee_rates = md_ValidatorInfo_FeeInfo.Fields().ByName("fee_rates") + fd_ValidatorInfo_FeeInfo_init_gas_limit = md_ValidatorInfo_FeeInfo.Fields().ByName("init_gas_limit") + fd_ValidatorInfo_FeeInfo_is_simulable = md_ValidatorInfo_FeeInfo.Fields().ByName("is_simulable") + fd_ValidatorInfo_FeeInfo_gas_multiply = md_ValidatorInfo_FeeInfo.Fields().ByName("gas_multiply") } -var _ protoreflect.Message = (*fastReflection_ChainInfo_FeeInfo)(nil) +var _ protoreflect.Message = (*fastReflection_ValidatorInfo_FeeInfo)(nil) -type fastReflection_ChainInfo_FeeInfo ChainInfo_FeeInfo +type fastReflection_ValidatorInfo_FeeInfo ValidatorInfo_FeeInfo -func (x *ChainInfo_FeeInfo) ProtoReflect() protoreflect.Message { - return (*fastReflection_ChainInfo_FeeInfo)(x) +func (x *ValidatorInfo_FeeInfo) ProtoReflect() protoreflect.Message { + return (*fastReflection_ValidatorInfo_FeeInfo)(x) } -func (x *ChainInfo_FeeInfo) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_genesis_proto_msgTypes[7] +func (x *ValidatorInfo_FeeInfo) slowProtoReflect() protoreflect.Message { + mi := &file_did_v1_genesis_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4664,43 +6750,43 @@ func (x *ChainInfo_FeeInfo) slowProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -var _fastReflection_ChainInfo_FeeInfo_messageType fastReflection_ChainInfo_FeeInfo_messageType -var _ protoreflect.MessageType = fastReflection_ChainInfo_FeeInfo_messageType{} +var _fastReflection_ValidatorInfo_FeeInfo_messageType fastReflection_ValidatorInfo_FeeInfo_messageType +var _ protoreflect.MessageType = fastReflection_ValidatorInfo_FeeInfo_messageType{} -type fastReflection_ChainInfo_FeeInfo_messageType struct{} +type fastReflection_ValidatorInfo_FeeInfo_messageType struct{} -func (x fastReflection_ChainInfo_FeeInfo_messageType) Zero() protoreflect.Message { - return (*fastReflection_ChainInfo_FeeInfo)(nil) +func (x fastReflection_ValidatorInfo_FeeInfo_messageType) Zero() protoreflect.Message { + return (*fastReflection_ValidatorInfo_FeeInfo)(nil) } -func (x fastReflection_ChainInfo_FeeInfo_messageType) New() protoreflect.Message { - return new(fastReflection_ChainInfo_FeeInfo) +func (x fastReflection_ValidatorInfo_FeeInfo_messageType) New() protoreflect.Message { + return new(fastReflection_ValidatorInfo_FeeInfo) } -func (x fastReflection_ChainInfo_FeeInfo_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_ChainInfo_FeeInfo +func (x fastReflection_ValidatorInfo_FeeInfo_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_ValidatorInfo_FeeInfo } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_ChainInfo_FeeInfo) Descriptor() protoreflect.MessageDescriptor { - return md_ChainInfo_FeeInfo +func (x *fastReflection_ValidatorInfo_FeeInfo) Descriptor() protoreflect.MessageDescriptor { + return md_ValidatorInfo_FeeInfo } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_ChainInfo_FeeInfo) Type() protoreflect.MessageType { - return _fastReflection_ChainInfo_FeeInfo_messageType +func (x *fastReflection_ValidatorInfo_FeeInfo) Type() protoreflect.MessageType { + return _fastReflection_ValidatorInfo_FeeInfo_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_ChainInfo_FeeInfo) New() protoreflect.Message { - return new(fastReflection_ChainInfo_FeeInfo) +func (x *fastReflection_ValidatorInfo_FeeInfo) New() protoreflect.Message { + return new(fastReflection_ValidatorInfo_FeeInfo) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_ChainInfo_FeeInfo) Interface() protoreflect.ProtoMessage { - return (*ChainInfo_FeeInfo)(x) +func (x *fastReflection_ValidatorInfo_FeeInfo) Interface() protoreflect.ProtoMessage { + return (*ValidatorInfo_FeeInfo)(x) } // Range iterates over every populated field in an undefined order, @@ -4708,34 +6794,34 @@ func (x *fastReflection_ChainInfo_FeeInfo) Interface() protoreflect.ProtoMessage // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_ChainInfo_FeeInfo) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +func (x *fastReflection_ValidatorInfo_FeeInfo) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { if x.BaseDenom != "" { value := protoreflect.ValueOfString(x.BaseDenom) - if !f(fd_ChainInfo_FeeInfo_base_denom, value) { + if !f(fd_ValidatorInfo_FeeInfo_base_denom, value) { return } } if len(x.FeeRates) != 0 { - value := protoreflect.ValueOfList(&_ChainInfo_FeeInfo_2_list{list: &x.FeeRates}) - if !f(fd_ChainInfo_FeeInfo_fee_rates, value) { + value := protoreflect.ValueOfList(&_ValidatorInfo_FeeInfo_2_list{list: &x.FeeRates}) + if !f(fd_ValidatorInfo_FeeInfo_fee_rates, value) { return } } if x.InitGasLimit != int32(0) { value := protoreflect.ValueOfInt32(x.InitGasLimit) - if !f(fd_ChainInfo_FeeInfo_init_gas_limit, value) { + if !f(fd_ValidatorInfo_FeeInfo_init_gas_limit, value) { return } } if x.IsSimulable != false { value := protoreflect.ValueOfBool(x.IsSimulable) - if !f(fd_ChainInfo_FeeInfo_is_simulable, value) { + if !f(fd_ValidatorInfo_FeeInfo_is_simulable, value) { return } } if x.GasMultiply != float64(0) || math.Signbit(x.GasMultiply) { value := protoreflect.ValueOfFloat64(x.GasMultiply) - if !f(fd_ChainInfo_FeeInfo_gas_multiply, value) { + if !f(fd_ValidatorInfo_FeeInfo_gas_multiply, value) { return } } @@ -4752,23 +6838,23 @@ func (x *fastReflection_ChainInfo_FeeInfo) Range(f func(protoreflect.FieldDescri // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_ChainInfo_FeeInfo) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_ValidatorInfo_FeeInfo) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "did.v1.ChainInfo.FeeInfo.base_denom": + case "did.v1.ValidatorInfo.FeeInfo.base_denom": return x.BaseDenom != "" - case "did.v1.ChainInfo.FeeInfo.fee_rates": + case "did.v1.ValidatorInfo.FeeInfo.fee_rates": return len(x.FeeRates) != 0 - case "did.v1.ChainInfo.FeeInfo.init_gas_limit": + case "did.v1.ValidatorInfo.FeeInfo.init_gas_limit": return x.InitGasLimit != int32(0) - case "did.v1.ChainInfo.FeeInfo.is_simulable": + case "did.v1.ValidatorInfo.FeeInfo.is_simulable": return x.IsSimulable != false - case "did.v1.ChainInfo.FeeInfo.gas_multiply": + case "did.v1.ValidatorInfo.FeeInfo.gas_multiply": return x.GasMultiply != float64(0) || math.Signbit(x.GasMultiply) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.FeeInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.FeeInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.FeeInfo does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.FeeInfo does not contain field %s", fd.FullName())) } } @@ -4778,23 +6864,23 @@ func (x *fastReflection_ChainInfo_FeeInfo) Has(fd protoreflect.FieldDescriptor) // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_ChainInfo_FeeInfo) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_ValidatorInfo_FeeInfo) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "did.v1.ChainInfo.FeeInfo.base_denom": + case "did.v1.ValidatorInfo.FeeInfo.base_denom": x.BaseDenom = "" - case "did.v1.ChainInfo.FeeInfo.fee_rates": + case "did.v1.ValidatorInfo.FeeInfo.fee_rates": x.FeeRates = nil - case "did.v1.ChainInfo.FeeInfo.init_gas_limit": + case "did.v1.ValidatorInfo.FeeInfo.init_gas_limit": x.InitGasLimit = int32(0) - case "did.v1.ChainInfo.FeeInfo.is_simulable": + case "did.v1.ValidatorInfo.FeeInfo.is_simulable": x.IsSimulable = false - case "did.v1.ChainInfo.FeeInfo.gas_multiply": + case "did.v1.ValidatorInfo.FeeInfo.gas_multiply": x.GasMultiply = float64(0) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.FeeInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.FeeInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.FeeInfo does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.FeeInfo does not contain field %s", fd.FullName())) } } @@ -4804,31 +6890,31 @@ func (x *fastReflection_ChainInfo_FeeInfo) Clear(fd protoreflect.FieldDescriptor // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_ChainInfo_FeeInfo) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_ValidatorInfo_FeeInfo) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "did.v1.ChainInfo.FeeInfo.base_denom": + case "did.v1.ValidatorInfo.FeeInfo.base_denom": value := x.BaseDenom return protoreflect.ValueOfString(value) - case "did.v1.ChainInfo.FeeInfo.fee_rates": + case "did.v1.ValidatorInfo.FeeInfo.fee_rates": if len(x.FeeRates) == 0 { - return protoreflect.ValueOfList(&_ChainInfo_FeeInfo_2_list{}) + return protoreflect.ValueOfList(&_ValidatorInfo_FeeInfo_2_list{}) } - listValue := &_ChainInfo_FeeInfo_2_list{list: &x.FeeRates} + listValue := &_ValidatorInfo_FeeInfo_2_list{list: &x.FeeRates} return protoreflect.ValueOfList(listValue) - case "did.v1.ChainInfo.FeeInfo.init_gas_limit": + case "did.v1.ValidatorInfo.FeeInfo.init_gas_limit": value := x.InitGasLimit return protoreflect.ValueOfInt32(value) - case "did.v1.ChainInfo.FeeInfo.is_simulable": + case "did.v1.ValidatorInfo.FeeInfo.is_simulable": value := x.IsSimulable return protoreflect.ValueOfBool(value) - case "did.v1.ChainInfo.FeeInfo.gas_multiply": + case "did.v1.ValidatorInfo.FeeInfo.gas_multiply": value := x.GasMultiply return protoreflect.ValueOfFloat64(value) default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.FeeInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.FeeInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.FeeInfo does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.FeeInfo does not contain field %s", descriptor.FullName())) } } @@ -4842,25 +6928,25 @@ func (x *fastReflection_ChainInfo_FeeInfo) Get(descriptor protoreflect.FieldDesc // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_ChainInfo_FeeInfo) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_ValidatorInfo_FeeInfo) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "did.v1.ChainInfo.FeeInfo.base_denom": + case "did.v1.ValidatorInfo.FeeInfo.base_denom": x.BaseDenom = value.Interface().(string) - case "did.v1.ChainInfo.FeeInfo.fee_rates": + case "did.v1.ValidatorInfo.FeeInfo.fee_rates": lv := value.List() - clv := lv.(*_ChainInfo_FeeInfo_2_list) + clv := lv.(*_ValidatorInfo_FeeInfo_2_list) x.FeeRates = *clv.list - case "did.v1.ChainInfo.FeeInfo.init_gas_limit": + case "did.v1.ValidatorInfo.FeeInfo.init_gas_limit": x.InitGasLimit = int32(value.Int()) - case "did.v1.ChainInfo.FeeInfo.is_simulable": + case "did.v1.ValidatorInfo.FeeInfo.is_simulable": x.IsSimulable = value.Bool() - case "did.v1.ChainInfo.FeeInfo.gas_multiply": + case "did.v1.ValidatorInfo.FeeInfo.gas_multiply": x.GasMultiply = value.Float() default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.FeeInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.FeeInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.FeeInfo does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.FeeInfo does not contain field %s", fd.FullName())) } } @@ -4874,61 +6960,61 @@ func (x *fastReflection_ChainInfo_FeeInfo) Set(fd protoreflect.FieldDescriptor, // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_ChainInfo_FeeInfo) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_ValidatorInfo_FeeInfo) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.ChainInfo.FeeInfo.fee_rates": + case "did.v1.ValidatorInfo.FeeInfo.fee_rates": if x.FeeRates == nil { x.FeeRates = []string{} } - value := &_ChainInfo_FeeInfo_2_list{list: &x.FeeRates} + value := &_ValidatorInfo_FeeInfo_2_list{list: &x.FeeRates} return protoreflect.ValueOfList(value) - case "did.v1.ChainInfo.FeeInfo.base_denom": - panic(fmt.Errorf("field base_denom of message did.v1.ChainInfo.FeeInfo is not mutable")) - case "did.v1.ChainInfo.FeeInfo.init_gas_limit": - panic(fmt.Errorf("field init_gas_limit of message did.v1.ChainInfo.FeeInfo is not mutable")) - case "did.v1.ChainInfo.FeeInfo.is_simulable": - panic(fmt.Errorf("field is_simulable of message did.v1.ChainInfo.FeeInfo is not mutable")) - case "did.v1.ChainInfo.FeeInfo.gas_multiply": - panic(fmt.Errorf("field gas_multiply of message did.v1.ChainInfo.FeeInfo is not mutable")) + case "did.v1.ValidatorInfo.FeeInfo.base_denom": + panic(fmt.Errorf("field base_denom of message did.v1.ValidatorInfo.FeeInfo is not mutable")) + case "did.v1.ValidatorInfo.FeeInfo.init_gas_limit": + panic(fmt.Errorf("field init_gas_limit of message did.v1.ValidatorInfo.FeeInfo is not mutable")) + case "did.v1.ValidatorInfo.FeeInfo.is_simulable": + panic(fmt.Errorf("field is_simulable of message did.v1.ValidatorInfo.FeeInfo is not mutable")) + case "did.v1.ValidatorInfo.FeeInfo.gas_multiply": + panic(fmt.Errorf("field gas_multiply of message did.v1.ValidatorInfo.FeeInfo is not mutable")) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.FeeInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.FeeInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.FeeInfo does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.FeeInfo does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_ChainInfo_FeeInfo) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_ValidatorInfo_FeeInfo) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.ChainInfo.FeeInfo.base_denom": + case "did.v1.ValidatorInfo.FeeInfo.base_denom": return protoreflect.ValueOfString("") - case "did.v1.ChainInfo.FeeInfo.fee_rates": + case "did.v1.ValidatorInfo.FeeInfo.fee_rates": list := []string{} - return protoreflect.ValueOfList(&_ChainInfo_FeeInfo_2_list{list: &list}) - case "did.v1.ChainInfo.FeeInfo.init_gas_limit": + return protoreflect.ValueOfList(&_ValidatorInfo_FeeInfo_2_list{list: &list}) + case "did.v1.ValidatorInfo.FeeInfo.init_gas_limit": return protoreflect.ValueOfInt32(int32(0)) - case "did.v1.ChainInfo.FeeInfo.is_simulable": + case "did.v1.ValidatorInfo.FeeInfo.is_simulable": return protoreflect.ValueOfBool(false) - case "did.v1.ChainInfo.FeeInfo.gas_multiply": + case "did.v1.ValidatorInfo.FeeInfo.gas_multiply": return protoreflect.ValueOfFloat64(float64(0)) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ChainInfo.FeeInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.FeeInfo")) } - panic(fmt.Errorf("message did.v1.ChainInfo.FeeInfo does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.FeeInfo does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_ChainInfo_FeeInfo) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_ValidatorInfo_FeeInfo) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.ChainInfo.FeeInfo", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in did.v1.ValidatorInfo.FeeInfo", d.FullName())) } panic("unreachable") } @@ -4936,7 +7022,7 @@ func (x *fastReflection_ChainInfo_FeeInfo) WhichOneof(d protoreflect.OneofDescri // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_ChainInfo_FeeInfo) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_ValidatorInfo_FeeInfo) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -4947,7 +7033,7 @@ func (x *fastReflection_ChainInfo_FeeInfo) GetUnknown() protoreflect.RawFields { // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_ChainInfo_FeeInfo) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_ValidatorInfo_FeeInfo) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -4959,7 +7045,7 @@ func (x *fastReflection_ChainInfo_FeeInfo) SetUnknown(fields protoreflect.RawFie // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_ChainInfo_FeeInfo) IsValid() bool { +func (x *fastReflection_ValidatorInfo_FeeInfo) IsValid() bool { return x != nil } @@ -4969,9 +7055,9 @@ func (x *fastReflection_ChainInfo_FeeInfo) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_ChainInfo_FeeInfo) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_ValidatorInfo_FeeInfo) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*ChainInfo_FeeInfo) + x := input.Message.Interface().(*ValidatorInfo_FeeInfo) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -5012,7 +7098,7 @@ func (x *fastReflection_ChainInfo_FeeInfo) ProtoMethods() *protoiface.Methods { } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*ChainInfo_FeeInfo) + x := input.Message.Interface().(*ValidatorInfo_FeeInfo) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -5079,7 +7165,7 @@ func (x *fastReflection_ChainInfo_FeeInfo) ProtoMethods() *protoiface.Methods { }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*ChainInfo_FeeInfo) + x := input.Message.Interface().(*ValidatorInfo_FeeInfo) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -5111,10 +7197,10 @@ func (x *fastReflection_ChainInfo_FeeInfo) ProtoMethods() *protoiface.Methods { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ChainInfo_FeeInfo: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ValidatorInfo_FeeInfo: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ChainInfo_FeeInfo: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ValidatorInfo_FeeInfo: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -5267,32 +7353,28 @@ func (x *fastReflection_ChainInfo_FeeInfo) ProtoMethods() *protoiface.Methods { } var ( - md_KeyInfo protoreflect.MessageDescriptor - fd_KeyInfo_kind protoreflect.FieldDescriptor - fd_KeyInfo_algorithm protoreflect.FieldDescriptor - fd_KeyInfo_curve protoreflect.FieldDescriptor - fd_KeyInfo_encoding protoreflect.FieldDescriptor + md_ValidatorInfo_IBCChannel protoreflect.MessageDescriptor + fd_ValidatorInfo_IBCChannel_id protoreflect.FieldDescriptor + fd_ValidatorInfo_IBCChannel_port protoreflect.FieldDescriptor ) func init() { file_did_v1_genesis_proto_init() - md_KeyInfo = File_did_v1_genesis_proto.Messages().ByName("KeyInfo") - fd_KeyInfo_kind = md_KeyInfo.Fields().ByName("kind") - fd_KeyInfo_algorithm = md_KeyInfo.Fields().ByName("algorithm") - fd_KeyInfo_curve = md_KeyInfo.Fields().ByName("curve") - fd_KeyInfo_encoding = md_KeyInfo.Fields().ByName("encoding") + md_ValidatorInfo_IBCChannel = File_did_v1_genesis_proto.Messages().ByName("ValidatorInfo").Messages().ByName("IBCChannel") + fd_ValidatorInfo_IBCChannel_id = md_ValidatorInfo_IBCChannel.Fields().ByName("id") + fd_ValidatorInfo_IBCChannel_port = md_ValidatorInfo_IBCChannel.Fields().ByName("port") } -var _ protoreflect.Message = (*fastReflection_KeyInfo)(nil) +var _ protoreflect.Message = (*fastReflection_ValidatorInfo_IBCChannel)(nil) -type fastReflection_KeyInfo KeyInfo +type fastReflection_ValidatorInfo_IBCChannel ValidatorInfo_IBCChannel -func (x *KeyInfo) ProtoReflect() protoreflect.Message { - return (*fastReflection_KeyInfo)(x) +func (x *ValidatorInfo_IBCChannel) ProtoReflect() protoreflect.Message { + return (*fastReflection_ValidatorInfo_IBCChannel)(x) } -func (x *KeyInfo) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_genesis_proto_msgTypes[4] +func (x *ValidatorInfo_IBCChannel) slowProtoReflect() protoreflect.Message { + mi := &file_did_v1_genesis_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5303,43 +7385,43 @@ func (x *KeyInfo) slowProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -var _fastReflection_KeyInfo_messageType fastReflection_KeyInfo_messageType -var _ protoreflect.MessageType = fastReflection_KeyInfo_messageType{} +var _fastReflection_ValidatorInfo_IBCChannel_messageType fastReflection_ValidatorInfo_IBCChannel_messageType +var _ protoreflect.MessageType = fastReflection_ValidatorInfo_IBCChannel_messageType{} -type fastReflection_KeyInfo_messageType struct{} +type fastReflection_ValidatorInfo_IBCChannel_messageType struct{} -func (x fastReflection_KeyInfo_messageType) Zero() protoreflect.Message { - return (*fastReflection_KeyInfo)(nil) +func (x fastReflection_ValidatorInfo_IBCChannel_messageType) Zero() protoreflect.Message { + return (*fastReflection_ValidatorInfo_IBCChannel)(nil) } -func (x fastReflection_KeyInfo_messageType) New() protoreflect.Message { - return new(fastReflection_KeyInfo) +func (x fastReflection_ValidatorInfo_IBCChannel_messageType) New() protoreflect.Message { + return new(fastReflection_ValidatorInfo_IBCChannel) } -func (x fastReflection_KeyInfo_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_KeyInfo +func (x fastReflection_ValidatorInfo_IBCChannel_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_ValidatorInfo_IBCChannel } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_KeyInfo) Descriptor() protoreflect.MessageDescriptor { - return md_KeyInfo +func (x *fastReflection_ValidatorInfo_IBCChannel) Descriptor() protoreflect.MessageDescriptor { + return md_ValidatorInfo_IBCChannel } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_KeyInfo) Type() protoreflect.MessageType { - return _fastReflection_KeyInfo_messageType +func (x *fastReflection_ValidatorInfo_IBCChannel) Type() protoreflect.MessageType { + return _fastReflection_ValidatorInfo_IBCChannel_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_KeyInfo) New() protoreflect.Message { - return new(fastReflection_KeyInfo) +func (x *fastReflection_ValidatorInfo_IBCChannel) New() protoreflect.Message { + return new(fastReflection_ValidatorInfo_IBCChannel) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_KeyInfo) Interface() protoreflect.ProtoMessage { - return (*KeyInfo)(x) +func (x *fastReflection_ValidatorInfo_IBCChannel) Interface() protoreflect.ProtoMessage { + return (*ValidatorInfo_IBCChannel)(x) } // Range iterates over every populated field in an undefined order, @@ -5347,28 +7429,16 @@ func (x *fastReflection_KeyInfo) Interface() protoreflect.ProtoMessage { // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_KeyInfo) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Kind != 0 { - value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Kind)) - if !f(fd_KeyInfo_kind, value) { +func (x *fastReflection_ValidatorInfo_IBCChannel) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Id != "" { + value := protoreflect.ValueOfString(x.Id) + if !f(fd_ValidatorInfo_IBCChannel_id, value) { return } } - if x.Algorithm != "" { - value := protoreflect.ValueOfString(x.Algorithm) - if !f(fd_KeyInfo_algorithm, value) { - return - } - } - if x.Curve != "" { - value := protoreflect.ValueOfString(x.Curve) - if !f(fd_KeyInfo_curve, value) { - return - } - } - if x.Encoding != "" { - value := protoreflect.ValueOfString(x.Encoding) - if !f(fd_KeyInfo_encoding, value) { + if x.Port != "" { + value := protoreflect.ValueOfString(x.Port) + if !f(fd_ValidatorInfo_IBCChannel_port, value) { return } } @@ -5385,21 +7455,17 @@ func (x *fastReflection_KeyInfo) Range(f func(protoreflect.FieldDescriptor, prot // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_KeyInfo) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_ValidatorInfo_IBCChannel) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "did.v1.KeyInfo.kind": - return x.Kind != 0 - case "did.v1.KeyInfo.algorithm": - return x.Algorithm != "" - case "did.v1.KeyInfo.curve": - return x.Curve != "" - case "did.v1.KeyInfo.encoding": - return x.Encoding != "" + case "did.v1.ValidatorInfo.IBCChannel.id": + return x.Id != "" + case "did.v1.ValidatorInfo.IBCChannel.port": + return x.Port != "" default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.KeyInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.IBCChannel")) } - panic(fmt.Errorf("message did.v1.KeyInfo does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.IBCChannel does not contain field %s", fd.FullName())) } } @@ -5409,21 +7475,17 @@ func (x *fastReflection_KeyInfo) Has(fd protoreflect.FieldDescriptor) bool { // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_KeyInfo) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_ValidatorInfo_IBCChannel) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "did.v1.KeyInfo.kind": - x.Kind = 0 - case "did.v1.KeyInfo.algorithm": - x.Algorithm = "" - case "did.v1.KeyInfo.curve": - x.Curve = "" - case "did.v1.KeyInfo.encoding": - x.Encoding = "" + case "did.v1.ValidatorInfo.IBCChannel.id": + x.Id = "" + case "did.v1.ValidatorInfo.IBCChannel.port": + x.Port = "" default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.KeyInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.IBCChannel")) } - panic(fmt.Errorf("message did.v1.KeyInfo does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.IBCChannel does not contain field %s", fd.FullName())) } } @@ -5433,25 +7495,19 @@ func (x *fastReflection_KeyInfo) Clear(fd protoreflect.FieldDescriptor) { // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_KeyInfo) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_ValidatorInfo_IBCChannel) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "did.v1.KeyInfo.kind": - value := x.Kind - return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) - case "did.v1.KeyInfo.algorithm": - value := x.Algorithm + case "did.v1.ValidatorInfo.IBCChannel.id": + value := x.Id return protoreflect.ValueOfString(value) - case "did.v1.KeyInfo.curve": - value := x.Curve - return protoreflect.ValueOfString(value) - case "did.v1.KeyInfo.encoding": - value := x.Encoding + case "did.v1.ValidatorInfo.IBCChannel.port": + value := x.Port return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.KeyInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.IBCChannel")) } - panic(fmt.Errorf("message did.v1.KeyInfo does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.IBCChannel does not contain field %s", descriptor.FullName())) } } @@ -5465,21 +7521,17 @@ func (x *fastReflection_KeyInfo) Get(descriptor protoreflect.FieldDescriptor) pr // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_KeyInfo) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_ValidatorInfo_IBCChannel) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "did.v1.KeyInfo.kind": - x.Kind = (KeyType)(value.Enum()) - case "did.v1.KeyInfo.algorithm": - x.Algorithm = value.Interface().(string) - case "did.v1.KeyInfo.curve": - x.Curve = value.Interface().(string) - case "did.v1.KeyInfo.encoding": - x.Encoding = value.Interface().(string) + case "did.v1.ValidatorInfo.IBCChannel.id": + x.Id = value.Interface().(string) + case "did.v1.ValidatorInfo.IBCChannel.port": + x.Port = value.Interface().(string) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.KeyInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.IBCChannel")) } - panic(fmt.Errorf("message did.v1.KeyInfo does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.IBCChannel does not contain field %s", fd.FullName())) } } @@ -5493,52 +7545,44 @@ func (x *fastReflection_KeyInfo) Set(fd protoreflect.FieldDescriptor, value prot // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_KeyInfo) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_ValidatorInfo_IBCChannel) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.KeyInfo.kind": - panic(fmt.Errorf("field kind of message did.v1.KeyInfo is not mutable")) - case "did.v1.KeyInfo.algorithm": - panic(fmt.Errorf("field algorithm of message did.v1.KeyInfo is not mutable")) - case "did.v1.KeyInfo.curve": - panic(fmt.Errorf("field curve of message did.v1.KeyInfo is not mutable")) - case "did.v1.KeyInfo.encoding": - panic(fmt.Errorf("field encoding of message did.v1.KeyInfo is not mutable")) + case "did.v1.ValidatorInfo.IBCChannel.id": + panic(fmt.Errorf("field id of message did.v1.ValidatorInfo.IBCChannel is not mutable")) + case "did.v1.ValidatorInfo.IBCChannel.port": + panic(fmt.Errorf("field port of message did.v1.ValidatorInfo.IBCChannel is not mutable")) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.KeyInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.IBCChannel")) } - panic(fmt.Errorf("message did.v1.KeyInfo does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.IBCChannel does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_KeyInfo) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_ValidatorInfo_IBCChannel) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.KeyInfo.kind": - return protoreflect.ValueOfEnum(0) - case "did.v1.KeyInfo.algorithm": + case "did.v1.ValidatorInfo.IBCChannel.id": return protoreflect.ValueOfString("") - case "did.v1.KeyInfo.curve": - return protoreflect.ValueOfString("") - case "did.v1.KeyInfo.encoding": + case "did.v1.ValidatorInfo.IBCChannel.port": return protoreflect.ValueOfString("") default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.KeyInfo")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ValidatorInfo.IBCChannel")) } - panic(fmt.Errorf("message did.v1.KeyInfo does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ValidatorInfo.IBCChannel does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_KeyInfo) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_ValidatorInfo_IBCChannel) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.KeyInfo", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in did.v1.ValidatorInfo.IBCChannel", d.FullName())) } panic("unreachable") } @@ -5546,7 +7590,7 @@ func (x *fastReflection_KeyInfo) WhichOneof(d protoreflect.OneofDescriptor) prot // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_KeyInfo) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_ValidatorInfo_IBCChannel) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -5557,7 +7601,7 @@ func (x *fastReflection_KeyInfo) GetUnknown() protoreflect.RawFields { // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_KeyInfo) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_ValidatorInfo_IBCChannel) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -5569,7 +7613,7 @@ func (x *fastReflection_KeyInfo) SetUnknown(fields protoreflect.RawFields) { // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_KeyInfo) IsValid() bool { +func (x *fastReflection_ValidatorInfo_IBCChannel) IsValid() bool { return x != nil } @@ -5579,9 +7623,9 @@ func (x *fastReflection_KeyInfo) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_KeyInfo) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_ValidatorInfo_IBCChannel) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*KeyInfo) + x := input.Message.Interface().(*ValidatorInfo_IBCChannel) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -5593,18 +7637,11 @@ func (x *fastReflection_KeyInfo) ProtoMethods() *protoiface.Methods { var n int var l int _ = l - if x.Kind != 0 { - n += 1 + runtime.Sov(uint64(x.Kind)) - } - l = len(x.Algorithm) + l = len(x.Id) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - l = len(x.Curve) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.Encoding) + l = len(x.Port) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } @@ -5618,7 +7655,7 @@ func (x *fastReflection_KeyInfo) ProtoMethods() *protoiface.Methods { } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*KeyInfo) + x := input.Message.Interface().(*ValidatorInfo_IBCChannel) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -5637,31 +7674,19 @@ func (x *fastReflection_KeyInfo) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } - if len(x.Encoding) > 0 { - i -= len(x.Encoding) - copy(dAtA[i:], x.Encoding) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Encoding))) - i-- - dAtA[i] = 0x22 - } - if len(x.Curve) > 0 { - i -= len(x.Curve) - copy(dAtA[i:], x.Curve) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Curve))) - i-- - dAtA[i] = 0x1a - } - if len(x.Algorithm) > 0 { - i -= len(x.Algorithm) - copy(dAtA[i:], x.Algorithm) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Algorithm))) + if len(x.Port) > 0 { + i -= len(x.Port) + copy(dAtA[i:], x.Port) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Port))) i-- dAtA[i] = 0x12 } - if x.Kind != 0 { - i = runtime.EncodeVarint(dAtA, i, uint64(x.Kind)) + if len(x.Id) > 0 { + i -= len(x.Id) + copy(dAtA[i:], x.Id) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id))) i-- - dAtA[i] = 0x8 + dAtA[i] = 0xa } if input.Buf != nil { input.Buf = append(input.Buf, dAtA...) @@ -5674,7 +7699,7 @@ func (x *fastReflection_KeyInfo) ProtoMethods() *protoiface.Methods { }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*KeyInfo) + x := input.Message.Interface().(*ValidatorInfo_IBCChannel) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -5706,17 +7731,17 @@ func (x *fastReflection_KeyInfo) ProtoMethods() *protoiface.Methods { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: KeyInfo: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ValidatorInfo_IBCChannel: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: KeyInfo: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ValidatorInfo_IBCChannel: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } - x.Kind = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -5726,14 +7751,27 @@ func (x *fastReflection_KeyInfo) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - x.Kind |= KeyType(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 2: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Algorithm", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -5761,71 +7799,7 @@ func (x *fastReflection_KeyInfo) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.Algorithm = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Curve", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Curve = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Encoding", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Encoding = string(dAtA[iNdEx:postIndex]) + x.Port = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -5875,218 +7849,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// DIDNamespace define the different namespaces of DID -type DIDNamespace int32 - -const ( - DIDNamespace_DID_NAMESPACE_UNSPECIFIED DIDNamespace = 0 - DIDNamespace_DID_NAMESPACE_IPFS DIDNamespace = 1 - DIDNamespace_DID_NAMESPACE_SONR DIDNamespace = 2 - DIDNamespace_DID_NAMESPACE_BITCOIN DIDNamespace = 3 - DIDNamespace_DID_NAMESPACE_ETHEREUM DIDNamespace = 4 - DIDNamespace_DID_NAMESPACE_IBC DIDNamespace = 5 -) - -// Enum value maps for DIDNamespace. -var ( - DIDNamespace_name = map[int32]string{ - 0: "DID_NAMESPACE_UNSPECIFIED", - 1: "DID_NAMESPACE_IPFS", - 2: "DID_NAMESPACE_SONR", - 3: "DID_NAMESPACE_BITCOIN", - 4: "DID_NAMESPACE_ETHEREUM", - 5: "DID_NAMESPACE_IBC", - } - DIDNamespace_value = map[string]int32{ - "DID_NAMESPACE_UNSPECIFIED": 0, - "DID_NAMESPACE_IPFS": 1, - "DID_NAMESPACE_SONR": 2, - "DID_NAMESPACE_BITCOIN": 3, - "DID_NAMESPACE_ETHEREUM": 4, - "DID_NAMESPACE_IBC": 5, - } -) - -func (x DIDNamespace) Enum() *DIDNamespace { - p := new(DIDNamespace) - *p = x - return p -} - -func (x DIDNamespace) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (DIDNamespace) Descriptor() protoreflect.EnumDescriptor { - return file_did_v1_genesis_proto_enumTypes[0].Descriptor() -} - -func (DIDNamespace) Type() protoreflect.EnumType { - return &file_did_v1_genesis_proto_enumTypes[0] -} - -func (x DIDNamespace) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use DIDNamespace.Descriptor instead. -func (DIDNamespace) EnumDescriptor() ([]byte, []int) { - return file_did_v1_genesis_proto_rawDescGZIP(), []int{0} -} - -// KeyKTind defines the kind of key -type KeyType int32 - -const ( - KeyType_KEY_TYPE_UNSPECIFIED KeyType = 0 - // Blockchain key types - KeyType_KEY_TYPE_SECP256K1 KeyType = 1 // cross-chain - KeyType_KEY_TYPE_ED25519 KeyType = 2 // validators - KeyType_KEY_TYPE_KECCAK KeyType = 3 // ethereum addresses - KeyType_KEY_TYPE_BLS12381 KeyType = 4 // zero-knowledge - KeyType_KEY_TYPE_X25519 KeyType = 5 // multisig - KeyType_KEY_TYPE_SCHNORR KeyType = 6 // mpc - // Webauthn and FIDO key types - KeyType_KEY_TYPE_WEBAUTHN KeyType = 7 // passkey authentication - KeyType_KEY_TYPE_FIDO KeyType = 8 // fido2 authentication -) - -// Enum value maps for KeyType. -var ( - KeyType_name = map[int32]string{ - 0: "KEY_TYPE_UNSPECIFIED", - 1: "KEY_TYPE_SECP256K1", - 2: "KEY_TYPE_ED25519", - 3: "KEY_TYPE_KECCAK", - 4: "KEY_TYPE_BLS12381", - 5: "KEY_TYPE_X25519", - 6: "KEY_TYPE_SCHNORR", - 7: "KEY_TYPE_WEBAUTHN", - 8: "KEY_TYPE_FIDO", - } - KeyType_value = map[string]int32{ - "KEY_TYPE_UNSPECIFIED": 0, - "KEY_TYPE_SECP256K1": 1, - "KEY_TYPE_ED25519": 2, - "KEY_TYPE_KECCAK": 3, - "KEY_TYPE_BLS12381": 4, - "KEY_TYPE_X25519": 5, - "KEY_TYPE_SCHNORR": 6, - "KEY_TYPE_WEBAUTHN": 7, - "KEY_TYPE_FIDO": 8, - } -) - -func (x KeyType) Enum() *KeyType { - p := new(KeyType) - *p = x - return p -} - -func (x KeyType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (KeyType) Descriptor() protoreflect.EnumDescriptor { - return file_did_v1_genesis_proto_enumTypes[1].Descriptor() -} - -func (KeyType) Type() protoreflect.EnumType { - return &file_did_v1_genesis_proto_enumTypes[1] -} - -func (x KeyType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use KeyType.Descriptor instead. -func (KeyType) EnumDescriptor() ([]byte, []int) { - return file_did_v1_genesis_proto_rawDescGZIP(), []int{1} -} - -// PermissionScope define the Capabilities Controllers can grant for Services -type PermissionScope int32 - -const ( - PermissionScope_PERMISSION_SCOPE_UNSPECIFIED PermissionScope = 0 - PermissionScope_PERMISSION_SCOPE_BASIC_INFO PermissionScope = 1 - PermissionScope_PERMISSION_SCOPE_RECORDS_READ PermissionScope = 2 - PermissionScope_PERMISSION_SCOPE_RECORDS_WRITE PermissionScope = 3 - PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_READ PermissionScope = 4 - PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_WRITE PermissionScope = 5 - PermissionScope_PERMISSION_SCOPE_WALLETS_READ PermissionScope = 6 - PermissionScope_PERMISSION_SCOPE_WALLETS_CREATE PermissionScope = 7 - PermissionScope_PERMISSION_SCOPE_WALLETS_SUBSCRIBE PermissionScope = 8 - PermissionScope_PERMISSION_SCOPE_WALLETS_UPDATE PermissionScope = 9 - PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_VERIFY PermissionScope = 10 - PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_BROADCAST PermissionScope = 11 - PermissionScope_PERMISSION_SCOPE_ADMIN_USER PermissionScope = 12 - PermissionScope_PERMISSION_SCOPE_ADMIN_VALIDATOR PermissionScope = 13 -) - -// Enum value maps for PermissionScope. -var ( - PermissionScope_name = map[int32]string{ - 0: "PERMISSION_SCOPE_UNSPECIFIED", - 1: "PERMISSION_SCOPE_BASIC_INFO", - 2: "PERMISSION_SCOPE_RECORDS_READ", - 3: "PERMISSION_SCOPE_RECORDS_WRITE", - 4: "PERMISSION_SCOPE_TRANSACTIONS_READ", - 5: "PERMISSION_SCOPE_TRANSACTIONS_WRITE", - 6: "PERMISSION_SCOPE_WALLETS_READ", - 7: "PERMISSION_SCOPE_WALLETS_CREATE", - 8: "PERMISSION_SCOPE_WALLETS_SUBSCRIBE", - 9: "PERMISSION_SCOPE_WALLETS_UPDATE", - 10: "PERMISSION_SCOPE_TRANSACTIONS_VERIFY", - 11: "PERMISSION_SCOPE_TRANSACTIONS_BROADCAST", - 12: "PERMISSION_SCOPE_ADMIN_USER", - 13: "PERMISSION_SCOPE_ADMIN_VALIDATOR", - } - PermissionScope_value = map[string]int32{ - "PERMISSION_SCOPE_UNSPECIFIED": 0, - "PERMISSION_SCOPE_BASIC_INFO": 1, - "PERMISSION_SCOPE_RECORDS_READ": 2, - "PERMISSION_SCOPE_RECORDS_WRITE": 3, - "PERMISSION_SCOPE_TRANSACTIONS_READ": 4, - "PERMISSION_SCOPE_TRANSACTIONS_WRITE": 5, - "PERMISSION_SCOPE_WALLETS_READ": 6, - "PERMISSION_SCOPE_WALLETS_CREATE": 7, - "PERMISSION_SCOPE_WALLETS_SUBSCRIBE": 8, - "PERMISSION_SCOPE_WALLETS_UPDATE": 9, - "PERMISSION_SCOPE_TRANSACTIONS_VERIFY": 10, - "PERMISSION_SCOPE_TRANSACTIONS_BROADCAST": 11, - "PERMISSION_SCOPE_ADMIN_USER": 12, - "PERMISSION_SCOPE_ADMIN_VALIDATOR": 13, - } -) - -func (x PermissionScope) Enum() *PermissionScope { - p := new(PermissionScope) - *p = x - return p -} - -func (x PermissionScope) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (PermissionScope) Descriptor() protoreflect.EnumDescriptor { - return file_did_v1_genesis_proto_enumTypes[2].Descriptor() -} - -func (PermissionScope) Type() protoreflect.EnumType { - return &file_did_v1_genesis_proto_enumTypes[2] -} - -func (x PermissionScope) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use PermissionScope.Descriptor instead. -func (PermissionScope) EnumDescriptor() ([]byte, []int) { - return file_did_v1_genesis_proto_rawDescGZIP(), []int{2} -} - // GenesisState defines the module genesis state type GenesisState struct { state protoimpl.MessageState @@ -6136,6 +7898,8 @@ type Params struct { WhitelistedChains []*ChainInfo `protobuf:"bytes,2,rep,name=whitelisted_chains,json=whitelistedChains,proto3" json:"whitelisted_chains,omitempty"` // Whitelisted Key Types AllowedPublicKeys []*KeyInfo `protobuf:"bytes,3,rep,name=allowed_public_keys,json=allowedPublicKeys,proto3" json:"allowed_public_keys,omitempty"` + // OpenIDConfig defines the base openid configuration across all did services + OpenidConfig *OpenIDConfig `protobuf:"bytes,4,opt,name=openid_config,json=openidConfig,proto3" json:"openid_config,omitempty"` } func (x *Params) Reset() { @@ -6179,26 +7943,33 @@ func (x *Params) GetAllowedPublicKeys() []*KeyInfo { return nil } +func (x *Params) GetOpenidConfig() *OpenIDConfig { + if x != nil { + return x.OpenidConfig + } + return nil +} + // AssetInfo defines the asset info type AssetInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` - AssetType string `protobuf:"bytes,4,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` - OriginChain string `protobuf:"bytes,5,opt,name=origin_chain,json=originChain,proto3" json:"origin_chain,omitempty"` - OriginDenom string `protobuf:"bytes,6,opt,name=origin_denom,json=originDenom,proto3" json:"origin_denom,omitempty"` - Decimals int32 `protobuf:"varint,7,opt,name=decimals,proto3" json:"decimals,omitempty"` - Description string `protobuf:"bytes,8,opt,name=description,proto3" json:"description,omitempty"` - ImageUrl string `protobuf:"bytes,9,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"` - CoingeckoId string `protobuf:"bytes,10,opt,name=coingecko_id,json=coingeckoId,proto3" json:"coingecko_id,omitempty"` - IsEnabled bool `protobuf:"varint,11,opt,name=is_enabled,json=isEnabled,proto3" json:"is_enabled,omitempty"` - IbcPath string `protobuf:"bytes,12,opt,name=ibc_path,json=ibcPath,proto3" json:"ibc_path,omitempty"` - IbcChannel string `protobuf:"bytes,13,opt,name=ibc_channel,json=ibcChannel,proto3" json:"ibc_channel,omitempty"` - IbcPort string `protobuf:"bytes,14,opt,name=ibc_port,json=ibcPort,proto3" json:"ibc_port,omitempty"` + // The coin type index for bip44 path + Index int64 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` + // The hrp for bech32 address + Hrp string `protobuf:"bytes,2,opt,name=hrp,proto3" json:"hrp,omitempty"` + // The coin symbol + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + // The coin name + AssetType AssetType `protobuf:"varint,4,opt,name=asset_type,json=assetType,proto3,enum=did.v1.AssetType" json:"asset_type,omitempty"` + // The name of the asset + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + // The Method of the did namespace + Method string `protobuf:"bytes,6,opt,name=method,proto3" json:"method,omitempty"` + // The icon url + IconUrl string `protobuf:"bytes,7,opt,name=icon_url,json=iconUrl,proto3" json:"icon_url,omitempty"` } func (x *AssetInfo) Reset() { @@ -6221,16 +7992,16 @@ func (*AssetInfo) Descriptor() ([]byte, []int) { return file_did_v1_genesis_proto_rawDescGZIP(), []int{2} } -func (x *AssetInfo) GetId() string { +func (x *AssetInfo) GetIndex() int64 { if x != nil { - return x.Id + return x.Index } - return "" + return 0 } -func (x *AssetInfo) GetDenom() string { +func (x *AssetInfo) GetHrp() string { if x != nil { - return x.Denom + return x.Hrp } return "" } @@ -6242,79 +8013,30 @@ func (x *AssetInfo) GetSymbol() string { return "" } -func (x *AssetInfo) GetAssetType() string { +func (x *AssetInfo) GetAssetType() AssetType { if x != nil { return x.AssetType } - return "" + return AssetType_ASSET_TYPE_UNSPECIFIED } -func (x *AssetInfo) GetOriginChain() string { +func (x *AssetInfo) GetName() string { if x != nil { - return x.OriginChain + return x.Name } return "" } -func (x *AssetInfo) GetOriginDenom() string { +func (x *AssetInfo) GetMethod() string { if x != nil { - return x.OriginDenom + return x.Method } return "" } -func (x *AssetInfo) GetDecimals() int32 { +func (x *AssetInfo) GetIconUrl() string { if x != nil { - return x.Decimals - } - return 0 -} - -func (x *AssetInfo) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *AssetInfo) GetImageUrl() string { - if x != nil { - return x.ImageUrl - } - return "" -} - -func (x *AssetInfo) GetCoingeckoId() string { - if x != nil { - return x.CoingeckoId - } - return "" -} - -func (x *AssetInfo) GetIsEnabled() bool { - if x != nil { - return x.IsEnabled - } - return false -} - -func (x *AssetInfo) GetIbcPath() string { - if x != nil { - return x.IbcPath - } - return "" -} - -func (x *AssetInfo) GetIbcChannel() string { - if x != nil { - return x.IbcChannel - } - return "" -} - -func (x *AssetInfo) GetIbcPort() string { - if x != nil { - return x.IbcPort + return x.IconUrl } return "" } @@ -6325,16 +8047,11 @@ type ChainInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Symbol string `protobuf:"bytes,4,opt,name=symbol,proto3" json:"symbol,omitempty"` - Bech32Prefix string `protobuf:"bytes,5,opt,name=bech32_prefix,json=bech32Prefix,proto3" json:"bech32_prefix,omitempty"` - GenesisTime string `protobuf:"bytes,6,opt,name=genesis_time,json=genesisTime,proto3" json:"genesis_time,omitempty"` - GrpcEndpoints []*ChainInfo_Endpoint `protobuf:"bytes,7,rep,name=grpc_endpoints,json=grpcEndpoints,proto3" json:"grpc_endpoints,omitempty"` - RestEndpoints []*ChainInfo_Endpoint `protobuf:"bytes,8,rep,name=rest_endpoints,json=restEndpoints,proto3" json:"rest_endpoints,omitempty"` - Explorer *ChainInfo_ExplorerInfo `protobuf:"bytes,9,opt,name=explorer,proto3" json:"explorer,omitempty"` - FeeInfo *ChainInfo_FeeInfo `protobuf:"bytes,10,opt,name=fee_info,json=feeInfo,proto3" json:"fee_info,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Symbol string `protobuf:"bytes,4,opt,name=symbol,proto3" json:"symbol,omitempty"` + Validators []*ValidatorInfo `protobuf:"bytes,5,rep,name=validators,proto3" json:"validators,omitempty"` } func (x *ChainInfo) Reset() { @@ -6385,44 +8102,9 @@ func (x *ChainInfo) GetSymbol() string { return "" } -func (x *ChainInfo) GetBech32Prefix() string { +func (x *ChainInfo) GetValidators() []*ValidatorInfo { if x != nil { - return x.Bech32Prefix - } - return "" -} - -func (x *ChainInfo) GetGenesisTime() string { - if x != nil { - return x.GenesisTime - } - return "" -} - -func (x *ChainInfo) GetGrpcEndpoints() []*ChainInfo_Endpoint { - if x != nil { - return x.GrpcEndpoints - } - return nil -} - -func (x *ChainInfo) GetRestEndpoints() []*ChainInfo_Endpoint { - if x != nil { - return x.RestEndpoints - } - return nil -} - -func (x *ChainInfo) GetExplorer() *ChainInfo_ExplorerInfo { - if x != nil { - return x.Explorer - } - return nil -} - -func (x *ChainInfo) GetFeeInfo() *ChainInfo_FeeInfo { - if x != nil { - return x.FeeInfo + return x.Validators } return nil } @@ -6433,10 +8115,11 @@ type KeyInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Kind KeyType `protobuf:"varint,1,opt,name=kind,proto3,enum=did.v1.KeyType" json:"kind,omitempty"` - Algorithm string `protobuf:"bytes,2,opt,name=algorithm,proto3" json:"algorithm,omitempty"` // e.g., "ES256", "EdDSA", "ES256K" - Curve string `protobuf:"bytes,3,opt,name=curve,proto3" json:"curve,omitempty"` // e.g., "P-256", "Ed25519", "secp256k1" - Encoding string `protobuf:"bytes,4,opt,name=encoding,proto3" json:"encoding,omitempty"` // e.g., "hex", "base64", "multibase" + Role KeyRole `protobuf:"varint,1,opt,name=role,proto3,enum=did.v1.KeyRole" json:"role,omitempty"` + Algorithm KeyAlgorithm `protobuf:"varint,2,opt,name=algorithm,proto3,enum=did.v1.KeyAlgorithm" json:"algorithm,omitempty"` // e.g., "ES256", "EdDSA", "ES256K" + Encoding KeyEncoding `protobuf:"varint,3,opt,name=encoding,proto3,enum=did.v1.KeyEncoding" json:"encoding,omitempty"` // e.g., "hex", "base64", "multibase" + Curve KeyCurve `protobuf:"varint,4,opt,name=curve,proto3,enum=did.v1.KeyCurve" json:"curve,omitempty"` // e.g., "P256", "P384", "P521", "X25519", "X448", "Ed25519", "Ed448", "secp256k1" + Type_ KeyType `protobuf:"varint,5,opt,name=type,proto3,enum=did.v1.KeyType" json:"type,omitempty"` // e.g., "Octet", "Elliptic", "RSA", "Symmetric", "HMAC" } func (x *KeyInfo) Reset() { @@ -6459,36 +8142,227 @@ func (*KeyInfo) Descriptor() ([]byte, []int) { return file_did_v1_genesis_proto_rawDescGZIP(), []int{4} } -func (x *KeyInfo) GetKind() KeyType { +func (x *KeyInfo) GetRole() KeyRole { if x != nil { - return x.Kind + return x.Role + } + return KeyRole_KEY_ROLE_UNSPECIFIED +} + +func (x *KeyInfo) GetAlgorithm() KeyAlgorithm { + if x != nil { + return x.Algorithm + } + return KeyAlgorithm_KEY_ALGORITHM_UNSPECIFIED +} + +func (x *KeyInfo) GetEncoding() KeyEncoding { + if x != nil { + return x.Encoding + } + return KeyEncoding_KEY_ENCODING_UNSPECIFIED +} + +func (x *KeyInfo) GetCurve() KeyCurve { + if x != nil { + return x.Curve + } + return KeyCurve_KEY_CURVE_UNSPECIFIED +} + +func (x *KeyInfo) GetType_() KeyType { + if x != nil { + return x.Type_ } return KeyType_KEY_TYPE_UNSPECIFIED } -func (x *KeyInfo) GetAlgorithm() string { +// OpenIDConfig defines the base openid configuration across all did services +type OpenIDConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"` + AuthorizationEndpoint string `protobuf:"bytes,2,opt,name=authorization_endpoint,json=authorizationEndpoint,proto3" json:"authorization_endpoint,omitempty"` + TokenEndpoint string `protobuf:"bytes,3,opt,name=token_endpoint,json=tokenEndpoint,proto3" json:"token_endpoint,omitempty"` + UserinfoEndpoint string `protobuf:"bytes,4,opt,name=userinfo_endpoint,json=userinfoEndpoint,proto3" json:"userinfo_endpoint,omitempty"` + ScopesSupported []string `protobuf:"bytes,5,rep,name=scopes_supported,json=scopesSupported,proto3" json:"scopes_supported,omitempty"` + ResponseTypesSupported []string `protobuf:"bytes,6,rep,name=response_types_supported,json=responseTypesSupported,proto3" json:"response_types_supported,omitempty"` + ResponseModesSupported []string `protobuf:"bytes,7,rep,name=response_modes_supported,json=responseModesSupported,proto3" json:"response_modes_supported,omitempty"` + GrantTypesSupported []string `protobuf:"bytes,8,rep,name=grant_types_supported,json=grantTypesSupported,proto3" json:"grant_types_supported,omitempty"` + AcrValuesSupported []string `protobuf:"bytes,9,rep,name=acr_values_supported,json=acrValuesSupported,proto3" json:"acr_values_supported,omitempty"` + SubjectTypesSupported []string `protobuf:"bytes,10,rep,name=subject_types_supported,json=subjectTypesSupported,proto3" json:"subject_types_supported,omitempty"` +} + +func (x *OpenIDConfig) Reset() { + *x = OpenIDConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_did_v1_genesis_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OpenIDConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpenIDConfig) ProtoMessage() {} + +// Deprecated: Use OpenIDConfig.ProtoReflect.Descriptor instead. +func (*OpenIDConfig) Descriptor() ([]byte, []int) { + return file_did_v1_genesis_proto_rawDescGZIP(), []int{5} +} + +func (x *OpenIDConfig) GetIssuer() string { if x != nil { - return x.Algorithm + return x.Issuer } return "" } -func (x *KeyInfo) GetCurve() string { +func (x *OpenIDConfig) GetAuthorizationEndpoint() string { if x != nil { - return x.Curve + return x.AuthorizationEndpoint } return "" } -func (x *KeyInfo) GetEncoding() string { +func (x *OpenIDConfig) GetTokenEndpoint() string { if x != nil { - return x.Encoding + return x.TokenEndpoint } return "" } +func (x *OpenIDConfig) GetUserinfoEndpoint() string { + if x != nil { + return x.UserinfoEndpoint + } + return "" +} + +func (x *OpenIDConfig) GetScopesSupported() []string { + if x != nil { + return x.ScopesSupported + } + return nil +} + +func (x *OpenIDConfig) GetResponseTypesSupported() []string { + if x != nil { + return x.ResponseTypesSupported + } + return nil +} + +func (x *OpenIDConfig) GetResponseModesSupported() []string { + if x != nil { + return x.ResponseModesSupported + } + return nil +} + +func (x *OpenIDConfig) GetGrantTypesSupported() []string { + if x != nil { + return x.GrantTypesSupported + } + return nil +} + +func (x *OpenIDConfig) GetAcrValuesSupported() []string { + if x != nil { + return x.AcrValuesSupported + } + return nil +} + +func (x *OpenIDConfig) GetSubjectTypesSupported() []string { + if x != nil { + return x.SubjectTypesSupported + } + return nil +} + +// ValidatorInfo defines information for accepted Validator nodes +type ValidatorInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Moniker string `protobuf:"bytes,1,opt,name=moniker,proto3" json:"moniker,omitempty"` + GrpcEndpoints []*ValidatorInfo_Endpoint `protobuf:"bytes,2,rep,name=grpc_endpoints,json=grpcEndpoints,proto3" json:"grpc_endpoints,omitempty"` + RestEndpoints []*ValidatorInfo_Endpoint `protobuf:"bytes,3,rep,name=rest_endpoints,json=restEndpoints,proto3" json:"rest_endpoints,omitempty"` + Explorer *ValidatorInfo_ExplorerInfo `protobuf:"bytes,4,opt,name=explorer,proto3" json:"explorer,omitempty"` + FeeInfo *ValidatorInfo_FeeInfo `protobuf:"bytes,5,opt,name=fee_info,json=feeInfo,proto3" json:"fee_info,omitempty"` + IbcChannel *ValidatorInfo_IBCChannel `protobuf:"bytes,6,opt,name=ibc_channel,json=ibcChannel,proto3" json:"ibc_channel,omitempty"` +} + +func (x *ValidatorInfo) Reset() { + *x = ValidatorInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_did_v1_genesis_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValidatorInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidatorInfo) ProtoMessage() {} + +// Deprecated: Use ValidatorInfo.ProtoReflect.Descriptor instead. +func (*ValidatorInfo) Descriptor() ([]byte, []int) { + return file_did_v1_genesis_proto_rawDescGZIP(), []int{6} +} + +func (x *ValidatorInfo) GetMoniker() string { + if x != nil { + return x.Moniker + } + return "" +} + +func (x *ValidatorInfo) GetGrpcEndpoints() []*ValidatorInfo_Endpoint { + if x != nil { + return x.GrpcEndpoints + } + return nil +} + +func (x *ValidatorInfo) GetRestEndpoints() []*ValidatorInfo_Endpoint { + if x != nil { + return x.RestEndpoints + } + return nil +} + +func (x *ValidatorInfo) GetExplorer() *ValidatorInfo_ExplorerInfo { + if x != nil { + return x.Explorer + } + return nil +} + +func (x *ValidatorInfo) GetFeeInfo() *ValidatorInfo_FeeInfo { + if x != nil { + return x.FeeInfo + } + return nil +} + +func (x *ValidatorInfo) GetIbcChannel() *ValidatorInfo_IBCChannel { + if x != nil { + return x.IbcChannel + } + return nil +} + // Endpoint defines an endpoint -type ChainInfo_Endpoint struct { +type ValidatorInfo_Endpoint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -6497,34 +8371,34 @@ type ChainInfo_Endpoint struct { IsPrimary bool `protobuf:"varint,2,opt,name=is_primary,json=isPrimary,proto3" json:"is_primary,omitempty"` } -func (x *ChainInfo_Endpoint) Reset() { - *x = ChainInfo_Endpoint{} +func (x *ValidatorInfo_Endpoint) Reset() { + *x = ValidatorInfo_Endpoint{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_genesis_proto_msgTypes[5] + mi := &file_did_v1_genesis_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ChainInfo_Endpoint) String() string { +func (x *ValidatorInfo_Endpoint) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ChainInfo_Endpoint) ProtoMessage() {} +func (*ValidatorInfo_Endpoint) ProtoMessage() {} -// Deprecated: Use ChainInfo_Endpoint.ProtoReflect.Descriptor instead. -func (*ChainInfo_Endpoint) Descriptor() ([]byte, []int) { - return file_did_v1_genesis_proto_rawDescGZIP(), []int{3, 0} +// Deprecated: Use ValidatorInfo_Endpoint.ProtoReflect.Descriptor instead. +func (*ValidatorInfo_Endpoint) Descriptor() ([]byte, []int) { + return file_did_v1_genesis_proto_rawDescGZIP(), []int{6, 0} } -func (x *ChainInfo_Endpoint) GetUrl() string { +func (x *ValidatorInfo_Endpoint) GetUrl() string { if x != nil { return x.Url } return "" } -func (x *ChainInfo_Endpoint) GetIsPrimary() bool { +func (x *ValidatorInfo_Endpoint) GetIsPrimary() bool { if x != nil { return x.IsPrimary } @@ -6532,7 +8406,7 @@ func (x *ChainInfo_Endpoint) GetIsPrimary() bool { } // ExplorerInfo defines the explorer info -type ChainInfo_ExplorerInfo struct { +type ValidatorInfo_ExplorerInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -6541,34 +8415,34 @@ type ChainInfo_ExplorerInfo struct { Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` } -func (x *ChainInfo_ExplorerInfo) Reset() { - *x = ChainInfo_ExplorerInfo{} +func (x *ValidatorInfo_ExplorerInfo) Reset() { + *x = ValidatorInfo_ExplorerInfo{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_genesis_proto_msgTypes[6] + mi := &file_did_v1_genesis_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ChainInfo_ExplorerInfo) String() string { +func (x *ValidatorInfo_ExplorerInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ChainInfo_ExplorerInfo) ProtoMessage() {} +func (*ValidatorInfo_ExplorerInfo) ProtoMessage() {} -// Deprecated: Use ChainInfo_ExplorerInfo.ProtoReflect.Descriptor instead. -func (*ChainInfo_ExplorerInfo) Descriptor() ([]byte, []int) { - return file_did_v1_genesis_proto_rawDescGZIP(), []int{3, 1} +// Deprecated: Use ValidatorInfo_ExplorerInfo.ProtoReflect.Descriptor instead. +func (*ValidatorInfo_ExplorerInfo) Descriptor() ([]byte, []int) { + return file_did_v1_genesis_proto_rawDescGZIP(), []int{6, 1} } -func (x *ChainInfo_ExplorerInfo) GetName() string { +func (x *ValidatorInfo_ExplorerInfo) GetName() string { if x != nil { return x.Name } return "" } -func (x *ChainInfo_ExplorerInfo) GetUrl() string { +func (x *ValidatorInfo_ExplorerInfo) GetUrl() string { if x != nil { return x.Url } @@ -6576,7 +8450,7 @@ func (x *ChainInfo_ExplorerInfo) GetUrl() string { } // FeeInfo defines a fee info -type ChainInfo_FeeInfo struct { +type ValidatorInfo_FeeInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -6588,233 +8462,257 @@ type ChainInfo_FeeInfo struct { GasMultiply float64 `protobuf:"fixed64,5,opt,name=gas_multiply,json=gasMultiply,proto3" json:"gas_multiply,omitempty"` } -func (x *ChainInfo_FeeInfo) Reset() { - *x = ChainInfo_FeeInfo{} +func (x *ValidatorInfo_FeeInfo) Reset() { + *x = ValidatorInfo_FeeInfo{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_genesis_proto_msgTypes[7] + mi := &file_did_v1_genesis_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ChainInfo_FeeInfo) String() string { +func (x *ValidatorInfo_FeeInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ChainInfo_FeeInfo) ProtoMessage() {} +func (*ValidatorInfo_FeeInfo) ProtoMessage() {} -// Deprecated: Use ChainInfo_FeeInfo.ProtoReflect.Descriptor instead. -func (*ChainInfo_FeeInfo) Descriptor() ([]byte, []int) { - return file_did_v1_genesis_proto_rawDescGZIP(), []int{3, 2} +// Deprecated: Use ValidatorInfo_FeeInfo.ProtoReflect.Descriptor instead. +func (*ValidatorInfo_FeeInfo) Descriptor() ([]byte, []int) { + return file_did_v1_genesis_proto_rawDescGZIP(), []int{6, 2} } -func (x *ChainInfo_FeeInfo) GetBaseDenom() string { +func (x *ValidatorInfo_FeeInfo) GetBaseDenom() string { if x != nil { return x.BaseDenom } return "" } -func (x *ChainInfo_FeeInfo) GetFeeRates() []string { +func (x *ValidatorInfo_FeeInfo) GetFeeRates() []string { if x != nil { return x.FeeRates } return nil } -func (x *ChainInfo_FeeInfo) GetInitGasLimit() int32 { +func (x *ValidatorInfo_FeeInfo) GetInitGasLimit() int32 { if x != nil { return x.InitGasLimit } return 0 } -func (x *ChainInfo_FeeInfo) GetIsSimulable() bool { +func (x *ValidatorInfo_FeeInfo) GetIsSimulable() bool { if x != nil { return x.IsSimulable } return false } -func (x *ChainInfo_FeeInfo) GetGasMultiply() float64 { +func (x *ValidatorInfo_FeeInfo) GetGasMultiply() float64 { if x != nil { return x.GasMultiply } return 0 } +// IBCChannel defines the IBC channel info +type ValidatorInfo_IBCChannel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Port string `protobuf:"bytes,2,opt,name=port,proto3" json:"port,omitempty"` +} + +func (x *ValidatorInfo_IBCChannel) Reset() { + *x = ValidatorInfo_IBCChannel{} + if protoimpl.UnsafeEnabled { + mi := &file_did_v1_genesis_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValidatorInfo_IBCChannel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidatorInfo_IBCChannel) ProtoMessage() {} + +// Deprecated: Use ValidatorInfo_IBCChannel.ProtoReflect.Descriptor instead. +func (*ValidatorInfo_IBCChannel) Descriptor() ([]byte, []int) { + return file_did_v1_genesis_proto_rawDescGZIP(), []int{6, 3} +} + +func (x *ValidatorInfo_IBCChannel) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ValidatorInfo_IBCChannel) GetPort() string { + if x != nil { + return x.Port + } + return "" +} + var File_did_v1_genesis_proto protoreflect.FileDescriptor var file_did_v1_genesis_proto_rawDesc = []byte{ 0x0a, 0x14, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x14, - 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, - 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3c, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, - 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xe6, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x12, 0x40, 0x0a, 0x12, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x64, - 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x11, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, - 0x74, 0x73, 0x12, 0x40, 0x0a, 0x12, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, - 0x64, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, - 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x11, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x43, 0x68, - 0x61, 0x69, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0f, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x4b, 0x65, 0x79, 0x73, 0x3a, 0x17, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x01, 0x8a, - 0xe7, 0xb0, 0x2a, 0x0a, 0x64, 0x69, 0x64, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xa2, - 0x03, 0x0a, 0x09, 0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, - 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x72, 0x69, - 0x67, 0x69, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x21, 0x0a, 0x0c, - 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, - 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, - 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, - 0x69, 0x6e, 0x67, 0x65, 0x63, 0x6b, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x63, 0x6f, 0x69, 0x6e, 0x67, 0x65, 0x63, 0x6b, 0x6f, 0x49, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x69, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x09, 0x69, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, - 0x69, 0x62, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x69, 0x62, 0x63, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x62, 0x63, 0x5f, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x62, - 0x63, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x62, 0x63, 0x5f, - 0x70, 0x6f, 0x72, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x62, 0x63, 0x50, - 0x6f, 0x72, 0x74, 0x22, 0xc9, 0x05, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x65, 0x63, 0x68, - 0x33, 0x32, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x62, 0x65, 0x63, 0x68, 0x33, 0x32, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x21, 0x0a, - 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x41, 0x0a, 0x0e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x45, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0d, 0x67, 0x72, 0x70, 0x63, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x69, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x45, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, - 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x45, 0x78, 0x70, 0x6c, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x11, + 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x16, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x3c, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, + 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xa1, 0x02, + 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x40, 0x0a, 0x12, 0x77, 0x68, 0x69, 0x74, + 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, + 0x73, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x11, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, + 0x73, 0x74, 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x12, 0x77, 0x68, + 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x11, 0x77, 0x68, 0x69, 0x74, 0x65, + 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x13, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, + 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x64, 0x69, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x39, 0x0a, + 0x0d, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x44, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, + 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x17, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, + 0x1f, 0x01, 0x8a, 0xe7, 0xb0, 0x2a, 0x0a, 0x64, 0x69, 0x64, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x22, 0xc4, 0x01, 0x0a, 0x09, 0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x68, 0x72, 0x70, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x68, 0x72, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, + 0x30, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, + 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x19, 0x0a, + 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x69, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x22, 0x99, 0x01, 0x0a, 0x09, 0x43, 0x68, 0x61, + 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x35, 0x0a, + 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x73, 0x22, 0xe0, 0x01, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x23, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, + 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x52, + 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x09, + 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x2f, 0x0a, 0x08, 0x65, 0x6e, 0x63, + 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x64, 0x69, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, + 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x26, 0x0a, 0x05, 0x63, 0x75, + 0x72, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x64, 0x69, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x43, 0x75, 0x72, 0x76, 0x65, 0x52, 0x05, 0x63, 0x75, 0x72, + 0x76, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x0f, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xee, 0x03, 0x0a, 0x0c, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x44, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, + 0x12, 0x35, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x15, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x2b, + 0x0a, 0x11, 0x75, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x69, + 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x53, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x12, 0x38, 0x0a, 0x18, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x6f, 0x64, 0x65, + 0x73, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x67, 0x72, + 0x61, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x67, 0x72, 0x61, 0x6e, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x73, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x30, + 0x0a, 0x14, 0x61, 0x63, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x63, + 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x12, 0x36, 0x0a, 0x17, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x15, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x53, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x22, 0xcd, 0x05, 0x0a, 0x0d, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, + 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x6e, + 0x69, 0x6b, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x0e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, + 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, + 0x6e, 0x66, 0x6f, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0d, 0x67, 0x72, + 0x70, 0x63, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x45, 0x0a, 0x0e, 0x72, + 0x65, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, - 0x65, 0x72, 0x12, 0x34, 0x0a, 0x08, 0x66, 0x65, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, - 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x46, 0x65, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x07, 0x66, 0x65, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x3b, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x69, - 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, 0x72, - 0x69, 0x6d, 0x61, 0x72, 0x79, 0x1a, 0x34, 0x0a, 0x0c, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x1a, 0xb1, 0x01, 0x0a, 0x07, - 0x46, 0x65, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x73, 0x65, 0x5f, - 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x73, - 0x65, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x61, - 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x65, 0x52, 0x61, - 0x74, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x67, 0x61, 0x73, 0x5f, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x69, - 0x74, 0x47, 0x61, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, - 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x69, 0x73, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, - 0x67, 0x61, 0x73, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x01, 0x52, 0x0b, 0x67, 0x61, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x79, 0x22, - 0x7e, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x0a, 0x04, 0x6b, 0x69, - 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x14, 0x0a, - 0x05, 0x63, 0x75, 0x72, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x75, - 0x72, 0x76, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2a, - 0xab, 0x01, 0x0a, 0x0c, 0x44, 0x49, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x16, 0x0a, 0x12, 0x44, 0x49, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, - 0x5f, 0x49, 0x50, 0x46, 0x53, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x49, 0x44, 0x5f, 0x4e, - 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x4f, 0x4e, 0x52, 0x10, 0x02, 0x12, - 0x19, 0x0a, 0x15, 0x44, 0x49, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, - 0x5f, 0x42, 0x49, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, - 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x45, 0x54, 0x48, 0x45, - 0x52, 0x45, 0x55, 0x4d, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x49, 0x44, 0x5f, 0x4e, 0x41, - 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x42, 0x43, 0x10, 0x05, 0x2a, 0xd2, 0x01, - 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x4b, 0x45, 0x59, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x53, 0x45, 0x43, 0x50, 0x32, 0x35, 0x36, 0x4b, 0x31, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4b, - 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x44, 0x32, 0x35, 0x35, 0x31, 0x39, 0x10, - 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x45, - 0x43, 0x43, 0x41, 0x4b, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x42, 0x4c, 0x53, 0x31, 0x32, 0x33, 0x38, 0x31, 0x10, 0x04, 0x12, 0x13, 0x0a, - 0x0f, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x58, 0x32, 0x35, 0x35, 0x31, 0x39, - 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, - 0x43, 0x48, 0x4e, 0x4f, 0x52, 0x52, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x4b, 0x45, 0x59, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x55, 0x54, 0x48, 0x4e, 0x10, 0x07, 0x12, - 0x11, 0x0a, 0x0d, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x44, 0x4f, - 0x10, 0x08, 0x2a, 0x9f, 0x04, 0x0a, 0x0f, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, - 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x45, 0x52, 0x4d, - 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x42, 0x41, 0x53, - 0x49, 0x43, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x45, 0x52, - 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x52, 0x45, - 0x43, 0x4f, 0x52, 0x44, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, - 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, - 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x53, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x03, - 0x12, 0x26, 0x0a, 0x22, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, - 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x04, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x45, 0x52, 0x4d, - 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x41, - 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, - 0x05, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, - 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x57, 0x41, 0x4c, 0x4c, 0x45, 0x54, 0x53, 0x5f, 0x52, 0x45, - 0x41, 0x44, 0x10, 0x06, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, - 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x57, 0x41, 0x4c, 0x4c, 0x45, 0x54, 0x53, - 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x07, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x45, 0x52, - 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x57, 0x41, - 0x4c, 0x4c, 0x45, 0x54, 0x53, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x10, - 0x08, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, - 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x57, 0x41, 0x4c, 0x4c, 0x45, 0x54, 0x53, 0x5f, 0x55, 0x50, - 0x44, 0x41, 0x54, 0x45, 0x10, 0x09, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, - 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, - 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x10, 0x0a, - 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, - 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x53, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x10, 0x0b, 0x12, 0x1f, 0x0a, - 0x1b, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, - 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x0c, 0x12, 0x24, - 0x0a, 0x20, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x4f, - 0x50, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, - 0x4f, 0x52, 0x10, 0x0d, 0x42, 0x7c, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x64, 0x2e, - 0x76, 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, - 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x68, 0x77, 0x61, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, - 0x69, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x69, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, - 0x58, 0xaa, 0x02, 0x06, 0x44, 0x69, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, 0x69, 0x64, - 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, 0x3a, 0x3a, - 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x72, 0x12, 0x38, 0x0a, 0x08, 0x66, 0x65, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x46, 0x65, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x66, 0x65, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x41, 0x0a, 0x0b, + 0x69, 0x62, 0x63, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x49, 0x42, 0x43, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x52, 0x0a, 0x69, 0x62, 0x63, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x1a, + 0x3b, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, + 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1d, 0x0a, + 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x1a, 0x34, 0x0a, 0x0c, + 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x1a, 0xb1, 0x01, 0x0a, 0x07, 0x46, 0x65, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, + 0x0a, 0x0a, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x73, 0x65, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x1b, 0x0a, + 0x09, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x08, 0x66, 0x65, 0x65, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x6e, + 0x69, 0x74, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x47, 0x61, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x61, 0x73, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x67, 0x61, 0x73, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x79, 0x1a, 0x30, 0x0a, 0x0a, 0x49, 0x42, 0x43, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x7c, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, + 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x69, 0x64, 0x76, 0x31, 0xa2, + 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x44, 0x69, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, + 0x06, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, + 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x44, + 0x69, 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -6829,36 +8727,49 @@ func file_did_v1_genesis_proto_rawDescGZIP() []byte { return file_did_v1_genesis_proto_rawDescData } -var file_did_v1_genesis_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_did_v1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_did_v1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 11) var file_did_v1_genesis_proto_goTypes = []interface{}{ - (DIDNamespace)(0), // 0: did.v1.DIDNamespace - (KeyType)(0), // 1: did.v1.KeyType - (PermissionScope)(0), // 2: did.v1.PermissionScope - (*GenesisState)(nil), // 3: did.v1.GenesisState - (*Params)(nil), // 4: did.v1.Params - (*AssetInfo)(nil), // 5: did.v1.AssetInfo - (*ChainInfo)(nil), // 6: did.v1.ChainInfo - (*KeyInfo)(nil), // 7: did.v1.KeyInfo - (*ChainInfo_Endpoint)(nil), // 8: did.v1.ChainInfo.Endpoint - (*ChainInfo_ExplorerInfo)(nil), // 9: did.v1.ChainInfo.ExplorerInfo - (*ChainInfo_FeeInfo)(nil), // 10: did.v1.ChainInfo.FeeInfo + (*GenesisState)(nil), // 0: did.v1.GenesisState + (*Params)(nil), // 1: did.v1.Params + (*AssetInfo)(nil), // 2: did.v1.AssetInfo + (*ChainInfo)(nil), // 3: did.v1.ChainInfo + (*KeyInfo)(nil), // 4: did.v1.KeyInfo + (*OpenIDConfig)(nil), // 5: did.v1.OpenIDConfig + (*ValidatorInfo)(nil), // 6: did.v1.ValidatorInfo + (*ValidatorInfo_Endpoint)(nil), // 7: did.v1.ValidatorInfo.Endpoint + (*ValidatorInfo_ExplorerInfo)(nil), // 8: did.v1.ValidatorInfo.ExplorerInfo + (*ValidatorInfo_FeeInfo)(nil), // 9: did.v1.ValidatorInfo.FeeInfo + (*ValidatorInfo_IBCChannel)(nil), // 10: did.v1.ValidatorInfo.IBCChannel + (AssetType)(0), // 11: did.v1.AssetType + (KeyRole)(0), // 12: did.v1.KeyRole + (KeyAlgorithm)(0), // 13: did.v1.KeyAlgorithm + (KeyEncoding)(0), // 14: did.v1.KeyEncoding + (KeyCurve)(0), // 15: did.v1.KeyCurve + (KeyType)(0), // 16: did.v1.KeyType } var file_did_v1_genesis_proto_depIdxs = []int32{ - 4, // 0: did.v1.GenesisState.params:type_name -> did.v1.Params - 5, // 1: did.v1.Params.whitelisted_assets:type_name -> did.v1.AssetInfo - 6, // 2: did.v1.Params.whitelisted_chains:type_name -> did.v1.ChainInfo - 7, // 3: did.v1.Params.allowed_public_keys:type_name -> did.v1.KeyInfo - 8, // 4: did.v1.ChainInfo.grpc_endpoints:type_name -> did.v1.ChainInfo.Endpoint - 8, // 5: did.v1.ChainInfo.rest_endpoints:type_name -> did.v1.ChainInfo.Endpoint - 9, // 6: did.v1.ChainInfo.explorer:type_name -> did.v1.ChainInfo.ExplorerInfo - 10, // 7: did.v1.ChainInfo.fee_info:type_name -> did.v1.ChainInfo.FeeInfo - 1, // 8: did.v1.KeyInfo.kind:type_name -> did.v1.KeyType - 9, // [9:9] is the sub-list for method output_type - 9, // [9:9] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 1, // 0: did.v1.GenesisState.params:type_name -> did.v1.Params + 2, // 1: did.v1.Params.whitelisted_assets:type_name -> did.v1.AssetInfo + 3, // 2: did.v1.Params.whitelisted_chains:type_name -> did.v1.ChainInfo + 4, // 3: did.v1.Params.allowed_public_keys:type_name -> did.v1.KeyInfo + 5, // 4: did.v1.Params.openid_config:type_name -> did.v1.OpenIDConfig + 11, // 5: did.v1.AssetInfo.asset_type:type_name -> did.v1.AssetType + 6, // 6: did.v1.ChainInfo.validators:type_name -> did.v1.ValidatorInfo + 12, // 7: did.v1.KeyInfo.role:type_name -> did.v1.KeyRole + 13, // 8: did.v1.KeyInfo.algorithm:type_name -> did.v1.KeyAlgorithm + 14, // 9: did.v1.KeyInfo.encoding:type_name -> did.v1.KeyEncoding + 15, // 10: did.v1.KeyInfo.curve:type_name -> did.v1.KeyCurve + 16, // 11: did.v1.KeyInfo.type:type_name -> did.v1.KeyType + 7, // 12: did.v1.ValidatorInfo.grpc_endpoints:type_name -> did.v1.ValidatorInfo.Endpoint + 7, // 13: did.v1.ValidatorInfo.rest_endpoints:type_name -> did.v1.ValidatorInfo.Endpoint + 8, // 14: did.v1.ValidatorInfo.explorer:type_name -> did.v1.ValidatorInfo.ExplorerInfo + 9, // 15: did.v1.ValidatorInfo.fee_info:type_name -> did.v1.ValidatorInfo.FeeInfo + 10, // 16: did.v1.ValidatorInfo.ibc_channel:type_name -> did.v1.ValidatorInfo.IBCChannel + 17, // [17:17] is the sub-list for method output_type + 17, // [17:17] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name } func init() { file_did_v1_genesis_proto_init() } @@ -6866,6 +8777,7 @@ func file_did_v1_genesis_proto_init() { if File_did_v1_genesis_proto != nil { return } + file_did_v1_constants_proto_init() if !protoimpl.UnsafeEnabled { file_did_v1_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenesisState); i { @@ -6928,7 +8840,7 @@ func file_did_v1_genesis_proto_init() { } } file_did_v1_genesis_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChainInfo_Endpoint); i { + switch v := v.(*OpenIDConfig); i { case 0: return &v.state case 1: @@ -6940,7 +8852,7 @@ func file_did_v1_genesis_proto_init() { } } file_did_v1_genesis_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChainInfo_ExplorerInfo); i { + switch v := v.(*ValidatorInfo); i { case 0: return &v.state case 1: @@ -6952,7 +8864,43 @@ func file_did_v1_genesis_proto_init() { } } file_did_v1_genesis_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChainInfo_FeeInfo); i { + switch v := v.(*ValidatorInfo_Endpoint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_did_v1_genesis_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValidatorInfo_ExplorerInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_did_v1_genesis_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValidatorInfo_FeeInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_did_v1_genesis_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValidatorInfo_IBCChannel); i { case 0: return &v.state case 1: @@ -6969,14 +8917,13 @@ func file_did_v1_genesis_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_did_v1_genesis_proto_rawDesc, - NumEnums: 3, - NumMessages: 8, + NumEnums: 0, + NumMessages: 11, NumExtensions: 0, NumServices: 0, }, GoTypes: file_did_v1_genesis_proto_goTypes, DependencyIndexes: file_did_v1_genesis_proto_depIdxs, - EnumInfos: file_did_v1_genesis_proto_enumTypes, MessageInfos: file_did_v1_genesis_proto_msgTypes, }.Build() File_did_v1_genesis_proto = out.File diff --git a/api/did/v1/models.pulsar.go b/api/did/v1/models.pulsar.go index b658f5f8c..46371f374 100644 --- a/api/did/v1/models.pulsar.go +++ b/api/did/v1/models.pulsar.go @@ -4,6 +4,7 @@ package didv1 import ( fmt "fmt" runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoiface "google.golang.org/protobuf/runtime/protoiface" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -13,80 +14,26 @@ import ( sync "sync" ) -var _ protoreflect.List = (*_DID_5_list)(nil) - -type _DID_5_list struct { - list *[]string -} - -func (x *_DID_5_list) Len() int { - if x.list == nil { - return 0 - } - return len(*x.list) -} - -func (x *_DID_5_list) Get(i int) protoreflect.Value { - return protoreflect.ValueOfString((*x.list)[i]) -} - -func (x *_DID_5_list) Set(i int, value protoreflect.Value) { - valueUnwrapped := value.String() - concreteValue := valueUnwrapped - (*x.list)[i] = concreteValue -} - -func (x *_DID_5_list) Append(value protoreflect.Value) { - valueUnwrapped := value.String() - concreteValue := valueUnwrapped - *x.list = append(*x.list, concreteValue) -} - -func (x *_DID_5_list) AppendMutable() protoreflect.Value { - panic(fmt.Errorf("AppendMutable can not be called on message DID at list field Paths as it is not of Message kind")) -} - -func (x *_DID_5_list) Truncate(n int) { - *x.list = (*x.list)[:n] -} - -func (x *_DID_5_list) NewElement() protoreflect.Value { - v := "" - return protoreflect.ValueOfString(v) -} - -func (x *_DID_5_list) IsValid() bool { - return x.list != nil -} - var ( - md_DID protoreflect.MessageDescriptor - fd_DID_id protoreflect.FieldDescriptor - fd_DID_method protoreflect.FieldDescriptor - fd_DID_network protoreflect.FieldDescriptor - fd_DID_identifier protoreflect.FieldDescriptor - fd_DID_paths protoreflect.FieldDescriptor + md_Accumulator protoreflect.MessageDescriptor + fd_Accumulator_accumulator protoreflect.FieldDescriptor ) func init() { file_did_v1_models_proto_init() - md_DID = File_did_v1_models_proto.Messages().ByName("DID") - fd_DID_id = md_DID.Fields().ByName("id") - fd_DID_method = md_DID.Fields().ByName("method") - fd_DID_network = md_DID.Fields().ByName("network") - fd_DID_identifier = md_DID.Fields().ByName("identifier") - fd_DID_paths = md_DID.Fields().ByName("paths") + md_Accumulator = File_did_v1_models_proto.Messages().ByName("Accumulator") + fd_Accumulator_accumulator = md_Accumulator.Fields().ByName("accumulator") } -var _ protoreflect.Message = (*fastReflection_DID)(nil) +var _ protoreflect.Message = (*fastReflection_Accumulator)(nil) -type fastReflection_DID DID +type fastReflection_Accumulator Accumulator -func (x *DID) ProtoReflect() protoreflect.Message { - return (*fastReflection_DID)(x) +func (x *Accumulator) ProtoReflect() protoreflect.Message { + return (*fastReflection_Accumulator)(x) } -func (x *DID) slowProtoReflect() protoreflect.Message { +func (x *Accumulator) slowProtoReflect() protoreflect.Message { mi := &file_did_v1_models_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -98,43 +45,43 @@ func (x *DID) slowProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -var _fastReflection_DID_messageType fastReflection_DID_messageType -var _ protoreflect.MessageType = fastReflection_DID_messageType{} +var _fastReflection_Accumulator_messageType fastReflection_Accumulator_messageType +var _ protoreflect.MessageType = fastReflection_Accumulator_messageType{} -type fastReflection_DID_messageType struct{} +type fastReflection_Accumulator_messageType struct{} -func (x fastReflection_DID_messageType) Zero() protoreflect.Message { - return (*fastReflection_DID)(nil) +func (x fastReflection_Accumulator_messageType) Zero() protoreflect.Message { + return (*fastReflection_Accumulator)(nil) } -func (x fastReflection_DID_messageType) New() protoreflect.Message { - return new(fastReflection_DID) +func (x fastReflection_Accumulator_messageType) New() protoreflect.Message { + return new(fastReflection_Accumulator) } -func (x fastReflection_DID_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_DID +func (x fastReflection_Accumulator_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Accumulator } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_DID) Descriptor() protoreflect.MessageDescriptor { - return md_DID +func (x *fastReflection_Accumulator) Descriptor() protoreflect.MessageDescriptor { + return md_Accumulator } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_DID) Type() protoreflect.MessageType { - return _fastReflection_DID_messageType +func (x *fastReflection_Accumulator) Type() protoreflect.MessageType { + return _fastReflection_Accumulator_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_DID) New() protoreflect.Message { - return new(fastReflection_DID) +func (x *fastReflection_Accumulator) New() protoreflect.Message { + return new(fastReflection_Accumulator) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_DID) Interface() protoreflect.ProtoMessage { - return (*DID)(x) +func (x *fastReflection_Accumulator) Interface() protoreflect.ProtoMessage { + return (*Accumulator)(x) } // Range iterates over every populated field in an undefined order, @@ -142,34 +89,10 @@ func (x *fastReflection_DID) Interface() protoreflect.ProtoMessage { // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_DID) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Id != "" { - value := protoreflect.ValueOfString(x.Id) - if !f(fd_DID_id, value) { - return - } - } - if x.Method != 0 { - value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Method)) - if !f(fd_DID_method, value) { - return - } - } - if x.Network != "" { - value := protoreflect.ValueOfString(x.Network) - if !f(fd_DID_network, value) { - return - } - } - if x.Identifier != "" { - value := protoreflect.ValueOfString(x.Identifier) - if !f(fd_DID_identifier, value) { - return - } - } - if len(x.Paths) != 0 { - value := protoreflect.ValueOfList(&_DID_5_list{list: &x.Paths}) - if !f(fd_DID_paths, value) { +func (x *fastReflection_Accumulator) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Accumulator) != 0 { + value := protoreflect.ValueOfBytes(x.Accumulator) + if !f(fd_Accumulator_accumulator, value) { return } } @@ -186,23 +109,15 @@ func (x *fastReflection_DID) Range(f func(protoreflect.FieldDescriptor, protoref // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_DID) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_Accumulator) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "did.v1.DID.id": - return x.Id != "" - case "did.v1.DID.method": - return x.Method != 0 - case "did.v1.DID.network": - return x.Network != "" - case "did.v1.DID.identifier": - return x.Identifier != "" - case "did.v1.DID.paths": - return len(x.Paths) != 0 + case "did.v1.Accumulator.accumulator": + return len(x.Accumulator) != 0 default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.DID")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Accumulator")) } - panic(fmt.Errorf("message did.v1.DID does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.Accumulator does not contain field %s", fd.FullName())) } } @@ -212,23 +127,15 @@ func (x *fastReflection_DID) Has(fd protoreflect.FieldDescriptor) bool { // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_DID) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_Accumulator) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "did.v1.DID.id": - x.Id = "" - case "did.v1.DID.method": - x.Method = 0 - case "did.v1.DID.network": - x.Network = "" - case "did.v1.DID.identifier": - x.Identifier = "" - case "did.v1.DID.paths": - x.Paths = nil + case "did.v1.Accumulator.accumulator": + x.Accumulator = nil default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.DID")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Accumulator")) } - panic(fmt.Errorf("message did.v1.DID does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.Accumulator does not contain field %s", fd.FullName())) } } @@ -238,31 +145,16 @@ func (x *fastReflection_DID) Clear(fd protoreflect.FieldDescriptor) { // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_DID) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_Accumulator) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "did.v1.DID.id": - value := x.Id - return protoreflect.ValueOfString(value) - case "did.v1.DID.method": - value := x.Method - return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) - case "did.v1.DID.network": - value := x.Network - return protoreflect.ValueOfString(value) - case "did.v1.DID.identifier": - value := x.Identifier - return protoreflect.ValueOfString(value) - case "did.v1.DID.paths": - if len(x.Paths) == 0 { - return protoreflect.ValueOfList(&_DID_5_list{}) - } - listValue := &_DID_5_list{list: &x.Paths} - return protoreflect.ValueOfList(listValue) + case "did.v1.Accumulator.accumulator": + value := x.Accumulator + return protoreflect.ValueOfBytes(value) default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.DID")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Accumulator")) } - panic(fmt.Errorf("message did.v1.DID does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message did.v1.Accumulator does not contain field %s", descriptor.FullName())) } } @@ -276,25 +168,15 @@ func (x *fastReflection_DID) Get(descriptor protoreflect.FieldDescriptor) protor // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_DID) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_Accumulator) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "did.v1.DID.id": - x.Id = value.Interface().(string) - case "did.v1.DID.method": - x.Method = (DIDNamespace)(value.Enum()) - case "did.v1.DID.network": - x.Network = value.Interface().(string) - case "did.v1.DID.identifier": - x.Identifier = value.Interface().(string) - case "did.v1.DID.paths": - lv := value.List() - clv := lv.(*_DID_5_list) - x.Paths = *clv.list + case "did.v1.Accumulator.accumulator": + x.Accumulator = value.Bytes() default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.DID")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Accumulator")) } - panic(fmt.Errorf("message did.v1.DID does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.Accumulator does not contain field %s", fd.FullName())) } } @@ -308,61 +190,40 @@ func (x *fastReflection_DID) Set(fd protoreflect.FieldDescriptor, value protoref // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_DID) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_Accumulator) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.DID.paths": - if x.Paths == nil { - x.Paths = []string{} - } - value := &_DID_5_list{list: &x.Paths} - return protoreflect.ValueOfList(value) - case "did.v1.DID.id": - panic(fmt.Errorf("field id of message did.v1.DID is not mutable")) - case "did.v1.DID.method": - panic(fmt.Errorf("field method of message did.v1.DID is not mutable")) - case "did.v1.DID.network": - panic(fmt.Errorf("field network of message did.v1.DID is not mutable")) - case "did.v1.DID.identifier": - panic(fmt.Errorf("field identifier of message did.v1.DID is not mutable")) + case "did.v1.Accumulator.accumulator": + panic(fmt.Errorf("field accumulator of message did.v1.Accumulator is not mutable")) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.DID")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Accumulator")) } - panic(fmt.Errorf("message did.v1.DID does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.Accumulator does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_DID) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_Accumulator) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.DID.id": - return protoreflect.ValueOfString("") - case "did.v1.DID.method": - return protoreflect.ValueOfEnum(0) - case "did.v1.DID.network": - return protoreflect.ValueOfString("") - case "did.v1.DID.identifier": - return protoreflect.ValueOfString("") - case "did.v1.DID.paths": - list := []string{} - return protoreflect.ValueOfList(&_DID_5_list{list: &list}) + case "did.v1.Accumulator.accumulator": + return protoreflect.ValueOfBytes(nil) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.DID")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Accumulator")) } - panic(fmt.Errorf("message did.v1.DID does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.Accumulator does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_DID) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_Accumulator) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.DID", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in did.v1.Accumulator", d.FullName())) } panic("unreachable") } @@ -370,7 +231,7 @@ func (x *fastReflection_DID) WhichOneof(d protoreflect.OneofDescriptor) protoref // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_DID) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_Accumulator) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -381,7 +242,7 @@ func (x *fastReflection_DID) GetUnknown() protoreflect.RawFields { // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_DID) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_Accumulator) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -393,7 +254,7 @@ func (x *fastReflection_DID) SetUnknown(fields protoreflect.RawFields) { // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_DID) IsValid() bool { +func (x *fastReflection_Accumulator) IsValid() bool { return x != nil } @@ -403,9 +264,9 @@ func (x *fastReflection_DID) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_DID) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_Accumulator) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*DID) + x := input.Message.Interface().(*Accumulator) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -417,27 +278,10 @@ func (x *fastReflection_DID) ProtoMethods() *protoiface.Methods { var n int var l int _ = l - l = len(x.Id) + l = len(x.Accumulator) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - if x.Method != 0 { - n += 1 + runtime.Sov(uint64(x.Method)) - } - l = len(x.Network) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.Identifier) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if len(x.Paths) > 0 { - for _, s := range x.Paths { - l = len(s) - n += 1 + l + runtime.Sov(uint64(l)) - } - } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -448,7 +292,7 @@ func (x *fastReflection_DID) ProtoMethods() *protoiface.Methods { } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*DID) + x := input.Message.Interface().(*Accumulator) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -467,38 +311,10 @@ func (x *fastReflection_DID) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } - if len(x.Paths) > 0 { - for iNdEx := len(x.Paths) - 1; iNdEx >= 0; iNdEx-- { - i -= len(x.Paths[iNdEx]) - copy(dAtA[i:], x.Paths[iNdEx]) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Paths[iNdEx]))) - i-- - dAtA[i] = 0x2a - } - } - if len(x.Identifier) > 0 { - i -= len(x.Identifier) - copy(dAtA[i:], x.Identifier) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Identifier))) - i-- - dAtA[i] = 0x22 - } - if len(x.Network) > 0 { - i -= len(x.Network) - copy(dAtA[i:], x.Network) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Network))) - i-- - dAtA[i] = 0x1a - } - if x.Method != 0 { - i = runtime.EncodeVarint(dAtA, i, uint64(x.Method)) - i-- - dAtA[i] = 0x10 - } - if len(x.Id) > 0 { - i -= len(x.Id) - copy(dAtA[i:], x.Id) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id))) + if len(x.Accumulator) > 0 { + i -= len(x.Accumulator) + copy(dAtA[i:], x.Accumulator) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Accumulator))) i-- dAtA[i] = 0xa } @@ -513,7 +329,7 @@ func (x *fastReflection_DID) ProtoMethods() *protoiface.Methods { }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*DID) + x := input.Message.Interface().(*Accumulator) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -545,17 +361,17 @@ func (x *fastReflection_DID) ProtoMethods() *protoiface.Methods { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: DID: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Accumulator: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: DID: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Accumulator: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Accumulator", wireType) } - var stringLen uint64 + var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -565,138 +381,25 @@ func (x *fastReflection_DID) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + byteLen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if byteLen < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + byteLen if postIndex < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Method", wireType) + x.Accumulator = append(x.Accumulator[:0], dAtA[iNdEx:postIndex]...) + if x.Accumulator == nil { + x.Accumulator = []byte{} } - x.Method = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - x.Method |= DIDNamespace(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Network", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Network = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Identifier", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Identifier = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Paths", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Paths = append(x.Paths, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -1535,6 +1238,726 @@ func (x *fastReflection_Credential) ProtoMethods() *protoiface.Methods { } } +var _ protoreflect.List = (*_DID_5_list)(nil) + +type _DID_5_list struct { + list *[]string +} + +func (x *_DID_5_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_DID_5_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_DID_5_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_DID_5_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_DID_5_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message DID at list field Paths as it is not of Message kind")) +} + +func (x *_DID_5_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_DID_5_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_DID_5_list) IsValid() bool { + return x.list != nil +} + +var ( + md_DID protoreflect.MessageDescriptor + fd_DID_method protoreflect.FieldDescriptor + fd_DID_network protoreflect.FieldDescriptor + fd_DID_subject protoreflect.FieldDescriptor + fd_DID_identifier protoreflect.FieldDescriptor + fd_DID_paths protoreflect.FieldDescriptor +) + +func init() { + file_did_v1_models_proto_init() + md_DID = File_did_v1_models_proto.Messages().ByName("DID") + fd_DID_method = md_DID.Fields().ByName("method") + fd_DID_network = md_DID.Fields().ByName("network") + fd_DID_subject = md_DID.Fields().ByName("subject") + fd_DID_identifier = md_DID.Fields().ByName("identifier") + fd_DID_paths = md_DID.Fields().ByName("paths") +} + +var _ protoreflect.Message = (*fastReflection_DID)(nil) + +type fastReflection_DID DID + +func (x *DID) ProtoReflect() protoreflect.Message { + return (*fastReflection_DID)(x) +} + +func (x *DID) slowProtoReflect() protoreflect.Message { + mi := &file_did_v1_models_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_DID_messageType fastReflection_DID_messageType +var _ protoreflect.MessageType = fastReflection_DID_messageType{} + +type fastReflection_DID_messageType struct{} + +func (x fastReflection_DID_messageType) Zero() protoreflect.Message { + return (*fastReflection_DID)(nil) +} +func (x fastReflection_DID_messageType) New() protoreflect.Message { + return new(fastReflection_DID) +} +func (x fastReflection_DID_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_DID +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_DID) Descriptor() protoreflect.MessageDescriptor { + return md_DID +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_DID) Type() protoreflect.MessageType { + return _fastReflection_DID_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_DID) New() protoreflect.Message { + return new(fastReflection_DID) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_DID) Interface() protoreflect.ProtoMessage { + return (*DID)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_DID) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Method != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Method)) + if !f(fd_DID_method, value) { + return + } + } + if x.Network != "" { + value := protoreflect.ValueOfString(x.Network) + if !f(fd_DID_network, value) { + return + } + } + if x.Subject != "" { + value := protoreflect.ValueOfString(x.Subject) + if !f(fd_DID_subject, value) { + return + } + } + if x.Identifier != "" { + value := protoreflect.ValueOfString(x.Identifier) + if !f(fd_DID_identifier, value) { + return + } + } + if len(x.Paths) != 0 { + value := protoreflect.ValueOfList(&_DID_5_list{list: &x.Paths}) + if !f(fd_DID_paths, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_DID) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "did.v1.DID.method": + return x.Method != 0 + case "did.v1.DID.network": + return x.Network != "" + case "did.v1.DID.subject": + return x.Subject != "" + case "did.v1.DID.identifier": + return x.Identifier != "" + case "did.v1.DID.paths": + return len(x.Paths) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.DID")) + } + panic(fmt.Errorf("message did.v1.DID does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_DID) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "did.v1.DID.method": + x.Method = 0 + case "did.v1.DID.network": + x.Network = "" + case "did.v1.DID.subject": + x.Subject = "" + case "did.v1.DID.identifier": + x.Identifier = "" + case "did.v1.DID.paths": + x.Paths = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.DID")) + } + panic(fmt.Errorf("message did.v1.DID does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_DID) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "did.v1.DID.method": + value := x.Method + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + case "did.v1.DID.network": + value := x.Network + return protoreflect.ValueOfString(value) + case "did.v1.DID.subject": + value := x.Subject + return protoreflect.ValueOfString(value) + case "did.v1.DID.identifier": + value := x.Identifier + return protoreflect.ValueOfString(value) + case "did.v1.DID.paths": + if len(x.Paths) == 0 { + return protoreflect.ValueOfList(&_DID_5_list{}) + } + listValue := &_DID_5_list{list: &x.Paths} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.DID")) + } + panic(fmt.Errorf("message did.v1.DID does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_DID) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "did.v1.DID.method": + x.Method = (DIDNamespace)(value.Enum()) + case "did.v1.DID.network": + x.Network = value.Interface().(string) + case "did.v1.DID.subject": + x.Subject = value.Interface().(string) + case "did.v1.DID.identifier": + x.Identifier = value.Interface().(string) + case "did.v1.DID.paths": + lv := value.List() + clv := lv.(*_DID_5_list) + x.Paths = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.DID")) + } + panic(fmt.Errorf("message did.v1.DID does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_DID) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.DID.paths": + if x.Paths == nil { + x.Paths = []string{} + } + value := &_DID_5_list{list: &x.Paths} + return protoreflect.ValueOfList(value) + case "did.v1.DID.method": + panic(fmt.Errorf("field method of message did.v1.DID is not mutable")) + case "did.v1.DID.network": + panic(fmt.Errorf("field network of message did.v1.DID is not mutable")) + case "did.v1.DID.subject": + panic(fmt.Errorf("field subject of message did.v1.DID is not mutable")) + case "did.v1.DID.identifier": + panic(fmt.Errorf("field identifier of message did.v1.DID is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.DID")) + } + panic(fmt.Errorf("message did.v1.DID does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_DID) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.DID.method": + return protoreflect.ValueOfEnum(0) + case "did.v1.DID.network": + return protoreflect.ValueOfString("") + case "did.v1.DID.subject": + return protoreflect.ValueOfString("") + case "did.v1.DID.identifier": + return protoreflect.ValueOfString("") + case "did.v1.DID.paths": + list := []string{} + return protoreflect.ValueOfList(&_DID_5_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.DID")) + } + panic(fmt.Errorf("message did.v1.DID does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_DID) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in did.v1.DID", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_DID) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_DID) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_DID) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_DID) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*DID) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Method != 0 { + n += 1 + runtime.Sov(uint64(x.Method)) + } + l = len(x.Network) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Subject) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Identifier) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.Paths) > 0 { + for _, s := range x.Paths { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*DID) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Paths) > 0 { + for iNdEx := len(x.Paths) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.Paths[iNdEx]) + copy(dAtA[i:], x.Paths[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Paths[iNdEx]))) + i-- + dAtA[i] = 0x2a + } + } + if len(x.Identifier) > 0 { + i -= len(x.Identifier) + copy(dAtA[i:], x.Identifier) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Identifier))) + i-- + dAtA[i] = 0x22 + } + if len(x.Subject) > 0 { + i -= len(x.Subject) + copy(dAtA[i:], x.Subject) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Subject))) + i-- + dAtA[i] = 0x1a + } + if len(x.Network) > 0 { + i -= len(x.Network) + copy(dAtA[i:], x.Network) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Network))) + i-- + dAtA[i] = 0x12 + } + if x.Method != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Method)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*DID) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: DID: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: DID: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Method", wireType) + } + x.Method = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Method |= DIDNamespace(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Network", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Network = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Subject = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Identifier", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Identifier = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Paths", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Paths = append(x.Paths, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + var _ protoreflect.List = (*_Document_2_list)(nil) type _Document_2_list struct { @@ -1770,6 +2193,52 @@ func (x *_Document_8_list) IsValid() bool { return x.list != nil } +var _ protoreflect.List = (*_Document_9_list)(nil) + +type _Document_9_list struct { + list *[]string +} + +func (x *_Document_9_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_Document_9_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_Document_9_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_Document_9_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_Document_9_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message Document at list field Service as it is not of Message kind")) +} + +func (x *_Document_9_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_Document_9_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_Document_9_list) IsValid() bool { + return x.list != nil +} + var ( md_Document protoreflect.MessageDescriptor fd_Document_id protoreflect.FieldDescriptor @@ -1778,6 +2247,7 @@ var ( fd_Document_assertion_method protoreflect.FieldDescriptor fd_Document_capability_delegation protoreflect.FieldDescriptor fd_Document_capability_invocation protoreflect.FieldDescriptor + fd_Document_service protoreflect.FieldDescriptor ) func init() { @@ -1789,6 +2259,7 @@ func init() { fd_Document_assertion_method = md_Document.Fields().ByName("assertion_method") fd_Document_capability_delegation = md_Document.Fields().ByName("capability_delegation") fd_Document_capability_invocation = md_Document.Fields().ByName("capability_invocation") + fd_Document_service = md_Document.Fields().ByName("service") } var _ protoreflect.Message = (*fastReflection_Document)(nil) @@ -1800,7 +2271,7 @@ func (x *Document) ProtoReflect() protoreflect.Message { } func (x *Document) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_models_proto_msgTypes[2] + mi := &file_did_v1_models_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1892,6 +2363,12 @@ func (x *fastReflection_Document) Range(f func(protoreflect.FieldDescriptor, pro return } } + if len(x.Service) != 0 { + value := protoreflect.ValueOfList(&_Document_9_list{list: &x.Service}) + if !f(fd_Document_service, value) { + return + } + } } // Has reports whether a field is populated. @@ -1919,6 +2396,8 @@ func (x *fastReflection_Document) Has(fd protoreflect.FieldDescriptor) bool { return len(x.CapabilityDelegation) != 0 case "did.v1.Document.capability_invocation": return len(x.CapabilityInvocation) != 0 + case "did.v1.Document.service": + return len(x.Service) != 0 default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Document")) @@ -1947,6 +2426,8 @@ func (x *fastReflection_Document) Clear(fd protoreflect.FieldDescriptor) { x.CapabilityDelegation = nil case "did.v1.Document.capability_invocation": x.CapabilityInvocation = nil + case "did.v1.Document.service": + x.Service = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Document")) @@ -1996,6 +2477,12 @@ func (x *fastReflection_Document) Get(descriptor protoreflect.FieldDescriptor) p } listValue := &_Document_8_list{list: &x.CapabilityInvocation} return protoreflect.ValueOfList(listValue) + case "did.v1.Document.service": + if len(x.Service) == 0 { + return protoreflect.ValueOfList(&_Document_9_list{}) + } + listValue := &_Document_9_list{list: &x.Service} + return protoreflect.ValueOfList(listValue) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Document")) @@ -2038,6 +2525,10 @@ func (x *fastReflection_Document) Set(fd protoreflect.FieldDescriptor, value pro lv := value.List() clv := lv.(*_Document_8_list) x.CapabilityInvocation = *clv.list + case "did.v1.Document.service": + lv := value.List() + clv := lv.(*_Document_9_list) + x.Service = *clv.list default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Document")) @@ -2088,6 +2579,12 @@ func (x *fastReflection_Document) Mutable(fd protoreflect.FieldDescriptor) proto } value := &_Document_8_list{list: &x.CapabilityInvocation} return protoreflect.ValueOfList(value) + case "did.v1.Document.service": + if x.Service == nil { + x.Service = []string{} + } + value := &_Document_9_list{list: &x.Service} + return protoreflect.ValueOfList(value) case "did.v1.Document.id": panic(fmt.Errorf("field id of message did.v1.Document is not mutable")) default: @@ -2120,6 +2617,9 @@ func (x *fastReflection_Document) NewField(fd protoreflect.FieldDescriptor) prot case "did.v1.Document.capability_invocation": list := []string{} return protoreflect.ValueOfList(&_Document_8_list{list: &list}) + case "did.v1.Document.service": + list := []string{} + return protoreflect.ValueOfList(&_Document_9_list{list: &list}) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Document")) @@ -2223,6 +2723,12 @@ func (x *fastReflection_Document) ProtoMethods() *protoiface.Methods { n += 1 + l + runtime.Sov(uint64(l)) } } + if len(x.Service) > 0 { + for _, s := range x.Service { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -2252,6 +2758,15 @@ func (x *fastReflection_Document) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.Service) > 0 { + for iNdEx := len(x.Service) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.Service[iNdEx]) + copy(dAtA[i:], x.Service[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Service[iNdEx]))) + i-- + dAtA[i] = 0x4a + } + } if len(x.CapabilityInvocation) > 0 { for iNdEx := len(x.CapabilityInvocation) - 1; iNdEx >= 0; iNdEx-- { i -= len(x.CapabilityInvocation[iNdEx]) @@ -2554,6 +3069,38 @@ func (x *fastReflection_Document) ProtoMethods() *protoiface.Methods { } x.CapabilityInvocation = append(x.CapabilityInvocation, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex + case 9: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Service = append(x.Service, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -2785,7 +3332,7 @@ func (x *Metadata) ProtoReflect() protoreflect.Message { } func (x *Metadata) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_models_proto_msgTypes[3] + mi := &file_did_v1_models_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3753,7 +4300,7 @@ func (x *Permissions) ProtoReflect() protoreflect.Message { } func (x *Permissions) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_models_proto_msgTypes[4] + mi := &file_did_v1_models_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4343,116 +4890,12 @@ func (x *fastReflection_Permissions) ProtoMethods() *protoiface.Methods { } } -var _ protoreflect.List = (*_Profile_4_list)(nil) - -type _Profile_4_list struct { - list *[]*Credential -} - -func (x *_Profile_4_list) Len() int { - if x.list == nil { - return 0 - } - return len(*x.list) -} - -func (x *_Profile_4_list) Get(i int) protoreflect.Value { - return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) -} - -func (x *_Profile_4_list) Set(i int, value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*Credential) - (*x.list)[i] = concreteValue -} - -func (x *_Profile_4_list) Append(value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*Credential) - *x.list = append(*x.list, concreteValue) -} - -func (x *_Profile_4_list) AppendMutable() protoreflect.Value { - v := new(Credential) - *x.list = append(*x.list, v) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_Profile_4_list) Truncate(n int) { - for i := n; i < len(*x.list); i++ { - (*x.list)[i] = nil - } - *x.list = (*x.list)[:n] -} - -func (x *_Profile_4_list) NewElement() protoreflect.Value { - v := new(Credential) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_Profile_4_list) IsValid() bool { - return x.list != nil -} - -var _ protoreflect.List = (*_Profile_5_list)(nil) - -type _Profile_5_list struct { - list *[]*VerificationMethod -} - -func (x *_Profile_5_list) Len() int { - if x.list == nil { - return 0 - } - return len(*x.list) -} - -func (x *_Profile_5_list) Get(i int) protoreflect.Value { - return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) -} - -func (x *_Profile_5_list) Set(i int, value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*VerificationMethod) - (*x.list)[i] = concreteValue -} - -func (x *_Profile_5_list) Append(value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*VerificationMethod) - *x.list = append(*x.list, concreteValue) -} - -func (x *_Profile_5_list) AppendMutable() protoreflect.Value { - v := new(VerificationMethod) - *x.list = append(*x.list, v) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_Profile_5_list) Truncate(n int) { - for i := n; i < len(*x.list); i++ { - (*x.list)[i] = nil - } - *x.list = (*x.list)[:n] -} - -func (x *_Profile_5_list) NewElement() protoreflect.Value { - v := new(VerificationMethod) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_Profile_5_list) IsValid() bool { - return x.list != nil -} - var ( - md_Profile protoreflect.MessageDescriptor - fd_Profile_id protoreflect.FieldDescriptor - fd_Profile_subject protoreflect.FieldDescriptor - fd_Profile_controller protoreflect.FieldDescriptor - fd_Profile_credentials protoreflect.FieldDescriptor - fd_Profile_attestations protoreflect.FieldDescriptor - fd_Profile_metadata protoreflect.FieldDescriptor + md_Profile protoreflect.MessageDescriptor + fd_Profile_id protoreflect.FieldDescriptor + fd_Profile_subject protoreflect.FieldDescriptor + fd_Profile_controller protoreflect.FieldDescriptor + fd_Profile_metadata protoreflect.FieldDescriptor ) func init() { @@ -4461,8 +4904,6 @@ func init() { fd_Profile_id = md_Profile.Fields().ByName("id") fd_Profile_subject = md_Profile.Fields().ByName("subject") fd_Profile_controller = md_Profile.Fields().ByName("controller") - fd_Profile_credentials = md_Profile.Fields().ByName("credentials") - fd_Profile_attestations = md_Profile.Fields().ByName("attestations") fd_Profile_metadata = md_Profile.Fields().ByName("metadata") } @@ -4475,7 +4916,7 @@ func (x *Profile) ProtoReflect() protoreflect.Message { } func (x *Profile) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_models_proto_msgTypes[5] + mi := &file_did_v1_models_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4549,18 +4990,6 @@ func (x *fastReflection_Profile) Range(f func(protoreflect.FieldDescriptor, prot return } } - if len(x.Credentials) != 0 { - value := protoreflect.ValueOfList(&_Profile_4_list{list: &x.Credentials}) - if !f(fd_Profile_credentials, value) { - return - } - } - if len(x.Attestations) != 0 { - value := protoreflect.ValueOfList(&_Profile_5_list{list: &x.Attestations}) - if !f(fd_Profile_attestations, value) { - return - } - } if x.Metadata != nil { value := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) if !f(fd_Profile_metadata, value) { @@ -4588,10 +5017,6 @@ func (x *fastReflection_Profile) Has(fd protoreflect.FieldDescriptor) bool { return x.Subject != "" case "did.v1.Profile.controller": return x.Controller != "" - case "did.v1.Profile.credentials": - return len(x.Credentials) != 0 - case "did.v1.Profile.attestations": - return len(x.Attestations) != 0 case "did.v1.Profile.metadata": return x.Metadata != nil default: @@ -4616,10 +5041,6 @@ func (x *fastReflection_Profile) Clear(fd protoreflect.FieldDescriptor) { x.Subject = "" case "did.v1.Profile.controller": x.Controller = "" - case "did.v1.Profile.credentials": - x.Credentials = nil - case "did.v1.Profile.attestations": - x.Attestations = nil case "did.v1.Profile.metadata": x.Metadata = nil default: @@ -4647,18 +5068,6 @@ func (x *fastReflection_Profile) Get(descriptor protoreflect.FieldDescriptor) pr case "did.v1.Profile.controller": value := x.Controller return protoreflect.ValueOfString(value) - case "did.v1.Profile.credentials": - if len(x.Credentials) == 0 { - return protoreflect.ValueOfList(&_Profile_4_list{}) - } - listValue := &_Profile_4_list{list: &x.Credentials} - return protoreflect.ValueOfList(listValue) - case "did.v1.Profile.attestations": - if len(x.Attestations) == 0 { - return protoreflect.ValueOfList(&_Profile_5_list{}) - } - listValue := &_Profile_5_list{list: &x.Attestations} - return protoreflect.ValueOfList(listValue) case "did.v1.Profile.metadata": value := x.Metadata return protoreflect.ValueOfMessage(value.ProtoReflect()) @@ -4688,14 +5097,6 @@ func (x *fastReflection_Profile) Set(fd protoreflect.FieldDescriptor, value prot x.Subject = value.Interface().(string) case "did.v1.Profile.controller": x.Controller = value.Interface().(string) - case "did.v1.Profile.credentials": - lv := value.List() - clv := lv.(*_Profile_4_list) - x.Credentials = *clv.list - case "did.v1.Profile.attestations": - lv := value.List() - clv := lv.(*_Profile_5_list) - x.Attestations = *clv.list case "did.v1.Profile.metadata": x.Metadata = value.Message().Interface().(*Metadata) default: @@ -4718,18 +5119,6 @@ func (x *fastReflection_Profile) Set(fd protoreflect.FieldDescriptor, value prot // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_Profile) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.Profile.credentials": - if x.Credentials == nil { - x.Credentials = []*Credential{} - } - value := &_Profile_4_list{list: &x.Credentials} - return protoreflect.ValueOfList(value) - case "did.v1.Profile.attestations": - if x.Attestations == nil { - x.Attestations = []*VerificationMethod{} - } - value := &_Profile_5_list{list: &x.Attestations} - return protoreflect.ValueOfList(value) case "did.v1.Profile.metadata": if x.Metadata == nil { x.Metadata = new(Metadata) @@ -4760,12 +5149,6 @@ func (x *fastReflection_Profile) NewField(fd protoreflect.FieldDescriptor) proto return protoreflect.ValueOfString("") case "did.v1.Profile.controller": return protoreflect.ValueOfString("") - case "did.v1.Profile.credentials": - list := []*Credential{} - return protoreflect.ValueOfList(&_Profile_4_list{list: &list}) - case "did.v1.Profile.attestations": - list := []*VerificationMethod{} - return protoreflect.ValueOfList(&_Profile_5_list{list: &list}) case "did.v1.Profile.metadata": m := new(Metadata) return protoreflect.ValueOfMessage(m.ProtoReflect()) @@ -4850,18 +5233,6 @@ func (x *fastReflection_Profile) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - if len(x.Credentials) > 0 { - for _, e := range x.Credentials { - l = options.Size(e) - n += 1 + l + runtime.Sov(uint64(l)) - } - } - if len(x.Attestations) > 0 { - for _, e := range x.Attestations { - l = options.Size(e) - n += 1 + l + runtime.Sov(uint64(l)) - } - } if x.Metadata != nil { l = options.Size(x.Metadata) n += 1 + l + runtime.Sov(uint64(l)) @@ -4907,39 +5278,7 @@ func (x *fastReflection_Profile) ProtoMethods() *protoiface.Methods { copy(dAtA[i:], encoded) i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) i-- - dAtA[i] = 0x32 - } - if len(x.Attestations) > 0 { - for iNdEx := len(x.Attestations) - 1; iNdEx >= 0; iNdEx-- { - encoded, err := options.Marshal(x.Attestations[iNdEx]) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) - i-- - dAtA[i] = 0x2a - } - } - if len(x.Credentials) > 0 { - for iNdEx := len(x.Credentials) - 1; iNdEx >= 0; iNdEx-- { - encoded, err := options.Marshal(x.Credentials[iNdEx]) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) - i-- - dAtA[i] = 0x22 - } + dAtA[i] = 0x22 } if len(x.Controller) > 0 { i -= len(x.Controller) @@ -5108,74 +5447,6 @@ func (x *fastReflection_Profile) ProtoMethods() *protoiface.Methods { x.Controller = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Credentials", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Credentials = append(x.Credentials, &Credential{}) - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Credentials[len(x.Credentials)-1]); err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Attestations", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Attestations = append(x.Attestations, &VerificationMethod{}) - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Attestations[len(x.Attestations)-1]); err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - iNdEx = postIndex - case 6: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) } @@ -5268,7 +5539,7 @@ func (x *Property) ProtoReflect() protoreflect.Message { } func (x *Property) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_models_proto_msgTypes[6] + mi := &file_did_v1_models_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5734,20 +6005,20 @@ func (x *fastReflection_Property) ProtoMethods() *protoiface.Methods { } } -var _ protoreflect.Map = (*_PubKey_6_map)(nil) +var _ protoreflect.Map = (*_PubKey_7_map)(nil) -type _PubKey_6_map struct { +type _PubKey_7_map struct { m *map[string]string } -func (x *_PubKey_6_map) Len() int { +func (x *_PubKey_7_map) Len() int { if x.m == nil { return 0 } return len(*x.m) } -func (x *_PubKey_6_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { +func (x *_PubKey_7_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { if x.m == nil { return } @@ -5760,7 +6031,7 @@ func (x *_PubKey_6_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bo } } -func (x *_PubKey_6_map) Has(key protoreflect.MapKey) bool { +func (x *_PubKey_7_map) Has(key protoreflect.MapKey) bool { if x.m == nil { return false } @@ -5770,7 +6041,7 @@ func (x *_PubKey_6_map) Has(key protoreflect.MapKey) bool { return ok } -func (x *_PubKey_6_map) Clear(key protoreflect.MapKey) { +func (x *_PubKey_7_map) Clear(key protoreflect.MapKey) { if x.m == nil { return } @@ -5779,7 +6050,7 @@ func (x *_PubKey_6_map) Clear(key protoreflect.MapKey) { delete(*x.m, concreteKey) } -func (x *_PubKey_6_map) Get(key protoreflect.MapKey) protoreflect.Value { +func (x *_PubKey_7_map) Get(key protoreflect.MapKey) protoreflect.Value { if x.m == nil { return protoreflect.Value{} } @@ -5792,7 +6063,7 @@ func (x *_PubKey_6_map) Get(key protoreflect.MapKey) protoreflect.Value { return protoreflect.ValueOfString(v) } -func (x *_PubKey_6_map) Set(key protoreflect.MapKey, value protoreflect.Value) { +func (x *_PubKey_7_map) Set(key protoreflect.MapKey, value protoreflect.Value) { if !key.IsValid() || !value.IsValid() { panic("invalid key or value provided") } @@ -5803,36 +6074,40 @@ func (x *_PubKey_6_map) Set(key protoreflect.MapKey, value protoreflect.Value) { (*x.m)[concreteKey] = concreteValue } -func (x *_PubKey_6_map) Mutable(key protoreflect.MapKey) protoreflect.Value { +func (x *_PubKey_7_map) Mutable(key protoreflect.MapKey) protoreflect.Value { panic("should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message") } -func (x *_PubKey_6_map) NewValue() protoreflect.Value { +func (x *_PubKey_7_map) NewValue() protoreflect.Value { v := "" return protoreflect.ValueOfString(v) } -func (x *_PubKey_6_map) IsValid() bool { +func (x *_PubKey_7_map) IsValid() bool { return x.m != nil } var ( md_PubKey protoreflect.MessageDescriptor - fd_PubKey_namespace protoreflect.FieldDescriptor - fd_PubKey_key protoreflect.FieldDescriptor - fd_PubKey_kind protoreflect.FieldDescriptor + fd_PubKey_role protoreflect.FieldDescriptor + fd_PubKey_algorithm protoreflect.FieldDescriptor + fd_PubKey_encoding protoreflect.FieldDescriptor + fd_PubKey_raw protoreflect.FieldDescriptor + fd_PubKey_hex protoreflect.FieldDescriptor fd_PubKey_multibase protoreflect.FieldDescriptor - fd_PubKey_jwks protoreflect.FieldDescriptor + fd_PubKey_jwk protoreflect.FieldDescriptor ) func init() { file_did_v1_models_proto_init() md_PubKey = File_did_v1_models_proto.Messages().ByName("PubKey") - fd_PubKey_namespace = md_PubKey.Fields().ByName("namespace") - fd_PubKey_key = md_PubKey.Fields().ByName("key") - fd_PubKey_kind = md_PubKey.Fields().ByName("kind") + fd_PubKey_role = md_PubKey.Fields().ByName("role") + fd_PubKey_algorithm = md_PubKey.Fields().ByName("algorithm") + fd_PubKey_encoding = md_PubKey.Fields().ByName("encoding") + fd_PubKey_raw = md_PubKey.Fields().ByName("raw") + fd_PubKey_hex = md_PubKey.Fields().ByName("hex") fd_PubKey_multibase = md_PubKey.Fields().ByName("multibase") - fd_PubKey_jwks = md_PubKey.Fields().ByName("jwks") + fd_PubKey_jwk = md_PubKey.Fields().ByName("jwk") } var _ protoreflect.Message = (*fastReflection_PubKey)(nil) @@ -5844,7 +6119,7 @@ func (x *PubKey) ProtoReflect() protoreflect.Message { } func (x *PubKey) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_models_proto_msgTypes[7] + mi := &file_did_v1_models_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5900,21 +6175,33 @@ func (x *fastReflection_PubKey) Interface() protoreflect.ProtoMessage { // While iterating, mutating operations may only be performed // on the current field descriptor. func (x *fastReflection_PubKey) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Namespace != 0 { - value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Namespace)) - if !f(fd_PubKey_namespace, value) { + if x.Role != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Role)) + if !f(fd_PubKey_role, value) { return } } - if len(x.Key) != 0 { - value := protoreflect.ValueOfBytes(x.Key) - if !f(fd_PubKey_key, value) { + if x.Algorithm != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Algorithm)) + if !f(fd_PubKey_algorithm, value) { return } } - if x.Kind != 0 { - value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Kind)) - if !f(fd_PubKey_kind, value) { + if x.Encoding != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Encoding)) + if !f(fd_PubKey_encoding, value) { + return + } + } + if len(x.Raw) != 0 { + value := protoreflect.ValueOfBytes(x.Raw) + if !f(fd_PubKey_raw, value) { + return + } + } + if x.Hex != "" { + value := protoreflect.ValueOfString(x.Hex) + if !f(fd_PubKey_hex, value) { return } } @@ -5924,9 +6211,9 @@ func (x *fastReflection_PubKey) Range(f func(protoreflect.FieldDescriptor, proto return } } - if len(x.Jwks) != 0 { - value := protoreflect.ValueOfMap(&_PubKey_6_map{m: &x.Jwks}) - if !f(fd_PubKey_jwks, value) { + if len(x.Jwk) != 0 { + value := protoreflect.ValueOfMap(&_PubKey_7_map{m: &x.Jwk}) + if !f(fd_PubKey_jwk, value) { return } } @@ -5945,16 +6232,20 @@ func (x *fastReflection_PubKey) Range(f func(protoreflect.FieldDescriptor, proto // a repeated field is populated if it is non-empty. func (x *fastReflection_PubKey) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "did.v1.PubKey.namespace": - return x.Namespace != 0 - case "did.v1.PubKey.key": - return len(x.Key) != 0 - case "did.v1.PubKey.kind": - return x.Kind != 0 + case "did.v1.PubKey.role": + return x.Role != 0 + case "did.v1.PubKey.algorithm": + return x.Algorithm != 0 + case "did.v1.PubKey.encoding": + return x.Encoding != 0 + case "did.v1.PubKey.raw": + return len(x.Raw) != 0 + case "did.v1.PubKey.hex": + return x.Hex != "" case "did.v1.PubKey.multibase": return x.Multibase != "" - case "did.v1.PubKey.jwks": - return len(x.Jwks) != 0 + case "did.v1.PubKey.jwk": + return len(x.Jwk) != 0 default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.PubKey")) @@ -5971,16 +6262,20 @@ func (x *fastReflection_PubKey) Has(fd protoreflect.FieldDescriptor) bool { // Clear is a mutating operation and unsafe for concurrent use. func (x *fastReflection_PubKey) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "did.v1.PubKey.namespace": - x.Namespace = 0 - case "did.v1.PubKey.key": - x.Key = nil - case "did.v1.PubKey.kind": - x.Kind = 0 + case "did.v1.PubKey.role": + x.Role = 0 + case "did.v1.PubKey.algorithm": + x.Algorithm = 0 + case "did.v1.PubKey.encoding": + x.Encoding = 0 + case "did.v1.PubKey.raw": + x.Raw = nil + case "did.v1.PubKey.hex": + x.Hex = "" case "did.v1.PubKey.multibase": x.Multibase = "" - case "did.v1.PubKey.jwks": - x.Jwks = nil + case "did.v1.PubKey.jwk": + x.Jwk = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.PubKey")) @@ -5997,23 +6292,29 @@ func (x *fastReflection_PubKey) Clear(fd protoreflect.FieldDescriptor) { // of the value; to obtain a mutable reference, use Mutable. func (x *fastReflection_PubKey) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "did.v1.PubKey.namespace": - value := x.Namespace + case "did.v1.PubKey.role": + value := x.Role return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) - case "did.v1.PubKey.key": - value := x.Key + case "did.v1.PubKey.algorithm": + value := x.Algorithm + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + case "did.v1.PubKey.encoding": + value := x.Encoding + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + case "did.v1.PubKey.raw": + value := x.Raw return protoreflect.ValueOfBytes(value) - case "did.v1.PubKey.kind": - value := x.Kind - return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + case "did.v1.PubKey.hex": + value := x.Hex + return protoreflect.ValueOfString(value) case "did.v1.PubKey.multibase": value := x.Multibase return protoreflect.ValueOfString(value) - case "did.v1.PubKey.jwks": - if len(x.Jwks) == 0 { - return protoreflect.ValueOfMap(&_PubKey_6_map{}) + case "did.v1.PubKey.jwk": + if len(x.Jwk) == 0 { + return protoreflect.ValueOfMap(&_PubKey_7_map{}) } - mapValue := &_PubKey_6_map{m: &x.Jwks} + mapValue := &_PubKey_7_map{m: &x.Jwk} return protoreflect.ValueOfMap(mapValue) default: if descriptor.IsExtension() { @@ -6035,18 +6336,22 @@ func (x *fastReflection_PubKey) Get(descriptor protoreflect.FieldDescriptor) pro // Set is a mutating operation and unsafe for concurrent use. func (x *fastReflection_PubKey) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "did.v1.PubKey.namespace": - x.Namespace = (DIDNamespace)(value.Enum()) - case "did.v1.PubKey.key": - x.Key = value.Bytes() - case "did.v1.PubKey.kind": - x.Kind = (KeyType)(value.Enum()) + case "did.v1.PubKey.role": + x.Role = (KeyRole)(value.Enum()) + case "did.v1.PubKey.algorithm": + x.Algorithm = (KeyAlgorithm)(value.Enum()) + case "did.v1.PubKey.encoding": + x.Encoding = (KeyEncoding)(value.Enum()) + case "did.v1.PubKey.raw": + x.Raw = value.Bytes() + case "did.v1.PubKey.hex": + x.Hex = value.Interface().(string) case "did.v1.PubKey.multibase": x.Multibase = value.Interface().(string) - case "did.v1.PubKey.jwks": + case "did.v1.PubKey.jwk": mv := value.Map() - cmv := mv.(*_PubKey_6_map) - x.Jwks = *cmv.m + cmv := mv.(*_PubKey_7_map) + x.Jwk = *cmv.m default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.PubKey")) @@ -6067,18 +6372,22 @@ func (x *fastReflection_PubKey) Set(fd protoreflect.FieldDescriptor, value proto // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_PubKey) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.PubKey.jwks": - if x.Jwks == nil { - x.Jwks = make(map[string]string) + case "did.v1.PubKey.jwk": + if x.Jwk == nil { + x.Jwk = make(map[string]string) } - value := &_PubKey_6_map{m: &x.Jwks} + value := &_PubKey_7_map{m: &x.Jwk} return protoreflect.ValueOfMap(value) - case "did.v1.PubKey.namespace": - panic(fmt.Errorf("field namespace of message did.v1.PubKey is not mutable")) - case "did.v1.PubKey.key": - panic(fmt.Errorf("field key of message did.v1.PubKey is not mutable")) - case "did.v1.PubKey.kind": - panic(fmt.Errorf("field kind of message did.v1.PubKey is not mutable")) + case "did.v1.PubKey.role": + panic(fmt.Errorf("field role of message did.v1.PubKey is not mutable")) + case "did.v1.PubKey.algorithm": + panic(fmt.Errorf("field algorithm of message did.v1.PubKey is not mutable")) + case "did.v1.PubKey.encoding": + panic(fmt.Errorf("field encoding of message did.v1.PubKey is not mutable")) + case "did.v1.PubKey.raw": + panic(fmt.Errorf("field raw of message did.v1.PubKey is not mutable")) + case "did.v1.PubKey.hex": + panic(fmt.Errorf("field hex of message did.v1.PubKey is not mutable")) case "did.v1.PubKey.multibase": panic(fmt.Errorf("field multibase of message did.v1.PubKey is not mutable")) default: @@ -6094,17 +6403,21 @@ func (x *fastReflection_PubKey) Mutable(fd protoreflect.FieldDescriptor) protore // For lists, maps, and messages, this returns a new, empty, mutable value. func (x *fastReflection_PubKey) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.PubKey.namespace": + case "did.v1.PubKey.role": return protoreflect.ValueOfEnum(0) - case "did.v1.PubKey.key": + case "did.v1.PubKey.algorithm": + return protoreflect.ValueOfEnum(0) + case "did.v1.PubKey.encoding": + return protoreflect.ValueOfEnum(0) + case "did.v1.PubKey.raw": return protoreflect.ValueOfBytes(nil) - case "did.v1.PubKey.kind": - return protoreflect.ValueOfEnum(0) + case "did.v1.PubKey.hex": + return protoreflect.ValueOfString("") case "did.v1.PubKey.multibase": return protoreflect.ValueOfString("") - case "did.v1.PubKey.jwks": + case "did.v1.PubKey.jwk": m := make(map[string]string) - return protoreflect.ValueOfMap(&_PubKey_6_map{m: &m}) + return protoreflect.ValueOfMap(&_PubKey_7_map{m: &m}) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.PubKey")) @@ -6174,37 +6487,44 @@ func (x *fastReflection_PubKey) ProtoMethods() *protoiface.Methods { var n int var l int _ = l - if x.Namespace != 0 { - n += 1 + runtime.Sov(uint64(x.Namespace)) + if x.Role != 0 { + n += 1 + runtime.Sov(uint64(x.Role)) } - l = len(x.Key) + if x.Algorithm != 0 { + n += 1 + runtime.Sov(uint64(x.Algorithm)) + } + if x.Encoding != 0 { + n += 1 + runtime.Sov(uint64(x.Encoding)) + } + l = len(x.Raw) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - if x.Kind != 0 { - n += 1 + runtime.Sov(uint64(x.Kind)) + l = len(x.Hex) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) } l = len(x.Multibase) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - if len(x.Jwks) > 0 { + if len(x.Jwk) > 0 { SiZeMaP := func(k string, v string) { mapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + 1 + len(v) + runtime.Sov(uint64(len(v))) n += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize)) } if options.Deterministic { - sortme := make([]string, 0, len(x.Jwks)) - for k := range x.Jwks { + sortme := make([]string, 0, len(x.Jwk)) + for k := range x.Jwk { sortme = append(sortme, k) } sort.Strings(sortme) for _, k := range sortme { - v := x.Jwks[k] + v := x.Jwk[k] SiZeMaP(k, v) } } else { - for k, v := range x.Jwks { + for k, v := range x.Jwk { SiZeMaP(k, v) } } @@ -6238,7 +6558,7 @@ func (x *fastReflection_PubKey) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } - if len(x.Jwks) > 0 { + if len(x.Jwk) > 0 { MaRsHaLmAp := func(k string, v string) (protoiface.MarshalOutput, error) { baseI := i i -= len(v) @@ -6253,27 +6573,27 @@ func (x *fastReflection_PubKey) ProtoMethods() *protoiface.Methods { dAtA[i] = 0xa i = runtime.EncodeVarint(dAtA, i, uint64(baseI-i)) i-- - dAtA[i] = 0x32 + dAtA[i] = 0x3a return protoiface.MarshalOutput{}, nil } if options.Deterministic { - keysForJwks := make([]string, 0, len(x.Jwks)) - for k := range x.Jwks { - keysForJwks = append(keysForJwks, string(k)) + keysForJwk := make([]string, 0, len(x.Jwk)) + for k := range x.Jwk { + keysForJwk = append(keysForJwk, string(k)) } - sort.Slice(keysForJwks, func(i, j int) bool { - return keysForJwks[i] < keysForJwks[j] + sort.Slice(keysForJwk, func(i, j int) bool { + return keysForJwk[i] < keysForJwk[j] }) - for iNdEx := len(keysForJwks) - 1; iNdEx >= 0; iNdEx-- { - v := x.Jwks[string(keysForJwks[iNdEx])] - out, err := MaRsHaLmAp(keysForJwks[iNdEx], v) + for iNdEx := len(keysForJwk) - 1; iNdEx >= 0; iNdEx-- { + v := x.Jwk[string(keysForJwk[iNdEx])] + out, err := MaRsHaLmAp(keysForJwk[iNdEx], v) if err != nil { return out, err } } } else { - for k := range x.Jwks { - v := x.Jwks[k] + for k := range x.Jwk { + v := x.Jwk[k] out, err := MaRsHaLmAp(k, v) if err != nil { return out, err @@ -6286,22 +6606,34 @@ func (x *fastReflection_PubKey) ProtoMethods() *protoiface.Methods { copy(dAtA[i:], x.Multibase) i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Multibase))) i-- + dAtA[i] = 0x32 + } + if len(x.Hex) > 0 { + i -= len(x.Hex) + copy(dAtA[i:], x.Hex) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Hex))) + i-- dAtA[i] = 0x2a } - if x.Kind != 0 { - i = runtime.EncodeVarint(dAtA, i, uint64(x.Kind)) + if len(x.Raw) > 0 { + i -= len(x.Raw) + copy(dAtA[i:], x.Raw) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Raw))) + i-- + dAtA[i] = 0x22 + } + if x.Encoding != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Encoding)) i-- dAtA[i] = 0x18 } - if len(x.Key) > 0 { - i -= len(x.Key) - copy(dAtA[i:], x.Key) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Key))) + if x.Algorithm != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Algorithm)) i-- - dAtA[i] = 0x12 + dAtA[i] = 0x10 } - if x.Namespace != 0 { - i = runtime.EncodeVarint(dAtA, i, uint64(x.Namespace)) + if x.Role != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Role)) i-- dAtA[i] = 0x8 } @@ -6356,9 +6688,9 @@ func (x *fastReflection_PubKey) ProtoMethods() *protoiface.Methods { switch fieldNum { case 1: if wireType != 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) } - x.Namespace = 0 + x.Role = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -6368,14 +6700,52 @@ func (x *fastReflection_PubKey) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - x.Namespace |= DIDNamespace(b&0x7F) << shift + x.Role |= KeyRole(b&0x7F) << shift if b < 0x80 { break } } case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Algorithm", wireType) + } + x.Algorithm = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Algorithm |= KeyAlgorithm(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Encoding", wireType) + } + x.Encoding = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Encoding |= KeyEncoding(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Raw", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -6402,16 +6772,16 @@ func (x *fastReflection_PubKey) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.Key = append(x.Key[:0], dAtA[iNdEx:postIndex]...) - if x.Key == nil { - x.Key = []byte{} + x.Raw = append(x.Raw[:0], dAtA[iNdEx:postIndex]...) + if x.Raw == nil { + x.Raw = []byte{} } iNdEx = postIndex - case 3: - if wireType != 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Hex", wireType) } - x.Kind = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -6421,12 +6791,25 @@ func (x *fastReflection_PubKey) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - x.Kind |= KeyType(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 5: + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Hex = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Multibase", wireType) } @@ -6458,9 +6841,9 @@ func (x *fastReflection_PubKey) ProtoMethods() *protoiface.Methods { } x.Multibase = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 6: + case 7: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Jwks", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Jwk", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6487,8 +6870,8 @@ func (x *fastReflection_PubKey) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - if x.Jwks == nil { - x.Jwks = make(map[string]string) + if x.Jwk == nil { + x.Jwk = make(map[string]string) } var mapkey string var mapvalue string @@ -6583,7 +6966,1342 @@ func (x *fastReflection_PubKey) ProtoMethods() *protoiface.Methods { iNdEx += skippy } } - x.Jwks[mapkey] = mapvalue + x.Jwk[mapkey] = mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_Service protoreflect.MessageDescriptor + fd_Service_id protoreflect.FieldDescriptor + fd_Service_controller protoreflect.FieldDescriptor + fd_Service_origin protoreflect.FieldDescriptor + fd_Service_permissions protoreflect.FieldDescriptor + fd_Service_openid protoreflect.FieldDescriptor + fd_Service_metadata protoreflect.FieldDescriptor +) + +func init() { + file_did_v1_models_proto_init() + md_Service = File_did_v1_models_proto.Messages().ByName("Service") + fd_Service_id = md_Service.Fields().ByName("id") + fd_Service_controller = md_Service.Fields().ByName("controller") + fd_Service_origin = md_Service.Fields().ByName("origin") + fd_Service_permissions = md_Service.Fields().ByName("permissions") + fd_Service_openid = md_Service.Fields().ByName("openid") + fd_Service_metadata = md_Service.Fields().ByName("metadata") +} + +var _ protoreflect.Message = (*fastReflection_Service)(nil) + +type fastReflection_Service Service + +func (x *Service) ProtoReflect() protoreflect.Message { + return (*fastReflection_Service)(x) +} + +func (x *Service) slowProtoReflect() protoreflect.Message { + mi := &file_did_v1_models_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Service_messageType fastReflection_Service_messageType +var _ protoreflect.MessageType = fastReflection_Service_messageType{} + +type fastReflection_Service_messageType struct{} + +func (x fastReflection_Service_messageType) Zero() protoreflect.Message { + return (*fastReflection_Service)(nil) +} +func (x fastReflection_Service_messageType) New() protoreflect.Message { + return new(fastReflection_Service) +} +func (x fastReflection_Service_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Service +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Service) Descriptor() protoreflect.MessageDescriptor { + return md_Service +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Service) Type() protoreflect.MessageType { + return _fastReflection_Service_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Service) New() protoreflect.Message { + return new(fastReflection_Service) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Service) Interface() protoreflect.ProtoMessage { + return (*Service)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Service) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Id != "" { + value := protoreflect.ValueOfString(x.Id) + if !f(fd_Service_id, value) { + return + } + } + if x.Controller != "" { + value := protoreflect.ValueOfString(x.Controller) + if !f(fd_Service_controller, value) { + return + } + } + if x.Origin != "" { + value := protoreflect.ValueOfString(x.Origin) + if !f(fd_Service_origin, value) { + return + } + } + if x.Permissions != nil { + value := protoreflect.ValueOfMessage(x.Permissions.ProtoReflect()) + if !f(fd_Service_permissions, value) { + return + } + } + if x.Openid != nil { + value := protoreflect.ValueOfMessage(x.Openid.ProtoReflect()) + if !f(fd_Service_openid, value) { + return + } + } + if x.Metadata != nil { + value := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + if !f(fd_Service_metadata, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Service) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "did.v1.Service.id": + return x.Id != "" + case "did.v1.Service.controller": + return x.Controller != "" + case "did.v1.Service.origin": + return x.Origin != "" + case "did.v1.Service.permissions": + return x.Permissions != nil + case "did.v1.Service.openid": + return x.Openid != nil + case "did.v1.Service.metadata": + return x.Metadata != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Service")) + } + panic(fmt.Errorf("message did.v1.Service does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Service) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "did.v1.Service.id": + x.Id = "" + case "did.v1.Service.controller": + x.Controller = "" + case "did.v1.Service.origin": + x.Origin = "" + case "did.v1.Service.permissions": + x.Permissions = nil + case "did.v1.Service.openid": + x.Openid = nil + case "did.v1.Service.metadata": + x.Metadata = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Service")) + } + panic(fmt.Errorf("message did.v1.Service does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Service) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "did.v1.Service.id": + value := x.Id + return protoreflect.ValueOfString(value) + case "did.v1.Service.controller": + value := x.Controller + return protoreflect.ValueOfString(value) + case "did.v1.Service.origin": + value := x.Origin + return protoreflect.ValueOfString(value) + case "did.v1.Service.permissions": + value := x.Permissions + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "did.v1.Service.openid": + value := x.Openid + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "did.v1.Service.metadata": + value := x.Metadata + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Service")) + } + panic(fmt.Errorf("message did.v1.Service does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Service) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "did.v1.Service.id": + x.Id = value.Interface().(string) + case "did.v1.Service.controller": + x.Controller = value.Interface().(string) + case "did.v1.Service.origin": + x.Origin = value.Interface().(string) + case "did.v1.Service.permissions": + x.Permissions = value.Message().Interface().(*Permissions) + case "did.v1.Service.openid": + x.Openid = value.Message().Interface().(*OpenIDConfig) + case "did.v1.Service.metadata": + x.Metadata = value.Message().Interface().(*Metadata) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Service")) + } + panic(fmt.Errorf("message did.v1.Service does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Service) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.Service.permissions": + if x.Permissions == nil { + x.Permissions = new(Permissions) + } + return protoreflect.ValueOfMessage(x.Permissions.ProtoReflect()) + case "did.v1.Service.openid": + if x.Openid == nil { + x.Openid = new(OpenIDConfig) + } + return protoreflect.ValueOfMessage(x.Openid.ProtoReflect()) + case "did.v1.Service.metadata": + if x.Metadata == nil { + x.Metadata = new(Metadata) + } + return protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + case "did.v1.Service.id": + panic(fmt.Errorf("field id of message did.v1.Service is not mutable")) + case "did.v1.Service.controller": + panic(fmt.Errorf("field controller of message did.v1.Service is not mutable")) + case "did.v1.Service.origin": + panic(fmt.Errorf("field origin of message did.v1.Service is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Service")) + } + panic(fmt.Errorf("message did.v1.Service does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Service) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.Service.id": + return protoreflect.ValueOfString("") + case "did.v1.Service.controller": + return protoreflect.ValueOfString("") + case "did.v1.Service.origin": + return protoreflect.ValueOfString("") + case "did.v1.Service.permissions": + m := new(Permissions) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "did.v1.Service.openid": + m := new(OpenIDConfig) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "did.v1.Service.metadata": + m := new(Metadata) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Service")) + } + panic(fmt.Errorf("message did.v1.Service does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Service) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in did.v1.Service", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Service) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Service) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Service) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Service) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Id) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Controller) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Origin) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Permissions != nil { + l = options.Size(x.Permissions) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Openid != nil { + l = options.Size(x.Openid) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Metadata != nil { + l = options.Size(x.Metadata) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Service) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Metadata != nil { + encoded, err := options.Marshal(x.Metadata) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x32 + } + if x.Openid != nil { + encoded, err := options.Marshal(x.Openid) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x2a + } + if x.Permissions != nil { + encoded, err := options.Marshal(x.Permissions) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x22 + } + if len(x.Origin) > 0 { + i -= len(x.Origin) + copy(dAtA[i:], x.Origin) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Origin))) + i-- + dAtA[i] = 0x1a + } + if len(x.Controller) > 0 { + i -= len(x.Controller) + copy(dAtA[i:], x.Controller) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Controller))) + i-- + dAtA[i] = 0x12 + } + if len(x.Id) > 0 { + i -= len(x.Id) + copy(dAtA[i:], x.Id) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Service) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Service: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Service: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Controller = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Origin = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Permissions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Permissions == nil { + x.Permissions = &Permissions{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Permissions); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Openid", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Openid == nil { + x.Openid = &OpenIDConfig{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Openid); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Metadata == nil { + x.Metadata = &Metadata{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Metadata); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_Token protoreflect.MessageDescriptor + fd_Token_id protoreflect.FieldDescriptor + fd_Token_controller protoreflect.FieldDescriptor + fd_Token_macron protoreflect.FieldDescriptor +) + +func init() { + file_did_v1_models_proto_init() + md_Token = File_did_v1_models_proto.Messages().ByName("Token") + fd_Token_id = md_Token.Fields().ByName("id") + fd_Token_controller = md_Token.Fields().ByName("controller") + fd_Token_macron = md_Token.Fields().ByName("macron") +} + +var _ protoreflect.Message = (*fastReflection_Token)(nil) + +type fastReflection_Token Token + +func (x *Token) ProtoReflect() protoreflect.Message { + return (*fastReflection_Token)(x) +} + +func (x *Token) slowProtoReflect() protoreflect.Message { + mi := &file_did_v1_models_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Token_messageType fastReflection_Token_messageType +var _ protoreflect.MessageType = fastReflection_Token_messageType{} + +type fastReflection_Token_messageType struct{} + +func (x fastReflection_Token_messageType) Zero() protoreflect.Message { + return (*fastReflection_Token)(nil) +} +func (x fastReflection_Token_messageType) New() protoreflect.Message { + return new(fastReflection_Token) +} +func (x fastReflection_Token_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Token +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Token) Descriptor() protoreflect.MessageDescriptor { + return md_Token +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Token) Type() protoreflect.MessageType { + return _fastReflection_Token_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Token) New() protoreflect.Message { + return new(fastReflection_Token) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Token) Interface() protoreflect.ProtoMessage { + return (*Token)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Token) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Id != "" { + value := protoreflect.ValueOfString(x.Id) + if !f(fd_Token_id, value) { + return + } + } + if x.Controller != "" { + value := protoreflect.ValueOfString(x.Controller) + if !f(fd_Token_controller, value) { + return + } + } + if len(x.Macron) != 0 { + value := protoreflect.ValueOfBytes(x.Macron) + if !f(fd_Token_macron, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Token) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "did.v1.Token.id": + return x.Id != "" + case "did.v1.Token.controller": + return x.Controller != "" + case "did.v1.Token.macron": + return len(x.Macron) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Token")) + } + panic(fmt.Errorf("message did.v1.Token does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Token) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "did.v1.Token.id": + x.Id = "" + case "did.v1.Token.controller": + x.Controller = "" + case "did.v1.Token.macron": + x.Macron = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Token")) + } + panic(fmt.Errorf("message did.v1.Token does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Token) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "did.v1.Token.id": + value := x.Id + return protoreflect.ValueOfString(value) + case "did.v1.Token.controller": + value := x.Controller + return protoreflect.ValueOfString(value) + case "did.v1.Token.macron": + value := x.Macron + return protoreflect.ValueOfBytes(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Token")) + } + panic(fmt.Errorf("message did.v1.Token does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Token) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "did.v1.Token.id": + x.Id = value.Interface().(string) + case "did.v1.Token.controller": + x.Controller = value.Interface().(string) + case "did.v1.Token.macron": + x.Macron = value.Bytes() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Token")) + } + panic(fmt.Errorf("message did.v1.Token does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Token) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.Token.id": + panic(fmt.Errorf("field id of message did.v1.Token is not mutable")) + case "did.v1.Token.controller": + panic(fmt.Errorf("field controller of message did.v1.Token is not mutable")) + case "did.v1.Token.macron": + panic(fmt.Errorf("field macron of message did.v1.Token is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Token")) + } + panic(fmt.Errorf("message did.v1.Token does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Token) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.Token.id": + return protoreflect.ValueOfString("") + case "did.v1.Token.controller": + return protoreflect.ValueOfString("") + case "did.v1.Token.macron": + return protoreflect.ValueOfBytes(nil) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Token")) + } + panic(fmt.Errorf("message did.v1.Token does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Token) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in did.v1.Token", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Token) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Token) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Token) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Token) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Token) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Id) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Controller) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Macron) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Token) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Macron) > 0 { + i -= len(x.Macron) + copy(dAtA[i:], x.Macron) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Macron))) + i-- + dAtA[i] = 0x1a + } + if len(x.Controller) > 0 { + i -= len(x.Controller) + copy(dAtA[i:], x.Controller) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Controller))) + i-- + dAtA[i] = 0x12 + } + if len(x.Id) > 0 { + i -= len(x.Id) + copy(dAtA[i:], x.Id) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Token) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Token: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Token: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Controller = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Macron", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Macron = append(x.Macron[:0], dAtA[iNdEx:postIndex]...) + if x.Macron == nil { + x.Macron = []byte{} + } iNdEx = postIndex default: iNdEx = preIndex @@ -6624,7 +8342,9 @@ var ( md_VerificationMethod protoreflect.MessageDescriptor fd_VerificationMethod_id protoreflect.FieldDescriptor fd_VerificationMethod_controller protoreflect.FieldDescriptor + fd_VerificationMethod_method protoreflect.FieldDescriptor fd_VerificationMethod_public_key protoreflect.FieldDescriptor + fd_VerificationMethod_service protoreflect.FieldDescriptor ) func init() { @@ -6632,7 +8352,9 @@ func init() { md_VerificationMethod = File_did_v1_models_proto.Messages().ByName("VerificationMethod") fd_VerificationMethod_id = md_VerificationMethod.Fields().ByName("id") fd_VerificationMethod_controller = md_VerificationMethod.Fields().ByName("controller") + fd_VerificationMethod_method = md_VerificationMethod.Fields().ByName("method") fd_VerificationMethod_public_key = md_VerificationMethod.Fields().ByName("public_key") + fd_VerificationMethod_service = md_VerificationMethod.Fields().ByName("service") } var _ protoreflect.Message = (*fastReflection_VerificationMethod)(nil) @@ -6644,7 +8366,7 @@ func (x *VerificationMethod) ProtoReflect() protoreflect.Message { } func (x *VerificationMethod) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_models_proto_msgTypes[8] + mi := &file_did_v1_models_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6712,12 +8434,24 @@ func (x *fastReflection_VerificationMethod) Range(f func(protoreflect.FieldDescr return } } + if x.Method != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Method)) + if !f(fd_VerificationMethod_method, value) { + return + } + } if x.PublicKey != nil { value := protoreflect.ValueOfMessage(x.PublicKey.ProtoReflect()) if !f(fd_VerificationMethod_public_key, value) { return } } + if x.Service != nil { + value := protoreflect.ValueOfMessage(x.Service.ProtoReflect()) + if !f(fd_VerificationMethod_service, value) { + return + } + } } // Has reports whether a field is populated. @@ -6737,8 +8471,12 @@ func (x *fastReflection_VerificationMethod) Has(fd protoreflect.FieldDescriptor) return x.Id != "" case "did.v1.VerificationMethod.controller": return x.Controller != "" + case "did.v1.VerificationMethod.method": + return x.Method != 0 case "did.v1.VerificationMethod.public_key": return x.PublicKey != nil + case "did.v1.VerificationMethod.service": + return x.Service != nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.VerificationMethod")) @@ -6759,8 +8497,12 @@ func (x *fastReflection_VerificationMethod) Clear(fd protoreflect.FieldDescripto x.Id = "" case "did.v1.VerificationMethod.controller": x.Controller = "" + case "did.v1.VerificationMethod.method": + x.Method = 0 case "did.v1.VerificationMethod.public_key": x.PublicKey = nil + case "did.v1.VerificationMethod.service": + x.Service = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.VerificationMethod")) @@ -6783,9 +8525,15 @@ func (x *fastReflection_VerificationMethod) Get(descriptor protoreflect.FieldDes case "did.v1.VerificationMethod.controller": value := x.Controller return protoreflect.ValueOfString(value) + case "did.v1.VerificationMethod.method": + value := x.Method + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) case "did.v1.VerificationMethod.public_key": value := x.PublicKey return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "did.v1.VerificationMethod.service": + value := x.Service + return protoreflect.ValueOfMessage(value.ProtoReflect()) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.VerificationMethod")) @@ -6810,8 +8558,12 @@ func (x *fastReflection_VerificationMethod) Set(fd protoreflect.FieldDescriptor, x.Id = value.Interface().(string) case "did.v1.VerificationMethod.controller": x.Controller = value.Interface().(string) + case "did.v1.VerificationMethod.method": + x.Method = (DIDNamespace)(value.Enum()) case "did.v1.VerificationMethod.public_key": x.PublicKey = value.Message().Interface().(*PubKey) + case "did.v1.VerificationMethod.service": + x.Service = value.Message().Interface().(*Service) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.VerificationMethod")) @@ -6837,10 +8589,17 @@ func (x *fastReflection_VerificationMethod) Mutable(fd protoreflect.FieldDescrip x.PublicKey = new(PubKey) } return protoreflect.ValueOfMessage(x.PublicKey.ProtoReflect()) + case "did.v1.VerificationMethod.service": + if x.Service == nil { + x.Service = new(Service) + } + return protoreflect.ValueOfMessage(x.Service.ProtoReflect()) case "did.v1.VerificationMethod.id": panic(fmt.Errorf("field id of message did.v1.VerificationMethod is not mutable")) case "did.v1.VerificationMethod.controller": panic(fmt.Errorf("field controller of message did.v1.VerificationMethod is not mutable")) + case "did.v1.VerificationMethod.method": + panic(fmt.Errorf("field method of message did.v1.VerificationMethod is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.VerificationMethod")) @@ -6858,9 +8617,14 @@ func (x *fastReflection_VerificationMethod) NewField(fd protoreflect.FieldDescri return protoreflect.ValueOfString("") case "did.v1.VerificationMethod.controller": return protoreflect.ValueOfString("") + case "did.v1.VerificationMethod.method": + return protoreflect.ValueOfEnum(0) case "did.v1.VerificationMethod.public_key": m := new(PubKey) return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "did.v1.VerificationMethod.service": + m := new(Service) + return protoreflect.ValueOfMessage(m.ProtoReflect()) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.VerificationMethod")) @@ -6938,10 +8702,17 @@ func (x *fastReflection_VerificationMethod) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if x.Method != 0 { + n += 1 + runtime.Sov(uint64(x.Method)) + } if x.PublicKey != nil { l = options.Size(x.PublicKey) n += 1 + l + runtime.Sov(uint64(l)) } + if x.Service != nil { + l = options.Size(x.Service) + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -6971,6 +8742,20 @@ func (x *fastReflection_VerificationMethod) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if x.Service != nil { + encoded, err := options.Marshal(x.Service) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x3a + } if x.PublicKey != nil { encoded, err := options.Marshal(x.PublicKey) if err != nil { @@ -6983,7 +8768,12 @@ func (x *fastReflection_VerificationMethod) ProtoMethods() *protoiface.Methods { copy(dAtA[i:], encoded) i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) i-- - dAtA[i] = 0x1a + dAtA[i] = 0x22 + } + if x.Method != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Method)) + i-- + dAtA[i] = 0x18 } if len(x.Controller) > 0 { i -= len(x.Controller) @@ -7113,6 +8903,25 @@ func (x *fastReflection_VerificationMethod) ProtoMethods() *protoiface.Methods { x.Controller = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Method", wireType) + } + x.Method = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Method |= DIDNamespace(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field PublicKey", wireType) } @@ -7148,6 +8957,464 @@ func (x *fastReflection_VerificationMethod) ProtoMethods() *protoiface.Methods { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex + case 7: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Service == nil { + x.Service = &Service{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Service); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_Witness protoreflect.MessageDescriptor + fd_Witness_witness protoreflect.FieldDescriptor +) + +func init() { + file_did_v1_models_proto_init() + md_Witness = File_did_v1_models_proto.Messages().ByName("Witness") + fd_Witness_witness = md_Witness.Fields().ByName("witness") +} + +var _ protoreflect.Message = (*fastReflection_Witness)(nil) + +type fastReflection_Witness Witness + +func (x *Witness) ProtoReflect() protoreflect.Message { + return (*fastReflection_Witness)(x) +} + +func (x *Witness) slowProtoReflect() protoreflect.Message { + mi := &file_did_v1_models_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Witness_messageType fastReflection_Witness_messageType +var _ protoreflect.MessageType = fastReflection_Witness_messageType{} + +type fastReflection_Witness_messageType struct{} + +func (x fastReflection_Witness_messageType) Zero() protoreflect.Message { + return (*fastReflection_Witness)(nil) +} +func (x fastReflection_Witness_messageType) New() protoreflect.Message { + return new(fastReflection_Witness) +} +func (x fastReflection_Witness_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Witness +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Witness) Descriptor() protoreflect.MessageDescriptor { + return md_Witness +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Witness) Type() protoreflect.MessageType { + return _fastReflection_Witness_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Witness) New() protoreflect.Message { + return new(fastReflection_Witness) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Witness) Interface() protoreflect.ProtoMessage { + return (*Witness)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Witness) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Witness) != 0 { + value := protoreflect.ValueOfBytes(x.Witness) + if !f(fd_Witness_witness, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Witness) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "did.v1.Witness.witness": + return len(x.Witness) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Witness")) + } + panic(fmt.Errorf("message did.v1.Witness does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Witness) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "did.v1.Witness.witness": + x.Witness = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Witness")) + } + panic(fmt.Errorf("message did.v1.Witness does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Witness) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "did.v1.Witness.witness": + value := x.Witness + return protoreflect.ValueOfBytes(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Witness")) + } + panic(fmt.Errorf("message did.v1.Witness does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Witness) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "did.v1.Witness.witness": + x.Witness = value.Bytes() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Witness")) + } + panic(fmt.Errorf("message did.v1.Witness does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Witness) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.Witness.witness": + panic(fmt.Errorf("field witness of message did.v1.Witness is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Witness")) + } + panic(fmt.Errorf("message did.v1.Witness does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Witness) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.Witness.witness": + return protoreflect.ValueOfBytes(nil) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Witness")) + } + panic(fmt.Errorf("message did.v1.Witness does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Witness) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in did.v1.Witness", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Witness) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Witness) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Witness) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Witness) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Witness) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Witness) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Witness) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Witness) > 0 { + i -= len(x.Witness) + copy(dAtA[i:], x.Witness) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Witness))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Witness) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Witness: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Witness: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Witness", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Witness = append(x.Witness[:0], dAtA[iNdEx:postIndex]...) + if x.Witness == nil { + x.Witness = []byte{} + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -7196,21 +9463,17 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// DID defines a parsed DID string -type DID struct { +// Accumulator defines a BLS accumulator +type Accumulator struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Method DIDNamespace `protobuf:"varint,2,opt,name=method,proto3,enum=did.v1.DIDNamespace" json:"method,omitempty"` - Network string `protobuf:"bytes,3,opt,name=network,proto3" json:"network,omitempty"` - Identifier string `protobuf:"bytes,4,opt,name=identifier,proto3" json:"identifier,omitempty"` - Paths []string `protobuf:"bytes,5,rep,name=paths,proto3" json:"paths,omitempty"` + Accumulator []byte `protobuf:"bytes,1,opt,name=accumulator,proto3" json:"accumulator,omitempty"` } -func (x *DID) Reset() { - *x = DID{} +func (x *Accumulator) Reset() { + *x = Accumulator{} if protoimpl.UnsafeEnabled { mi := &file_did_v1_models_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7218,48 +9481,20 @@ func (x *DID) Reset() { } } -func (x *DID) String() string { +func (x *Accumulator) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DID) ProtoMessage() {} +func (*Accumulator) ProtoMessage() {} -// Deprecated: Use DID.ProtoReflect.Descriptor instead. -func (*DID) Descriptor() ([]byte, []int) { +// Deprecated: Use Accumulator.ProtoReflect.Descriptor instead. +func (*Accumulator) Descriptor() ([]byte, []int) { return file_did_v1_models_proto_rawDescGZIP(), []int{0} } -func (x *DID) GetId() string { +func (x *Accumulator) GetAccumulator() []byte { if x != nil { - return x.Id - } - return "" -} - -func (x *DID) GetMethod() DIDNamespace { - if x != nil { - return x.Method - } - return DIDNamespace_DID_NAMESPACE_UNSPECIFIED -} - -func (x *DID) GetNetwork() string { - if x != nil { - return x.Network - } - return "" -} - -func (x *DID) GetIdentifier() string { - if x != nil { - return x.Identifier - } - return "" -} - -func (x *DID) GetPaths() []string { - if x != nil { - return x.Paths + return x.Accumulator } return nil } @@ -7340,6 +9575,74 @@ func (x *Credential) GetController() string { return "" } +// DID defines a parsed DID string +type DID struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Method DIDNamespace `protobuf:"varint,1,opt,name=method,proto3,enum=did.v1.DIDNamespace" json:"method,omitempty"` + Network string `protobuf:"bytes,2,opt,name=network,proto3" json:"network,omitempty"` + Subject string `protobuf:"bytes,3,opt,name=subject,proto3" json:"subject,omitempty"` + Identifier string `protobuf:"bytes,4,opt,name=identifier,proto3" json:"identifier,omitempty"` + Paths []string `protobuf:"bytes,5,rep,name=paths,proto3" json:"paths,omitempty"` +} + +func (x *DID) Reset() { + *x = DID{} + if protoimpl.UnsafeEnabled { + mi := &file_did_v1_models_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DID) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DID) ProtoMessage() {} + +// Deprecated: Use DID.ProtoReflect.Descriptor instead. +func (*DID) Descriptor() ([]byte, []int) { + return file_did_v1_models_proto_rawDescGZIP(), []int{2} +} + +func (x *DID) GetMethod() DIDNamespace { + if x != nil { + return x.Method + } + return DIDNamespace_DID_NAMESPACE_UNSPECIFIED +} + +func (x *DID) GetNetwork() string { + if x != nil { + return x.Network + } + return "" +} + +func (x *DID) GetSubject() string { + if x != nil { + return x.Subject + } + return "" +} + +func (x *DID) GetIdentifier() string { + if x != nil { + return x.Identifier + } + return "" +} + +func (x *DID) GetPaths() []string { + if x != nil { + return x.Paths + } + return nil +} + // Document defines a DID document type Document struct { state protoimpl.MessageState @@ -7352,12 +9655,13 @@ type Document struct { AssertionMethod []string `protobuf:"bytes,5,rep,name=assertion_method,json=assertionMethod,proto3" json:"assertion_method,omitempty"` CapabilityDelegation []string `protobuf:"bytes,7,rep,name=capability_delegation,json=capabilityDelegation,proto3" json:"capability_delegation,omitempty"` CapabilityInvocation []string `protobuf:"bytes,8,rep,name=capability_invocation,json=capabilityInvocation,proto3" json:"capability_invocation,omitempty"` + Service []string `protobuf:"bytes,9,rep,name=service,proto3" json:"service,omitempty"` } func (x *Document) Reset() { *x = Document{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_models_proto_msgTypes[2] + mi := &file_did_v1_models_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7371,7 +9675,7 @@ func (*Document) ProtoMessage() {} // Deprecated: Use Document.ProtoReflect.Descriptor instead. func (*Document) Descriptor() ([]byte, []int) { - return file_did_v1_models_proto_rawDescGZIP(), []int{2} + return file_did_v1_models_proto_rawDescGZIP(), []int{3} } func (x *Document) GetId() string { @@ -7416,6 +9720,13 @@ func (x *Document) GetCapabilityInvocation() []string { return nil } +func (x *Document) GetService() []string { + if x != nil { + return x.Service + } + return nil +} + // Metadata defines additional information provided to a did type Metadata struct { state protoimpl.MessageState @@ -7430,7 +9741,7 @@ type Metadata struct { func (x *Metadata) Reset() { *x = Metadata{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_models_proto_msgTypes[3] + mi := &file_did_v1_models_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7444,7 +9755,7 @@ func (*Metadata) ProtoMessage() {} // Deprecated: Use Metadata.ProtoReflect.Descriptor instead. func (*Metadata) Descriptor() ([]byte, []int) { - return file_did_v1_models_proto_rawDescGZIP(), []int{3} + return file_did_v1_models_proto_rawDescGZIP(), []int{4} } func (x *Metadata) GetOriginUri() string { @@ -7482,7 +9793,7 @@ type Permissions struct { func (x *Permissions) Reset() { *x = Permissions{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_models_proto_msgTypes[4] + mi := &file_did_v1_models_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7496,7 +9807,7 @@ func (*Permissions) ProtoMessage() {} // Deprecated: Use Permissions.ProtoReflect.Descriptor instead. func (*Permissions) Descriptor() ([]byte, []int) { - return file_did_v1_models_proto_rawDescGZIP(), []int{4} + return file_did_v1_models_proto_rawDescGZIP(), []int{5} } func (x *Permissions) GetGrants() []DIDNamespace { @@ -7519,18 +9830,16 @@ type Profile struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"` - Controller string `protobuf:"bytes,3,opt,name=controller,proto3" json:"controller,omitempty"` - Credentials []*Credential `protobuf:"bytes,4,rep,name=credentials,proto3" json:"credentials,omitempty"` - Attestations []*VerificationMethod `protobuf:"bytes,5,rep,name=attestations,proto3" json:"attestations,omitempty"` - Metadata *Metadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"` + Controller string `protobuf:"bytes,3,opt,name=controller,proto3" json:"controller,omitempty"` + Metadata *Metadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (x *Profile) Reset() { *x = Profile{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_models_proto_msgTypes[5] + mi := &file_did_v1_models_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7544,7 +9853,7 @@ func (*Profile) ProtoMessage() {} // Deprecated: Use Profile.ProtoReflect.Descriptor instead. func (*Profile) Descriptor() ([]byte, []int) { - return file_did_v1_models_proto_rawDescGZIP(), []int{5} + return file_did_v1_models_proto_rawDescGZIP(), []int{6} } func (x *Profile) GetId() string { @@ -7568,20 +9877,6 @@ func (x *Profile) GetController() string { return "" } -func (x *Profile) GetCredentials() []*Credential { - if x != nil { - return x.Credentials - } - return nil -} - -func (x *Profile) GetAttestations() []*VerificationMethod { - if x != nil { - return x.Attestations - } - return nil -} - func (x *Profile) GetMetadata() *Metadata { if x != nil { return x.Metadata @@ -7603,7 +9898,7 @@ type Property struct { func (x *Property) Reset() { *x = Property{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_models_proto_msgTypes[6] + mi := &file_did_v1_models_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7617,7 +9912,7 @@ func (*Property) ProtoMessage() {} // Deprecated: Use Property.ProtoReflect.Descriptor instead. func (*Property) Descriptor() ([]byte, []int) { - return file_did_v1_models_proto_rawDescGZIP(), []int{6} + return file_did_v1_models_proto_rawDescGZIP(), []int{7} } func (x *Property) GetAccumulator() []byte { @@ -7640,17 +9935,19 @@ type PubKey struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Namespace DIDNamespace `protobuf:"varint,1,opt,name=namespace,proto3,enum=did.v1.DIDNamespace" json:"namespace,omitempty"` - Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - Kind KeyType `protobuf:"varint,3,opt,name=kind,proto3,enum=did.v1.KeyType" json:"kind,omitempty"` - Multibase string `protobuf:"bytes,5,opt,name=multibase,proto3" json:"multibase,omitempty"` - Jwks map[string]string `protobuf:"bytes,6,rep,name=jwks,proto3" json:"jwks,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Role KeyRole `protobuf:"varint,1,opt,name=role,proto3,enum=did.v1.KeyRole" json:"role,omitempty"` + Algorithm KeyAlgorithm `protobuf:"varint,2,opt,name=algorithm,proto3,enum=did.v1.KeyAlgorithm" json:"algorithm,omitempty"` + Encoding KeyEncoding `protobuf:"varint,3,opt,name=encoding,proto3,enum=did.v1.KeyEncoding" json:"encoding,omitempty"` + Raw []byte `protobuf:"bytes,4,opt,name=raw,proto3" json:"raw,omitempty"` + Hex string `protobuf:"bytes,5,opt,name=hex,proto3" json:"hex,omitempty"` + Multibase string `protobuf:"bytes,6,opt,name=multibase,proto3" json:"multibase,omitempty"` + Jwk map[string]string `protobuf:"bytes,7,rep,name=jwk,proto3" json:"jwk,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *PubKey) Reset() { *x = PubKey{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_models_proto_msgTypes[7] + mi := &file_did_v1_models_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7664,28 +9961,42 @@ func (*PubKey) ProtoMessage() {} // Deprecated: Use PubKey.ProtoReflect.Descriptor instead. func (*PubKey) Descriptor() ([]byte, []int) { - return file_did_v1_models_proto_rawDescGZIP(), []int{7} + return file_did_v1_models_proto_rawDescGZIP(), []int{8} } -func (x *PubKey) GetNamespace() DIDNamespace { +func (x *PubKey) GetRole() KeyRole { if x != nil { - return x.Namespace + return x.Role } - return DIDNamespace_DID_NAMESPACE_UNSPECIFIED + return KeyRole_KEY_ROLE_UNSPECIFIED } -func (x *PubKey) GetKey() []byte { +func (x *PubKey) GetAlgorithm() KeyAlgorithm { if x != nil { - return x.Key + return x.Algorithm + } + return KeyAlgorithm_KEY_ALGORITHM_UNSPECIFIED +} + +func (x *PubKey) GetEncoding() KeyEncoding { + if x != nil { + return x.Encoding + } + return KeyEncoding_KEY_ENCODING_UNSPECIFIED +} + +func (x *PubKey) GetRaw() []byte { + if x != nil { + return x.Raw } return nil } -func (x *PubKey) GetKind() KeyType { +func (x *PubKey) GetHex() string { if x != nil { - return x.Kind + return x.Hex } - return KeyType_KEY_TYPE_UNSPECIFIED + return "" } func (x *PubKey) GetMultibase() string { @@ -7695,9 +10006,137 @@ func (x *PubKey) GetMultibase() string { return "" } -func (x *PubKey) GetJwks() map[string]string { +func (x *PubKey) GetJwk() map[string]string { if x != nil { - return x.Jwks + return x.Jwk + } + return nil +} + +// Service defines a Decentralized Service on the Sonr Blockchain +type Service struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` + Origin string `protobuf:"bytes,3,opt,name=origin,proto3" json:"origin,omitempty"` + Permissions *Permissions `protobuf:"bytes,4,opt,name=permissions,proto3" json:"permissions,omitempty"` + Openid *OpenIDConfig `protobuf:"bytes,5,opt,name=openid,proto3" json:"openid,omitempty"` + Metadata *Metadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (x *Service) Reset() { + *x = Service{} + if protoimpl.UnsafeEnabled { + mi := &file_did_v1_models_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Service) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Service) ProtoMessage() {} + +// Deprecated: Use Service.ProtoReflect.Descriptor instead. +func (*Service) Descriptor() ([]byte, []int) { + return file_did_v1_models_proto_rawDescGZIP(), []int{9} +} + +func (x *Service) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Service) GetController() string { + if x != nil { + return x.Controller + } + return "" +} + +func (x *Service) GetOrigin() string { + if x != nil { + return x.Origin + } + return "" +} + +func (x *Service) GetPermissions() *Permissions { + if x != nil { + return x.Permissions + } + return nil +} + +func (x *Service) GetOpenid() *OpenIDConfig { + if x != nil { + return x.Openid + } + return nil +} + +func (x *Service) GetMetadata() *Metadata { + if x != nil { + return x.Metadata + } + return nil +} + +// Token defines a macron token +type Token struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` + Macron []byte `protobuf:"bytes,3,opt,name=macron,proto3" json:"macron,omitempty"` +} + +func (x *Token) Reset() { + *x = Token{} + if protoimpl.UnsafeEnabled { + mi := &file_did_v1_models_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Token) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Token) ProtoMessage() {} + +// Deprecated: Use Token.ProtoReflect.Descriptor instead. +func (*Token) Descriptor() ([]byte, []int) { + return file_did_v1_models_proto_rawDescGZIP(), []int{10} +} + +func (x *Token) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Token) GetController() string { + if x != nil { + return x.Controller + } + return "" +} + +func (x *Token) GetMacron() []byte { + if x != nil { + return x.Macron } return nil } @@ -7708,15 +10147,17 @@ type VerificationMethod struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` - PublicKey *PubKey `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` + Method DIDNamespace `protobuf:"varint,3,opt,name=method,proto3,enum=did.v1.DIDNamespace" json:"method,omitempty"` + PublicKey *PubKey `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + Service *Service `protobuf:"bytes,7,opt,name=service,proto3" json:"service,omitempty"` } func (x *VerificationMethod) Reset() { *x = VerificationMethod{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_models_proto_msgTypes[8] + mi := &file_did_v1_models_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7730,7 +10171,7 @@ func (*VerificationMethod) ProtoMessage() {} // Deprecated: Use VerificationMethod.ProtoReflect.Descriptor instead. func (*VerificationMethod) Descriptor() ([]byte, []int) { - return file_did_v1_models_proto_rawDescGZIP(), []int{8} + return file_did_v1_models_proto_rawDescGZIP(), []int{11} } func (x *VerificationMethod) GetId() string { @@ -7747,6 +10188,13 @@ func (x *VerificationMethod) GetController() string { return "" } +func (x *VerificationMethod) GetMethod() DIDNamespace { + if x != nil { + return x.Method + } + return DIDNamespace_DID_NAMESPACE_UNSPECIFIED +} + func (x *VerificationMethod) GetPublicKey() *PubKey { if x != nil { return x.PublicKey @@ -7754,129 +10202,204 @@ func (x *VerificationMethod) GetPublicKey() *PubKey { return nil } +func (x *VerificationMethod) GetService() *Service { + if x != nil { + return x.Service + } + return nil +} + +// Witness defines a BLS witness +type Witness struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Witness []byte `protobuf:"bytes,1,opt,name=witness,proto3" json:"witness,omitempty"` +} + +func (x *Witness) Reset() { + *x = Witness{} + if protoimpl.UnsafeEnabled { + mi := &file_did_v1_models_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Witness) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Witness) ProtoMessage() {} + +// Deprecated: Use Witness.ProtoReflect.Descriptor instead. +func (*Witness) Descriptor() ([]byte, []int) { + return file_did_v1_models_proto_rawDescGZIP(), []int{12} +} + +func (x *Witness) GetWitness() []byte { + if x != nil { + return x.Witness + } + return nil +} + var File_did_v1_models_proto protoreflect.FileDescriptor var file_did_v1_models_proto_rawDesc = []byte{ 0x0a, 0x13, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x64, - 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0x93, 0x01, 0x0a, 0x03, 0x44, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x6d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x64, 0x69, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x49, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, 0xc2, 0x01, 0x0a, 0x0a, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, - 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x22, 0xa6, - 0x02, 0x0a, 0x08, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x4d, 0x0a, 0x14, 0x76, - 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x69, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x13, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x75, - 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x73, - 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x33, 0x0a, - 0x15, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x65, 0x6c, 0x65, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x63, 0x61, - 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x15, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x5f, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x14, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x76, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa1, 0x02, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x75, - 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, - 0x55, 0x72, 0x69, 0x12, 0x34, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x37, 0x0a, 0x07, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x69, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4c, 0x0a, - 0x0c, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6c, 0x0a, 0x0b, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x06, 0x67, 0x72, - 0x61, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x64, 0x69, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x49, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x52, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x6f, 0x70, - 0x65, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x22, 0xf7, 0x01, 0x0a, 0x07, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, - 0x34, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x69, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x3e, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, - 0x20, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x6f, - 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x22, 0xf8, 0x01, 0x0a, 0x06, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x32, - 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x14, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x49, 0x44, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x75, 0x6c, - 0x74, 0x69, 0x62, 0x61, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x75, - 0x6c, 0x74, 0x69, 0x62, 0x61, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x6a, 0x77, 0x6b, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x75, 0x62, 0x4b, 0x65, 0x79, 0x2e, 0x4a, 0x77, 0x6b, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x04, 0x6a, 0x77, 0x6b, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x4a, 0x77, 0x6b, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x73, - 0x0a, 0x12, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x4b, 0x65, 0x79, 0x42, 0x7b, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, - 0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, - 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, - 0x6f, 0x6e, 0x72, 0x2f, 0x68, 0x77, 0x61, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x69, 0x64, - 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x69, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, - 0x02, 0x06, 0x44, 0x69, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, 0x69, 0x64, 0x5c, 0x56, - 0x31, 0xe2, 0x02, 0x12, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, 0x3a, 0x3a, 0x56, 0x31, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x16, 0x64, + 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, + 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, + 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0x2f, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, + 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, + 0x6f, 0x72, 0x22, 0xc2, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x22, 0x9d, 0x01, 0x0a, 0x03, 0x44, 0x49, 0x44, 0x12, + 0x2c, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x14, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x49, 0x44, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, 0xc0, 0x02, 0x0a, 0x08, 0x44, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x4d, 0x0a, 0x14, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x13, + 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x75, 0x74, + 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x61, + 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x33, 0x0a, 0x15, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x15, 0x63, + 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x63, 0x61, 0x70, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xa1, 0x02, 0x0a, 0x08, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, + 0x6e, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x69, + 0x67, 0x69, 0x6e, 0x55, 0x72, 0x69, 0x12, 0x34, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x37, 0x0a, 0x07, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x4c, 0x0a, 0x0c, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6c, + 0x0a, 0x0b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x0a, + 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x14, 0x2e, + 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x49, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x52, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x64, 0x69, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x22, 0x81, 0x01, 0x0a, + 0x07, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x22, 0x3e, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x0b, + 0x61, 0x63, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x22, 0xb7, 0x02, 0x0a, 0x06, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x04, 0x72, + 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x64, 0x69, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, + 0x12, 0x32, 0x0a, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, + 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x12, 0x2f, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x65, 0x6e, 0x63, + 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x03, 0x72, 0x61, 0x77, 0x12, 0x10, 0x0a, 0x03, 0x68, 0x65, 0x78, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x68, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x62, 0x61, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x75, + 0x6c, 0x74, 0x69, 0x62, 0x61, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x03, 0x6a, 0x77, 0x6b, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, + 0x62, 0x4b, 0x65, 0x79, 0x2e, 0x4a, 0x77, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x6a, + 0x77, 0x6b, 0x1a, 0x36, 0x0a, 0x08, 0x4a, 0x77, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe4, 0x01, 0x0a, 0x07, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x35, + 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x44, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x6f, 0x70, 0x65, + 0x6e, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x22, 0x4f, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, + 0x63, 0x72, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6d, 0x61, 0x63, 0x72, + 0x6f, 0x6e, 0x22, 0xcc, 0x01, 0x0a, 0x12, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x06, 0x6d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x64, 0x69, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x49, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x2d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x22, 0x23, 0x0a, 0x07, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, + 0x77, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x77, + 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x42, 0x7b, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, + 0x64, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x69, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, + 0x58, 0x58, 0xaa, 0x02, 0x06, 0x44, 0x69, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, 0x69, + 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, 0x3a, + 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7891,44 +10414,55 @@ func file_did_v1_models_proto_rawDescGZIP() []byte { return file_did_v1_models_proto_rawDescData } -var file_did_v1_models_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_did_v1_models_proto_msgTypes = make([]protoimpl.MessageInfo, 16) var file_did_v1_models_proto_goTypes = []interface{}{ - (*DID)(nil), // 0: did.v1.DID + (*Accumulator)(nil), // 0: did.v1.Accumulator (*Credential)(nil), // 1: did.v1.Credential - (*Document)(nil), // 2: did.v1.Document - (*Metadata)(nil), // 3: did.v1.Metadata - (*Permissions)(nil), // 4: did.v1.Permissions - (*Profile)(nil), // 5: did.v1.Profile - (*Property)(nil), // 6: did.v1.Property - (*PubKey)(nil), // 7: did.v1.PubKey - (*VerificationMethod)(nil), // 8: did.v1.VerificationMethod - nil, // 9: did.v1.Metadata.PublicEntry - nil, // 10: did.v1.Metadata.PrivateEntry - nil, // 11: did.v1.PubKey.JwksEntry - (DIDNamespace)(0), // 12: did.v1.DIDNamespace - (PermissionScope)(0), // 13: did.v1.PermissionScope - (KeyType)(0), // 14: did.v1.KeyType + (*DID)(nil), // 2: did.v1.DID + (*Document)(nil), // 3: did.v1.Document + (*Metadata)(nil), // 4: did.v1.Metadata + (*Permissions)(nil), // 5: did.v1.Permissions + (*Profile)(nil), // 6: did.v1.Profile + (*Property)(nil), // 7: did.v1.Property + (*PubKey)(nil), // 8: did.v1.PubKey + (*Service)(nil), // 9: did.v1.Service + (*Token)(nil), // 10: did.v1.Token + (*VerificationMethod)(nil), // 11: did.v1.VerificationMethod + (*Witness)(nil), // 12: did.v1.Witness + nil, // 13: did.v1.Metadata.PublicEntry + nil, // 14: did.v1.Metadata.PrivateEntry + nil, // 15: did.v1.PubKey.JwkEntry + (DIDNamespace)(0), // 16: did.v1.DIDNamespace + (PermissionScope)(0), // 17: did.v1.PermissionScope + (KeyRole)(0), // 18: did.v1.KeyRole + (KeyAlgorithm)(0), // 19: did.v1.KeyAlgorithm + (KeyEncoding)(0), // 20: did.v1.KeyEncoding + (*OpenIDConfig)(nil), // 21: did.v1.OpenIDConfig } var file_did_v1_models_proto_depIdxs = []int32{ - 12, // 0: did.v1.DID.method:type_name -> did.v1.DIDNamespace - 8, // 1: did.v1.Document.verification_methods:type_name -> did.v1.VerificationMethod - 9, // 2: did.v1.Metadata.public:type_name -> did.v1.Metadata.PublicEntry - 10, // 3: did.v1.Metadata.private:type_name -> did.v1.Metadata.PrivateEntry - 12, // 4: did.v1.Permissions.grants:type_name -> did.v1.DIDNamespace - 13, // 5: did.v1.Permissions.scopes:type_name -> did.v1.PermissionScope - 1, // 6: did.v1.Profile.credentials:type_name -> did.v1.Credential - 8, // 7: did.v1.Profile.attestations:type_name -> did.v1.VerificationMethod - 3, // 8: did.v1.Profile.metadata:type_name -> did.v1.Metadata - 12, // 9: did.v1.PubKey.namespace:type_name -> did.v1.DIDNamespace - 14, // 10: did.v1.PubKey.kind:type_name -> did.v1.KeyType - 11, // 11: did.v1.PubKey.jwks:type_name -> did.v1.PubKey.JwksEntry - 7, // 12: did.v1.VerificationMethod.public_key:type_name -> did.v1.PubKey - 6, // 13: did.v1.Metadata.PrivateEntry.value:type_name -> did.v1.Property - 14, // [14:14] is the sub-list for method output_type - 14, // [14:14] is the sub-list for method input_type - 14, // [14:14] is the sub-list for extension type_name - 14, // [14:14] is the sub-list for extension extendee - 0, // [0:14] is the sub-list for field type_name + 16, // 0: did.v1.DID.method:type_name -> did.v1.DIDNamespace + 11, // 1: did.v1.Document.verification_methods:type_name -> did.v1.VerificationMethod + 13, // 2: did.v1.Metadata.public:type_name -> did.v1.Metadata.PublicEntry + 14, // 3: did.v1.Metadata.private:type_name -> did.v1.Metadata.PrivateEntry + 16, // 4: did.v1.Permissions.grants:type_name -> did.v1.DIDNamespace + 17, // 5: did.v1.Permissions.scopes:type_name -> did.v1.PermissionScope + 4, // 6: did.v1.Profile.metadata:type_name -> did.v1.Metadata + 18, // 7: did.v1.PubKey.role:type_name -> did.v1.KeyRole + 19, // 8: did.v1.PubKey.algorithm:type_name -> did.v1.KeyAlgorithm + 20, // 9: did.v1.PubKey.encoding:type_name -> did.v1.KeyEncoding + 15, // 10: did.v1.PubKey.jwk:type_name -> did.v1.PubKey.JwkEntry + 5, // 11: did.v1.Service.permissions:type_name -> did.v1.Permissions + 21, // 12: did.v1.Service.openid:type_name -> did.v1.OpenIDConfig + 4, // 13: did.v1.Service.metadata:type_name -> did.v1.Metadata + 16, // 14: did.v1.VerificationMethod.method:type_name -> did.v1.DIDNamespace + 8, // 15: did.v1.VerificationMethod.public_key:type_name -> did.v1.PubKey + 9, // 16: did.v1.VerificationMethod.service:type_name -> did.v1.Service + 7, // 17: did.v1.Metadata.PrivateEntry.value:type_name -> did.v1.Property + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name } func init() { file_did_v1_models_proto_init() } @@ -7936,10 +10470,11 @@ func file_did_v1_models_proto_init() { if File_did_v1_models_proto != nil { return } + file_did_v1_constants_proto_init() file_did_v1_genesis_proto_init() if !protoimpl.UnsafeEnabled { file_did_v1_models_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DID); i { + switch v := v.(*Accumulator); i { case 0: return &v.state case 1: @@ -7963,7 +10498,7 @@ func file_did_v1_models_proto_init() { } } file_did_v1_models_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Document); i { + switch v := v.(*DID); i { case 0: return &v.state case 1: @@ -7975,7 +10510,7 @@ func file_did_v1_models_proto_init() { } } file_did_v1_models_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Metadata); i { + switch v := v.(*Document); i { case 0: return &v.state case 1: @@ -7987,7 +10522,7 @@ func file_did_v1_models_proto_init() { } } file_did_v1_models_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Permissions); i { + switch v := v.(*Metadata); i { case 0: return &v.state case 1: @@ -7999,7 +10534,7 @@ func file_did_v1_models_proto_init() { } } file_did_v1_models_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Profile); i { + switch v := v.(*Permissions); i { case 0: return &v.state case 1: @@ -8011,7 +10546,7 @@ func file_did_v1_models_proto_init() { } } file_did_v1_models_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Property); i { + switch v := v.(*Profile); i { case 0: return &v.state case 1: @@ -8023,7 +10558,7 @@ func file_did_v1_models_proto_init() { } } file_did_v1_models_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PubKey); i { + switch v := v.(*Property); i { case 0: return &v.state case 1: @@ -8035,6 +10570,42 @@ func file_did_v1_models_proto_init() { } } file_did_v1_models_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PubKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_did_v1_models_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Service); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_did_v1_models_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Token); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_did_v1_models_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VerificationMethod); i { case 0: return &v.state @@ -8046,6 +10617,18 @@ func file_did_v1_models_proto_init() { return nil } } + file_did_v1_models_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Witness); 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{ @@ -8053,7 +10636,7 @@ func file_did_v1_models_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_did_v1_models_proto_rawDesc, NumEnums: 0, - NumMessages: 12, + NumMessages: 16, NumExtensions: 0, NumServices: 0, }, diff --git a/api/did/v1/query.pulsar.go b/api/did/v1/query.pulsar.go index 3d81ca0da..1cc237c18 100644 --- a/api/did/v1/query.pulsar.go +++ b/api/did/v1/query.pulsar.go @@ -10,28 +10,86 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" io "io" reflect "reflect" - sort "sort" sync "sync" ) +var _ protoreflect.List = (*_QueryRequest_4_list)(nil) + +type _QueryRequest_4_list struct { + list *[]*Credential +} + +func (x *_QueryRequest_4_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_QueryRequest_4_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_QueryRequest_4_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*Credential) + (*x.list)[i] = concreteValue +} + +func (x *_QueryRequest_4_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*Credential) + *x.list = append(*x.list, concreteValue) +} + +func (x *_QueryRequest_4_list) AppendMutable() protoreflect.Value { + v := new(Credential) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryRequest_4_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_QueryRequest_4_list) NewElement() protoreflect.Value { + v := new(Credential) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryRequest_4_list) IsValid() bool { + return x.list != nil +} + var ( - md_QueryParamsRequest protoreflect.MessageDescriptor + md_QueryRequest protoreflect.MessageDescriptor + fd_QueryRequest_did protoreflect.FieldDescriptor + fd_QueryRequest_origin protoreflect.FieldDescriptor + fd_QueryRequest_subject protoreflect.FieldDescriptor + fd_QueryRequest_credentials protoreflect.FieldDescriptor ) func init() { file_did_v1_query_proto_init() - md_QueryParamsRequest = File_did_v1_query_proto.Messages().ByName("QueryParamsRequest") + md_QueryRequest = File_did_v1_query_proto.Messages().ByName("QueryRequest") + fd_QueryRequest_did = md_QueryRequest.Fields().ByName("did") + fd_QueryRequest_origin = md_QueryRequest.Fields().ByName("origin") + fd_QueryRequest_subject = md_QueryRequest.Fields().ByName("subject") + fd_QueryRequest_credentials = md_QueryRequest.Fields().ByName("credentials") } -var _ protoreflect.Message = (*fastReflection_QueryParamsRequest)(nil) +var _ protoreflect.Message = (*fastReflection_QueryRequest)(nil) -type fastReflection_QueryParamsRequest QueryParamsRequest +type fastReflection_QueryRequest QueryRequest -func (x *QueryParamsRequest) ProtoReflect() protoreflect.Message { - return (*fastReflection_QueryParamsRequest)(x) +func (x *QueryRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryRequest)(x) } -func (x *QueryParamsRequest) slowProtoReflect() protoreflect.Message { +func (x *QueryRequest) slowProtoReflect() protoreflect.Message { mi := &file_did_v1_query_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -43,43 +101,43 @@ func (x *QueryParamsRequest) slowProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -var _fastReflection_QueryParamsRequest_messageType fastReflection_QueryParamsRequest_messageType -var _ protoreflect.MessageType = fastReflection_QueryParamsRequest_messageType{} +var _fastReflection_QueryRequest_messageType fastReflection_QueryRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryRequest_messageType{} -type fastReflection_QueryParamsRequest_messageType struct{} +type fastReflection_QueryRequest_messageType struct{} -func (x fastReflection_QueryParamsRequest_messageType) Zero() protoreflect.Message { - return (*fastReflection_QueryParamsRequest)(nil) +func (x fastReflection_QueryRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryRequest)(nil) } -func (x fastReflection_QueryParamsRequest_messageType) New() protoreflect.Message { - return new(fastReflection_QueryParamsRequest) +func (x fastReflection_QueryRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryRequest) } -func (x fastReflection_QueryParamsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_QueryParamsRequest +func (x fastReflection_QueryRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryRequest } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_QueryParamsRequest) Descriptor() protoreflect.MessageDescriptor { - return md_QueryParamsRequest +func (x *fastReflection_QueryRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryRequest } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_QueryParamsRequest) Type() protoreflect.MessageType { - return _fastReflection_QueryParamsRequest_messageType +func (x *fastReflection_QueryRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryRequest_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_QueryParamsRequest) New() protoreflect.Message { - return new(fastReflection_QueryParamsRequest) +func (x *fastReflection_QueryRequest) New() protoreflect.Message { + return new(fastReflection_QueryRequest) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_QueryParamsRequest) Interface() protoreflect.ProtoMessage { - return (*QueryParamsRequest)(x) +func (x *fastReflection_QueryRequest) Interface() protoreflect.ProtoMessage { + return (*QueryRequest)(x) } // Range iterates over every populated field in an undefined order, @@ -87,7 +145,31 @@ func (x *fastReflection_QueryParamsRequest) Interface() protoreflect.ProtoMessag // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_QueryParamsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +func (x *fastReflection_QueryRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Did != "" { + value := protoreflect.ValueOfString(x.Did) + if !f(fd_QueryRequest_did, value) { + return + } + } + if x.Origin != "" { + value := protoreflect.ValueOfString(x.Origin) + if !f(fd_QueryRequest_origin, value) { + return + } + } + if x.Subject != "" { + value := protoreflect.ValueOfString(x.Subject) + if !f(fd_QueryRequest_subject, value) { + return + } + } + if len(x.Credentials) != 0 { + value := protoreflect.ValueOfList(&_QueryRequest_4_list{list: &x.Credentials}) + if !f(fd_QueryRequest_credentials, value) { + return + } + } } // Has reports whether a field is populated. @@ -101,13 +183,21 @@ func (x *fastReflection_QueryParamsRequest) Range(f func(protoreflect.FieldDescr // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_QueryParamsRequest) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_QueryRequest) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { + case "did.v1.QueryRequest.did": + return x.Did != "" + case "did.v1.QueryRequest.origin": + return x.Origin != "" + case "did.v1.QueryRequest.subject": + return x.Subject != "" + case "did.v1.QueryRequest.credentials": + return len(x.Credentials) != 0 default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryParamsRequest")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryRequest")) } - panic(fmt.Errorf("message did.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.QueryRequest does not contain field %s", fd.FullName())) } } @@ -117,13 +207,21 @@ func (x *fastReflection_QueryParamsRequest) Has(fd protoreflect.FieldDescriptor) // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryParamsRequest) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_QueryRequest) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { + case "did.v1.QueryRequest.did": + x.Did = "" + case "did.v1.QueryRequest.origin": + x.Origin = "" + case "did.v1.QueryRequest.subject": + x.Subject = "" + case "did.v1.QueryRequest.credentials": + x.Credentials = nil default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryParamsRequest")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryRequest")) } - panic(fmt.Errorf("message did.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.QueryRequest does not contain field %s", fd.FullName())) } } @@ -133,13 +231,28 @@ func (x *fastReflection_QueryParamsRequest) Clear(fd protoreflect.FieldDescripto // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_QueryParamsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_QueryRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { + case "did.v1.QueryRequest.did": + value := x.Did + return protoreflect.ValueOfString(value) + case "did.v1.QueryRequest.origin": + value := x.Origin + return protoreflect.ValueOfString(value) + case "did.v1.QueryRequest.subject": + value := x.Subject + return protoreflect.ValueOfString(value) + case "did.v1.QueryRequest.credentials": + if len(x.Credentials) == 0 { + return protoreflect.ValueOfList(&_QueryRequest_4_list{}) + } + listValue := &_QueryRequest_4_list{list: &x.Credentials} + return protoreflect.ValueOfList(listValue) default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryParamsRequest")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryRequest")) } - panic(fmt.Errorf("message did.v1.QueryParamsRequest does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message did.v1.QueryRequest does not contain field %s", descriptor.FullName())) } } @@ -153,13 +266,23 @@ func (x *fastReflection_QueryParamsRequest) Get(descriptor protoreflect.FieldDes // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryParamsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_QueryRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { + case "did.v1.QueryRequest.did": + x.Did = value.Interface().(string) + case "did.v1.QueryRequest.origin": + x.Origin = value.Interface().(string) + case "did.v1.QueryRequest.subject": + x.Subject = value.Interface().(string) + case "did.v1.QueryRequest.credentials": + lv := value.List() + clv := lv.(*_QueryRequest_4_list) + x.Credentials = *clv.list default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryParamsRequest")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryRequest")) } - panic(fmt.Errorf("message did.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.QueryRequest does not contain field %s", fd.FullName())) } } @@ -173,36 +296,57 @@ func (x *fastReflection_QueryParamsRequest) Set(fd protoreflect.FieldDescriptor, // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryParamsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_QueryRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "did.v1.QueryRequest.credentials": + if x.Credentials == nil { + x.Credentials = []*Credential{} + } + value := &_QueryRequest_4_list{list: &x.Credentials} + return protoreflect.ValueOfList(value) + case "did.v1.QueryRequest.did": + panic(fmt.Errorf("field did of message did.v1.QueryRequest is not mutable")) + case "did.v1.QueryRequest.origin": + panic(fmt.Errorf("field origin of message did.v1.QueryRequest is not mutable")) + case "did.v1.QueryRequest.subject": + panic(fmt.Errorf("field subject of message did.v1.QueryRequest is not mutable")) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryParamsRequest")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryRequest")) } - panic(fmt.Errorf("message did.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.QueryRequest does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_QueryParamsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_QueryRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "did.v1.QueryRequest.did": + return protoreflect.ValueOfString("") + case "did.v1.QueryRequest.origin": + return protoreflect.ValueOfString("") + case "did.v1.QueryRequest.subject": + return protoreflect.ValueOfString("") + case "did.v1.QueryRequest.credentials": + list := []*Credential{} + return protoreflect.ValueOfList(&_QueryRequest_4_list{list: &list}) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryParamsRequest")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryRequest")) } - panic(fmt.Errorf("message did.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.QueryRequest does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_QueryParamsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_QueryRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.QueryParamsRequest", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in did.v1.QueryRequest", d.FullName())) } panic("unreachable") } @@ -210,7 +354,7 @@ func (x *fastReflection_QueryParamsRequest) WhichOneof(d protoreflect.OneofDescr // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_QueryParamsRequest) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_QueryRequest) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -221,7 +365,7 @@ func (x *fastReflection_QueryParamsRequest) GetUnknown() protoreflect.RawFields // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryParamsRequest) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_QueryRequest) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -233,7 +377,7 @@ func (x *fastReflection_QueryParamsRequest) SetUnknown(fields protoreflect.RawFi // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_QueryParamsRequest) IsValid() bool { +func (x *fastReflection_QueryRequest) IsValid() bool { return x != nil } @@ -243,9 +387,9 @@ func (x *fastReflection_QueryParamsRequest) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_QueryRequest) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*QueryParamsRequest) + x := input.Message.Interface().(*QueryRequest) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -257,6 +401,24 @@ func (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods { var n int var l int _ = l + l = len(x.Did) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Origin) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Subject) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.Credentials) > 0 { + for _, e := range x.Credentials { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -267,7 +429,7 @@ func (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods { } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*QueryParamsRequest) + x := input.Message.Interface().(*QueryRequest) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -286,6 +448,43 @@ func (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.Credentials) > 0 { + for iNdEx := len(x.Credentials) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Credentials[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x22 + } + } + if len(x.Subject) > 0 { + i -= len(x.Subject) + copy(dAtA[i:], x.Subject) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Subject))) + i-- + dAtA[i] = 0x1a + } + if len(x.Origin) > 0 { + i -= len(x.Origin) + copy(dAtA[i:], x.Origin) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Origin))) + i-- + dAtA[i] = 0x12 + } + if len(x.Did) > 0 { + i -= len(x.Did) + copy(dAtA[i:], x.Did) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Did))) + i-- + dAtA[i] = 0xa + } if input.Buf != nil { input.Buf = append(input.Buf, dAtA...) } else { @@ -297,7 +496,7 @@ func (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods { }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*QueryParamsRequest) + x := input.Message.Interface().(*QueryRequest) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -329,12 +528,142 @@ func (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Did = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Origin = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Subject = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Credentials", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Credentials = append(x.Credentials, &Credential{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Credentials[len(x.Credentials)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -805,426 +1134,6 @@ func (x *fastReflection_QueryParamsResponse) ProtoMethods() *protoiface.Methods } } -var ( - md_QueryAccountsRequest protoreflect.MessageDescriptor - fd_QueryAccountsRequest_did protoreflect.FieldDescriptor -) - -func init() { - file_did_v1_query_proto_init() - md_QueryAccountsRequest = File_did_v1_query_proto.Messages().ByName("QueryAccountsRequest") - fd_QueryAccountsRequest_did = md_QueryAccountsRequest.Fields().ByName("did") -} - -var _ protoreflect.Message = (*fastReflection_QueryAccountsRequest)(nil) - -type fastReflection_QueryAccountsRequest QueryAccountsRequest - -func (x *QueryAccountsRequest) ProtoReflect() protoreflect.Message { - return (*fastReflection_QueryAccountsRequest)(x) -} - -func (x *QueryAccountsRequest) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_query_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_QueryAccountsRequest_messageType fastReflection_QueryAccountsRequest_messageType -var _ protoreflect.MessageType = fastReflection_QueryAccountsRequest_messageType{} - -type fastReflection_QueryAccountsRequest_messageType struct{} - -func (x fastReflection_QueryAccountsRequest_messageType) Zero() protoreflect.Message { - return (*fastReflection_QueryAccountsRequest)(nil) -} -func (x fastReflection_QueryAccountsRequest_messageType) New() protoreflect.Message { - return new(fastReflection_QueryAccountsRequest) -} -func (x fastReflection_QueryAccountsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_QueryAccountsRequest -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_QueryAccountsRequest) Descriptor() protoreflect.MessageDescriptor { - return md_QueryAccountsRequest -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_QueryAccountsRequest) Type() protoreflect.MessageType { - return _fastReflection_QueryAccountsRequest_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_QueryAccountsRequest) New() protoreflect.Message { - return new(fastReflection_QueryAccountsRequest) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_QueryAccountsRequest) Interface() protoreflect.ProtoMessage { - return (*QueryAccountsRequest)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_QueryAccountsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Did != "" { - value := protoreflect.ValueOfString(x.Did) - if !f(fd_QueryAccountsRequest_did, value) { - return - } - } -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_QueryAccountsRequest) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "did.v1.QueryAccountsRequest.did": - return x.Did != "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryAccountsRequest")) - } - panic(fmt.Errorf("message did.v1.QueryAccountsRequest does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryAccountsRequest) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "did.v1.QueryAccountsRequest.did": - x.Did = "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryAccountsRequest")) - } - panic(fmt.Errorf("message did.v1.QueryAccountsRequest does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_QueryAccountsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "did.v1.QueryAccountsRequest.did": - value := x.Did - return protoreflect.ValueOfString(value) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryAccountsRequest")) - } - panic(fmt.Errorf("message did.v1.QueryAccountsRequest does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryAccountsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "did.v1.QueryAccountsRequest.did": - x.Did = value.Interface().(string) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryAccountsRequest")) - } - panic(fmt.Errorf("message did.v1.QueryAccountsRequest does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryAccountsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.QueryAccountsRequest.did": - panic(fmt.Errorf("field did of message did.v1.QueryAccountsRequest is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryAccountsRequest")) - } - panic(fmt.Errorf("message did.v1.QueryAccountsRequest does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_QueryAccountsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.QueryAccountsRequest.did": - return protoreflect.ValueOfString("") - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryAccountsRequest")) - } - panic(fmt.Errorf("message did.v1.QueryAccountsRequest does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_QueryAccountsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.QueryAccountsRequest", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_QueryAccountsRequest) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryAccountsRequest) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_QueryAccountsRequest) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_QueryAccountsRequest) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*QueryAccountsRequest) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - l = len(x.Did) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*QueryAccountsRequest) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if len(x.Did) > 0 { - i -= len(x.Did) - copy(dAtA[i:], x.Did) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Did))) - i-- - dAtA[i] = 0xa - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*QueryAccountsRequest) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryAccountsRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryAccountsRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Did = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - var ( md_QueryAccountsResponse protoreflect.MessageDescriptor fd_QueryAccountsResponse_exists protoreflect.FieldDescriptor @@ -1245,7 +1154,7 @@ func (x *QueryAccountsResponse) ProtoReflect() protoreflect.Message { } func (x *QueryAccountsResponse) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_query_proto_msgTypes[3] + mi := &file_did_v1_query_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1635,581 +1544,74 @@ func (x *fastReflection_QueryAccountsResponse) ProtoMethods() *protoiface.Method } } -var ( - md_QueryCredentialsRequest protoreflect.MessageDescriptor - fd_QueryCredentialsRequest_did protoreflect.FieldDescriptor - fd_QueryCredentialsRequest_origin protoreflect.FieldDescriptor -) +var _ protoreflect.List = (*_QueryCredentialsResponse_4_list)(nil) -func init() { - file_did_v1_query_proto_init() - md_QueryCredentialsRequest = File_did_v1_query_proto.Messages().ByName("QueryCredentialsRequest") - fd_QueryCredentialsRequest_did = md_QueryCredentialsRequest.Fields().ByName("did") - fd_QueryCredentialsRequest_origin = md_QueryCredentialsRequest.Fields().ByName("origin") +type _QueryCredentialsResponse_4_list struct { + list *[]*Credential } -var _ protoreflect.Message = (*fastReflection_QueryCredentialsRequest)(nil) - -type fastReflection_QueryCredentialsRequest QueryCredentialsRequest - -func (x *QueryCredentialsRequest) ProtoReflect() protoreflect.Message { - return (*fastReflection_QueryCredentialsRequest)(x) -} - -func (x *QueryCredentialsRequest) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_query_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_QueryCredentialsRequest_messageType fastReflection_QueryCredentialsRequest_messageType -var _ protoreflect.MessageType = fastReflection_QueryCredentialsRequest_messageType{} - -type fastReflection_QueryCredentialsRequest_messageType struct{} - -func (x fastReflection_QueryCredentialsRequest_messageType) Zero() protoreflect.Message { - return (*fastReflection_QueryCredentialsRequest)(nil) -} -func (x fastReflection_QueryCredentialsRequest_messageType) New() protoreflect.Message { - return new(fastReflection_QueryCredentialsRequest) -} -func (x fastReflection_QueryCredentialsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_QueryCredentialsRequest -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_QueryCredentialsRequest) Descriptor() protoreflect.MessageDescriptor { - return md_QueryCredentialsRequest -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_QueryCredentialsRequest) Type() protoreflect.MessageType { - return _fastReflection_QueryCredentialsRequest_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_QueryCredentialsRequest) New() protoreflect.Message { - return new(fastReflection_QueryCredentialsRequest) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_QueryCredentialsRequest) Interface() protoreflect.ProtoMessage { - return (*QueryCredentialsRequest)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_QueryCredentialsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Did != "" { - value := protoreflect.ValueOfString(x.Did) - if !f(fd_QueryCredentialsRequest_did, value) { - return - } - } - if x.Origin != "" { - value := protoreflect.ValueOfString(x.Origin) - if !f(fd_QueryCredentialsRequest_origin, value) { - return - } - } -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_QueryCredentialsRequest) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "did.v1.QueryCredentialsRequest.did": - return x.Did != "" - case "did.v1.QueryCredentialsRequest.origin": - return x.Origin != "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryCredentialsRequest")) - } - panic(fmt.Errorf("message did.v1.QueryCredentialsRequest does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryCredentialsRequest) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "did.v1.QueryCredentialsRequest.did": - x.Did = "" - case "did.v1.QueryCredentialsRequest.origin": - x.Origin = "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryCredentialsRequest")) - } - panic(fmt.Errorf("message did.v1.QueryCredentialsRequest does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_QueryCredentialsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "did.v1.QueryCredentialsRequest.did": - value := x.Did - return protoreflect.ValueOfString(value) - case "did.v1.QueryCredentialsRequest.origin": - value := x.Origin - return protoreflect.ValueOfString(value) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryCredentialsRequest")) - } - panic(fmt.Errorf("message did.v1.QueryCredentialsRequest does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryCredentialsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "did.v1.QueryCredentialsRequest.did": - x.Did = value.Interface().(string) - case "did.v1.QueryCredentialsRequest.origin": - x.Origin = value.Interface().(string) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryCredentialsRequest")) - } - panic(fmt.Errorf("message did.v1.QueryCredentialsRequest does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryCredentialsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.QueryCredentialsRequest.did": - panic(fmt.Errorf("field did of message did.v1.QueryCredentialsRequest is not mutable")) - case "did.v1.QueryCredentialsRequest.origin": - panic(fmt.Errorf("field origin of message did.v1.QueryCredentialsRequest is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryCredentialsRequest")) - } - panic(fmt.Errorf("message did.v1.QueryCredentialsRequest does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_QueryCredentialsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.QueryCredentialsRequest.did": - return protoreflect.ValueOfString("") - case "did.v1.QueryCredentialsRequest.origin": - return protoreflect.ValueOfString("") - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryCredentialsRequest")) - } - panic(fmt.Errorf("message did.v1.QueryCredentialsRequest does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_QueryCredentialsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.QueryCredentialsRequest", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_QueryCredentialsRequest) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryCredentialsRequest) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_QueryCredentialsRequest) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_QueryCredentialsRequest) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*QueryCredentialsRequest) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - l = len(x.Did) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.Origin) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*QueryCredentialsRequest) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if len(x.Origin) > 0 { - i -= len(x.Origin) - copy(dAtA[i:], x.Origin) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Origin))) - i-- - dAtA[i] = 0x12 - } - if len(x.Did) > 0 { - i -= len(x.Did) - copy(dAtA[i:], x.Did) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Did))) - i-- - dAtA[i] = 0xa - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*QueryCredentialsRequest) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCredentialsRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCredentialsRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Did = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Origin = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - -var _ protoreflect.Map = (*_QueryCredentialsResponse_1_map)(nil) - -type _QueryCredentialsResponse_1_map struct { - m *map[string][]byte -} - -func (x *_QueryCredentialsResponse_1_map) Len() int { - if x.m == nil { +func (x *_QueryCredentialsResponse_4_list) Len() int { + if x.list == nil { return 0 } - return len(*x.m) + return len(*x.list) } -func (x *_QueryCredentialsResponse_1_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { - if x.m == nil { - return - } - for k, v := range *x.m { - mapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k)) - mapValue := protoreflect.ValueOfBytes(v) - if !f(mapKey, mapValue) { - break - } +func (x *_QueryCredentialsResponse_4_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_QueryCredentialsResponse_4_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*Credential) + (*x.list)[i] = concreteValue +} + +func (x *_QueryCredentialsResponse_4_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*Credential) + *x.list = append(*x.list, concreteValue) +} + +func (x *_QueryCredentialsResponse_4_list) AppendMutable() protoreflect.Value { + v := new(Credential) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryCredentialsResponse_4_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil } + *x.list = (*x.list)[:n] } -func (x *_QueryCredentialsResponse_1_map) Has(key protoreflect.MapKey) bool { - if x.m == nil { - return false - } - keyUnwrapped := key.String() - concreteValue := keyUnwrapped - _, ok := (*x.m)[concreteValue] - return ok +func (x *_QueryCredentialsResponse_4_list) NewElement() protoreflect.Value { + v := new(Credential) + return protoreflect.ValueOfMessage(v.ProtoReflect()) } -func (x *_QueryCredentialsResponse_1_map) Clear(key protoreflect.MapKey) { - if x.m == nil { - return - } - keyUnwrapped := key.String() - concreteKey := keyUnwrapped - delete(*x.m, concreteKey) -} - -func (x *_QueryCredentialsResponse_1_map) Get(key protoreflect.MapKey) protoreflect.Value { - if x.m == nil { - return protoreflect.Value{} - } - keyUnwrapped := key.String() - concreteKey := keyUnwrapped - v, ok := (*x.m)[concreteKey] - if !ok { - return protoreflect.Value{} - } - return protoreflect.ValueOfBytes(v) -} - -func (x *_QueryCredentialsResponse_1_map) Set(key protoreflect.MapKey, value protoreflect.Value) { - if !key.IsValid() || !value.IsValid() { - panic("invalid key or value provided") - } - keyUnwrapped := key.String() - concreteKey := keyUnwrapped - valueUnwrapped := value.Bytes() - concreteValue := valueUnwrapped - (*x.m)[concreteKey] = concreteValue -} - -func (x *_QueryCredentialsResponse_1_map) Mutable(key protoreflect.MapKey) protoreflect.Value { - panic("should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message") -} - -func (x *_QueryCredentialsResponse_1_map) NewValue() protoreflect.Value { - var v []byte - return protoreflect.ValueOfBytes(v) -} - -func (x *_QueryCredentialsResponse_1_map) IsValid() bool { - return x.m != nil +func (x *_QueryCredentialsResponse_4_list) IsValid() bool { + return x.list != nil } var ( md_QueryCredentialsResponse protoreflect.MessageDescriptor + fd_QueryCredentialsResponse_success protoreflect.FieldDescriptor + fd_QueryCredentialsResponse_subject protoreflect.FieldDescriptor + fd_QueryCredentialsResponse_origin protoreflect.FieldDescriptor fd_QueryCredentialsResponse_credentials protoreflect.FieldDescriptor + fd_QueryCredentialsResponse_error protoreflect.FieldDescriptor ) func init() { file_did_v1_query_proto_init() md_QueryCredentialsResponse = File_did_v1_query_proto.Messages().ByName("QueryCredentialsResponse") + fd_QueryCredentialsResponse_success = md_QueryCredentialsResponse.Fields().ByName("success") + fd_QueryCredentialsResponse_subject = md_QueryCredentialsResponse.Fields().ByName("subject") + fd_QueryCredentialsResponse_origin = md_QueryCredentialsResponse.Fields().ByName("origin") fd_QueryCredentialsResponse_credentials = md_QueryCredentialsResponse.Fields().ByName("credentials") + fd_QueryCredentialsResponse_error = md_QueryCredentialsResponse.Fields().ByName("error") } var _ protoreflect.Message = (*fastReflection_QueryCredentialsResponse)(nil) @@ -2221,7 +1623,7 @@ func (x *QueryCredentialsResponse) ProtoReflect() protoreflect.Message { } func (x *QueryCredentialsResponse) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_query_proto_msgTypes[5] + mi := &file_did_v1_query_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2277,12 +1679,36 @@ func (x *fastReflection_QueryCredentialsResponse) Interface() protoreflect.Proto // While iterating, mutating operations may only be performed // on the current field descriptor. func (x *fastReflection_QueryCredentialsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Success != false { + value := protoreflect.ValueOfBool(x.Success) + if !f(fd_QueryCredentialsResponse_success, value) { + return + } + } + if x.Subject != "" { + value := protoreflect.ValueOfString(x.Subject) + if !f(fd_QueryCredentialsResponse_subject, value) { + return + } + } + if x.Origin != "" { + value := protoreflect.ValueOfString(x.Origin) + if !f(fd_QueryCredentialsResponse_origin, value) { + return + } + } if len(x.Credentials) != 0 { - value := protoreflect.ValueOfMap(&_QueryCredentialsResponse_1_map{m: &x.Credentials}) + value := protoreflect.ValueOfList(&_QueryCredentialsResponse_4_list{list: &x.Credentials}) if !f(fd_QueryCredentialsResponse_credentials, value) { return } } + if x.Error != "" { + value := protoreflect.ValueOfString(x.Error) + if !f(fd_QueryCredentialsResponse_error, value) { + return + } + } } // Has reports whether a field is populated. @@ -2298,8 +1724,16 @@ func (x *fastReflection_QueryCredentialsResponse) Range(f func(protoreflect.Fiel // a repeated field is populated if it is non-empty. func (x *fastReflection_QueryCredentialsResponse) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { + case "did.v1.QueryCredentialsResponse.success": + return x.Success != false + case "did.v1.QueryCredentialsResponse.subject": + return x.Subject != "" + case "did.v1.QueryCredentialsResponse.origin": + return x.Origin != "" case "did.v1.QueryCredentialsResponse.credentials": return len(x.Credentials) != 0 + case "did.v1.QueryCredentialsResponse.error": + return x.Error != "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryCredentialsResponse")) @@ -2316,8 +1750,16 @@ func (x *fastReflection_QueryCredentialsResponse) Has(fd protoreflect.FieldDescr // Clear is a mutating operation and unsafe for concurrent use. func (x *fastReflection_QueryCredentialsResponse) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { + case "did.v1.QueryCredentialsResponse.success": + x.Success = false + case "did.v1.QueryCredentialsResponse.subject": + x.Subject = "" + case "did.v1.QueryCredentialsResponse.origin": + x.Origin = "" case "did.v1.QueryCredentialsResponse.credentials": x.Credentials = nil + case "did.v1.QueryCredentialsResponse.error": + x.Error = "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryCredentialsResponse")) @@ -2334,12 +1776,24 @@ func (x *fastReflection_QueryCredentialsResponse) Clear(fd protoreflect.FieldDes // of the value; to obtain a mutable reference, use Mutable. func (x *fastReflection_QueryCredentialsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { + case "did.v1.QueryCredentialsResponse.success": + value := x.Success + return protoreflect.ValueOfBool(value) + case "did.v1.QueryCredentialsResponse.subject": + value := x.Subject + return protoreflect.ValueOfString(value) + case "did.v1.QueryCredentialsResponse.origin": + value := x.Origin + return protoreflect.ValueOfString(value) case "did.v1.QueryCredentialsResponse.credentials": if len(x.Credentials) == 0 { - return protoreflect.ValueOfMap(&_QueryCredentialsResponse_1_map{}) + return protoreflect.ValueOfList(&_QueryCredentialsResponse_4_list{}) } - mapValue := &_QueryCredentialsResponse_1_map{m: &x.Credentials} - return protoreflect.ValueOfMap(mapValue) + listValue := &_QueryCredentialsResponse_4_list{list: &x.Credentials} + return protoreflect.ValueOfList(listValue) + case "did.v1.QueryCredentialsResponse.error": + value := x.Error + return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryCredentialsResponse")) @@ -2360,10 +1814,18 @@ func (x *fastReflection_QueryCredentialsResponse) Get(descriptor protoreflect.Fi // Set is a mutating operation and unsafe for concurrent use. func (x *fastReflection_QueryCredentialsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { + case "did.v1.QueryCredentialsResponse.success": + x.Success = value.Bool() + case "did.v1.QueryCredentialsResponse.subject": + x.Subject = value.Interface().(string) + case "did.v1.QueryCredentialsResponse.origin": + x.Origin = value.Interface().(string) case "did.v1.QueryCredentialsResponse.credentials": - mv := value.Map() - cmv := mv.(*_QueryCredentialsResponse_1_map) - x.Credentials = *cmv.m + lv := value.List() + clv := lv.(*_QueryCredentialsResponse_4_list) + x.Credentials = *clv.list + case "did.v1.QueryCredentialsResponse.error": + x.Error = value.Interface().(string) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryCredentialsResponse")) @@ -2386,10 +1848,18 @@ func (x *fastReflection_QueryCredentialsResponse) Mutable(fd protoreflect.FieldD switch fd.FullName() { case "did.v1.QueryCredentialsResponse.credentials": if x.Credentials == nil { - x.Credentials = make(map[string][]byte) + x.Credentials = []*Credential{} } - value := &_QueryCredentialsResponse_1_map{m: &x.Credentials} - return protoreflect.ValueOfMap(value) + value := &_QueryCredentialsResponse_4_list{list: &x.Credentials} + return protoreflect.ValueOfList(value) + case "did.v1.QueryCredentialsResponse.success": + panic(fmt.Errorf("field success of message did.v1.QueryCredentialsResponse is not mutable")) + case "did.v1.QueryCredentialsResponse.subject": + panic(fmt.Errorf("field subject of message did.v1.QueryCredentialsResponse is not mutable")) + case "did.v1.QueryCredentialsResponse.origin": + panic(fmt.Errorf("field origin of message did.v1.QueryCredentialsResponse is not mutable")) + case "did.v1.QueryCredentialsResponse.error": + panic(fmt.Errorf("field error of message did.v1.QueryCredentialsResponse is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryCredentialsResponse")) @@ -2403,9 +1873,17 @@ func (x *fastReflection_QueryCredentialsResponse) Mutable(fd protoreflect.FieldD // For lists, maps, and messages, this returns a new, empty, mutable value. func (x *fastReflection_QueryCredentialsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "did.v1.QueryCredentialsResponse.success": + return protoreflect.ValueOfBool(false) + case "did.v1.QueryCredentialsResponse.subject": + return protoreflect.ValueOfString("") + case "did.v1.QueryCredentialsResponse.origin": + return protoreflect.ValueOfString("") case "did.v1.QueryCredentialsResponse.credentials": - m := make(map[string][]byte) - return protoreflect.ValueOfMap(&_QueryCredentialsResponse_1_map{m: &m}) + list := []*Credential{} + return protoreflect.ValueOfList(&_QueryCredentialsResponse_4_list{list: &list}) + case "did.v1.QueryCredentialsResponse.error": + return protoreflect.ValueOfString("") default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryCredentialsResponse")) @@ -2475,28 +1953,27 @@ func (x *fastReflection_QueryCredentialsResponse) ProtoMethods() *protoiface.Met var n int var l int _ = l + if x.Success { + n += 2 + } + l = len(x.Subject) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Origin) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if len(x.Credentials) > 0 { - SiZeMaP := func(k string, v []byte) { - l = 1 + len(v) + runtime.Sov(uint64(len(v))) - mapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + l - n += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize)) - } - if options.Deterministic { - sortme := make([]string, 0, len(x.Credentials)) - for k := range x.Credentials { - sortme = append(sortme, k) - } - sort.Strings(sortme) - for _, k := range sortme { - v := x.Credentials[k] - SiZeMaP(k, v) - } - } else { - for k, v := range x.Credentials { - SiZeMaP(k, v) - } + for _, e := range x.Credentials { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) } } + l = len(x.Error) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -2526,48 +2003,52 @@ func (x *fastReflection_QueryCredentialsResponse) ProtoMethods() *protoiface.Met i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.Error) > 0 { + i -= len(x.Error) + copy(dAtA[i:], x.Error) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Error))) + i-- + dAtA[i] = 0x2a + } if len(x.Credentials) > 0 { - MaRsHaLmAp := func(k string, v []byte) (protoiface.MarshalOutput, error) { - baseI := i - i -= len(v) - copy(dAtA[i:], v) - i = runtime.EncodeVarint(dAtA, i, uint64(len(v))) + for iNdEx := len(x.Credentials) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Credentials[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) i-- - dAtA[i] = 0x12 - i -= len(k) - copy(dAtA[i:], k) - i = runtime.EncodeVarint(dAtA, i, uint64(len(k))) - i-- - dAtA[i] = 0xa - i = runtime.EncodeVarint(dAtA, i, uint64(baseI-i)) - i-- - dAtA[i] = 0xa - return protoiface.MarshalOutput{}, nil + dAtA[i] = 0x22 } - if options.Deterministic { - keysForCredentials := make([]string, 0, len(x.Credentials)) - for k := range x.Credentials { - keysForCredentials = append(keysForCredentials, string(k)) - } - sort.Slice(keysForCredentials, func(i, j int) bool { - return keysForCredentials[i] < keysForCredentials[j] - }) - for iNdEx := len(keysForCredentials) - 1; iNdEx >= 0; iNdEx-- { - v := x.Credentials[string(keysForCredentials[iNdEx])] - out, err := MaRsHaLmAp(keysForCredentials[iNdEx], v) - if err != nil { - return out, err - } - } + } + if len(x.Origin) > 0 { + i -= len(x.Origin) + copy(dAtA[i:], x.Origin) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Origin))) + i-- + dAtA[i] = 0x1a + } + if len(x.Subject) > 0 { + i -= len(x.Subject) + copy(dAtA[i:], x.Subject) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Subject))) + i-- + dAtA[i] = 0x12 + } + if x.Success { + i-- + if x.Success { + dAtA[i] = 1 } else { - for k := range x.Credentials { - v := x.Credentials[k] - out, err := MaRsHaLmAp(k, v) - if err != nil { - return out, err - } - } + dAtA[i] = 0 } + i-- + dAtA[i] = 0x8 } if input.Buf != nil { input.Buf = append(input.Buf, dAtA...) @@ -2619,6 +2100,90 @@ func (x *fastReflection_QueryCredentialsResponse) ProtoMethods() *protoiface.Met } switch fieldNum { case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Success = bool(v != 0) + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Subject = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Origin = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Credentials", wireType) } @@ -2647,496 +2212,14 @@ func (x *fastReflection_QueryCredentialsResponse) ProtoMethods() *protoiface.Met if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - if x.Credentials == nil { - x.Credentials = make(map[string][]byte) - } - var mapkey string - var mapvalue []byte - for iNdEx < postIndex { - entryPreIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - if fieldNum == 1 { - var stringLenmapkey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapkey |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapkey := int(stringLenmapkey) - if intStringLenmapkey < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postStringIndexmapkey := iNdEx + intStringLenmapkey - if postStringIndexmapkey < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postStringIndexmapkey > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) - iNdEx = postStringIndexmapkey - } else if fieldNum == 2 { - var mapbyteLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - mapbyteLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intMapbyteLen := int(mapbyteLen) - if intMapbyteLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postbytesIndex := iNdEx + intMapbyteLen - if postbytesIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postbytesIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - mapvalue = make([]byte, mapbyteLen) - copy(mapvalue, dAtA[iNdEx:postbytesIndex]) - iNdEx = postbytesIndex - } else { - iNdEx = entryPreIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > postIndex { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - x.Credentials[mapkey] = mapvalue - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { + x.Credentials = append(x.Credentials, &Credential{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Credentials[len(x.Credentials)-1]); err != nil { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - -var ( - md_QueryIdentitiesRequest protoreflect.MessageDescriptor - fd_QueryIdentitiesRequest_did protoreflect.FieldDescriptor -) - -func init() { - file_did_v1_query_proto_init() - md_QueryIdentitiesRequest = File_did_v1_query_proto.Messages().ByName("QueryIdentitiesRequest") - fd_QueryIdentitiesRequest_did = md_QueryIdentitiesRequest.Fields().ByName("did") -} - -var _ protoreflect.Message = (*fastReflection_QueryIdentitiesRequest)(nil) - -type fastReflection_QueryIdentitiesRequest QueryIdentitiesRequest - -func (x *QueryIdentitiesRequest) ProtoReflect() protoreflect.Message { - return (*fastReflection_QueryIdentitiesRequest)(x) -} - -func (x *QueryIdentitiesRequest) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_query_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_QueryIdentitiesRequest_messageType fastReflection_QueryIdentitiesRequest_messageType -var _ protoreflect.MessageType = fastReflection_QueryIdentitiesRequest_messageType{} - -type fastReflection_QueryIdentitiesRequest_messageType struct{} - -func (x fastReflection_QueryIdentitiesRequest_messageType) Zero() protoreflect.Message { - return (*fastReflection_QueryIdentitiesRequest)(nil) -} -func (x fastReflection_QueryIdentitiesRequest_messageType) New() protoreflect.Message { - return new(fastReflection_QueryIdentitiesRequest) -} -func (x fastReflection_QueryIdentitiesRequest_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_QueryIdentitiesRequest -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_QueryIdentitiesRequest) Descriptor() protoreflect.MessageDescriptor { - return md_QueryIdentitiesRequest -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_QueryIdentitiesRequest) Type() protoreflect.MessageType { - return _fastReflection_QueryIdentitiesRequest_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_QueryIdentitiesRequest) New() protoreflect.Message { - return new(fastReflection_QueryIdentitiesRequest) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_QueryIdentitiesRequest) Interface() protoreflect.ProtoMessage { - return (*QueryIdentitiesRequest)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_QueryIdentitiesRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Did != "" { - value := protoreflect.ValueOfString(x.Did) - if !f(fd_QueryIdentitiesRequest_did, value) { - return - } - } -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_QueryIdentitiesRequest) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "did.v1.QueryIdentitiesRequest.did": - return x.Did != "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryIdentitiesRequest")) - } - panic(fmt.Errorf("message did.v1.QueryIdentitiesRequest does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryIdentitiesRequest) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "did.v1.QueryIdentitiesRequest.did": - x.Did = "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryIdentitiesRequest")) - } - panic(fmt.Errorf("message did.v1.QueryIdentitiesRequest does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_QueryIdentitiesRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "did.v1.QueryIdentitiesRequest.did": - value := x.Did - return protoreflect.ValueOfString(value) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryIdentitiesRequest")) - } - panic(fmt.Errorf("message did.v1.QueryIdentitiesRequest does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryIdentitiesRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "did.v1.QueryIdentitiesRequest.did": - x.Did = value.Interface().(string) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryIdentitiesRequest")) - } - panic(fmt.Errorf("message did.v1.QueryIdentitiesRequest does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryIdentitiesRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.QueryIdentitiesRequest.did": - panic(fmt.Errorf("field did of message did.v1.QueryIdentitiesRequest is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryIdentitiesRequest")) - } - panic(fmt.Errorf("message did.v1.QueryIdentitiesRequest does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_QueryIdentitiesRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.QueryIdentitiesRequest.did": - return protoreflect.ValueOfString("") - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryIdentitiesRequest")) - } - panic(fmt.Errorf("message did.v1.QueryIdentitiesRequest does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_QueryIdentitiesRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.QueryIdentitiesRequest", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_QueryIdentitiesRequest) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryIdentitiesRequest) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_QueryIdentitiesRequest) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_QueryIdentitiesRequest) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*QueryIdentitiesRequest) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - l = len(x.Did) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*QueryIdentitiesRequest) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if len(x.Did) > 0 { - i -= len(x.Did) - copy(dAtA[i:], x.Did) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Did))) - i-- - dAtA[i] = 0xa - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*QueryIdentitiesRequest) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryIdentitiesRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryIdentitiesRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 5: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3164,975 +2247,7 @@ func (x *fastReflection_QueryIdentitiesRequest) ProtoMethods() *protoiface.Metho if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.Did = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - -var _ protoreflect.List = (*_QueryIdentitiesResponse_2_list)(nil) - -type _QueryIdentitiesResponse_2_list struct { - list *[]*VerificationMethod -} - -func (x *_QueryIdentitiesResponse_2_list) Len() int { - if x.list == nil { - return 0 - } - return len(*x.list) -} - -func (x *_QueryIdentitiesResponse_2_list) Get(i int) protoreflect.Value { - return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) -} - -func (x *_QueryIdentitiesResponse_2_list) Set(i int, value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*VerificationMethod) - (*x.list)[i] = concreteValue -} - -func (x *_QueryIdentitiesResponse_2_list) Append(value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*VerificationMethod) - *x.list = append(*x.list, concreteValue) -} - -func (x *_QueryIdentitiesResponse_2_list) AppendMutable() protoreflect.Value { - v := new(VerificationMethod) - *x.list = append(*x.list, v) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_QueryIdentitiesResponse_2_list) Truncate(n int) { - for i := n; i < len(*x.list); i++ { - (*x.list)[i] = nil - } - *x.list = (*x.list)[:n] -} - -func (x *_QueryIdentitiesResponse_2_list) NewElement() protoreflect.Value { - v := new(VerificationMethod) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_QueryIdentitiesResponse_2_list) IsValid() bool { - return x.list != nil -} - -var ( - md_QueryIdentitiesResponse protoreflect.MessageDescriptor - fd_QueryIdentitiesResponse_exists protoreflect.FieldDescriptor - fd_QueryIdentitiesResponse_verificationMethod protoreflect.FieldDescriptor -) - -func init() { - file_did_v1_query_proto_init() - md_QueryIdentitiesResponse = File_did_v1_query_proto.Messages().ByName("QueryIdentitiesResponse") - fd_QueryIdentitiesResponse_exists = md_QueryIdentitiesResponse.Fields().ByName("exists") - fd_QueryIdentitiesResponse_verificationMethod = md_QueryIdentitiesResponse.Fields().ByName("verificationMethod") -} - -var _ protoreflect.Message = (*fastReflection_QueryIdentitiesResponse)(nil) - -type fastReflection_QueryIdentitiesResponse QueryIdentitiesResponse - -func (x *QueryIdentitiesResponse) ProtoReflect() protoreflect.Message { - return (*fastReflection_QueryIdentitiesResponse)(x) -} - -func (x *QueryIdentitiesResponse) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_query_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_QueryIdentitiesResponse_messageType fastReflection_QueryIdentitiesResponse_messageType -var _ protoreflect.MessageType = fastReflection_QueryIdentitiesResponse_messageType{} - -type fastReflection_QueryIdentitiesResponse_messageType struct{} - -func (x fastReflection_QueryIdentitiesResponse_messageType) Zero() protoreflect.Message { - return (*fastReflection_QueryIdentitiesResponse)(nil) -} -func (x fastReflection_QueryIdentitiesResponse_messageType) New() protoreflect.Message { - return new(fastReflection_QueryIdentitiesResponse) -} -func (x fastReflection_QueryIdentitiesResponse_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_QueryIdentitiesResponse -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_QueryIdentitiesResponse) Descriptor() protoreflect.MessageDescriptor { - return md_QueryIdentitiesResponse -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_QueryIdentitiesResponse) Type() protoreflect.MessageType { - return _fastReflection_QueryIdentitiesResponse_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_QueryIdentitiesResponse) New() protoreflect.Message { - return new(fastReflection_QueryIdentitiesResponse) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_QueryIdentitiesResponse) Interface() protoreflect.ProtoMessage { - return (*QueryIdentitiesResponse)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_QueryIdentitiesResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Exists != false { - value := protoreflect.ValueOfBool(x.Exists) - if !f(fd_QueryIdentitiesResponse_exists, value) { - return - } - } - if len(x.VerificationMethod) != 0 { - value := protoreflect.ValueOfList(&_QueryIdentitiesResponse_2_list{list: &x.VerificationMethod}) - if !f(fd_QueryIdentitiesResponse_verificationMethod, value) { - return - } - } -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_QueryIdentitiesResponse) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "did.v1.QueryIdentitiesResponse.exists": - return x.Exists != false - case "did.v1.QueryIdentitiesResponse.verificationMethod": - return len(x.VerificationMethod) != 0 - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryIdentitiesResponse")) - } - panic(fmt.Errorf("message did.v1.QueryIdentitiesResponse does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryIdentitiesResponse) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "did.v1.QueryIdentitiesResponse.exists": - x.Exists = false - case "did.v1.QueryIdentitiesResponse.verificationMethod": - x.VerificationMethod = nil - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryIdentitiesResponse")) - } - panic(fmt.Errorf("message did.v1.QueryIdentitiesResponse does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_QueryIdentitiesResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "did.v1.QueryIdentitiesResponse.exists": - value := x.Exists - return protoreflect.ValueOfBool(value) - case "did.v1.QueryIdentitiesResponse.verificationMethod": - if len(x.VerificationMethod) == 0 { - return protoreflect.ValueOfList(&_QueryIdentitiesResponse_2_list{}) - } - listValue := &_QueryIdentitiesResponse_2_list{list: &x.VerificationMethod} - return protoreflect.ValueOfList(listValue) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryIdentitiesResponse")) - } - panic(fmt.Errorf("message did.v1.QueryIdentitiesResponse does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryIdentitiesResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "did.v1.QueryIdentitiesResponse.exists": - x.Exists = value.Bool() - case "did.v1.QueryIdentitiesResponse.verificationMethod": - lv := value.List() - clv := lv.(*_QueryIdentitiesResponse_2_list) - x.VerificationMethod = *clv.list - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryIdentitiesResponse")) - } - panic(fmt.Errorf("message did.v1.QueryIdentitiesResponse does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryIdentitiesResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.QueryIdentitiesResponse.verificationMethod": - if x.VerificationMethod == nil { - x.VerificationMethod = []*VerificationMethod{} - } - value := &_QueryIdentitiesResponse_2_list{list: &x.VerificationMethod} - return protoreflect.ValueOfList(value) - case "did.v1.QueryIdentitiesResponse.exists": - panic(fmt.Errorf("field exists of message did.v1.QueryIdentitiesResponse is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryIdentitiesResponse")) - } - panic(fmt.Errorf("message did.v1.QueryIdentitiesResponse does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_QueryIdentitiesResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.QueryIdentitiesResponse.exists": - return protoreflect.ValueOfBool(false) - case "did.v1.QueryIdentitiesResponse.verificationMethod": - list := []*VerificationMethod{} - return protoreflect.ValueOfList(&_QueryIdentitiesResponse_2_list{list: &list}) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryIdentitiesResponse")) - } - panic(fmt.Errorf("message did.v1.QueryIdentitiesResponse does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_QueryIdentitiesResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.QueryIdentitiesResponse", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_QueryIdentitiesResponse) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryIdentitiesResponse) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_QueryIdentitiesResponse) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_QueryIdentitiesResponse) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*QueryIdentitiesResponse) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - if x.Exists { - n += 2 - } - if len(x.VerificationMethod) > 0 { - for _, e := range x.VerificationMethod { - l = options.Size(e) - n += 1 + l + runtime.Sov(uint64(l)) - } - } - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*QueryIdentitiesResponse) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if len(x.VerificationMethod) > 0 { - for iNdEx := len(x.VerificationMethod) - 1; iNdEx >= 0; iNdEx-- { - encoded, err := options.Marshal(x.VerificationMethod[iNdEx]) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) - i-- - dAtA[i] = 0x12 - } - } - if x.Exists { - i-- - if x.Exists { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*QueryIdentitiesResponse) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryIdentitiesResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryIdentitiesResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Exists", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - x.Exists = bool(v != 0) - case 2: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field VerificationMethod", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.VerificationMethod = append(x.VerificationMethod, &VerificationMethod{}) - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.VerificationMethod[len(x.VerificationMethod)-1]); err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - -var ( - md_QueryResolveRequest protoreflect.MessageDescriptor - fd_QueryResolveRequest_did protoreflect.FieldDescriptor -) - -func init() { - file_did_v1_query_proto_init() - md_QueryResolveRequest = File_did_v1_query_proto.Messages().ByName("QueryResolveRequest") - fd_QueryResolveRequest_did = md_QueryResolveRequest.Fields().ByName("did") -} - -var _ protoreflect.Message = (*fastReflection_QueryResolveRequest)(nil) - -type fastReflection_QueryResolveRequest QueryResolveRequest - -func (x *QueryResolveRequest) ProtoReflect() protoreflect.Message { - return (*fastReflection_QueryResolveRequest)(x) -} - -func (x *QueryResolveRequest) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_query_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_QueryResolveRequest_messageType fastReflection_QueryResolveRequest_messageType -var _ protoreflect.MessageType = fastReflection_QueryResolveRequest_messageType{} - -type fastReflection_QueryResolveRequest_messageType struct{} - -func (x fastReflection_QueryResolveRequest_messageType) Zero() protoreflect.Message { - return (*fastReflection_QueryResolveRequest)(nil) -} -func (x fastReflection_QueryResolveRequest_messageType) New() protoreflect.Message { - return new(fastReflection_QueryResolveRequest) -} -func (x fastReflection_QueryResolveRequest_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_QueryResolveRequest -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_QueryResolveRequest) Descriptor() protoreflect.MessageDescriptor { - return md_QueryResolveRequest -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_QueryResolveRequest) Type() protoreflect.MessageType { - return _fastReflection_QueryResolveRequest_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_QueryResolveRequest) New() protoreflect.Message { - return new(fastReflection_QueryResolveRequest) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_QueryResolveRequest) Interface() protoreflect.ProtoMessage { - return (*QueryResolveRequest)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_QueryResolveRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Did != "" { - value := protoreflect.ValueOfString(x.Did) - if !f(fd_QueryResolveRequest_did, value) { - return - } - } -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_QueryResolveRequest) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "did.v1.QueryResolveRequest.did": - return x.Did != "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryResolveRequest")) - } - panic(fmt.Errorf("message did.v1.QueryResolveRequest does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryResolveRequest) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "did.v1.QueryResolveRequest.did": - x.Did = "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryResolveRequest")) - } - panic(fmt.Errorf("message did.v1.QueryResolveRequest does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_QueryResolveRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "did.v1.QueryResolveRequest.did": - value := x.Did - return protoreflect.ValueOfString(value) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryResolveRequest")) - } - panic(fmt.Errorf("message did.v1.QueryResolveRequest does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryResolveRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "did.v1.QueryResolveRequest.did": - x.Did = value.Interface().(string) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryResolveRequest")) - } - panic(fmt.Errorf("message did.v1.QueryResolveRequest does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryResolveRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.QueryResolveRequest.did": - panic(fmt.Errorf("field did of message did.v1.QueryResolveRequest is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryResolveRequest")) - } - panic(fmt.Errorf("message did.v1.QueryResolveRequest does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_QueryResolveRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.QueryResolveRequest.did": - return protoreflect.ValueOfString("") - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryResolveRequest")) - } - panic(fmt.Errorf("message did.v1.QueryResolveRequest does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_QueryResolveRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.QueryResolveRequest", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_QueryResolveRequest) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryResolveRequest) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_QueryResolveRequest) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_QueryResolveRequest) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*QueryResolveRequest) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - l = len(x.Did) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*QueryResolveRequest) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if len(x.Did) > 0 { - i -= len(x.Did) - copy(dAtA[i:], x.Did) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Did))) - i-- - dAtA[i] = 0xa - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*QueryResolveRequest) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryResolveRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryResolveRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Did = string(dAtA[iNdEx:postIndex]) + x.Error = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -4189,7 +2304,7 @@ func (x *QueryResolveResponse) ProtoReflect() protoreflect.Message { } func (x *QueryResolveResponse) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_query_proto_msgTypes[9] + mi := &file_did_v1_query_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4604,435 +2719,15 @@ func (x *fastReflection_QueryResolveResponse) ProtoMethods() *protoiface.Methods } } -var ( - md_QueryServiceRequest protoreflect.MessageDescriptor - fd_QueryServiceRequest_origin protoreflect.FieldDescriptor -) - -func init() { - file_did_v1_query_proto_init() - md_QueryServiceRequest = File_did_v1_query_proto.Messages().ByName("QueryServiceRequest") - fd_QueryServiceRequest_origin = md_QueryServiceRequest.Fields().ByName("origin") -} - -var _ protoreflect.Message = (*fastReflection_QueryServiceRequest)(nil) - -type fastReflection_QueryServiceRequest QueryServiceRequest - -func (x *QueryServiceRequest) ProtoReflect() protoreflect.Message { - return (*fastReflection_QueryServiceRequest)(x) -} - -func (x *QueryServiceRequest) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_query_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_QueryServiceRequest_messageType fastReflection_QueryServiceRequest_messageType -var _ protoreflect.MessageType = fastReflection_QueryServiceRequest_messageType{} - -type fastReflection_QueryServiceRequest_messageType struct{} - -func (x fastReflection_QueryServiceRequest_messageType) Zero() protoreflect.Message { - return (*fastReflection_QueryServiceRequest)(nil) -} -func (x fastReflection_QueryServiceRequest_messageType) New() protoreflect.Message { - return new(fastReflection_QueryServiceRequest) -} -func (x fastReflection_QueryServiceRequest_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_QueryServiceRequest -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_QueryServiceRequest) Descriptor() protoreflect.MessageDescriptor { - return md_QueryServiceRequest -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_QueryServiceRequest) Type() protoreflect.MessageType { - return _fastReflection_QueryServiceRequest_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_QueryServiceRequest) New() protoreflect.Message { - return new(fastReflection_QueryServiceRequest) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_QueryServiceRequest) Interface() protoreflect.ProtoMessage { - return (*QueryServiceRequest)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_QueryServiceRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Origin != "" { - value := protoreflect.ValueOfString(x.Origin) - if !f(fd_QueryServiceRequest_origin, value) { - return - } - } -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_QueryServiceRequest) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "did.v1.QueryServiceRequest.origin": - return x.Origin != "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryServiceRequest")) - } - panic(fmt.Errorf("message did.v1.QueryServiceRequest does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryServiceRequest) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "did.v1.QueryServiceRequest.origin": - x.Origin = "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryServiceRequest")) - } - panic(fmt.Errorf("message did.v1.QueryServiceRequest does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_QueryServiceRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "did.v1.QueryServiceRequest.origin": - value := x.Origin - return protoreflect.ValueOfString(value) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryServiceRequest")) - } - panic(fmt.Errorf("message did.v1.QueryServiceRequest does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryServiceRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "did.v1.QueryServiceRequest.origin": - x.Origin = value.Interface().(string) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryServiceRequest")) - } - panic(fmt.Errorf("message did.v1.QueryServiceRequest does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryServiceRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.QueryServiceRequest.origin": - panic(fmt.Errorf("field origin of message did.v1.QueryServiceRequest is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryServiceRequest")) - } - panic(fmt.Errorf("message did.v1.QueryServiceRequest does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_QueryServiceRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.QueryServiceRequest.origin": - return protoreflect.ValueOfString("") - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryServiceRequest")) - } - panic(fmt.Errorf("message did.v1.QueryServiceRequest does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_QueryServiceRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.QueryServiceRequest", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_QueryServiceRequest) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryServiceRequest) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_QueryServiceRequest) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_QueryServiceRequest) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*QueryServiceRequest) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - l = len(x.Origin) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*QueryServiceRequest) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if len(x.Origin) > 0 { - i -= len(x.Origin) - copy(dAtA[i:], x.Origin) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Origin))) - i-- - dAtA[i] = 0xa - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*QueryServiceRequest) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryServiceRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryServiceRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Origin = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - var ( md_QueryServiceResponse protoreflect.MessageDescriptor - fd_QueryServiceResponse_options protoreflect.FieldDescriptor + fd_QueryServiceResponse_service protoreflect.FieldDescriptor ) func init() { file_did_v1_query_proto_init() md_QueryServiceResponse = File_did_v1_query_proto.Messages().ByName("QueryServiceResponse") - fd_QueryServiceResponse_options = md_QueryServiceResponse.Fields().ByName("options") + fd_QueryServiceResponse_service = md_QueryServiceResponse.Fields().ByName("service") } var _ protoreflect.Message = (*fastReflection_QueryServiceResponse)(nil) @@ -5044,7 +2739,7 @@ func (x *QueryServiceResponse) ProtoReflect() protoreflect.Message { } func (x *QueryServiceResponse) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_query_proto_msgTypes[11] + mi := &file_did_v1_query_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5100,9 +2795,9 @@ func (x *fastReflection_QueryServiceResponse) Interface() protoreflect.ProtoMess // While iterating, mutating operations may only be performed // on the current field descriptor. func (x *fastReflection_QueryServiceResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Options != "" { - value := protoreflect.ValueOfString(x.Options) - if !f(fd_QueryServiceResponse_options, value) { + if x.Service != nil { + value := protoreflect.ValueOfMessage(x.Service.ProtoReflect()) + if !f(fd_QueryServiceResponse_service, value) { return } } @@ -5121,8 +2816,8 @@ func (x *fastReflection_QueryServiceResponse) Range(f func(protoreflect.FieldDes // a repeated field is populated if it is non-empty. func (x *fastReflection_QueryServiceResponse) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "did.v1.QueryServiceResponse.options": - return x.Options != "" + case "did.v1.QueryServiceResponse.service": + return x.Service != nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryServiceResponse")) @@ -5139,8 +2834,8 @@ func (x *fastReflection_QueryServiceResponse) Has(fd protoreflect.FieldDescripto // Clear is a mutating operation and unsafe for concurrent use. func (x *fastReflection_QueryServiceResponse) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "did.v1.QueryServiceResponse.options": - x.Options = "" + case "did.v1.QueryServiceResponse.service": + x.Service = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryServiceResponse")) @@ -5157,9 +2852,9 @@ func (x *fastReflection_QueryServiceResponse) Clear(fd protoreflect.FieldDescrip // of the value; to obtain a mutable reference, use Mutable. func (x *fastReflection_QueryServiceResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "did.v1.QueryServiceResponse.options": - value := x.Options - return protoreflect.ValueOfString(value) + case "did.v1.QueryServiceResponse.service": + value := x.Service + return protoreflect.ValueOfMessage(value.ProtoReflect()) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryServiceResponse")) @@ -5180,8 +2875,8 @@ func (x *fastReflection_QueryServiceResponse) Get(descriptor protoreflect.FieldD // Set is a mutating operation and unsafe for concurrent use. func (x *fastReflection_QueryServiceResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "did.v1.QueryServiceResponse.options": - x.Options = value.Interface().(string) + case "did.v1.QueryServiceResponse.service": + x.Service = value.Message().Interface().(*Service) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryServiceResponse")) @@ -5202,8 +2897,11 @@ func (x *fastReflection_QueryServiceResponse) Set(fd protoreflect.FieldDescripto // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_QueryServiceResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.QueryServiceResponse.options": - panic(fmt.Errorf("field options of message did.v1.QueryServiceResponse is not mutable")) + case "did.v1.QueryServiceResponse.service": + if x.Service == nil { + x.Service = new(Service) + } + return protoreflect.ValueOfMessage(x.Service.ProtoReflect()) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryServiceResponse")) @@ -5217,8 +2915,9 @@ func (x *fastReflection_QueryServiceResponse) Mutable(fd protoreflect.FieldDescr // For lists, maps, and messages, this returns a new, empty, mutable value. func (x *fastReflection_QueryServiceResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.QueryServiceResponse.options": - return protoreflect.ValueOfString("") + case "did.v1.QueryServiceResponse.service": + m := new(Service) + return protoreflect.ValueOfMessage(m.ProtoReflect()) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryServiceResponse")) @@ -5288,8 +2987,8 @@ func (x *fastReflection_QueryServiceResponse) ProtoMethods() *protoiface.Methods var n int var l int _ = l - l = len(x.Options) - if l > 0 { + if x.Service != nil { + l = options.Size(x.Service) n += 1 + l + runtime.Sov(uint64(l)) } if x.unknownFields != nil { @@ -5321,10 +3020,17 @@ func (x *fastReflection_QueryServiceResponse) ProtoMethods() *protoiface.Methods i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } - if len(x.Options) > 0 { - i -= len(x.Options) - copy(dAtA[i:], x.Options) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Options))) + if x.Service != nil { + encoded, err := options.Marshal(x.Service) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) i-- dAtA[i] = 0xa } @@ -5379,7 +3085,564 @@ func (x *fastReflection_QueryServiceResponse) ProtoMethods() *protoiface.Methods switch fieldNum { case 1: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Options", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Service == nil { + x.Service = &Service{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Service); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryTokenResponse protoreflect.MessageDescriptor + fd_QueryTokenResponse_success protoreflect.FieldDescriptor + fd_QueryTokenResponse_token protoreflect.FieldDescriptor + fd_QueryTokenResponse_error protoreflect.FieldDescriptor +) + +func init() { + file_did_v1_query_proto_init() + md_QueryTokenResponse = File_did_v1_query_proto.Messages().ByName("QueryTokenResponse") + fd_QueryTokenResponse_success = md_QueryTokenResponse.Fields().ByName("success") + fd_QueryTokenResponse_token = md_QueryTokenResponse.Fields().ByName("token") + fd_QueryTokenResponse_error = md_QueryTokenResponse.Fields().ByName("error") +} + +var _ protoreflect.Message = (*fastReflection_QueryTokenResponse)(nil) + +type fastReflection_QueryTokenResponse QueryTokenResponse + +func (x *QueryTokenResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTokenResponse)(x) +} + +func (x *QueryTokenResponse) slowProtoReflect() protoreflect.Message { + mi := &file_did_v1_query_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTokenResponse_messageType fastReflection_QueryTokenResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryTokenResponse_messageType{} + +type fastReflection_QueryTokenResponse_messageType struct{} + +func (x fastReflection_QueryTokenResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTokenResponse)(nil) +} +func (x fastReflection_QueryTokenResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTokenResponse) +} +func (x fastReflection_QueryTokenResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTokenResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTokenResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryTokenResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTokenResponse) New() protoreflect.Message { + return new(fastReflection_QueryTokenResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTokenResponse) Interface() protoreflect.ProtoMessage { + return (*QueryTokenResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTokenResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Success != false { + value := protoreflect.ValueOfBool(x.Success) + if !f(fd_QueryTokenResponse_success, value) { + return + } + } + if x.Token != nil { + value := protoreflect.ValueOfMessage(x.Token.ProtoReflect()) + if !f(fd_QueryTokenResponse_token, value) { + return + } + } + if x.Error != "" { + value := protoreflect.ValueOfString(x.Error) + if !f(fd_QueryTokenResponse_error, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTokenResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "did.v1.QueryTokenResponse.success": + return x.Success != false + case "did.v1.QueryTokenResponse.token": + return x.Token != nil + case "did.v1.QueryTokenResponse.error": + return x.Error != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryTokenResponse")) + } + panic(fmt.Errorf("message did.v1.QueryTokenResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "did.v1.QueryTokenResponse.success": + x.Success = false + case "did.v1.QueryTokenResponse.token": + x.Token = nil + case "did.v1.QueryTokenResponse.error": + x.Error = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryTokenResponse")) + } + panic(fmt.Errorf("message did.v1.QueryTokenResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTokenResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "did.v1.QueryTokenResponse.success": + value := x.Success + return protoreflect.ValueOfBool(value) + case "did.v1.QueryTokenResponse.token": + value := x.Token + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "did.v1.QueryTokenResponse.error": + value := x.Error + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryTokenResponse")) + } + panic(fmt.Errorf("message did.v1.QueryTokenResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "did.v1.QueryTokenResponse.success": + x.Success = value.Bool() + case "did.v1.QueryTokenResponse.token": + x.Token = value.Message().Interface().(*Token) + case "did.v1.QueryTokenResponse.error": + x.Error = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryTokenResponse")) + } + panic(fmt.Errorf("message did.v1.QueryTokenResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.QueryTokenResponse.token": + if x.Token == nil { + x.Token = new(Token) + } + return protoreflect.ValueOfMessage(x.Token.ProtoReflect()) + case "did.v1.QueryTokenResponse.success": + panic(fmt.Errorf("field success of message did.v1.QueryTokenResponse is not mutable")) + case "did.v1.QueryTokenResponse.error": + panic(fmt.Errorf("field error of message did.v1.QueryTokenResponse is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryTokenResponse")) + } + panic(fmt.Errorf("message did.v1.QueryTokenResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTokenResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.QueryTokenResponse.success": + return protoreflect.ValueOfBool(false) + case "did.v1.QueryTokenResponse.token": + m := new(Token) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "did.v1.QueryTokenResponse.error": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryTokenResponse")) + } + panic(fmt.Errorf("message did.v1.QueryTokenResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTokenResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in did.v1.QueryTokenResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTokenResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTokenResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTokenResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTokenResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Success { + n += 2 + } + if x.Token != nil { + l = options.Size(x.Token) + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Error) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Error) > 0 { + i -= len(x.Error) + copy(dAtA[i:], x.Error) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Error))) + i-- + dAtA[i] = 0x1a + } + if x.Token != nil { + encoded, err := options.Marshal(x.Token) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if x.Success { + i-- + if x.Success { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Success = bool(v != 0) + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Token == nil { + x.Token = &Token{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Token); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -5407,7 +3670,7 @@ func (x *fastReflection_QueryServiceResponse) ProtoMethods() *protoiface.Methods if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.Options = string(dAtA[iNdEx:postIndex]) + x.Error = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -5457,15 +3720,20 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// QueryParamsRequest is the request type for the Query/Params RPC method. -type QueryParamsRequest struct { +// Queryequest is the request type for the Query/Params RPC method. +type QueryRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` + Origin string `protobuf:"bytes,2,opt,name=origin,proto3" json:"origin,omitempty"` + Subject string `protobuf:"bytes,3,opt,name=subject,proto3" json:"subject,omitempty"` + Credentials []*Credential `protobuf:"bytes,4,rep,name=credentials,proto3" json:"credentials,omitempty"` } -func (x *QueryParamsRequest) Reset() { - *x = QueryParamsRequest{} +func (x *QueryRequest) Reset() { + *x = QueryRequest{} if protoimpl.UnsafeEnabled { mi := &file_did_v1_query_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5473,17 +3741,45 @@ func (x *QueryParamsRequest) Reset() { } } -func (x *QueryParamsRequest) String() string { +func (x *QueryRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryParamsRequest) ProtoMessage() {} +func (*QueryRequest) ProtoMessage() {} -// Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead. -func (*QueryParamsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use QueryRequest.ProtoReflect.Descriptor instead. +func (*QueryRequest) Descriptor() ([]byte, []int) { return file_did_v1_query_proto_rawDescGZIP(), []int{0} } +func (x *QueryRequest) GetDid() string { + if x != nil { + return x.Did + } + return "" +} + +func (x *QueryRequest) GetOrigin() string { + if x != nil { + return x.Origin + } + return "" +} + +func (x *QueryRequest) GetSubject() string { + if x != nil { + return x.Subject + } + return "" +} + +func (x *QueryRequest) GetCredentials() []*Credential { + if x != nil { + return x.Credentials + } + return nil +} + // QueryParamsResponse is the response type for the Query/Params RPC method. type QueryParamsResponse struct { state protoimpl.MessageState @@ -5521,42 +3817,6 @@ func (x *QueryParamsResponse) GetParams() *Params { return nil } -// QueryAccountsRequest is the request type for the Query/Exists RPC method. -type QueryAccountsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` -} - -func (x *QueryAccountsRequest) Reset() { - *x = QueryAccountsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_did_v1_query_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QueryAccountsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryAccountsRequest) ProtoMessage() {} - -// Deprecated: Use QueryAccountsRequest.ProtoReflect.Descriptor instead. -func (*QueryAccountsRequest) Descriptor() ([]byte, []int) { - return file_did_v1_query_proto_rawDescGZIP(), []int{2} -} - -func (x *QueryAccountsRequest) GetDid() string { - if x != nil { - return x.Did - } - return "" -} - // QueryAccountsResponse is the response type for the Query/Exists RPC method. type QueryAccountsResponse struct { state protoimpl.MessageState @@ -5569,7 +3829,7 @@ type QueryAccountsResponse struct { func (x *QueryAccountsResponse) Reset() { *x = QueryAccountsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_query_proto_msgTypes[3] + mi := &file_did_v1_query_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5583,7 +3843,7 @@ func (*QueryAccountsResponse) ProtoMessage() {} // Deprecated: Use QueryAccountsResponse.ProtoReflect.Descriptor instead. func (*QueryAccountsResponse) Descriptor() ([]byte, []int) { - return file_did_v1_query_proto_rawDescGZIP(), []int{3} + return file_did_v1_query_proto_rawDescGZIP(), []int{2} } func (x *QueryAccountsResponse) GetExists() bool { @@ -5593,63 +3853,23 @@ func (x *QueryAccountsResponse) GetExists() bool { return false } -// QueryCredentialsRequest is the request type for the Query/Exists RPC method. -type QueryCredentialsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` - Origin string `protobuf:"bytes,2,opt,name=origin,proto3" json:"origin,omitempty"` -} - -func (x *QueryCredentialsRequest) Reset() { - *x = QueryCredentialsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_did_v1_query_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QueryCredentialsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryCredentialsRequest) ProtoMessage() {} - -// Deprecated: Use QueryCredentialsRequest.ProtoReflect.Descriptor instead. -func (*QueryCredentialsRequest) Descriptor() ([]byte, []int) { - return file_did_v1_query_proto_rawDescGZIP(), []int{4} -} - -func (x *QueryCredentialsRequest) GetDid() string { - if x != nil { - return x.Did - } - return "" -} - -func (x *QueryCredentialsRequest) GetOrigin() string { - if x != nil { - return x.Origin - } - return "" -} - // QueryCredentialsResponse is the response type for the Query/Exists RPC method. type QueryCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Credentials map[string][]byte `protobuf:"bytes,1,rep,name=credentials,proto3" json:"credentials,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"` + Origin string `protobuf:"bytes,3,opt,name=origin,proto3" json:"origin,omitempty"` + Credentials []*Credential `protobuf:"bytes,4,rep,name=credentials,proto3" json:"credentials,omitempty"` + Error string `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"` } func (x *QueryCredentialsResponse) Reset() { *x = QueryCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_query_proto_msgTypes[5] + mi := &file_did_v1_query_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5663,128 +3883,40 @@ func (*QueryCredentialsResponse) ProtoMessage() {} // Deprecated: Use QueryCredentialsResponse.ProtoReflect.Descriptor instead. func (*QueryCredentialsResponse) Descriptor() ([]byte, []int) { - return file_did_v1_query_proto_rawDescGZIP(), []int{5} + return file_did_v1_query_proto_rawDescGZIP(), []int{3} } -func (x *QueryCredentialsResponse) GetCredentials() map[string][]byte { +func (x *QueryCredentialsResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *QueryCredentialsResponse) GetSubject() string { + if x != nil { + return x.Subject + } + return "" +} + +func (x *QueryCredentialsResponse) GetOrigin() string { + if x != nil { + return x.Origin + } + return "" +} + +func (x *QueryCredentialsResponse) GetCredentials() []*Credential { if x != nil { return x.Credentials } return nil } -// QueryIdentitiesRequest is the request type for the Query/Exists RPC method. -type QueryIdentitiesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` -} - -func (x *QueryIdentitiesRequest) Reset() { - *x = QueryIdentitiesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_did_v1_query_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QueryIdentitiesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryIdentitiesRequest) ProtoMessage() {} - -// Deprecated: Use QueryIdentitiesRequest.ProtoReflect.Descriptor instead. -func (*QueryIdentitiesRequest) Descriptor() ([]byte, []int) { - return file_did_v1_query_proto_rawDescGZIP(), []int{6} -} - -func (x *QueryIdentitiesRequest) GetDid() string { +func (x *QueryCredentialsResponse) GetError() string { if x != nil { - return x.Did - } - return "" -} - -// QueryIdentitiesResponse is the response type for the Query/Exists RPC method. -type QueryIdentitiesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Exists bool `protobuf:"varint,1,opt,name=exists,proto3" json:"exists,omitempty"` - VerificationMethod []*VerificationMethod `protobuf:"bytes,2,rep,name=verificationMethod,proto3" json:"verificationMethod,omitempty"` -} - -func (x *QueryIdentitiesResponse) Reset() { - *x = QueryIdentitiesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_did_v1_query_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QueryIdentitiesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryIdentitiesResponse) ProtoMessage() {} - -// Deprecated: Use QueryIdentitiesResponse.ProtoReflect.Descriptor instead. -func (*QueryIdentitiesResponse) Descriptor() ([]byte, []int) { - return file_did_v1_query_proto_rawDescGZIP(), []int{7} -} - -func (x *QueryIdentitiesResponse) GetExists() bool { - if x != nil { - return x.Exists - } - return false -} - -func (x *QueryIdentitiesResponse) GetVerificationMethod() []*VerificationMethod { - if x != nil { - return x.VerificationMethod - } - return nil -} - -// QueryResolveRequest is the request type for the Query/Resolve RPC method. -type QueryResolveRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` -} - -func (x *QueryResolveRequest) Reset() { - *x = QueryResolveRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_did_v1_query_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QueryResolveRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryResolveRequest) ProtoMessage() {} - -// Deprecated: Use QueryResolveRequest.ProtoReflect.Descriptor instead. -func (*QueryResolveRequest) Descriptor() ([]byte, []int) { - return file_did_v1_query_proto_rawDescGZIP(), []int{8} -} - -func (x *QueryResolveRequest) GetDid() string { - if x != nil { - return x.Did + return x.Error } return "" } @@ -5802,7 +3934,7 @@ type QueryResolveResponse struct { func (x *QueryResolveResponse) Reset() { *x = QueryResolveResponse{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_query_proto_msgTypes[9] + mi := &file_did_v1_query_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5816,7 +3948,7 @@ func (*QueryResolveResponse) ProtoMessage() {} // Deprecated: Use QueryResolveResponse.ProtoReflect.Descriptor instead. func (*QueryResolveResponse) Descriptor() ([]byte, []int) { - return file_did_v1_query_proto_rawDescGZIP(), []int{9} + return file_did_v1_query_proto_rawDescGZIP(), []int{4} } func (x *QueryResolveResponse) GetDocument() *Document { @@ -5826,56 +3958,19 @@ func (x *QueryResolveResponse) GetDocument() *Document { return nil } -// QueryServiceRequest is the request type for the Query/LoginOptions RPC method. -type QueryServiceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Origin string `protobuf:"bytes,1,opt,name=origin,proto3" json:"origin,omitempty"` -} - -func (x *QueryServiceRequest) Reset() { - *x = QueryServiceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_did_v1_query_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QueryServiceRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryServiceRequest) ProtoMessage() {} - -// Deprecated: Use QueryServiceRequest.ProtoReflect.Descriptor instead. -func (*QueryServiceRequest) Descriptor() ([]byte, []int) { - return file_did_v1_query_proto_rawDescGZIP(), []int{10} -} - -func (x *QueryServiceRequest) GetOrigin() string { - if x != nil { - return x.Origin - } - return "" -} - // QueryLoginOptionsResponse is the response type for the Query/LoginOptions RPC method. type QueryServiceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // options is the PublicKeyCredentialAttestationOptions - Options string `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + Service *Service `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"` } func (x *QueryServiceResponse) Reset() { *x = QueryServiceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_query_proto_msgTypes[11] + mi := &file_did_v1_query_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5889,12 +3984,64 @@ func (*QueryServiceResponse) ProtoMessage() {} // Deprecated: Use QueryServiceResponse.ProtoReflect.Descriptor instead. func (*QueryServiceResponse) Descriptor() ([]byte, []int) { - return file_did_v1_query_proto_rawDescGZIP(), []int{11} + return file_did_v1_query_proto_rawDescGZIP(), []int{5} } -func (x *QueryServiceResponse) GetOptions() string { +func (x *QueryServiceResponse) GetService() *Service { if x != nil { - return x.Options + return x.Service + } + return nil +} + +// QueryTokenResponse is the response type for the Query/LoginOptions RPC method. +type QueryTokenResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Token *Token `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` + Error string `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *QueryTokenResponse) Reset() { + *x = QueryTokenResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_did_v1_query_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryTokenResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryTokenResponse) ProtoMessage() {} + +// Deprecated: Use QueryTokenResponse.ProtoReflect.Descriptor instead. +func (*QueryTokenResponse) Descriptor() ([]byte, []int) { + return file_did_v1_query_proto_rawDescGZIP(), []int{6} +} + +func (x *QueryTokenResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *QueryTokenResponse) GetToken() *Token { + if x != nil { + return x.Token + } + return nil +} + +func (x *QueryTokenResponse) GetError() string { + if x != nil { + return x.Error } return "" } @@ -5903,110 +4050,97 @@ var File_did_v1_query_proto protoreflect.FileDescriptor var file_did_v1_query_proto_rawDesc = []byte{ 0x0a, 0x12, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x64, 0x69, 0x64, 0x2f, - 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x13, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3d, 0x0a, 0x13, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x28, 0x0a, 0x14, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x64, 0x69, 0x64, 0x22, 0x2f, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, - 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x43, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, - 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x22, 0xaf, 0x01, 0x0a, 0x18, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x64, - 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x1a, 0x3e, 0x0a, 0x10, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2a, 0x0a, 0x16, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x64, 0x69, + 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x13, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x88, 0x01, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64, 0x22, 0x7d, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x12, 0x76, - 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x52, 0x12, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x27, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64, - 0x22, 0x44, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x64, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x69, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x64, 0x6f, - 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x2d, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, - 0x72, 0x69, 0x67, 0x69, 0x6e, 0x22, 0x30, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0xf5, 0x04, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x12, 0x56, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x2e, 0x64, 0x69, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x64, - 0x69, 0x64, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x64, 0x0a, 0x08, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1c, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x64, 0x69, 0x64, - 0x2f, 0x7b, 0x64, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, - 0x79, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x1f, - 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x20, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x64, 0x69, 0x64, 0x2f, - 0x7b, 0x64, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x7d, 0x2f, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x6c, 0x0a, 0x0a, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x17, 0x12, 0x15, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x7b, 0x64, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x60, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x6f, - 0x6c, 0x76, 0x65, 0x12, 0x1b, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1c, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x72, 0x65, 0x73, - 0x6f, 0x6c, 0x76, 0x65, 0x2f, 0x7b, 0x64, 0x69, 0x64, 0x7d, 0x12, 0x63, 0x0a, 0x07, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x7b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x7d, 0x42, - 0x7a, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x68, - 0x77, 0x61, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x64, - 0x69, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x44, 0x69, 0x64, - 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x44, - 0x69, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, + 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x22, 0x3d, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, + 0x2f, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, + 0x22, 0xb2, 0x01, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x44, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, + 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, + 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x41, 0x0a, 0x14, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x69, + 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x23, + 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, + 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x05, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x32, 0xa7, 0x04, 0x0a, 0x05, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x12, 0x50, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x14, 0x2e, + 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x5c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x12, 0x14, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, + 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x7b, 0x64, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x12, 0x76, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x12, 0x14, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x29, 0x12, 0x27, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x7b, 0x6f, 0x72, + 0x69, 0x67, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x51, 0x0a, 0x07, 0x52, + 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x12, 0x14, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x64, + 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, + 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x7b, 0x64, 0x69, 0x64, 0x7d, 0x12, 0x58, + 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x14, 0x2e, 0x64, 0x69, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1c, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, + 0x7b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x7d, 0x12, 0x49, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x14, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x08, 0x22, 0x06, 0x2f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x42, 0x7a, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, + 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, + 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x69, 0x64, 0x2f, + 0x76, 0x31, 0x3b, 0x64, 0x69, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, + 0x06, 0x44, 0x69, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, + 0xe2, 0x02, 0x12, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -6021,47 +4155,45 @@ func file_did_v1_query_proto_rawDescGZIP() []byte { return file_did_v1_query_proto_rawDescData } -var file_did_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_did_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 7) var file_did_v1_query_proto_goTypes = []interface{}{ - (*QueryParamsRequest)(nil), // 0: did.v1.QueryParamsRequest + (*QueryRequest)(nil), // 0: did.v1.QueryRequest (*QueryParamsResponse)(nil), // 1: did.v1.QueryParamsResponse - (*QueryAccountsRequest)(nil), // 2: did.v1.QueryAccountsRequest - (*QueryAccountsResponse)(nil), // 3: did.v1.QueryAccountsResponse - (*QueryCredentialsRequest)(nil), // 4: did.v1.QueryCredentialsRequest - (*QueryCredentialsResponse)(nil), // 5: did.v1.QueryCredentialsResponse - (*QueryIdentitiesRequest)(nil), // 6: did.v1.QueryIdentitiesRequest - (*QueryIdentitiesResponse)(nil), // 7: did.v1.QueryIdentitiesResponse - (*QueryResolveRequest)(nil), // 8: did.v1.QueryResolveRequest - (*QueryResolveResponse)(nil), // 9: did.v1.QueryResolveResponse - (*QueryServiceRequest)(nil), // 10: did.v1.QueryServiceRequest - (*QueryServiceResponse)(nil), // 11: did.v1.QueryServiceResponse - nil, // 12: did.v1.QueryCredentialsResponse.CredentialsEntry - (*Params)(nil), // 13: did.v1.Params - (*VerificationMethod)(nil), // 14: did.v1.VerificationMethod - (*Document)(nil), // 15: did.v1.Document + (*QueryAccountsResponse)(nil), // 2: did.v1.QueryAccountsResponse + (*QueryCredentialsResponse)(nil), // 3: did.v1.QueryCredentialsResponse + (*QueryResolveResponse)(nil), // 4: did.v1.QueryResolveResponse + (*QueryServiceResponse)(nil), // 5: did.v1.QueryServiceResponse + (*QueryTokenResponse)(nil), // 6: did.v1.QueryTokenResponse + (*Credential)(nil), // 7: did.v1.Credential + (*Params)(nil), // 8: did.v1.Params + (*Document)(nil), // 9: did.v1.Document + (*Service)(nil), // 10: did.v1.Service + (*Token)(nil), // 11: did.v1.Token } var file_did_v1_query_proto_depIdxs = []int32{ - 13, // 0: did.v1.QueryParamsResponse.params:type_name -> did.v1.Params - 12, // 1: did.v1.QueryCredentialsResponse.credentials:type_name -> did.v1.QueryCredentialsResponse.CredentialsEntry - 14, // 2: did.v1.QueryIdentitiesResponse.verificationMethod:type_name -> did.v1.VerificationMethod - 15, // 3: did.v1.QueryResolveResponse.document:type_name -> did.v1.Document - 0, // 4: did.v1.Query.Params:input_type -> did.v1.QueryParamsRequest - 2, // 5: did.v1.Query.Accounts:input_type -> did.v1.QueryAccountsRequest - 4, // 6: did.v1.Query.Credentials:input_type -> did.v1.QueryCredentialsRequest - 6, // 7: did.v1.Query.Identities:input_type -> did.v1.QueryIdentitiesRequest - 8, // 8: did.v1.Query.Resolve:input_type -> did.v1.QueryResolveRequest - 10, // 9: did.v1.Query.Service:input_type -> did.v1.QueryServiceRequest - 1, // 10: did.v1.Query.Params:output_type -> did.v1.QueryParamsResponse - 3, // 11: did.v1.Query.Accounts:output_type -> did.v1.QueryAccountsResponse - 5, // 12: did.v1.Query.Credentials:output_type -> did.v1.QueryCredentialsResponse - 7, // 13: did.v1.Query.Identities:output_type -> did.v1.QueryIdentitiesResponse - 9, // 14: did.v1.Query.Resolve:output_type -> did.v1.QueryResolveResponse - 11, // 15: did.v1.Query.Service:output_type -> did.v1.QueryServiceResponse - 10, // [10:16] is the sub-list for method output_type - 4, // [4:10] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 7, // 0: did.v1.QueryRequest.credentials:type_name -> did.v1.Credential + 8, // 1: did.v1.QueryParamsResponse.params:type_name -> did.v1.Params + 7, // 2: did.v1.QueryCredentialsResponse.credentials:type_name -> did.v1.Credential + 9, // 3: did.v1.QueryResolveResponse.document:type_name -> did.v1.Document + 10, // 4: did.v1.QueryServiceResponse.service:type_name -> did.v1.Service + 11, // 5: did.v1.QueryTokenResponse.token:type_name -> did.v1.Token + 0, // 6: did.v1.Query.Params:input_type -> did.v1.QueryRequest + 0, // 7: did.v1.Query.Accounts:input_type -> did.v1.QueryRequest + 0, // 8: did.v1.Query.Credentials:input_type -> did.v1.QueryRequest + 0, // 9: did.v1.Query.Resolve:input_type -> did.v1.QueryRequest + 0, // 10: did.v1.Query.Service:input_type -> did.v1.QueryRequest + 0, // 11: did.v1.Query.Token:input_type -> did.v1.QueryRequest + 1, // 12: did.v1.Query.Params:output_type -> did.v1.QueryParamsResponse + 2, // 13: did.v1.Query.Accounts:output_type -> did.v1.QueryAccountsResponse + 3, // 14: did.v1.Query.Credentials:output_type -> did.v1.QueryCredentialsResponse + 4, // 15: did.v1.Query.Resolve:output_type -> did.v1.QueryResolveResponse + 5, // 16: did.v1.Query.Service:output_type -> did.v1.QueryServiceResponse + 6, // 17: did.v1.Query.Token:output_type -> did.v1.QueryTokenResponse + 12, // [12:18] is the sub-list for method output_type + 6, // [6:12] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } func init() { file_did_v1_query_proto_init() } @@ -6073,7 +4205,7 @@ func file_did_v1_query_proto_init() { file_did_v1_models_proto_init() if !protoimpl.UnsafeEnabled { file_did_v1_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryParamsRequest); i { + switch v := v.(*QueryRequest); i { case 0: return &v.state case 1: @@ -6097,18 +4229,6 @@ func file_did_v1_query_proto_init() { } } file_did_v1_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryAccountsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_did_v1_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryAccountsResponse); i { case 0: return &v.state @@ -6120,19 +4240,7 @@ func file_did_v1_query_proto_init() { return nil } } - file_did_v1_query_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryCredentialsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_did_v1_query_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_did_v1_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryCredentialsResponse); i { case 0: return &v.state @@ -6144,43 +4252,7 @@ func file_did_v1_query_proto_init() { return nil } } - file_did_v1_query_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryIdentitiesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_did_v1_query_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryIdentitiesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_did_v1_query_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryResolveRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_did_v1_query_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_did_v1_query_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryResolveResponse); i { case 0: return &v.state @@ -6192,8 +4264,8 @@ func file_did_v1_query_proto_init() { return nil } } - file_did_v1_query_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryServiceRequest); i { + file_did_v1_query_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryServiceResponse); i { case 0: return &v.state case 1: @@ -6204,8 +4276,8 @@ func file_did_v1_query_proto_init() { return nil } } - file_did_v1_query_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryServiceResponse); i { + file_did_v1_query_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTokenResponse); i { case 0: return &v.state case 1: @@ -6223,7 +4295,7 @@ func file_did_v1_query_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_did_v1_query_proto_rawDesc, NumEnums: 0, - NumMessages: 13, + NumMessages: 7, NumExtensions: 0, NumServices: 1, }, diff --git a/api/did/v1/query_grpc.pb.go b/api/did/v1/query_grpc.pb.go index d51ed3c02..374985a29 100644 --- a/api/did/v1/query_grpc.pb.go +++ b/api/did/v1/query_grpc.pb.go @@ -22,9 +22,9 @@ const ( Query_Params_FullMethodName = "/did.v1.Query/Params" Query_Accounts_FullMethodName = "/did.v1.Query/Accounts" Query_Credentials_FullMethodName = "/did.v1.Query/Credentials" - Query_Identities_FullMethodName = "/did.v1.Query/Identities" Query_Resolve_FullMethodName = "/did.v1.Query/Resolve" Query_Service_FullMethodName = "/did.v1.Query/Service" + Query_Token_FullMethodName = "/did.v1.Query/Token" ) // QueryClient is the client API for Query service. @@ -32,17 +32,17 @@ const ( // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type QueryClient interface { // Params queries all parameters of the module. - Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) + Params(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) // Accounts returns associated wallet accounts with the DID. - Accounts(ctx context.Context, in *QueryAccountsRequest, opts ...grpc.CallOption) (*QueryAccountsResponse, error) + Accounts(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryAccountsResponse, error) // Credentials returns associated credentials with the DID and Service Origin. - Credentials(ctx context.Context, in *QueryCredentialsRequest, opts ...grpc.CallOption) (*QueryCredentialsResponse, error) - // Identities returns associated identity with the DID. - Identities(ctx context.Context, in *QueryIdentitiesRequest, opts ...grpc.CallOption) (*QueryIdentitiesResponse, error) + Credentials(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryCredentialsResponse, error) // Resolve queries the DID document by its id. - Resolve(ctx context.Context, in *QueryResolveRequest, opts ...grpc.CallOption) (*QueryResolveResponse, error) + Resolve(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryResolveResponse, error) // Service returns associated ServiceInfo for a given Origin - Service(ctx context.Context, in *QueryServiceRequest, opts ...grpc.CallOption) (*QueryServiceResponse, error) + Service(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryServiceResponse, error) + // Token returns the current authentication token for the client. + Token(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryTokenResponse, error) } type queryClient struct { @@ -53,7 +53,7 @@ func NewQueryClient(cc grpc.ClientConnInterface) QueryClient { return &queryClient{cc} } -func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { +func (c *queryClient) Params(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { out := new(QueryParamsResponse) err := c.cc.Invoke(ctx, Query_Params_FullMethodName, in, out, opts...) if err != nil { @@ -62,7 +62,7 @@ func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts . return out, nil } -func (c *queryClient) Accounts(ctx context.Context, in *QueryAccountsRequest, opts ...grpc.CallOption) (*QueryAccountsResponse, error) { +func (c *queryClient) Accounts(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryAccountsResponse, error) { out := new(QueryAccountsResponse) err := c.cc.Invoke(ctx, Query_Accounts_FullMethodName, in, out, opts...) if err != nil { @@ -71,7 +71,7 @@ func (c *queryClient) Accounts(ctx context.Context, in *QueryAccountsRequest, op return out, nil } -func (c *queryClient) Credentials(ctx context.Context, in *QueryCredentialsRequest, opts ...grpc.CallOption) (*QueryCredentialsResponse, error) { +func (c *queryClient) Credentials(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryCredentialsResponse, error) { out := new(QueryCredentialsResponse) err := c.cc.Invoke(ctx, Query_Credentials_FullMethodName, in, out, opts...) if err != nil { @@ -80,16 +80,7 @@ func (c *queryClient) Credentials(ctx context.Context, in *QueryCredentialsReque return out, nil } -func (c *queryClient) Identities(ctx context.Context, in *QueryIdentitiesRequest, opts ...grpc.CallOption) (*QueryIdentitiesResponse, error) { - out := new(QueryIdentitiesResponse) - err := c.cc.Invoke(ctx, Query_Identities_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *queryClient) Resolve(ctx context.Context, in *QueryResolveRequest, opts ...grpc.CallOption) (*QueryResolveResponse, error) { +func (c *queryClient) Resolve(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryResolveResponse, error) { out := new(QueryResolveResponse) err := c.cc.Invoke(ctx, Query_Resolve_FullMethodName, in, out, opts...) if err != nil { @@ -98,7 +89,7 @@ func (c *queryClient) Resolve(ctx context.Context, in *QueryResolveRequest, opts return out, nil } -func (c *queryClient) Service(ctx context.Context, in *QueryServiceRequest, opts ...grpc.CallOption) (*QueryServiceResponse, error) { +func (c *queryClient) Service(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryServiceResponse, error) { out := new(QueryServiceResponse) err := c.cc.Invoke(ctx, Query_Service_FullMethodName, in, out, opts...) if err != nil { @@ -107,22 +98,31 @@ func (c *queryClient) Service(ctx context.Context, in *QueryServiceRequest, opts return out, nil } +func (c *queryClient) Token(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryTokenResponse, error) { + out := new(QueryTokenResponse) + err := c.cc.Invoke(ctx, Query_Token_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryServer is the server API for Query service. // All implementations must embed UnimplementedQueryServer // for forward compatibility type QueryServer interface { // Params queries all parameters of the module. - Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) + Params(context.Context, *QueryRequest) (*QueryParamsResponse, error) // Accounts returns associated wallet accounts with the DID. - Accounts(context.Context, *QueryAccountsRequest) (*QueryAccountsResponse, error) + Accounts(context.Context, *QueryRequest) (*QueryAccountsResponse, error) // Credentials returns associated credentials with the DID and Service Origin. - Credentials(context.Context, *QueryCredentialsRequest) (*QueryCredentialsResponse, error) - // Identities returns associated identity with the DID. - Identities(context.Context, *QueryIdentitiesRequest) (*QueryIdentitiesResponse, error) + Credentials(context.Context, *QueryRequest) (*QueryCredentialsResponse, error) // Resolve queries the DID document by its id. - Resolve(context.Context, *QueryResolveRequest) (*QueryResolveResponse, error) + Resolve(context.Context, *QueryRequest) (*QueryResolveResponse, error) // Service returns associated ServiceInfo for a given Origin - Service(context.Context, *QueryServiceRequest) (*QueryServiceResponse, error) + Service(context.Context, *QueryRequest) (*QueryServiceResponse, error) + // Token returns the current authentication token for the client. + Token(context.Context, *QueryRequest) (*QueryTokenResponse, error) mustEmbedUnimplementedQueryServer() } @@ -130,24 +130,24 @@ type QueryServer interface { type UnimplementedQueryServer struct { } -func (UnimplementedQueryServer) Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) { +func (UnimplementedQueryServer) Params(context.Context, *QueryRequest) (*QueryParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") } -func (UnimplementedQueryServer) Accounts(context.Context, *QueryAccountsRequest) (*QueryAccountsResponse, error) { +func (UnimplementedQueryServer) Accounts(context.Context, *QueryRequest) (*QueryAccountsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Accounts not implemented") } -func (UnimplementedQueryServer) Credentials(context.Context, *QueryCredentialsRequest) (*QueryCredentialsResponse, error) { +func (UnimplementedQueryServer) Credentials(context.Context, *QueryRequest) (*QueryCredentialsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Credentials not implemented") } -func (UnimplementedQueryServer) Identities(context.Context, *QueryIdentitiesRequest) (*QueryIdentitiesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Identities not implemented") -} -func (UnimplementedQueryServer) Resolve(context.Context, *QueryResolveRequest) (*QueryResolveResponse, error) { +func (UnimplementedQueryServer) Resolve(context.Context, *QueryRequest) (*QueryResolveResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Resolve not implemented") } -func (UnimplementedQueryServer) Service(context.Context, *QueryServiceRequest) (*QueryServiceResponse, error) { +func (UnimplementedQueryServer) Service(context.Context, *QueryRequest) (*QueryServiceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Service not implemented") } +func (UnimplementedQueryServer) Token(context.Context, *QueryRequest) (*QueryTokenResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Token not implemented") +} func (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {} // UnsafeQueryServer may be embedded to opt out of forward compatibility for this service. @@ -162,7 +162,7 @@ func RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) { } func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryParamsRequest) + in := new(QueryRequest) if err := dec(in); err != nil { return nil, err } @@ -174,13 +174,13 @@ func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interf FullMethod: Query_Params_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + return srv.(QueryServer).Params(ctx, req.(*QueryRequest)) } return interceptor(ctx, in, info, handler) } func _Query_Accounts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryAccountsRequest) + in := new(QueryRequest) if err := dec(in); err != nil { return nil, err } @@ -192,13 +192,13 @@ func _Query_Accounts_Handler(srv interface{}, ctx context.Context, dec func(inte FullMethod: Query_Accounts_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Accounts(ctx, req.(*QueryAccountsRequest)) + return srv.(QueryServer).Accounts(ctx, req.(*QueryRequest)) } return interceptor(ctx, in, info, handler) } func _Query_Credentials_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryCredentialsRequest) + in := new(QueryRequest) if err := dec(in); err != nil { return nil, err } @@ -210,31 +210,13 @@ func _Query_Credentials_Handler(srv interface{}, ctx context.Context, dec func(i FullMethod: Query_Credentials_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Credentials(ctx, req.(*QueryCredentialsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Query_Identities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryIdentitiesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Identities(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Query_Identities_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Identities(ctx, req.(*QueryIdentitiesRequest)) + return srv.(QueryServer).Credentials(ctx, req.(*QueryRequest)) } return interceptor(ctx, in, info, handler) } func _Query_Resolve_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryResolveRequest) + in := new(QueryRequest) if err := dec(in); err != nil { return nil, err } @@ -246,13 +228,13 @@ func _Query_Resolve_Handler(srv interface{}, ctx context.Context, dec func(inter FullMethod: Query_Resolve_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Resolve(ctx, req.(*QueryResolveRequest)) + return srv.(QueryServer).Resolve(ctx, req.(*QueryRequest)) } return interceptor(ctx, in, info, handler) } func _Query_Service_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryServiceRequest) + in := new(QueryRequest) if err := dec(in); err != nil { return nil, err } @@ -264,7 +246,25 @@ func _Query_Service_Handler(srv interface{}, ctx context.Context, dec func(inter FullMethod: Query_Service_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Service(ctx, req.(*QueryServiceRequest)) + return srv.(QueryServer).Service(ctx, req.(*QueryRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_Token_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Token(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_Token_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Token(ctx, req.(*QueryRequest)) } return interceptor(ctx, in, info, handler) } @@ -288,10 +288,6 @@ var Query_ServiceDesc = grpc.ServiceDesc{ MethodName: "Credentials", Handler: _Query_Credentials_Handler, }, - { - MethodName: "Identities", - Handler: _Query_Identities_Handler, - }, { MethodName: "Resolve", Handler: _Query_Resolve_Handler, @@ -300,6 +296,10 @@ var Query_ServiceDesc = grpc.ServiceDesc{ MethodName: "Service", Handler: _Query_Service_Handler, }, + { + MethodName: "Token", + Handler: _Query_Token_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "did/v1/query.proto", diff --git a/api/did/v1/state.cosmos_orm.go b/api/did/v1/state.cosmos_orm.go index 2b828873f..dacdc2a70 100644 --- a/api/did/v1/state.cosmos_orm.go +++ b/api/did/v1/state.cosmos_orm.go @@ -17,6 +17,15 @@ type AssertionTable interface { Has(ctx context.Context, id string) (found bool, err error) // Get returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. Get(ctx context.Context, id string) (*Assertion, error) + HasBySubjectOrigin(ctx context.Context, subject string, origin string) (found bool, err error) + // GetBySubjectOrigin returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. + GetBySubjectOrigin(ctx context.Context, subject string, origin string) (*Assertion, error) + HasByControllerOrigin(ctx context.Context, controller string, origin string) (found bool, err error) + // GetByControllerOrigin returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. + GetByControllerOrigin(ctx context.Context, controller string, origin string) (*Assertion, error) + HasByControllerCredentialLabel(ctx context.Context, controller string, credential_label string) (found bool, err error) + // GetByControllerCredentialLabel returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. + GetByControllerCredentialLabel(ctx context.Context, controller string, credential_label string) (*Assertion, error) List(ctx context.Context, prefixKey AssertionIndexKey, opts ...ormlist.Option) (AssertionIterator, error) ListRange(ctx context.Context, from, to AssertionIndexKey, opts ...ormlist.Option) (AssertionIterator, error) DeleteBy(ctx context.Context, prefixKey AssertionIndexKey) error @@ -57,6 +66,60 @@ func (this AssertionIdIndexKey) WithId(id string) AssertionIdIndexKey { return this } +type AssertionSubjectOriginIndexKey struct { + vs []interface{} +} + +func (x AssertionSubjectOriginIndexKey) id() uint32 { return 1 } +func (x AssertionSubjectOriginIndexKey) values() []interface{} { return x.vs } +func (x AssertionSubjectOriginIndexKey) assertionIndexKey() {} + +func (this AssertionSubjectOriginIndexKey) WithSubject(subject string) AssertionSubjectOriginIndexKey { + this.vs = []interface{}{subject} + return this +} + +func (this AssertionSubjectOriginIndexKey) WithSubjectOrigin(subject string, origin string) AssertionSubjectOriginIndexKey { + this.vs = []interface{}{subject, origin} + return this +} + +type AssertionControllerOriginIndexKey struct { + vs []interface{} +} + +func (x AssertionControllerOriginIndexKey) id() uint32 { return 2 } +func (x AssertionControllerOriginIndexKey) values() []interface{} { return x.vs } +func (x AssertionControllerOriginIndexKey) assertionIndexKey() {} + +func (this AssertionControllerOriginIndexKey) WithController(controller string) AssertionControllerOriginIndexKey { + this.vs = []interface{}{controller} + return this +} + +func (this AssertionControllerOriginIndexKey) WithControllerOrigin(controller string, origin string) AssertionControllerOriginIndexKey { + this.vs = []interface{}{controller, origin} + return this +} + +type AssertionControllerCredentialLabelIndexKey struct { + vs []interface{} +} + +func (x AssertionControllerCredentialLabelIndexKey) id() uint32 { return 3 } +func (x AssertionControllerCredentialLabelIndexKey) values() []interface{} { return x.vs } +func (x AssertionControllerCredentialLabelIndexKey) assertionIndexKey() {} + +func (this AssertionControllerCredentialLabelIndexKey) WithController(controller string) AssertionControllerCredentialLabelIndexKey { + this.vs = []interface{}{controller} + return this +} + +func (this AssertionControllerCredentialLabelIndexKey) WithControllerCredentialLabel(controller string, credential_label string) AssertionControllerCredentialLabelIndexKey { + this.vs = []interface{}{controller, credential_label} + return this +} + type assertionTable struct { table ormtable.Table } @@ -93,6 +156,72 @@ func (this assertionTable) Get(ctx context.Context, id string) (*Assertion, erro return &assertion, nil } +func (this assertionTable) HasBySubjectOrigin(ctx context.Context, subject string, origin string) (found bool, err error) { + return this.table.GetIndexByID(1).(ormtable.UniqueIndex).Has(ctx, + subject, + origin, + ) +} + +func (this assertionTable) GetBySubjectOrigin(ctx context.Context, subject string, origin string) (*Assertion, error) { + var assertion Assertion + found, err := this.table.GetIndexByID(1).(ormtable.UniqueIndex).Get(ctx, &assertion, + subject, + origin, + ) + if err != nil { + return nil, err + } + if !found { + return nil, ormerrors.NotFound + } + return &assertion, nil +} + +func (this assertionTable) HasByControllerOrigin(ctx context.Context, controller string, origin string) (found bool, err error) { + return this.table.GetIndexByID(2).(ormtable.UniqueIndex).Has(ctx, + controller, + origin, + ) +} + +func (this assertionTable) GetByControllerOrigin(ctx context.Context, controller string, origin string) (*Assertion, error) { + var assertion Assertion + found, err := this.table.GetIndexByID(2).(ormtable.UniqueIndex).Get(ctx, &assertion, + controller, + origin, + ) + if err != nil { + return nil, err + } + if !found { + return nil, ormerrors.NotFound + } + return &assertion, nil +} + +func (this assertionTable) HasByControllerCredentialLabel(ctx context.Context, controller string, credential_label string) (found bool, err error) { + return this.table.GetIndexByID(3).(ormtable.UniqueIndex).Has(ctx, + controller, + credential_label, + ) +} + +func (this assertionTable) GetByControllerCredentialLabel(ctx context.Context, controller string, credential_label string) (*Assertion, error) { + var assertion Assertion + found, err := this.table.GetIndexByID(3).(ormtable.UniqueIndex).Get(ctx, &assertion, + controller, + credential_label, + ) + if err != nil { + return nil, err + } + if !found { + return nil, ormerrors.NotFound + } + return &assertion, nil +} + func (this assertionTable) List(ctx context.Context, prefixKey AssertionIndexKey, opts ...ormlist.Option) (AssertionIterator, error) { it, err := this.table.GetIndexByID(prefixKey.id()).List(ctx, prefixKey.values(), opts...) return AssertionIterator{it}, err @@ -134,6 +263,9 @@ type AttestationTable interface { HasBySubjectOrigin(ctx context.Context, subject string, origin string) (found bool, err error) // GetBySubjectOrigin returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. GetBySubjectOrigin(ctx context.Context, subject string, origin string) (*Attestation, error) + HasByControllerOrigin(ctx context.Context, controller string, origin string) (found bool, err error) + // GetByControllerOrigin returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. + GetByControllerOrigin(ctx context.Context, controller string, origin string) (*Attestation, error) List(ctx context.Context, prefixKey AttestationIndexKey, opts ...ormlist.Option) (AttestationIterator, error) ListRange(ctx context.Context, from, to AttestationIndexKey, opts ...ormlist.Option) (AttestationIterator, error) DeleteBy(ctx context.Context, prefixKey AttestationIndexKey) error @@ -192,6 +324,24 @@ func (this AttestationSubjectOriginIndexKey) WithSubjectOrigin(subject string, o return this } +type AttestationControllerOriginIndexKey struct { + vs []interface{} +} + +func (x AttestationControllerOriginIndexKey) id() uint32 { return 2 } +func (x AttestationControllerOriginIndexKey) values() []interface{} { return x.vs } +func (x AttestationControllerOriginIndexKey) attestationIndexKey() {} + +func (this AttestationControllerOriginIndexKey) WithController(controller string) AttestationControllerOriginIndexKey { + this.vs = []interface{}{controller} + return this +} + +func (this AttestationControllerOriginIndexKey) WithControllerOrigin(controller string, origin string) AttestationControllerOriginIndexKey { + this.vs = []interface{}{controller, origin} + return this +} + type attestationTable struct { table ormtable.Table } @@ -250,6 +400,28 @@ func (this attestationTable) GetBySubjectOrigin(ctx context.Context, subject str return &attestation, nil } +func (this attestationTable) HasByControllerOrigin(ctx context.Context, controller string, origin string) (found bool, err error) { + return this.table.GetIndexByID(2).(ormtable.UniqueIndex).Has(ctx, + controller, + origin, + ) +} + +func (this attestationTable) GetByControllerOrigin(ctx context.Context, controller string, origin string) (*Attestation, error) { + var attestation Attestation + found, err := this.table.GetIndexByID(2).(ormtable.UniqueIndex).Get(ctx, &attestation, + controller, + origin, + ) + if err != nil { + return nil, err + } + if !found { + return nil, ormerrors.NotFound + } + return &attestation, nil +} + func (this attestationTable) List(ctx context.Context, prefixKey AttestationIndexKey, opts ...ormlist.Option) (AttestationIterator, error) { it, err := this.table.GetIndexByID(prefixKey.id()).List(ctx, prefixKey.values(), opts...) return AttestationIterator{it}, err @@ -288,6 +460,12 @@ type ControllerTable interface { Has(ctx context.Context, id string) (found bool, err error) // Get returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. Get(ctx context.Context, id string) (*Controller, error) + HasByAddress(ctx context.Context, address string) (found bool, err error) + // GetByAddress returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. + GetByAddress(ctx context.Context, address string) (*Controller, error) + HasByVaultCid(ctx context.Context, vault_cid string) (found bool, err error) + // GetByVaultCid returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. + GetByVaultCid(ctx context.Context, vault_cid string) (*Controller, error) List(ctx context.Context, prefixKey ControllerIndexKey, opts ...ormlist.Option) (ControllerIterator, error) ListRange(ctx context.Context, from, to ControllerIndexKey, opts ...ormlist.Option) (ControllerIterator, error) DeleteBy(ctx context.Context, prefixKey ControllerIndexKey) error @@ -328,6 +506,32 @@ func (this ControllerIdIndexKey) WithId(id string) ControllerIdIndexKey { return this } +type ControllerAddressIndexKey struct { + vs []interface{} +} + +func (x ControllerAddressIndexKey) id() uint32 { return 1 } +func (x ControllerAddressIndexKey) values() []interface{} { return x.vs } +func (x ControllerAddressIndexKey) controllerIndexKey() {} + +func (this ControllerAddressIndexKey) WithAddress(address string) ControllerAddressIndexKey { + this.vs = []interface{}{address} + return this +} + +type ControllerVaultCidIndexKey struct { + vs []interface{} +} + +func (x ControllerVaultCidIndexKey) id() uint32 { return 2 } +func (x ControllerVaultCidIndexKey) values() []interface{} { return x.vs } +func (x ControllerVaultCidIndexKey) controllerIndexKey() {} + +func (this ControllerVaultCidIndexKey) WithVaultCid(vault_cid string) ControllerVaultCidIndexKey { + this.vs = []interface{}{vault_cid} + return this +} + type controllerTable struct { table ormtable.Table } @@ -364,6 +568,46 @@ func (this controllerTable) Get(ctx context.Context, id string) (*Controller, er return &controller, nil } +func (this controllerTable) HasByAddress(ctx context.Context, address string) (found bool, err error) { + return this.table.GetIndexByID(1).(ormtable.UniqueIndex).Has(ctx, + address, + ) +} + +func (this controllerTable) GetByAddress(ctx context.Context, address string) (*Controller, error) { + var controller Controller + found, err := this.table.GetIndexByID(1).(ormtable.UniqueIndex).Get(ctx, &controller, + address, + ) + if err != nil { + return nil, err + } + if !found { + return nil, ormerrors.NotFound + } + return &controller, nil +} + +func (this controllerTable) HasByVaultCid(ctx context.Context, vault_cid string) (found bool, err error) { + return this.table.GetIndexByID(2).(ormtable.UniqueIndex).Has(ctx, + vault_cid, + ) +} + +func (this controllerTable) GetByVaultCid(ctx context.Context, vault_cid string) (*Controller, error) { + var controller Controller + found, err := this.table.GetIndexByID(2).(ormtable.UniqueIndex).Get(ctx, &controller, + vault_cid, + ) + if err != nil { + return nil, err + } + if !found { + return nil, ormerrors.NotFound + } + return &controller, nil +} + func (this controllerTable) List(ctx context.Context, prefixKey ControllerIndexKey, opts ...ormlist.Option) (ControllerIterator, error) { it, err := this.table.GetIndexByID(prefixKey.id()).List(ctx, prefixKey.values(), opts...) return ControllerIterator{it}, err @@ -402,6 +646,12 @@ type DelegationTable interface { Has(ctx context.Context, id string) (found bool, err error) // Get returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. Get(ctx context.Context, id string) (*Delegation, error) + HasByAccountAddressChainId(ctx context.Context, account_address string, chain_id string) (found bool, err error) + // GetByAccountAddressChainId returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. + GetByAccountAddressChainId(ctx context.Context, account_address string, chain_id string) (*Delegation, error) + HasByControllerAccountLabel(ctx context.Context, controller string, account_label string) (found bool, err error) + // GetByControllerAccountLabel returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. + GetByControllerAccountLabel(ctx context.Context, controller string, account_label string) (*Delegation, error) List(ctx context.Context, prefixKey DelegationIndexKey, opts ...ormlist.Option) (DelegationIterator, error) ListRange(ctx context.Context, from, to DelegationIndexKey, opts ...ormlist.Option) (DelegationIterator, error) DeleteBy(ctx context.Context, prefixKey DelegationIndexKey) error @@ -442,6 +692,60 @@ func (this DelegationIdIndexKey) WithId(id string) DelegationIdIndexKey { return this } +type DelegationAccountAddressChainIdIndexKey struct { + vs []interface{} +} + +func (x DelegationAccountAddressChainIdIndexKey) id() uint32 { return 1 } +func (x DelegationAccountAddressChainIdIndexKey) values() []interface{} { return x.vs } +func (x DelegationAccountAddressChainIdIndexKey) delegationIndexKey() {} + +func (this DelegationAccountAddressChainIdIndexKey) WithAccountAddress(account_address string) DelegationAccountAddressChainIdIndexKey { + this.vs = []interface{}{account_address} + return this +} + +func (this DelegationAccountAddressChainIdIndexKey) WithAccountAddressChainId(account_address string, chain_id string) DelegationAccountAddressChainIdIndexKey { + this.vs = []interface{}{account_address, chain_id} + return this +} + +type DelegationControllerAccountLabelIndexKey struct { + vs []interface{} +} + +func (x DelegationControllerAccountLabelIndexKey) id() uint32 { return 2 } +func (x DelegationControllerAccountLabelIndexKey) values() []interface{} { return x.vs } +func (x DelegationControllerAccountLabelIndexKey) delegationIndexKey() {} + +func (this DelegationControllerAccountLabelIndexKey) WithController(controller string) DelegationControllerAccountLabelIndexKey { + this.vs = []interface{}{controller} + return this +} + +func (this DelegationControllerAccountLabelIndexKey) WithControllerAccountLabel(controller string, account_label string) DelegationControllerAccountLabelIndexKey { + this.vs = []interface{}{controller, account_label} + return this +} + +type DelegationControllerChainIdIndexKey struct { + vs []interface{} +} + +func (x DelegationControllerChainIdIndexKey) id() uint32 { return 3 } +func (x DelegationControllerChainIdIndexKey) values() []interface{} { return x.vs } +func (x DelegationControllerChainIdIndexKey) delegationIndexKey() {} + +func (this DelegationControllerChainIdIndexKey) WithController(controller string) DelegationControllerChainIdIndexKey { + this.vs = []interface{}{controller} + return this +} + +func (this DelegationControllerChainIdIndexKey) WithControllerChainId(controller string, chain_id string) DelegationControllerChainIdIndexKey { + this.vs = []interface{}{controller, chain_id} + return this +} + type delegationTable struct { table ormtable.Table } @@ -478,6 +782,50 @@ func (this delegationTable) Get(ctx context.Context, id string) (*Delegation, er return &delegation, nil } +func (this delegationTable) HasByAccountAddressChainId(ctx context.Context, account_address string, chain_id string) (found bool, err error) { + return this.table.GetIndexByID(1).(ormtable.UniqueIndex).Has(ctx, + account_address, + chain_id, + ) +} + +func (this delegationTable) GetByAccountAddressChainId(ctx context.Context, account_address string, chain_id string) (*Delegation, error) { + var delegation Delegation + found, err := this.table.GetIndexByID(1).(ormtable.UniqueIndex).Get(ctx, &delegation, + account_address, + chain_id, + ) + if err != nil { + return nil, err + } + if !found { + return nil, ormerrors.NotFound + } + return &delegation, nil +} + +func (this delegationTable) HasByControllerAccountLabel(ctx context.Context, controller string, account_label string) (found bool, err error) { + return this.table.GetIndexByID(2).(ormtable.UniqueIndex).Has(ctx, + controller, + account_label, + ) +} + +func (this delegationTable) GetByControllerAccountLabel(ctx context.Context, controller string, account_label string) (*Delegation, error) { + var delegation Delegation + found, err := this.table.GetIndexByID(2).(ormtable.UniqueIndex).Get(ctx, &delegation, + controller, + account_label, + ) + if err != nil { + return nil, err + } + if !found { + return nil, ormerrors.NotFound + } + return &delegation, nil +} + func (this delegationTable) List(ctx context.Context, prefixKey DelegationIndexKey, opts ...ormlist.Option) (DelegationIterator, error) { it, err := this.table.GetIndexByID(prefixKey.id()).List(ctx, prefixKey.values(), opts...) return DelegationIterator{it}, err @@ -508,118 +856,197 @@ func NewDelegationTable(db ormtable.Schema) (DelegationTable, error) { return delegationTable{table}, nil } -type ServiceTable interface { - Insert(ctx context.Context, service *Service) error - Update(ctx context.Context, service *Service) error - Save(ctx context.Context, service *Service) error - Delete(ctx context.Context, service *Service) error +type ServiceRecordTable interface { + Insert(ctx context.Context, serviceRecord *ServiceRecord) error + Update(ctx context.Context, serviceRecord *ServiceRecord) error + Save(ctx context.Context, serviceRecord *ServiceRecord) error + Delete(ctx context.Context, serviceRecord *ServiceRecord) error Has(ctx context.Context, id string) (found bool, err error) // Get returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. - Get(ctx context.Context, id string) (*Service, error) - List(ctx context.Context, prefixKey ServiceIndexKey, opts ...ormlist.Option) (ServiceIterator, error) - ListRange(ctx context.Context, from, to ServiceIndexKey, opts ...ormlist.Option) (ServiceIterator, error) - DeleteBy(ctx context.Context, prefixKey ServiceIndexKey) error - DeleteRange(ctx context.Context, from, to ServiceIndexKey) error + Get(ctx context.Context, id string) (*ServiceRecord, error) + HasByOriginUri(ctx context.Context, origin_uri string) (found bool, err error) + // GetByOriginUri returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. + GetByOriginUri(ctx context.Context, origin_uri string) (*ServiceRecord, error) + HasByControllerOriginUri(ctx context.Context, controller string, origin_uri string) (found bool, err error) + // GetByControllerOriginUri returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. + GetByControllerOriginUri(ctx context.Context, controller string, origin_uri string) (*ServiceRecord, error) + List(ctx context.Context, prefixKey ServiceRecordIndexKey, opts ...ormlist.Option) (ServiceRecordIterator, error) + ListRange(ctx context.Context, from, to ServiceRecordIndexKey, opts ...ormlist.Option) (ServiceRecordIterator, error) + DeleteBy(ctx context.Context, prefixKey ServiceRecordIndexKey) error + DeleteRange(ctx context.Context, from, to ServiceRecordIndexKey) error doNotImplement() } -type ServiceIterator struct { +type ServiceRecordIterator struct { ormtable.Iterator } -func (i ServiceIterator) Value() (*Service, error) { - var service Service - err := i.UnmarshalMessage(&service) - return &service, err +func (i ServiceRecordIterator) Value() (*ServiceRecord, error) { + var serviceRecord ServiceRecord + err := i.UnmarshalMessage(&serviceRecord) + return &serviceRecord, err } -type ServiceIndexKey interface { +type ServiceRecordIndexKey interface { id() uint32 values() []interface{} - serviceIndexKey() + serviceRecordIndexKey() } // primary key starting index.. -type ServicePrimaryKey = ServiceIdIndexKey +type ServiceRecordPrimaryKey = ServiceRecordIdIndexKey -type ServiceIdIndexKey struct { +type ServiceRecordIdIndexKey struct { vs []interface{} } -func (x ServiceIdIndexKey) id() uint32 { return 0 } -func (x ServiceIdIndexKey) values() []interface{} { return x.vs } -func (x ServiceIdIndexKey) serviceIndexKey() {} +func (x ServiceRecordIdIndexKey) id() uint32 { return 0 } +func (x ServiceRecordIdIndexKey) values() []interface{} { return x.vs } +func (x ServiceRecordIdIndexKey) serviceRecordIndexKey() {} -func (this ServiceIdIndexKey) WithId(id string) ServiceIdIndexKey { +func (this ServiceRecordIdIndexKey) WithId(id string) ServiceRecordIdIndexKey { this.vs = []interface{}{id} return this } -type serviceTable struct { +type ServiceRecordOriginUriIndexKey struct { + vs []interface{} +} + +func (x ServiceRecordOriginUriIndexKey) id() uint32 { return 1 } +func (x ServiceRecordOriginUriIndexKey) values() []interface{} { return x.vs } +func (x ServiceRecordOriginUriIndexKey) serviceRecordIndexKey() {} + +func (this ServiceRecordOriginUriIndexKey) WithOriginUri(origin_uri string) ServiceRecordOriginUriIndexKey { + this.vs = []interface{}{origin_uri} + return this +} + +type ServiceRecordControllerOriginUriIndexKey struct { + vs []interface{} +} + +func (x ServiceRecordControllerOriginUriIndexKey) id() uint32 { return 2 } +func (x ServiceRecordControllerOriginUriIndexKey) values() []interface{} { return x.vs } +func (x ServiceRecordControllerOriginUriIndexKey) serviceRecordIndexKey() {} + +func (this ServiceRecordControllerOriginUriIndexKey) WithController(controller string) ServiceRecordControllerOriginUriIndexKey { + this.vs = []interface{}{controller} + return this +} + +func (this ServiceRecordControllerOriginUriIndexKey) WithControllerOriginUri(controller string, origin_uri string) ServiceRecordControllerOriginUriIndexKey { + this.vs = []interface{}{controller, origin_uri} + return this +} + +type serviceRecordTable struct { table ormtable.Table } -func (this serviceTable) Insert(ctx context.Context, service *Service) error { - return this.table.Insert(ctx, service) +func (this serviceRecordTable) Insert(ctx context.Context, serviceRecord *ServiceRecord) error { + return this.table.Insert(ctx, serviceRecord) } -func (this serviceTable) Update(ctx context.Context, service *Service) error { - return this.table.Update(ctx, service) +func (this serviceRecordTable) Update(ctx context.Context, serviceRecord *ServiceRecord) error { + return this.table.Update(ctx, serviceRecord) } -func (this serviceTable) Save(ctx context.Context, service *Service) error { - return this.table.Save(ctx, service) +func (this serviceRecordTable) Save(ctx context.Context, serviceRecord *ServiceRecord) error { + return this.table.Save(ctx, serviceRecord) } -func (this serviceTable) Delete(ctx context.Context, service *Service) error { - return this.table.Delete(ctx, service) +func (this serviceRecordTable) Delete(ctx context.Context, serviceRecord *ServiceRecord) error { + return this.table.Delete(ctx, serviceRecord) } -func (this serviceTable) Has(ctx context.Context, id string) (found bool, err error) { +func (this serviceRecordTable) Has(ctx context.Context, id string) (found bool, err error) { return this.table.PrimaryKey().Has(ctx, id) } -func (this serviceTable) Get(ctx context.Context, id string) (*Service, error) { - var service Service - found, err := this.table.PrimaryKey().Get(ctx, &service, id) +func (this serviceRecordTable) Get(ctx context.Context, id string) (*ServiceRecord, error) { + var serviceRecord ServiceRecord + found, err := this.table.PrimaryKey().Get(ctx, &serviceRecord, id) if err != nil { return nil, err } if !found { return nil, ormerrors.NotFound } - return &service, nil + return &serviceRecord, nil } -func (this serviceTable) List(ctx context.Context, prefixKey ServiceIndexKey, opts ...ormlist.Option) (ServiceIterator, error) { +func (this serviceRecordTable) HasByOriginUri(ctx context.Context, origin_uri string) (found bool, err error) { + return this.table.GetIndexByID(1).(ormtable.UniqueIndex).Has(ctx, + origin_uri, + ) +} + +func (this serviceRecordTable) GetByOriginUri(ctx context.Context, origin_uri string) (*ServiceRecord, error) { + var serviceRecord ServiceRecord + found, err := this.table.GetIndexByID(1).(ormtable.UniqueIndex).Get(ctx, &serviceRecord, + origin_uri, + ) + if err != nil { + return nil, err + } + if !found { + return nil, ormerrors.NotFound + } + return &serviceRecord, nil +} + +func (this serviceRecordTable) HasByControllerOriginUri(ctx context.Context, controller string, origin_uri string) (found bool, err error) { + return this.table.GetIndexByID(2).(ormtable.UniqueIndex).Has(ctx, + controller, + origin_uri, + ) +} + +func (this serviceRecordTable) GetByControllerOriginUri(ctx context.Context, controller string, origin_uri string) (*ServiceRecord, error) { + var serviceRecord ServiceRecord + found, err := this.table.GetIndexByID(2).(ormtable.UniqueIndex).Get(ctx, &serviceRecord, + controller, + origin_uri, + ) + if err != nil { + return nil, err + } + if !found { + return nil, ormerrors.NotFound + } + return &serviceRecord, nil +} + +func (this serviceRecordTable) List(ctx context.Context, prefixKey ServiceRecordIndexKey, opts ...ormlist.Option) (ServiceRecordIterator, error) { it, err := this.table.GetIndexByID(prefixKey.id()).List(ctx, prefixKey.values(), opts...) - return ServiceIterator{it}, err + return ServiceRecordIterator{it}, err } -func (this serviceTable) ListRange(ctx context.Context, from, to ServiceIndexKey, opts ...ormlist.Option) (ServiceIterator, error) { +func (this serviceRecordTable) ListRange(ctx context.Context, from, to ServiceRecordIndexKey, opts ...ormlist.Option) (ServiceRecordIterator, error) { it, err := this.table.GetIndexByID(from.id()).ListRange(ctx, from.values(), to.values(), opts...) - return ServiceIterator{it}, err + return ServiceRecordIterator{it}, err } -func (this serviceTable) DeleteBy(ctx context.Context, prefixKey ServiceIndexKey) error { +func (this serviceRecordTable) DeleteBy(ctx context.Context, prefixKey ServiceRecordIndexKey) error { return this.table.GetIndexByID(prefixKey.id()).DeleteBy(ctx, prefixKey.values()...) } -func (this serviceTable) DeleteRange(ctx context.Context, from, to ServiceIndexKey) error { +func (this serviceRecordTable) DeleteRange(ctx context.Context, from, to ServiceRecordIndexKey) error { return this.table.GetIndexByID(from.id()).DeleteRange(ctx, from.values(), to.values()) } -func (this serviceTable) doNotImplement() {} +func (this serviceRecordTable) doNotImplement() {} -var _ ServiceTable = serviceTable{} +var _ ServiceRecordTable = serviceRecordTable{} -func NewServiceTable(db ormtable.Schema) (ServiceTable, error) { - table := db.GetTable(&Service{}) +func NewServiceRecordTable(db ormtable.Schema) (ServiceRecordTable, error) { + table := db.GetTable(&ServiceRecord{}) if table == nil { - return nil, ormerrors.TableNotFound.Wrap(string((&Service{}).ProtoReflect().Descriptor().FullName())) + return nil, ormerrors.TableNotFound.Wrap(string((&ServiceRecord{}).ProtoReflect().Descriptor().FullName())) } - return serviceTable{table}, nil + return serviceRecordTable{table}, nil } type StateStore interface { @@ -627,17 +1054,17 @@ type StateStore interface { AttestationTable() AttestationTable ControllerTable() ControllerTable DelegationTable() DelegationTable - ServiceTable() ServiceTable + ServiceRecordTable() ServiceRecordTable doNotImplement() } type stateStore struct { - assertion AssertionTable - attestation AttestationTable - controller ControllerTable - delegation DelegationTable - service ServiceTable + assertion AssertionTable + attestation AttestationTable + controller ControllerTable + delegation DelegationTable + serviceRecord ServiceRecordTable } func (x stateStore) AssertionTable() AssertionTable { @@ -656,8 +1083,8 @@ func (x stateStore) DelegationTable() DelegationTable { return x.delegation } -func (x stateStore) ServiceTable() ServiceTable { - return x.service +func (x stateStore) ServiceRecordTable() ServiceRecordTable { + return x.serviceRecord } func (stateStore) doNotImplement() {} @@ -685,7 +1112,7 @@ func NewStateStore(db ormtable.Schema) (StateStore, error) { return nil, err } - serviceTable, err := NewServiceTable(db) + serviceRecordTable, err := NewServiceRecordTable(db) if err != nil { return nil, err } @@ -695,6 +1122,6 @@ func NewStateStore(db ormtable.Schema) (StateStore, error) { attestationTable, controllerTable, delegationTable, - serviceTable, + serviceRecordTable, }, nil } diff --git a/api/did/v1/state.pulsar.go b/api/did/v1/state.pulsar.go index 54f783844..069e8f3bc 100644 --- a/api/did/v1/state.pulsar.go +++ b/api/did/v1/state.pulsar.go @@ -15,12 +15,15 @@ import ( ) var ( - md_Assertion protoreflect.MessageDescriptor - fd_Assertion_id protoreflect.FieldDescriptor - fd_Assertion_controller protoreflect.FieldDescriptor - fd_Assertion_public_key protoreflect.FieldDescriptor - fd_Assertion_credential_id protoreflect.FieldDescriptor - fd_Assertion_metadata protoreflect.FieldDescriptor + md_Assertion protoreflect.MessageDescriptor + fd_Assertion_id protoreflect.FieldDescriptor + fd_Assertion_controller protoreflect.FieldDescriptor + fd_Assertion_public_key protoreflect.FieldDescriptor + fd_Assertion_credential_id protoreflect.FieldDescriptor + fd_Assertion_credential_label protoreflect.FieldDescriptor + fd_Assertion_origin protoreflect.FieldDescriptor + fd_Assertion_subject protoreflect.FieldDescriptor + fd_Assertion_metadata protoreflect.FieldDescriptor ) func init() { @@ -30,6 +33,9 @@ func init() { fd_Assertion_controller = md_Assertion.Fields().ByName("controller") fd_Assertion_public_key = md_Assertion.Fields().ByName("public_key") fd_Assertion_credential_id = md_Assertion.Fields().ByName("credential_id") + fd_Assertion_credential_label = md_Assertion.Fields().ByName("credential_label") + fd_Assertion_origin = md_Assertion.Fields().ByName("origin") + fd_Assertion_subject = md_Assertion.Fields().ByName("subject") fd_Assertion_metadata = md_Assertion.Fields().ByName("metadata") } @@ -122,6 +128,24 @@ func (x *fastReflection_Assertion) Range(f func(protoreflect.FieldDescriptor, pr return } } + if x.CredentialLabel != "" { + value := protoreflect.ValueOfString(x.CredentialLabel) + if !f(fd_Assertion_credential_label, value) { + return + } + } + if x.Origin != "" { + value := protoreflect.ValueOfString(x.Origin) + if !f(fd_Assertion_origin, value) { + return + } + } + if x.Subject != "" { + value := protoreflect.ValueOfString(x.Subject) + if !f(fd_Assertion_subject, value) { + return + } + } if x.Metadata != nil { value := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) if !f(fd_Assertion_metadata, value) { @@ -151,6 +175,12 @@ func (x *fastReflection_Assertion) Has(fd protoreflect.FieldDescriptor) bool { return x.PublicKey != nil case "did.v1.Assertion.credential_id": return len(x.CredentialId) != 0 + case "did.v1.Assertion.credential_label": + return x.CredentialLabel != "" + case "did.v1.Assertion.origin": + return x.Origin != "" + case "did.v1.Assertion.subject": + return x.Subject != "" case "did.v1.Assertion.metadata": return x.Metadata != nil default: @@ -177,6 +207,12 @@ func (x *fastReflection_Assertion) Clear(fd protoreflect.FieldDescriptor) { x.PublicKey = nil case "did.v1.Assertion.credential_id": x.CredentialId = nil + case "did.v1.Assertion.credential_label": + x.CredentialLabel = "" + case "did.v1.Assertion.origin": + x.Origin = "" + case "did.v1.Assertion.subject": + x.Subject = "" case "did.v1.Assertion.metadata": x.Metadata = nil default: @@ -207,6 +243,15 @@ func (x *fastReflection_Assertion) Get(descriptor protoreflect.FieldDescriptor) case "did.v1.Assertion.credential_id": value := x.CredentialId return protoreflect.ValueOfBytes(value) + case "did.v1.Assertion.credential_label": + value := x.CredentialLabel + return protoreflect.ValueOfString(value) + case "did.v1.Assertion.origin": + value := x.Origin + return protoreflect.ValueOfString(value) + case "did.v1.Assertion.subject": + value := x.Subject + return protoreflect.ValueOfString(value) case "did.v1.Assertion.metadata": value := x.Metadata return protoreflect.ValueOfMessage(value.ProtoReflect()) @@ -238,6 +283,12 @@ func (x *fastReflection_Assertion) Set(fd protoreflect.FieldDescriptor, value pr x.PublicKey = value.Message().Interface().(*PubKey) case "did.v1.Assertion.credential_id": x.CredentialId = value.Bytes() + case "did.v1.Assertion.credential_label": + x.CredentialLabel = value.Interface().(string) + case "did.v1.Assertion.origin": + x.Origin = value.Interface().(string) + case "did.v1.Assertion.subject": + x.Subject = value.Interface().(string) case "did.v1.Assertion.metadata": x.Metadata = value.Message().Interface().(*Metadata) default: @@ -276,6 +327,12 @@ func (x *fastReflection_Assertion) Mutable(fd protoreflect.FieldDescriptor) prot panic(fmt.Errorf("field controller of message did.v1.Assertion is not mutable")) case "did.v1.Assertion.credential_id": panic(fmt.Errorf("field credential_id of message did.v1.Assertion is not mutable")) + case "did.v1.Assertion.credential_label": + panic(fmt.Errorf("field credential_label of message did.v1.Assertion is not mutable")) + case "did.v1.Assertion.origin": + panic(fmt.Errorf("field origin of message did.v1.Assertion is not mutable")) + case "did.v1.Assertion.subject": + panic(fmt.Errorf("field subject of message did.v1.Assertion is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Assertion")) @@ -298,6 +355,12 @@ func (x *fastReflection_Assertion) NewField(fd protoreflect.FieldDescriptor) pro return protoreflect.ValueOfMessage(m.ProtoReflect()) case "did.v1.Assertion.credential_id": return protoreflect.ValueOfBytes(nil) + case "did.v1.Assertion.credential_label": + return protoreflect.ValueOfString("") + case "did.v1.Assertion.origin": + return protoreflect.ValueOfString("") + case "did.v1.Assertion.subject": + return protoreflect.ValueOfString("") case "did.v1.Assertion.metadata": m := new(Metadata) return protoreflect.ValueOfMessage(m.ProtoReflect()) @@ -386,6 +449,18 @@ func (x *fastReflection_Assertion) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + l = len(x.CredentialLabel) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Origin) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Subject) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.Metadata != nil { l = options.Size(x.Metadata) n += 1 + l + runtime.Sov(uint64(l)) @@ -431,6 +506,27 @@ func (x *fastReflection_Assertion) ProtoMethods() *protoiface.Methods { copy(dAtA[i:], encoded) i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) i-- + dAtA[i] = 0x42 + } + if len(x.Subject) > 0 { + i -= len(x.Subject) + copy(dAtA[i:], x.Subject) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Subject))) + i-- + dAtA[i] = 0x3a + } + if len(x.Origin) > 0 { + i -= len(x.Origin) + copy(dAtA[i:], x.Origin) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Origin))) + i-- + dAtA[i] = 0x32 + } + if len(x.CredentialLabel) > 0 { + i -= len(x.CredentialLabel) + copy(dAtA[i:], x.CredentialLabel) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.CredentialLabel))) + i-- dAtA[i] = 0x2a } if len(x.CredentialId) > 0 { @@ -652,6 +748,102 @@ func (x *fastReflection_Assertion) ProtoMethods() *protoiface.Methods { } iNdEx = postIndex case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field CredentialLabel", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.CredentialLabel = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Origin = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Subject = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) } @@ -1492,10 +1684,57 @@ func (x *fastReflection_Attestation) ProtoMethods() *protoiface.Methods { } } +var _ protoreflect.List = (*_Controller_3_list)(nil) + +type _Controller_3_list struct { + list *[]string +} + +func (x *_Controller_3_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_Controller_3_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_Controller_3_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_Controller_3_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_Controller_3_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message Controller at list field Aliases as it is not of Message kind")) +} + +func (x *_Controller_3_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_Controller_3_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_Controller_3_list) IsValid() bool { + return x.list != nil +} + var ( md_Controller protoreflect.MessageDescriptor fd_Controller_id protoreflect.FieldDescriptor fd_Controller_address protoreflect.FieldDescriptor + fd_Controller_aliases protoreflect.FieldDescriptor fd_Controller_public_key protoreflect.FieldDescriptor fd_Controller_vault_cid protoreflect.FieldDescriptor ) @@ -1505,6 +1744,7 @@ func init() { md_Controller = File_did_v1_state_proto.Messages().ByName("Controller") fd_Controller_id = md_Controller.Fields().ByName("id") fd_Controller_address = md_Controller.Fields().ByName("address") + fd_Controller_aliases = md_Controller.Fields().ByName("aliases") fd_Controller_public_key = md_Controller.Fields().ByName("public_key") fd_Controller_vault_cid = md_Controller.Fields().ByName("vault_cid") } @@ -1586,6 +1826,12 @@ func (x *fastReflection_Controller) Range(f func(protoreflect.FieldDescriptor, p return } } + if len(x.Aliases) != 0 { + value := protoreflect.ValueOfList(&_Controller_3_list{list: &x.Aliases}) + if !f(fd_Controller_aliases, value) { + return + } + } if x.PublicKey != nil { value := protoreflect.ValueOfMessage(x.PublicKey.ProtoReflect()) if !f(fd_Controller_public_key, value) { @@ -1617,6 +1863,8 @@ func (x *fastReflection_Controller) Has(fd protoreflect.FieldDescriptor) bool { return x.Id != "" case "did.v1.Controller.address": return x.Address != "" + case "did.v1.Controller.aliases": + return len(x.Aliases) != 0 case "did.v1.Controller.public_key": return x.PublicKey != nil case "did.v1.Controller.vault_cid": @@ -1641,6 +1889,8 @@ func (x *fastReflection_Controller) Clear(fd protoreflect.FieldDescriptor) { x.Id = "" case "did.v1.Controller.address": x.Address = "" + case "did.v1.Controller.aliases": + x.Aliases = nil case "did.v1.Controller.public_key": x.PublicKey = nil case "did.v1.Controller.vault_cid": @@ -1667,6 +1917,12 @@ func (x *fastReflection_Controller) Get(descriptor protoreflect.FieldDescriptor) case "did.v1.Controller.address": value := x.Address return protoreflect.ValueOfString(value) + case "did.v1.Controller.aliases": + if len(x.Aliases) == 0 { + return protoreflect.ValueOfList(&_Controller_3_list{}) + } + listValue := &_Controller_3_list{list: &x.Aliases} + return protoreflect.ValueOfList(listValue) case "did.v1.Controller.public_key": value := x.PublicKey return protoreflect.ValueOfMessage(value.ProtoReflect()) @@ -1697,6 +1953,10 @@ func (x *fastReflection_Controller) Set(fd protoreflect.FieldDescriptor, value p x.Id = value.Interface().(string) case "did.v1.Controller.address": x.Address = value.Interface().(string) + case "did.v1.Controller.aliases": + lv := value.List() + clv := lv.(*_Controller_3_list) + x.Aliases = *clv.list case "did.v1.Controller.public_key": x.PublicKey = value.Message().Interface().(*PubKey) case "did.v1.Controller.vault_cid": @@ -1721,6 +1981,12 @@ func (x *fastReflection_Controller) Set(fd protoreflect.FieldDescriptor, value p // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_Controller) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "did.v1.Controller.aliases": + if x.Aliases == nil { + x.Aliases = []string{} + } + value := &_Controller_3_list{list: &x.Aliases} + return protoreflect.ValueOfList(value) case "did.v1.Controller.public_key": if x.PublicKey == nil { x.PublicKey = new(PubKey) @@ -1749,6 +2015,9 @@ func (x *fastReflection_Controller) NewField(fd protoreflect.FieldDescriptor) pr return protoreflect.ValueOfString("") case "did.v1.Controller.address": return protoreflect.ValueOfString("") + case "did.v1.Controller.aliases": + list := []string{} + return protoreflect.ValueOfList(&_Controller_3_list{list: &list}) case "did.v1.Controller.public_key": m := new(PubKey) return protoreflect.ValueOfMessage(m.ProtoReflect()) @@ -1831,6 +2100,12 @@ func (x *fastReflection_Controller) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if len(x.Aliases) > 0 { + for _, s := range x.Aliases { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } if x.PublicKey != nil { l = options.Size(x.PublicKey) n += 1 + l + runtime.Sov(uint64(l)) @@ -1889,6 +2164,15 @@ func (x *fastReflection_Controller) ProtoMethods() *protoiface.Methods { i-- dAtA[i] = 0x22 } + if len(x.Aliases) > 0 { + for iNdEx := len(x.Aliases) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.Aliases[iNdEx]) + copy(dAtA[i:], x.Aliases[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Aliases[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } if len(x.Address) > 0 { i -= len(x.Address) copy(dAtA[i:], x.Address) @@ -2016,6 +2300,38 @@ func (x *fastReflection_Controller) ProtoMethods() *protoiface.Methods { } x.Address = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Aliases", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Aliases = append(x.Aliases, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex case 4: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field PublicKey", wireType) @@ -2120,11 +2436,14 @@ func (x *fastReflection_Controller) ProtoMethods() *protoiface.Methods { } var ( - md_Delegation protoreflect.MessageDescriptor - fd_Delegation_id protoreflect.FieldDescriptor - fd_Delegation_controller protoreflect.FieldDescriptor - fd_Delegation_chain_info_id protoreflect.FieldDescriptor - fd_Delegation_public_key protoreflect.FieldDescriptor + md_Delegation protoreflect.MessageDescriptor + fd_Delegation_id protoreflect.FieldDescriptor + fd_Delegation_controller protoreflect.FieldDescriptor + fd_Delegation_chain_index protoreflect.FieldDescriptor + fd_Delegation_public_key protoreflect.FieldDescriptor + fd_Delegation_account_address protoreflect.FieldDescriptor + fd_Delegation_account_label protoreflect.FieldDescriptor + fd_Delegation_chain_id protoreflect.FieldDescriptor ) func init() { @@ -2132,8 +2451,11 @@ func init() { md_Delegation = File_did_v1_state_proto.Messages().ByName("Delegation") fd_Delegation_id = md_Delegation.Fields().ByName("id") fd_Delegation_controller = md_Delegation.Fields().ByName("controller") - fd_Delegation_chain_info_id = md_Delegation.Fields().ByName("chain_info_id") + fd_Delegation_chain_index = md_Delegation.Fields().ByName("chain_index") fd_Delegation_public_key = md_Delegation.Fields().ByName("public_key") + fd_Delegation_account_address = md_Delegation.Fields().ByName("account_address") + fd_Delegation_account_label = md_Delegation.Fields().ByName("account_label") + fd_Delegation_chain_id = md_Delegation.Fields().ByName("chain_id") } var _ protoreflect.Message = (*fastReflection_Delegation)(nil) @@ -2213,9 +2535,9 @@ func (x *fastReflection_Delegation) Range(f func(protoreflect.FieldDescriptor, p return } } - if x.ChainInfoId != "" { - value := protoreflect.ValueOfString(x.ChainInfoId) - if !f(fd_Delegation_chain_info_id, value) { + if x.ChainIndex != "" { + value := protoreflect.ValueOfString(x.ChainIndex) + if !f(fd_Delegation_chain_index, value) { return } } @@ -2225,6 +2547,24 @@ func (x *fastReflection_Delegation) Range(f func(protoreflect.FieldDescriptor, p return } } + if x.AccountAddress != "" { + value := protoreflect.ValueOfString(x.AccountAddress) + if !f(fd_Delegation_account_address, value) { + return + } + } + if x.AccountLabel != "" { + value := protoreflect.ValueOfString(x.AccountLabel) + if !f(fd_Delegation_account_label, value) { + return + } + } + if x.ChainId != "" { + value := protoreflect.ValueOfString(x.ChainId) + if !f(fd_Delegation_chain_id, value) { + return + } + } } // Has reports whether a field is populated. @@ -2244,10 +2584,16 @@ func (x *fastReflection_Delegation) Has(fd protoreflect.FieldDescriptor) bool { return x.Id != "" case "did.v1.Delegation.controller": return x.Controller != "" - case "did.v1.Delegation.chain_info_id": - return x.ChainInfoId != "" + case "did.v1.Delegation.chain_index": + return x.ChainIndex != "" case "did.v1.Delegation.public_key": return x.PublicKey != nil + case "did.v1.Delegation.account_address": + return x.AccountAddress != "" + case "did.v1.Delegation.account_label": + return x.AccountLabel != "" + case "did.v1.Delegation.chain_id": + return x.ChainId != "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Delegation")) @@ -2268,10 +2614,16 @@ func (x *fastReflection_Delegation) Clear(fd protoreflect.FieldDescriptor) { x.Id = "" case "did.v1.Delegation.controller": x.Controller = "" - case "did.v1.Delegation.chain_info_id": - x.ChainInfoId = "" + case "did.v1.Delegation.chain_index": + x.ChainIndex = "" case "did.v1.Delegation.public_key": x.PublicKey = nil + case "did.v1.Delegation.account_address": + x.AccountAddress = "" + case "did.v1.Delegation.account_label": + x.AccountLabel = "" + case "did.v1.Delegation.chain_id": + x.ChainId = "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Delegation")) @@ -2294,12 +2646,21 @@ func (x *fastReflection_Delegation) Get(descriptor protoreflect.FieldDescriptor) case "did.v1.Delegation.controller": value := x.Controller return protoreflect.ValueOfString(value) - case "did.v1.Delegation.chain_info_id": - value := x.ChainInfoId + case "did.v1.Delegation.chain_index": + value := x.ChainIndex return protoreflect.ValueOfString(value) case "did.v1.Delegation.public_key": value := x.PublicKey return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "did.v1.Delegation.account_address": + value := x.AccountAddress + return protoreflect.ValueOfString(value) + case "did.v1.Delegation.account_label": + value := x.AccountLabel + return protoreflect.ValueOfString(value) + case "did.v1.Delegation.chain_id": + value := x.ChainId + return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Delegation")) @@ -2324,10 +2685,16 @@ func (x *fastReflection_Delegation) Set(fd protoreflect.FieldDescriptor, value p x.Id = value.Interface().(string) case "did.v1.Delegation.controller": x.Controller = value.Interface().(string) - case "did.v1.Delegation.chain_info_id": - x.ChainInfoId = value.Interface().(string) + case "did.v1.Delegation.chain_index": + x.ChainIndex = value.Interface().(string) case "did.v1.Delegation.public_key": x.PublicKey = value.Message().Interface().(*PubKey) + case "did.v1.Delegation.account_address": + x.AccountAddress = value.Interface().(string) + case "did.v1.Delegation.account_label": + x.AccountLabel = value.Interface().(string) + case "did.v1.Delegation.chain_id": + x.ChainId = value.Interface().(string) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Delegation")) @@ -2357,8 +2724,14 @@ func (x *fastReflection_Delegation) Mutable(fd protoreflect.FieldDescriptor) pro panic(fmt.Errorf("field id of message did.v1.Delegation is not mutable")) case "did.v1.Delegation.controller": panic(fmt.Errorf("field controller of message did.v1.Delegation is not mutable")) - case "did.v1.Delegation.chain_info_id": - panic(fmt.Errorf("field chain_info_id of message did.v1.Delegation is not mutable")) + case "did.v1.Delegation.chain_index": + panic(fmt.Errorf("field chain_index of message did.v1.Delegation is not mutable")) + case "did.v1.Delegation.account_address": + panic(fmt.Errorf("field account_address of message did.v1.Delegation is not mutable")) + case "did.v1.Delegation.account_label": + panic(fmt.Errorf("field account_label of message did.v1.Delegation is not mutable")) + case "did.v1.Delegation.chain_id": + panic(fmt.Errorf("field chain_id of message did.v1.Delegation is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Delegation")) @@ -2376,11 +2749,17 @@ func (x *fastReflection_Delegation) NewField(fd protoreflect.FieldDescriptor) pr return protoreflect.ValueOfString("") case "did.v1.Delegation.controller": return protoreflect.ValueOfString("") - case "did.v1.Delegation.chain_info_id": + case "did.v1.Delegation.chain_index": return protoreflect.ValueOfString("") case "did.v1.Delegation.public_key": m := new(PubKey) return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "did.v1.Delegation.account_address": + return protoreflect.ValueOfString("") + case "did.v1.Delegation.account_label": + return protoreflect.ValueOfString("") + case "did.v1.Delegation.chain_id": + return protoreflect.ValueOfString("") default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Delegation")) @@ -2458,7 +2837,7 @@ func (x *fastReflection_Delegation) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - l = len(x.ChainInfoId) + l = len(x.ChainIndex) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } @@ -2466,6 +2845,18 @@ func (x *fastReflection_Delegation) ProtoMethods() *protoiface.Methods { l = options.Size(x.PublicKey) n += 1 + l + runtime.Sov(uint64(l)) } + l = len(x.AccountAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.AccountLabel) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.ChainId) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -2495,6 +2886,27 @@ func (x *fastReflection_Delegation) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.ChainId) > 0 { + i -= len(x.ChainId) + copy(dAtA[i:], x.ChainId) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ChainId))) + i-- + dAtA[i] = 0x3a + } + if len(x.AccountLabel) > 0 { + i -= len(x.AccountLabel) + copy(dAtA[i:], x.AccountLabel) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.AccountLabel))) + i-- + dAtA[i] = 0x32 + } + if len(x.AccountAddress) > 0 { + i -= len(x.AccountAddress) + copy(dAtA[i:], x.AccountAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.AccountAddress))) + i-- + dAtA[i] = 0x2a + } if x.PublicKey != nil { encoded, err := options.Marshal(x.PublicKey) if err != nil { @@ -2509,10 +2921,10 @@ func (x *fastReflection_Delegation) ProtoMethods() *protoiface.Methods { i-- dAtA[i] = 0x22 } - if len(x.ChainInfoId) > 0 { - i -= len(x.ChainInfoId) - copy(dAtA[i:], x.ChainInfoId) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ChainInfoId))) + if len(x.ChainIndex) > 0 { + i -= len(x.ChainIndex) + copy(dAtA[i:], x.ChainIndex) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ChainIndex))) i-- dAtA[i] = 0x1a } @@ -2645,7 +3057,7 @@ func (x *fastReflection_Delegation) ProtoMethods() *protoiface.Methods { iNdEx = postIndex case 3: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ChainInfoId", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ChainIndex", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2673,7 +3085,7 @@ func (x *fastReflection_Delegation) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.ChainInfoId = string(dAtA[iNdEx:postIndex]) + x.ChainIndex = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: if wireType != 2 { @@ -2711,6 +3123,102 @@ func (x *fastReflection_Delegation) ProtoMethods() *protoiface.Methods { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AccountAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.AccountAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AccountLabel", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.AccountLabel = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ChainId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -2746,20 +3254,20 @@ func (x *fastReflection_Delegation) ProtoMethods() *protoiface.Methods { } } -var _ protoreflect.Map = (*_Service_5_map)(nil) +var _ protoreflect.Map = (*_ServiceRecord_6_map)(nil) -type _Service_5_map struct { +type _ServiceRecord_6_map struct { m *map[string]string } -func (x *_Service_5_map) Len() int { +func (x *_ServiceRecord_6_map) Len() int { if x.m == nil { return 0 } return len(*x.m) } -func (x *_Service_5_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { +func (x *_ServiceRecord_6_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { if x.m == nil { return } @@ -2772,7 +3280,7 @@ func (x *_Service_5_map) Range(f func(protoreflect.MapKey, protoreflect.Value) b } } -func (x *_Service_5_map) Has(key protoreflect.MapKey) bool { +func (x *_ServiceRecord_6_map) Has(key protoreflect.MapKey) bool { if x.m == nil { return false } @@ -2782,7 +3290,7 @@ func (x *_Service_5_map) Has(key protoreflect.MapKey) bool { return ok } -func (x *_Service_5_map) Clear(key protoreflect.MapKey) { +func (x *_ServiceRecord_6_map) Clear(key protoreflect.MapKey) { if x.m == nil { return } @@ -2791,7 +3299,7 @@ func (x *_Service_5_map) Clear(key protoreflect.MapKey) { delete(*x.m, concreteKey) } -func (x *_Service_5_map) Get(key protoreflect.MapKey) protoreflect.Value { +func (x *_ServiceRecord_6_map) Get(key protoreflect.MapKey) protoreflect.Value { if x.m == nil { return protoreflect.Value{} } @@ -2804,7 +3312,7 @@ func (x *_Service_5_map) Get(key protoreflect.MapKey) protoreflect.Value { return protoreflect.ValueOfString(v) } -func (x *_Service_5_map) Set(key protoreflect.MapKey, value protoreflect.Value) { +func (x *_ServiceRecord_6_map) Set(key protoreflect.MapKey, value protoreflect.Value) { if !key.IsValid() || !value.IsValid() { panic("invalid key or value provided") } @@ -2815,49 +3323,53 @@ func (x *_Service_5_map) Set(key protoreflect.MapKey, value protoreflect.Value) (*x.m)[concreteKey] = concreteValue } -func (x *_Service_5_map) Mutable(key protoreflect.MapKey) protoreflect.Value { +func (x *_ServiceRecord_6_map) Mutable(key protoreflect.MapKey) protoreflect.Value { panic("should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message") } -func (x *_Service_5_map) NewValue() protoreflect.Value { +func (x *_ServiceRecord_6_map) NewValue() protoreflect.Value { v := "" return protoreflect.ValueOfString(v) } -func (x *_Service_5_map) IsValid() bool { +func (x *_ServiceRecord_6_map) IsValid() bool { return x.m != nil } var ( - md_Service protoreflect.MessageDescriptor - fd_Service_id protoreflect.FieldDescriptor - fd_Service_service_type protoreflect.FieldDescriptor - fd_Service_controller_did protoreflect.FieldDescriptor - fd_Service_origin_uri protoreflect.FieldDescriptor - fd_Service_service_endpoints protoreflect.FieldDescriptor - fd_Service_permissions protoreflect.FieldDescriptor + md_ServiceRecord protoreflect.MessageDescriptor + fd_ServiceRecord_id protoreflect.FieldDescriptor + fd_ServiceRecord_service_type protoreflect.FieldDescriptor + fd_ServiceRecord_controller protoreflect.FieldDescriptor + fd_ServiceRecord_origin_uri protoreflect.FieldDescriptor + fd_ServiceRecord_description protoreflect.FieldDescriptor + fd_ServiceRecord_service_endpoints protoreflect.FieldDescriptor + fd_ServiceRecord_permissions protoreflect.FieldDescriptor + fd_ServiceRecord_metadata protoreflect.FieldDescriptor ) func init() { file_did_v1_state_proto_init() - md_Service = File_did_v1_state_proto.Messages().ByName("Service") - fd_Service_id = md_Service.Fields().ByName("id") - fd_Service_service_type = md_Service.Fields().ByName("service_type") - fd_Service_controller_did = md_Service.Fields().ByName("controller_did") - fd_Service_origin_uri = md_Service.Fields().ByName("origin_uri") - fd_Service_service_endpoints = md_Service.Fields().ByName("service_endpoints") - fd_Service_permissions = md_Service.Fields().ByName("permissions") + md_ServiceRecord = File_did_v1_state_proto.Messages().ByName("ServiceRecord") + fd_ServiceRecord_id = md_ServiceRecord.Fields().ByName("id") + fd_ServiceRecord_service_type = md_ServiceRecord.Fields().ByName("service_type") + fd_ServiceRecord_controller = md_ServiceRecord.Fields().ByName("controller") + fd_ServiceRecord_origin_uri = md_ServiceRecord.Fields().ByName("origin_uri") + fd_ServiceRecord_description = md_ServiceRecord.Fields().ByName("description") + fd_ServiceRecord_service_endpoints = md_ServiceRecord.Fields().ByName("service_endpoints") + fd_ServiceRecord_permissions = md_ServiceRecord.Fields().ByName("permissions") + fd_ServiceRecord_metadata = md_ServiceRecord.Fields().ByName("metadata") } -var _ protoreflect.Message = (*fastReflection_Service)(nil) +var _ protoreflect.Message = (*fastReflection_ServiceRecord)(nil) -type fastReflection_Service Service +type fastReflection_ServiceRecord ServiceRecord -func (x *Service) ProtoReflect() protoreflect.Message { - return (*fastReflection_Service)(x) +func (x *ServiceRecord) ProtoReflect() protoreflect.Message { + return (*fastReflection_ServiceRecord)(x) } -func (x *Service) slowProtoReflect() protoreflect.Message { +func (x *ServiceRecord) slowProtoReflect() protoreflect.Message { mi := &file_did_v1_state_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2869,43 +3381,43 @@ func (x *Service) slowProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -var _fastReflection_Service_messageType fastReflection_Service_messageType -var _ protoreflect.MessageType = fastReflection_Service_messageType{} +var _fastReflection_ServiceRecord_messageType fastReflection_ServiceRecord_messageType +var _ protoreflect.MessageType = fastReflection_ServiceRecord_messageType{} -type fastReflection_Service_messageType struct{} +type fastReflection_ServiceRecord_messageType struct{} -func (x fastReflection_Service_messageType) Zero() protoreflect.Message { - return (*fastReflection_Service)(nil) +func (x fastReflection_ServiceRecord_messageType) Zero() protoreflect.Message { + return (*fastReflection_ServiceRecord)(nil) } -func (x fastReflection_Service_messageType) New() protoreflect.Message { - return new(fastReflection_Service) +func (x fastReflection_ServiceRecord_messageType) New() protoreflect.Message { + return new(fastReflection_ServiceRecord) } -func (x fastReflection_Service_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_Service +func (x fastReflection_ServiceRecord_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_ServiceRecord } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_Service) Descriptor() protoreflect.MessageDescriptor { - return md_Service +func (x *fastReflection_ServiceRecord) Descriptor() protoreflect.MessageDescriptor { + return md_ServiceRecord } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_Service) Type() protoreflect.MessageType { - return _fastReflection_Service_messageType +func (x *fastReflection_ServiceRecord) Type() protoreflect.MessageType { + return _fastReflection_ServiceRecord_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_Service) New() protoreflect.Message { - return new(fastReflection_Service) +func (x *fastReflection_ServiceRecord) New() protoreflect.Message { + return new(fastReflection_ServiceRecord) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_Service) Interface() protoreflect.ProtoMessage { - return (*Service)(x) +func (x *fastReflection_ServiceRecord) Interface() protoreflect.ProtoMessage { + return (*ServiceRecord)(x) } // Range iterates over every populated field in an undefined order, @@ -2913,40 +3425,52 @@ func (x *fastReflection_Service) Interface() protoreflect.ProtoMessage { // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_Service) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +func (x *fastReflection_ServiceRecord) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { if x.Id != "" { value := protoreflect.ValueOfString(x.Id) - if !f(fd_Service_id, value) { + if !f(fd_ServiceRecord_id, value) { return } } if x.ServiceType != "" { value := protoreflect.ValueOfString(x.ServiceType) - if !f(fd_Service_service_type, value) { + if !f(fd_ServiceRecord_service_type, value) { return } } - if x.ControllerDid != "" { - value := protoreflect.ValueOfString(x.ControllerDid) - if !f(fd_Service_controller_did, value) { + if x.Controller != "" { + value := protoreflect.ValueOfString(x.Controller) + if !f(fd_ServiceRecord_controller, value) { return } } if x.OriginUri != "" { value := protoreflect.ValueOfString(x.OriginUri) - if !f(fd_Service_origin_uri, value) { + if !f(fd_ServiceRecord_origin_uri, value) { + return + } + } + if x.Description != "" { + value := protoreflect.ValueOfString(x.Description) + if !f(fd_ServiceRecord_description, value) { return } } if len(x.ServiceEndpoints) != 0 { - value := protoreflect.ValueOfMap(&_Service_5_map{m: &x.ServiceEndpoints}) - if !f(fd_Service_service_endpoints, value) { + value := protoreflect.ValueOfMap(&_ServiceRecord_6_map{m: &x.ServiceEndpoints}) + if !f(fd_ServiceRecord_service_endpoints, value) { return } } if x.Permissions != nil { value := protoreflect.ValueOfMessage(x.Permissions.ProtoReflect()) - if !f(fd_Service_permissions, value) { + if !f(fd_ServiceRecord_permissions, value) { + return + } + } + if x.Metadata != nil { + value := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + if !f(fd_ServiceRecord_metadata, value) { return } } @@ -2963,25 +3487,29 @@ func (x *fastReflection_Service) Range(f func(protoreflect.FieldDescriptor, prot // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_Service) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_ServiceRecord) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "did.v1.Service.id": + case "did.v1.ServiceRecord.id": return x.Id != "" - case "did.v1.Service.service_type": + case "did.v1.ServiceRecord.service_type": return x.ServiceType != "" - case "did.v1.Service.controller_did": - return x.ControllerDid != "" - case "did.v1.Service.origin_uri": + case "did.v1.ServiceRecord.controller": + return x.Controller != "" + case "did.v1.ServiceRecord.origin_uri": return x.OriginUri != "" - case "did.v1.Service.service_endpoints": + case "did.v1.ServiceRecord.description": + return x.Description != "" + case "did.v1.ServiceRecord.service_endpoints": return len(x.ServiceEndpoints) != 0 - case "did.v1.Service.permissions": + case "did.v1.ServiceRecord.permissions": return x.Permissions != nil + case "did.v1.ServiceRecord.metadata": + return x.Metadata != nil default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Service")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ServiceRecord")) } - panic(fmt.Errorf("message did.v1.Service does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ServiceRecord does not contain field %s", fd.FullName())) } } @@ -2991,25 +3519,29 @@ func (x *fastReflection_Service) Has(fd protoreflect.FieldDescriptor) bool { // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_Service) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_ServiceRecord) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "did.v1.Service.id": + case "did.v1.ServiceRecord.id": x.Id = "" - case "did.v1.Service.service_type": + case "did.v1.ServiceRecord.service_type": x.ServiceType = "" - case "did.v1.Service.controller_did": - x.ControllerDid = "" - case "did.v1.Service.origin_uri": + case "did.v1.ServiceRecord.controller": + x.Controller = "" + case "did.v1.ServiceRecord.origin_uri": x.OriginUri = "" - case "did.v1.Service.service_endpoints": + case "did.v1.ServiceRecord.description": + x.Description = "" + case "did.v1.ServiceRecord.service_endpoints": x.ServiceEndpoints = nil - case "did.v1.Service.permissions": + case "did.v1.ServiceRecord.permissions": x.Permissions = nil + case "did.v1.ServiceRecord.metadata": + x.Metadata = nil default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Service")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ServiceRecord")) } - panic(fmt.Errorf("message did.v1.Service does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ServiceRecord does not contain field %s", fd.FullName())) } } @@ -3019,34 +3551,40 @@ func (x *fastReflection_Service) Clear(fd protoreflect.FieldDescriptor) { // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_Service) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_ServiceRecord) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "did.v1.Service.id": + case "did.v1.ServiceRecord.id": value := x.Id return protoreflect.ValueOfString(value) - case "did.v1.Service.service_type": + case "did.v1.ServiceRecord.service_type": value := x.ServiceType return protoreflect.ValueOfString(value) - case "did.v1.Service.controller_did": - value := x.ControllerDid + case "did.v1.ServiceRecord.controller": + value := x.Controller return protoreflect.ValueOfString(value) - case "did.v1.Service.origin_uri": + case "did.v1.ServiceRecord.origin_uri": value := x.OriginUri return protoreflect.ValueOfString(value) - case "did.v1.Service.service_endpoints": + case "did.v1.ServiceRecord.description": + value := x.Description + return protoreflect.ValueOfString(value) + case "did.v1.ServiceRecord.service_endpoints": if len(x.ServiceEndpoints) == 0 { - return protoreflect.ValueOfMap(&_Service_5_map{}) + return protoreflect.ValueOfMap(&_ServiceRecord_6_map{}) } - mapValue := &_Service_5_map{m: &x.ServiceEndpoints} + mapValue := &_ServiceRecord_6_map{m: &x.ServiceEndpoints} return protoreflect.ValueOfMap(mapValue) - case "did.v1.Service.permissions": + case "did.v1.ServiceRecord.permissions": value := x.Permissions return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "did.v1.ServiceRecord.metadata": + value := x.Metadata + return protoreflect.ValueOfMessage(value.ProtoReflect()) default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Service")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ServiceRecord")) } - panic(fmt.Errorf("message did.v1.Service does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message did.v1.ServiceRecord does not contain field %s", descriptor.FullName())) } } @@ -3060,27 +3598,31 @@ func (x *fastReflection_Service) Get(descriptor protoreflect.FieldDescriptor) pr // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_Service) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_ServiceRecord) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "did.v1.Service.id": + case "did.v1.ServiceRecord.id": x.Id = value.Interface().(string) - case "did.v1.Service.service_type": + case "did.v1.ServiceRecord.service_type": x.ServiceType = value.Interface().(string) - case "did.v1.Service.controller_did": - x.ControllerDid = value.Interface().(string) - case "did.v1.Service.origin_uri": + case "did.v1.ServiceRecord.controller": + x.Controller = value.Interface().(string) + case "did.v1.ServiceRecord.origin_uri": x.OriginUri = value.Interface().(string) - case "did.v1.Service.service_endpoints": + case "did.v1.ServiceRecord.description": + x.Description = value.Interface().(string) + case "did.v1.ServiceRecord.service_endpoints": mv := value.Map() - cmv := mv.(*_Service_5_map) + cmv := mv.(*_ServiceRecord_6_map) x.ServiceEndpoints = *cmv.m - case "did.v1.Service.permissions": + case "did.v1.ServiceRecord.permissions": x.Permissions = value.Message().Interface().(*Permissions) + case "did.v1.ServiceRecord.metadata": + x.Metadata = value.Message().Interface().(*Metadata) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Service")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ServiceRecord")) } - panic(fmt.Errorf("message did.v1.Service does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ServiceRecord does not contain field %s", fd.FullName())) } } @@ -3094,69 +3636,81 @@ func (x *fastReflection_Service) Set(fd protoreflect.FieldDescriptor, value prot // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_Service) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_ServiceRecord) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.Service.service_endpoints": + case "did.v1.ServiceRecord.service_endpoints": if x.ServiceEndpoints == nil { x.ServiceEndpoints = make(map[string]string) } - value := &_Service_5_map{m: &x.ServiceEndpoints} + value := &_ServiceRecord_6_map{m: &x.ServiceEndpoints} return protoreflect.ValueOfMap(value) - case "did.v1.Service.permissions": + case "did.v1.ServiceRecord.permissions": if x.Permissions == nil { x.Permissions = new(Permissions) } return protoreflect.ValueOfMessage(x.Permissions.ProtoReflect()) - case "did.v1.Service.id": - panic(fmt.Errorf("field id of message did.v1.Service is not mutable")) - case "did.v1.Service.service_type": - panic(fmt.Errorf("field service_type of message did.v1.Service is not mutable")) - case "did.v1.Service.controller_did": - panic(fmt.Errorf("field controller_did of message did.v1.Service is not mutable")) - case "did.v1.Service.origin_uri": - panic(fmt.Errorf("field origin_uri of message did.v1.Service is not mutable")) + case "did.v1.ServiceRecord.metadata": + if x.Metadata == nil { + x.Metadata = new(Metadata) + } + return protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + case "did.v1.ServiceRecord.id": + panic(fmt.Errorf("field id of message did.v1.ServiceRecord is not mutable")) + case "did.v1.ServiceRecord.service_type": + panic(fmt.Errorf("field service_type of message did.v1.ServiceRecord is not mutable")) + case "did.v1.ServiceRecord.controller": + panic(fmt.Errorf("field controller of message did.v1.ServiceRecord is not mutable")) + case "did.v1.ServiceRecord.origin_uri": + panic(fmt.Errorf("field origin_uri of message did.v1.ServiceRecord is not mutable")) + case "did.v1.ServiceRecord.description": + panic(fmt.Errorf("field description of message did.v1.ServiceRecord is not mutable")) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Service")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ServiceRecord")) } - panic(fmt.Errorf("message did.v1.Service does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ServiceRecord does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_Service) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_ServiceRecord) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.Service.id": + case "did.v1.ServiceRecord.id": return protoreflect.ValueOfString("") - case "did.v1.Service.service_type": + case "did.v1.ServiceRecord.service_type": return protoreflect.ValueOfString("") - case "did.v1.Service.controller_did": + case "did.v1.ServiceRecord.controller": return protoreflect.ValueOfString("") - case "did.v1.Service.origin_uri": + case "did.v1.ServiceRecord.origin_uri": return protoreflect.ValueOfString("") - case "did.v1.Service.service_endpoints": + case "did.v1.ServiceRecord.description": + return protoreflect.ValueOfString("") + case "did.v1.ServiceRecord.service_endpoints": m := make(map[string]string) - return protoreflect.ValueOfMap(&_Service_5_map{m: &m}) - case "did.v1.Service.permissions": + return protoreflect.ValueOfMap(&_ServiceRecord_6_map{m: &m}) + case "did.v1.ServiceRecord.permissions": m := new(Permissions) return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "did.v1.ServiceRecord.metadata": + m := new(Metadata) + return protoreflect.ValueOfMessage(m.ProtoReflect()) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Service")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.ServiceRecord")) } - panic(fmt.Errorf("message did.v1.Service does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.ServiceRecord does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_Service) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_ServiceRecord) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.Service", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in did.v1.ServiceRecord", d.FullName())) } panic("unreachable") } @@ -3164,7 +3718,7 @@ func (x *fastReflection_Service) WhichOneof(d protoreflect.OneofDescriptor) prot // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_Service) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_ServiceRecord) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -3175,7 +3729,7 @@ func (x *fastReflection_Service) GetUnknown() protoreflect.RawFields { // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_Service) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_ServiceRecord) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -3187,7 +3741,7 @@ func (x *fastReflection_Service) SetUnknown(fields protoreflect.RawFields) { // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_Service) IsValid() bool { +func (x *fastReflection_ServiceRecord) IsValid() bool { return x != nil } @@ -3197,9 +3751,9 @@ func (x *fastReflection_Service) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_ServiceRecord) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*Service) + x := input.Message.Interface().(*ServiceRecord) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -3219,7 +3773,7 @@ func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - l = len(x.ControllerDid) + l = len(x.Controller) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } @@ -3227,6 +3781,10 @@ func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + l = len(x.Description) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if len(x.ServiceEndpoints) > 0 { SiZeMaP := func(k string, v string) { mapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + 1 + len(v) + runtime.Sov(uint64(len(v))) @@ -3252,6 +3810,10 @@ func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { l = options.Size(x.Permissions) n += 1 + l + runtime.Sov(uint64(l)) } + if x.Metadata != nil { + l = options.Size(x.Metadata) + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -3262,7 +3824,7 @@ func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*Service) + x := input.Message.Interface().(*ServiceRecord) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -3281,6 +3843,20 @@ func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if x.Metadata != nil { + encoded, err := options.Marshal(x.Metadata) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x42 + } if x.Permissions != nil { encoded, err := options.Marshal(x.Permissions) if err != nil { @@ -3293,7 +3869,7 @@ func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { copy(dAtA[i:], encoded) i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) i-- - dAtA[i] = 0x32 + dAtA[i] = 0x3a } if len(x.ServiceEndpoints) > 0 { MaRsHaLmAp := func(k string, v string) (protoiface.MarshalOutput, error) { @@ -3310,7 +3886,7 @@ func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { dAtA[i] = 0xa i = runtime.EncodeVarint(dAtA, i, uint64(baseI-i)) i-- - dAtA[i] = 0x2a + dAtA[i] = 0x32 return protoiface.MarshalOutput{}, nil } if options.Deterministic { @@ -3338,6 +3914,13 @@ func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { } } } + if len(x.Description) > 0 { + i -= len(x.Description) + copy(dAtA[i:], x.Description) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) + i-- + dAtA[i] = 0x2a + } if len(x.OriginUri) > 0 { i -= len(x.OriginUri) copy(dAtA[i:], x.OriginUri) @@ -3345,10 +3928,10 @@ func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { i-- dAtA[i] = 0x22 } - if len(x.ControllerDid) > 0 { - i -= len(x.ControllerDid) - copy(dAtA[i:], x.ControllerDid) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ControllerDid))) + if len(x.Controller) > 0 { + i -= len(x.Controller) + copy(dAtA[i:], x.Controller) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Controller))) i-- dAtA[i] = 0x1a } @@ -3377,7 +3960,7 @@ func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*Service) + x := input.Message.Interface().(*ServiceRecord) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -3409,10 +3992,10 @@ func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Service: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ServiceRecord: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Service: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ServiceRecord: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -3481,7 +4064,7 @@ func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { iNdEx = postIndex case 3: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ControllerDid", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3509,7 +4092,7 @@ func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.ControllerDid = string(dAtA[iNdEx:postIndex]) + x.Controller = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: if wireType != 2 { @@ -3544,6 +4127,38 @@ func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { x.OriginUri = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ServiceEndpoints", wireType) } @@ -3670,7 +4285,7 @@ func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { } x.ServiceEndpoints[mapkey] = mapvalue iNdEx = postIndex - case 6: + case 7: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Permissions", wireType) } @@ -3706,6 +4321,42 @@ func (x *fastReflection_Service) ProtoMethods() *protoiface.Methods { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex + case 8: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Metadata == nil { + x.Metadata = &Metadata{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Metadata); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -3768,8 +4419,14 @@ type Assertion struct { PublicKey *PubKey `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // The value of the linked identifier CredentialId []byte `protobuf:"bytes,4,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + // The display label of the attestation + CredentialLabel string `protobuf:"bytes,5,opt,name=credential_label,json=credentialLabel,proto3" json:"credential_label,omitempty"` + // The origin of the attestation + Origin string `protobuf:"bytes,6,opt,name=origin,proto3" json:"origin,omitempty"` + // The subject of the attestation + Subject string `protobuf:"bytes,7,opt,name=subject,proto3" json:"subject,omitempty"` // Metadata is optional additional information about the assertion - Metadata *Metadata `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"` + Metadata *Metadata `protobuf:"bytes,8,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (x *Assertion) Reset() { @@ -3820,6 +4477,27 @@ func (x *Assertion) GetCredentialId() []byte { return nil } +func (x *Assertion) GetCredentialLabel() string { + if x != nil { + return x.CredentialLabel + } + return "" +} + +func (x *Assertion) GetOrigin() string { + if x != nil { + return x.Origin + } + return "" +} + +func (x *Assertion) GetSubject() string { + if x != nil { + return x.Subject + } + return "" +} + func (x *Assertion) GetMetadata() *Metadata { if x != nil { return x.Metadata @@ -3919,6 +4597,8 @@ type Controller struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // The DID of the controller Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + // Aliases of the controller + Aliases []string `protobuf:"bytes,3,rep,name=aliases,proto3" json:"aliases,omitempty"` // PubKey is the verification method PublicKey *PubKey `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // The vault address or identifier @@ -3959,6 +4639,13 @@ func (x *Controller) GetAddress() string { return "" } +func (x *Controller) GetAliases() []string { + if x != nil { + return x.Aliases + } + return nil +} + func (x *Controller) GetPublicKey() *PubKey { if x != nil { return x.PublicKey @@ -3984,9 +4671,15 @@ type Delegation struct { // The Decentralized Identifier of the delegated account Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` // Resolved from module parameters - ChainInfoId string `protobuf:"bytes,3,opt,name=chain_info_id,json=chainInfoId,proto3" json:"chain_info_id,omitempty"` + ChainIndex string `protobuf:"bytes,3,opt,name=chain_index,json=chainIndex,proto3" json:"chain_index,omitempty"` // The delegation proof or verification method PublicKey *PubKey `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + // The Account Address + AccountAddress string `protobuf:"bytes,5,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` + // The Account label + AccountLabel string `protobuf:"bytes,6,opt,name=account_label,json=accountLabel,proto3" json:"account_label,omitempty"` + // The Chain ID + ChainId string `protobuf:"bytes,7,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` } func (x *Delegation) Reset() { @@ -4023,9 +4716,9 @@ func (x *Delegation) GetController() string { return "" } -func (x *Delegation) GetChainInfoId() string { +func (x *Delegation) GetChainIndex() string { if x != nil { - return x.ChainInfoId + return x.ChainIndex } return "" } @@ -4037,8 +4730,29 @@ func (x *Delegation) GetPublicKey() *PubKey { return nil } -// Service represents a service in a DID Document -type Service struct { +func (x *Delegation) GetAccountAddress() string { + if x != nil { + return x.AccountAddress + } + return "" +} + +func (x *Delegation) GetAccountLabel() string { + if x != nil { + return x.AccountLabel + } + return "" +} + +func (x *Delegation) GetChainId() string { + if x != nil { + return x.ChainId + } + return "" +} + +// ServiceRecord represents a decentralized service in a DID Document +type ServiceRecord struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -4048,17 +4762,21 @@ type Service struct { // The type of the service ServiceType string `protobuf:"bytes,2,opt,name=service_type,json=serviceType,proto3" json:"service_type,omitempty"` // The controller DID of the service - ControllerDid string `protobuf:"bytes,3,opt,name=controller_did,json=controllerDid,proto3" json:"controller_did,omitempty"` + Controller string `protobuf:"bytes,3,opt,name=controller,proto3" json:"controller,omitempty"` // The domain name of the service OriginUri string `protobuf:"bytes,4,opt,name=origin_uri,json=originUri,proto3" json:"origin_uri,omitempty"` + // The description of the service + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` // The service endpoint - ServiceEndpoints map[string]string `protobuf:"bytes,5,rep,name=service_endpoints,json=serviceEndpoints,proto3" json:"service_endpoints,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ServiceEndpoints map[string]string `protobuf:"bytes,6,rep,name=service_endpoints,json=serviceEndpoints,proto3" json:"service_endpoints,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Scopes is the Authorization Grants of the service - Permissions *Permissions `protobuf:"bytes,6,opt,name=permissions,proto3" json:"permissions,omitempty"` + Permissions *Permissions `protobuf:"bytes,7,opt,name=permissions,proto3" json:"permissions,omitempty"` + // Metadata is optional additional information about the service + Metadata *Metadata `protobuf:"bytes,8,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *Service) Reset() { - *x = Service{} +func (x *ServiceRecord) Reset() { + *x = ServiceRecord{} if protoimpl.UnsafeEnabled { mi := &file_did_v1_state_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4066,59 +4784,73 @@ func (x *Service) Reset() { } } -func (x *Service) String() string { +func (x *ServiceRecord) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Service) ProtoMessage() {} +func (*ServiceRecord) ProtoMessage() {} -// Deprecated: Use Service.ProtoReflect.Descriptor instead. -func (*Service) Descriptor() ([]byte, []int) { +// Deprecated: Use ServiceRecord.ProtoReflect.Descriptor instead. +func (*ServiceRecord) Descriptor() ([]byte, []int) { return file_did_v1_state_proto_rawDescGZIP(), []int{4} } -func (x *Service) GetId() string { +func (x *ServiceRecord) GetId() string { if x != nil { return x.Id } return "" } -func (x *Service) GetServiceType() string { +func (x *ServiceRecord) GetServiceType() string { if x != nil { return x.ServiceType } return "" } -func (x *Service) GetControllerDid() string { +func (x *ServiceRecord) GetController() string { if x != nil { - return x.ControllerDid + return x.Controller } return "" } -func (x *Service) GetOriginUri() string { +func (x *ServiceRecord) GetOriginUri() string { if x != nil { return x.OriginUri } return "" } -func (x *Service) GetServiceEndpoints() map[string]string { +func (x *ServiceRecord) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *ServiceRecord) GetServiceEndpoints() map[string]string { if x != nil { return x.ServiceEndpoints } return nil } -func (x *Service) GetPermissions() *Permissions { +func (x *ServiceRecord) GetPermissions() *Permissions { if x != nil { return x.Permissions } return nil } +func (x *ServiceRecord) GetMetadata() *Metadata { + if x != nil { + return x.Metadata + } + return nil +} + var File_did_v1_state_proto protoreflect.FileDescriptor var file_did_v1_state_proto_rawDesc = []byte{ @@ -4128,7 +4860,7 @@ var file_did_v1_state_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xcd, 0x01, 0x0a, 0x09, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, + 0x22, 0xfc, 0x02, 0x0a, 0x09, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x2d, @@ -4137,76 +4869,112 @@ var file_did_v1_state_proto_rawDesc = []byte{ 0x65, 0x79, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x3a, 0x0e, 0xf2, 0x9e, 0xd3, 0x8e, 0x03, 0x08, 0x0a, 0x04, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x22, 0xf2, 0x01, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x12, 0x2d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, + 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x16, 0x0a, + 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, + 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x60, 0xf2, + 0x9e, 0xd3, 0x8e, 0x03, 0x5a, 0x0a, 0x04, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x0e, 0x73, + 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x10, 0x01, 0x18, + 0x01, 0x12, 0x17, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2c, + 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x10, 0x02, 0x18, 0x01, 0x12, 0x21, 0x0a, 0x1b, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x10, 0x03, 0x18, 0x01, 0x18, 0x01, 0x22, + 0x8b, 0x02, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, + 0x2d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, + 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x16, + 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x3d, + 0xf2, 0x9e, 0xd3, 0x8e, 0x03, 0x37, 0x0a, 0x04, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x0e, + 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x10, 0x01, + 0x18, 0x01, 0x12, 0x17, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x2c, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x10, 0x02, 0x18, 0x01, 0x18, 0x02, 0x22, 0xcc, 0x01, + 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, + 0x12, 0x2d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, - 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, - 0x24, 0xf2, 0x9e, 0xd3, 0x8e, 0x03, 0x1e, 0x0a, 0x04, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, - 0x0e, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x10, - 0x01, 0x18, 0x01, 0x18, 0x02, 0x22, 0x92, 0x01, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2d, - 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x4b, - 0x65, 0x79, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, - 0x09, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x69, 0x64, 0x3a, 0x0e, 0xf2, 0x9e, 0xd3, 0x8e, - 0x03, 0x08, 0x0a, 0x04, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x22, 0x9f, 0x01, 0x0a, 0x0a, 0x44, - 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x68, 0x61, - 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x64, 0x12, 0x2d, 0x0a, - 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, - 0x79, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x3a, 0x0e, 0xf2, 0x9e, - 0xd3, 0x8e, 0x03, 0x08, 0x0a, 0x04, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x22, 0xe2, 0x02, 0x0a, - 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x44, - 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x75, 0x72, 0x69, + 0x1b, 0x0a, 0x09, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x69, 0x64, 0x3a, 0x2e, 0xf2, 0x9e, + 0xd3, 0x8e, 0x03, 0x28, 0x0a, 0x04, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x0d, 0x0a, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x10, 0x01, 0x18, 0x01, 0x12, 0x0f, 0x0a, 0x09, 0x76, 0x61, 0x75, + 0x6c, 0x74, 0x5f, 0x63, 0x69, 0x64, 0x10, 0x02, 0x18, 0x01, 0x18, 0x03, 0x22, 0xde, 0x02, 0x0a, + 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x63, + 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2d, 0x0a, 0x0a, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, + 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, + 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, + 0x69, 0x6e, 0x49, 0x64, 0x3a, 0x67, 0xf2, 0x9e, 0xd3, 0x8e, 0x03, 0x61, 0x0a, 0x04, 0x0a, 0x02, + 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x18, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x2c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x10, 0x01, + 0x18, 0x01, 0x12, 0x1e, 0x0a, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x2c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x10, 0x02, + 0x18, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x2c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x10, 0x03, 0x18, 0x04, 0x22, 0xe6, 0x03, + 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x55, 0x72, - 0x69, 0x12, 0x52, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, - 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x69, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x43, 0x0a, 0x15, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x3a, 0x0e, 0xf2, 0x9e, 0xd3, 0x8e, 0x03, 0x08, 0x0a, 0x04, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x05, 0x42, 0x7a, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x42, - 0x0a, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, - 0x2f, 0x68, 0x77, 0x61, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, - 0x3b, 0x64, 0x69, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x44, - 0x69, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02, - 0x12, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x65, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, + 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x35, 0x0a, + 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x1a, 0x43, 0x0a, 0x15, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x3d, 0xf2, 0x9e, 0xd3, 0x8e, 0x03, 0x37, 0x0a, + 0x04, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, + 0x75, 0x72, 0x69, 0x10, 0x01, 0x18, 0x01, 0x12, 0x1b, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2c, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x75, 0x72, 0x69, + 0x10, 0x02, 0x18, 0x01, 0x18, 0x05, 0x42, 0x7a, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, + 0x64, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, + 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, + 0x69, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x69, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, + 0x58, 0xaa, 0x02, 0x06, 0x44, 0x69, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, 0x69, 0x64, + 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, 0x3a, 0x3a, + 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4223,15 +4991,15 @@ func file_did_v1_state_proto_rawDescGZIP() []byte { var file_did_v1_state_proto_msgTypes = make([]protoimpl.MessageInfo, 6) var file_did_v1_state_proto_goTypes = []interface{}{ - (*Assertion)(nil), // 0: did.v1.Assertion - (*Attestation)(nil), // 1: did.v1.Attestation - (*Controller)(nil), // 2: did.v1.Controller - (*Delegation)(nil), // 3: did.v1.Delegation - (*Service)(nil), // 4: did.v1.Service - nil, // 5: did.v1.Service.ServiceEndpointsEntry - (*PubKey)(nil), // 6: did.v1.PubKey - (*Metadata)(nil), // 7: did.v1.Metadata - (*Permissions)(nil), // 8: did.v1.Permissions + (*Assertion)(nil), // 0: did.v1.Assertion + (*Attestation)(nil), // 1: did.v1.Attestation + (*Controller)(nil), // 2: did.v1.Controller + (*Delegation)(nil), // 3: did.v1.Delegation + (*ServiceRecord)(nil), // 4: did.v1.ServiceRecord + nil, // 5: did.v1.ServiceRecord.ServiceEndpointsEntry + (*PubKey)(nil), // 6: did.v1.PubKey + (*Metadata)(nil), // 7: did.v1.Metadata + (*Permissions)(nil), // 8: did.v1.Permissions } var file_did_v1_state_proto_depIdxs = []int32{ 6, // 0: did.v1.Assertion.public_key:type_name -> did.v1.PubKey @@ -4240,13 +5008,14 @@ var file_did_v1_state_proto_depIdxs = []int32{ 7, // 3: did.v1.Attestation.metadata:type_name -> did.v1.Metadata 6, // 4: did.v1.Controller.public_key:type_name -> did.v1.PubKey 6, // 5: did.v1.Delegation.public_key:type_name -> did.v1.PubKey - 5, // 6: did.v1.Service.service_endpoints:type_name -> did.v1.Service.ServiceEndpointsEntry - 8, // 7: did.v1.Service.permissions:type_name -> did.v1.Permissions - 8, // [8:8] is the sub-list for method output_type - 8, // [8:8] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 5, // 6: did.v1.ServiceRecord.service_endpoints:type_name -> did.v1.ServiceRecord.ServiceEndpointsEntry + 8, // 7: did.v1.ServiceRecord.permissions:type_name -> did.v1.Permissions + 7, // 8: did.v1.ServiceRecord.metadata:type_name -> did.v1.Metadata + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_did_v1_state_proto_init() } @@ -4306,7 +5075,7 @@ func file_did_v1_state_proto_init() { } } file_did_v1_state_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Service); i { + switch v := v.(*ServiceRecord); i { case 0: return &v.state case 1: diff --git a/api/did/v1/tx.pulsar.go b/api/did/v1/tx.pulsar.go index 12c66072c..932a8e88c 100644 --- a/api/did/v1/tx.pulsar.go +++ b/api/did/v1/tx.pulsar.go @@ -20,6 +20,7 @@ var ( md_MsgUpdateParams protoreflect.MessageDescriptor fd_MsgUpdateParams_authority protoreflect.FieldDescriptor fd_MsgUpdateParams_params protoreflect.FieldDescriptor + fd_MsgUpdateParams_token protoreflect.FieldDescriptor ) func init() { @@ -27,6 +28,7 @@ func init() { md_MsgUpdateParams = File_did_v1_tx_proto.Messages().ByName("MsgUpdateParams") fd_MsgUpdateParams_authority = md_MsgUpdateParams.Fields().ByName("authority") fd_MsgUpdateParams_params = md_MsgUpdateParams.Fields().ByName("params") + fd_MsgUpdateParams_token = md_MsgUpdateParams.Fields().ByName("token") } var _ protoreflect.Message = (*fastReflection_MsgUpdateParams)(nil) @@ -106,6 +108,12 @@ func (x *fastReflection_MsgUpdateParams) Range(f func(protoreflect.FieldDescript return } } + if x.Token != nil { + value := protoreflect.ValueOfMessage(x.Token.ProtoReflect()) + if !f(fd_MsgUpdateParams_token, value) { + return + } + } } // Has reports whether a field is populated. @@ -125,6 +133,8 @@ func (x *fastReflection_MsgUpdateParams) Has(fd protoreflect.FieldDescriptor) bo return x.Authority != "" case "did.v1.MsgUpdateParams.params": return x.Params != nil + case "did.v1.MsgUpdateParams.token": + return x.Token != nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParams")) @@ -145,6 +155,8 @@ func (x *fastReflection_MsgUpdateParams) Clear(fd protoreflect.FieldDescriptor) x.Authority = "" case "did.v1.MsgUpdateParams.params": x.Params = nil + case "did.v1.MsgUpdateParams.token": + x.Token = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParams")) @@ -167,6 +179,9 @@ func (x *fastReflection_MsgUpdateParams) Get(descriptor protoreflect.FieldDescri case "did.v1.MsgUpdateParams.params": value := x.Params return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "did.v1.MsgUpdateParams.token": + value := x.Token + return protoreflect.ValueOfMessage(value.ProtoReflect()) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParams")) @@ -191,6 +206,8 @@ func (x *fastReflection_MsgUpdateParams) Set(fd protoreflect.FieldDescriptor, va x.Authority = value.Interface().(string) case "did.v1.MsgUpdateParams.params": x.Params = value.Message().Interface().(*Params) + case "did.v1.MsgUpdateParams.token": + x.Token = value.Message().Interface().(*Token) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParams")) @@ -216,6 +233,11 @@ func (x *fastReflection_MsgUpdateParams) Mutable(fd protoreflect.FieldDescriptor x.Params = new(Params) } return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + case "did.v1.MsgUpdateParams.token": + if x.Token == nil { + x.Token = new(Token) + } + return protoreflect.ValueOfMessage(x.Token.ProtoReflect()) case "did.v1.MsgUpdateParams.authority": panic(fmt.Errorf("field authority of message did.v1.MsgUpdateParams is not mutable")) default: @@ -236,6 +258,9 @@ func (x *fastReflection_MsgUpdateParams) NewField(fd protoreflect.FieldDescripto case "did.v1.MsgUpdateParams.params": m := new(Params) return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "did.v1.MsgUpdateParams.token": + m := new(Token) + return protoreflect.ValueOfMessage(m.ProtoReflect()) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParams")) @@ -313,6 +338,10 @@ func (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods { l = options.Size(x.Params) n += 1 + l + runtime.Sov(uint64(l)) } + if x.Token != nil { + l = options.Size(x.Token) + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -342,6 +371,20 @@ func (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if x.Token != nil { + encoded, err := options.Marshal(x.Token) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } if x.Params != nil { encoded, err := options.Marshal(x.Params) if err != nil { @@ -480,6 +523,42 @@ func (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Token == nil { + x.Token = &Token{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Token); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -872,31 +951,29 @@ func (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Meth } var ( - md_MsgAuthenticate protoreflect.MessageDescriptor - fd_MsgAuthenticate_authority protoreflect.FieldDescriptor - fd_MsgAuthenticate_controller protoreflect.FieldDescriptor - fd_MsgAuthenticate_address protoreflect.FieldDescriptor - fd_MsgAuthenticate_origin protoreflect.FieldDescriptor + md_MsgAllocateVault protoreflect.MessageDescriptor + fd_MsgAllocateVault_authority protoreflect.FieldDescriptor + fd_MsgAllocateVault_subject protoreflect.FieldDescriptor + fd_MsgAllocateVault_token protoreflect.FieldDescriptor ) func init() { file_did_v1_tx_proto_init() - md_MsgAuthenticate = File_did_v1_tx_proto.Messages().ByName("MsgAuthenticate") - fd_MsgAuthenticate_authority = md_MsgAuthenticate.Fields().ByName("authority") - fd_MsgAuthenticate_controller = md_MsgAuthenticate.Fields().ByName("controller") - fd_MsgAuthenticate_address = md_MsgAuthenticate.Fields().ByName("address") - fd_MsgAuthenticate_origin = md_MsgAuthenticate.Fields().ByName("origin") + md_MsgAllocateVault = File_did_v1_tx_proto.Messages().ByName("MsgAllocateVault") + fd_MsgAllocateVault_authority = md_MsgAllocateVault.Fields().ByName("authority") + fd_MsgAllocateVault_subject = md_MsgAllocateVault.Fields().ByName("subject") + fd_MsgAllocateVault_token = md_MsgAllocateVault.Fields().ByName("token") } -var _ protoreflect.Message = (*fastReflection_MsgAuthenticate)(nil) +var _ protoreflect.Message = (*fastReflection_MsgAllocateVault)(nil) -type fastReflection_MsgAuthenticate MsgAuthenticate +type fastReflection_MsgAllocateVault MsgAllocateVault -func (x *MsgAuthenticate) ProtoReflect() protoreflect.Message { - return (*fastReflection_MsgAuthenticate)(x) +func (x *MsgAllocateVault) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgAllocateVault)(x) } -func (x *MsgAuthenticate) slowProtoReflect() protoreflect.Message { +func (x *MsgAllocateVault) slowProtoReflect() protoreflect.Message { mi := &file_did_v1_tx_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -908,43 +985,43 @@ func (x *MsgAuthenticate) slowProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -var _fastReflection_MsgAuthenticate_messageType fastReflection_MsgAuthenticate_messageType -var _ protoreflect.MessageType = fastReflection_MsgAuthenticate_messageType{} +var _fastReflection_MsgAllocateVault_messageType fastReflection_MsgAllocateVault_messageType +var _ protoreflect.MessageType = fastReflection_MsgAllocateVault_messageType{} -type fastReflection_MsgAuthenticate_messageType struct{} +type fastReflection_MsgAllocateVault_messageType struct{} -func (x fastReflection_MsgAuthenticate_messageType) Zero() protoreflect.Message { - return (*fastReflection_MsgAuthenticate)(nil) +func (x fastReflection_MsgAllocateVault_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgAllocateVault)(nil) } -func (x fastReflection_MsgAuthenticate_messageType) New() protoreflect.Message { - return new(fastReflection_MsgAuthenticate) +func (x fastReflection_MsgAllocateVault_messageType) New() protoreflect.Message { + return new(fastReflection_MsgAllocateVault) } -func (x fastReflection_MsgAuthenticate_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_MsgAuthenticate +func (x fastReflection_MsgAllocateVault_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAllocateVault } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_MsgAuthenticate) Descriptor() protoreflect.MessageDescriptor { - return md_MsgAuthenticate +func (x *fastReflection_MsgAllocateVault) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAllocateVault } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_MsgAuthenticate) Type() protoreflect.MessageType { - return _fastReflection_MsgAuthenticate_messageType +func (x *fastReflection_MsgAllocateVault) Type() protoreflect.MessageType { + return _fastReflection_MsgAllocateVault_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_MsgAuthenticate) New() protoreflect.Message { - return new(fastReflection_MsgAuthenticate) +func (x *fastReflection_MsgAllocateVault) New() protoreflect.Message { + return new(fastReflection_MsgAllocateVault) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_MsgAuthenticate) Interface() protoreflect.ProtoMessage { - return (*MsgAuthenticate)(x) +func (x *fastReflection_MsgAllocateVault) Interface() protoreflect.ProtoMessage { + return (*MsgAllocateVault)(x) } // Range iterates over every populated field in an undefined order, @@ -952,28 +1029,22 @@ func (x *fastReflection_MsgAuthenticate) Interface() protoreflect.ProtoMessage { // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_MsgAuthenticate) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +func (x *fastReflection_MsgAllocateVault) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { if x.Authority != "" { value := protoreflect.ValueOfString(x.Authority) - if !f(fd_MsgAuthenticate_authority, value) { + if !f(fd_MsgAllocateVault_authority, value) { return } } - if x.Controller != "" { - value := protoreflect.ValueOfString(x.Controller) - if !f(fd_MsgAuthenticate_controller, value) { + if x.Subject != "" { + value := protoreflect.ValueOfString(x.Subject) + if !f(fd_MsgAllocateVault_subject, value) { return } } - if x.Address != "" { - value := protoreflect.ValueOfString(x.Address) - if !f(fd_MsgAuthenticate_address, value) { - return - } - } - if x.Origin != "" { - value := protoreflect.ValueOfString(x.Origin) - if !f(fd_MsgAuthenticate_origin, value) { + if x.Token != nil { + value := protoreflect.ValueOfMessage(x.Token.ProtoReflect()) + if !f(fd_MsgAllocateVault_token, value) { return } } @@ -990,21 +1061,19 @@ func (x *fastReflection_MsgAuthenticate) Range(f func(protoreflect.FieldDescript // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_MsgAuthenticate) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_MsgAllocateVault) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "did.v1.MsgAuthenticate.authority": + case "did.v1.MsgAllocateVault.authority": return x.Authority != "" - case "did.v1.MsgAuthenticate.controller": - return x.Controller != "" - case "did.v1.MsgAuthenticate.address": - return x.Address != "" - case "did.v1.MsgAuthenticate.origin": - return x.Origin != "" + case "did.v1.MsgAllocateVault.subject": + return x.Subject != "" + case "did.v1.MsgAllocateVault.token": + return x.Token != nil default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthenticate")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault")) } - panic(fmt.Errorf("message did.v1.MsgAuthenticate does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", fd.FullName())) } } @@ -1014,21 +1083,19 @@ func (x *fastReflection_MsgAuthenticate) Has(fd protoreflect.FieldDescriptor) bo // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgAuthenticate) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_MsgAllocateVault) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "did.v1.MsgAuthenticate.authority": + case "did.v1.MsgAllocateVault.authority": x.Authority = "" - case "did.v1.MsgAuthenticate.controller": - x.Controller = "" - case "did.v1.MsgAuthenticate.address": - x.Address = "" - case "did.v1.MsgAuthenticate.origin": - x.Origin = "" + case "did.v1.MsgAllocateVault.subject": + x.Subject = "" + case "did.v1.MsgAllocateVault.token": + x.Token = nil default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthenticate")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault")) } - panic(fmt.Errorf("message did.v1.MsgAuthenticate does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", fd.FullName())) } } @@ -1038,25 +1105,22 @@ func (x *fastReflection_MsgAuthenticate) Clear(fd protoreflect.FieldDescriptor) // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_MsgAuthenticate) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgAllocateVault) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "did.v1.MsgAuthenticate.authority": + case "did.v1.MsgAllocateVault.authority": value := x.Authority return protoreflect.ValueOfString(value) - case "did.v1.MsgAuthenticate.controller": - value := x.Controller - return protoreflect.ValueOfString(value) - case "did.v1.MsgAuthenticate.address": - value := x.Address - return protoreflect.ValueOfString(value) - case "did.v1.MsgAuthenticate.origin": - value := x.Origin + case "did.v1.MsgAllocateVault.subject": + value := x.Subject return protoreflect.ValueOfString(value) + case "did.v1.MsgAllocateVault.token": + value := x.Token + return protoreflect.ValueOfMessage(value.ProtoReflect()) default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthenticate")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault")) } - panic(fmt.Errorf("message did.v1.MsgAuthenticate does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", descriptor.FullName())) } } @@ -1070,21 +1134,19 @@ func (x *fastReflection_MsgAuthenticate) Get(descriptor protoreflect.FieldDescri // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgAuthenticate) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_MsgAllocateVault) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "did.v1.MsgAuthenticate.authority": + case "did.v1.MsgAllocateVault.authority": x.Authority = value.Interface().(string) - case "did.v1.MsgAuthenticate.controller": - x.Controller = value.Interface().(string) - case "did.v1.MsgAuthenticate.address": - x.Address = value.Interface().(string) - case "did.v1.MsgAuthenticate.origin": - x.Origin = value.Interface().(string) + case "did.v1.MsgAllocateVault.subject": + x.Subject = value.Interface().(string) + case "did.v1.MsgAllocateVault.token": + x.Token = value.Message().Interface().(*Token) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthenticate")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault")) } - panic(fmt.Errorf("message did.v1.MsgAuthenticate does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", fd.FullName())) } } @@ -1098,52 +1160,52 @@ func (x *fastReflection_MsgAuthenticate) Set(fd protoreflect.FieldDescriptor, va // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgAuthenticate) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgAllocateVault) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.MsgAuthenticate.authority": - panic(fmt.Errorf("field authority of message did.v1.MsgAuthenticate is not mutable")) - case "did.v1.MsgAuthenticate.controller": - panic(fmt.Errorf("field controller of message did.v1.MsgAuthenticate is not mutable")) - case "did.v1.MsgAuthenticate.address": - panic(fmt.Errorf("field address of message did.v1.MsgAuthenticate is not mutable")) - case "did.v1.MsgAuthenticate.origin": - panic(fmt.Errorf("field origin of message did.v1.MsgAuthenticate is not mutable")) + case "did.v1.MsgAllocateVault.token": + if x.Token == nil { + x.Token = new(Token) + } + return protoreflect.ValueOfMessage(x.Token.ProtoReflect()) + case "did.v1.MsgAllocateVault.authority": + panic(fmt.Errorf("field authority of message did.v1.MsgAllocateVault is not mutable")) + case "did.v1.MsgAllocateVault.subject": + panic(fmt.Errorf("field subject of message did.v1.MsgAllocateVault is not mutable")) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthenticate")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault")) } - panic(fmt.Errorf("message did.v1.MsgAuthenticate does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_MsgAuthenticate) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgAllocateVault) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.MsgAuthenticate.authority": + case "did.v1.MsgAllocateVault.authority": return protoreflect.ValueOfString("") - case "did.v1.MsgAuthenticate.controller": - return protoreflect.ValueOfString("") - case "did.v1.MsgAuthenticate.address": - return protoreflect.ValueOfString("") - case "did.v1.MsgAuthenticate.origin": + case "did.v1.MsgAllocateVault.subject": return protoreflect.ValueOfString("") + case "did.v1.MsgAllocateVault.token": + m := new(Token) + return protoreflect.ValueOfMessage(m.ProtoReflect()) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthenticate")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault")) } - panic(fmt.Errorf("message did.v1.MsgAuthenticate does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_MsgAuthenticate) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_MsgAllocateVault) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgAuthenticate", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgAllocateVault", d.FullName())) } panic("unreachable") } @@ -1151,7 +1213,7 @@ func (x *fastReflection_MsgAuthenticate) WhichOneof(d protoreflect.OneofDescript // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_MsgAuthenticate) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_MsgAllocateVault) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -1162,7 +1224,7 @@ func (x *fastReflection_MsgAuthenticate) GetUnknown() protoreflect.RawFields { // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgAuthenticate) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_MsgAllocateVault) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -1174,7 +1236,7 @@ func (x *fastReflection_MsgAuthenticate) SetUnknown(fields protoreflect.RawField // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_MsgAuthenticate) IsValid() bool { +func (x *fastReflection_MsgAllocateVault) IsValid() bool { return x != nil } @@ -1184,9 +1246,9 @@ func (x *fastReflection_MsgAuthenticate) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_MsgAuthenticate) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_MsgAllocateVault) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*MsgAuthenticate) + x := input.Message.Interface().(*MsgAllocateVault) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -1202,16 +1264,12 @@ func (x *fastReflection_MsgAuthenticate) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - l = len(x.Controller) + l = len(x.Subject) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - l = len(x.Address) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.Origin) - if l > 0 { + if x.Token != nil { + l = options.Size(x.Token) n += 1 + l + runtime.Sov(uint64(l)) } if x.unknownFields != nil { @@ -1224,7 +1282,7 @@ func (x *fastReflection_MsgAuthenticate) ProtoMethods() *protoiface.Methods { } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*MsgAuthenticate) + x := input.Message.Interface().(*MsgAllocateVault) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -1243,24 +1301,24 @@ func (x *fastReflection_MsgAuthenticate) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } - if len(x.Origin) > 0 { - i -= len(x.Origin) - copy(dAtA[i:], x.Origin) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Origin))) - i-- - dAtA[i] = 0x22 - } - if len(x.Address) > 0 { - i -= len(x.Address) - copy(dAtA[i:], x.Address) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address))) + if x.Token != nil { + encoded, err := options.Marshal(x.Token) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) i-- dAtA[i] = 0x1a } - if len(x.Controller) > 0 { - i -= len(x.Controller) - copy(dAtA[i:], x.Controller) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Controller))) + if len(x.Subject) > 0 { + i -= len(x.Subject) + copy(dAtA[i:], x.Subject) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Subject))) i-- dAtA[i] = 0x12 } @@ -1282,7 +1340,7 @@ func (x *fastReflection_MsgAuthenticate) ProtoMethods() *protoiface.Methods { }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*MsgAuthenticate) + x := input.Message.Interface().(*MsgAllocateVault) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -1314,10 +1372,10 @@ func (x *fastReflection_MsgAuthenticate) ProtoMethods() *protoiface.Methods { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAuthenticate: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAllocateVault: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAuthenticate: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAllocateVault: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1354,7 +1412,7 @@ func (x *fastReflection_MsgAuthenticate) ProtoMethods() *protoiface.Methods { iNdEx = postIndex case 2: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1382,13 +1440,13 @@ func (x *fastReflection_MsgAuthenticate) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.Controller = string(dAtA[iNdEx:postIndex]) + x.Subject = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -1398,55 +1456,27 @@ func (x *fastReflection_MsgAuthenticate) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) + if x.Token == nil { + x.Token = &Token{} } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Token); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Origin = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -1484,23 +1514,27 @@ func (x *fastReflection_MsgAuthenticate) ProtoMethods() *protoiface.Methods { } var ( - md_MsgAuthenticateResponse protoreflect.MessageDescriptor + md_MsgAllocateVaultResponse protoreflect.MessageDescriptor + fd_MsgAllocateVaultResponse_cid protoreflect.FieldDescriptor + fd_MsgAllocateVaultResponse_expiry_block protoreflect.FieldDescriptor ) func init() { file_did_v1_tx_proto_init() - md_MsgAuthenticateResponse = File_did_v1_tx_proto.Messages().ByName("MsgAuthenticateResponse") + md_MsgAllocateVaultResponse = File_did_v1_tx_proto.Messages().ByName("MsgAllocateVaultResponse") + fd_MsgAllocateVaultResponse_cid = md_MsgAllocateVaultResponse.Fields().ByName("cid") + fd_MsgAllocateVaultResponse_expiry_block = md_MsgAllocateVaultResponse.Fields().ByName("expiry_block") } -var _ protoreflect.Message = (*fastReflection_MsgAuthenticateResponse)(nil) +var _ protoreflect.Message = (*fastReflection_MsgAllocateVaultResponse)(nil) -type fastReflection_MsgAuthenticateResponse MsgAuthenticateResponse +type fastReflection_MsgAllocateVaultResponse MsgAllocateVaultResponse -func (x *MsgAuthenticateResponse) ProtoReflect() protoreflect.Message { - return (*fastReflection_MsgAuthenticateResponse)(x) +func (x *MsgAllocateVaultResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgAllocateVaultResponse)(x) } -func (x *MsgAuthenticateResponse) slowProtoReflect() protoreflect.Message { +func (x *MsgAllocateVaultResponse) slowProtoReflect() protoreflect.Message { mi := &file_did_v1_tx_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1512,43 +1546,43 @@ func (x *MsgAuthenticateResponse) slowProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -var _fastReflection_MsgAuthenticateResponse_messageType fastReflection_MsgAuthenticateResponse_messageType -var _ protoreflect.MessageType = fastReflection_MsgAuthenticateResponse_messageType{} +var _fastReflection_MsgAllocateVaultResponse_messageType fastReflection_MsgAllocateVaultResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgAllocateVaultResponse_messageType{} -type fastReflection_MsgAuthenticateResponse_messageType struct{} +type fastReflection_MsgAllocateVaultResponse_messageType struct{} -func (x fastReflection_MsgAuthenticateResponse_messageType) Zero() protoreflect.Message { - return (*fastReflection_MsgAuthenticateResponse)(nil) +func (x fastReflection_MsgAllocateVaultResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgAllocateVaultResponse)(nil) } -func (x fastReflection_MsgAuthenticateResponse_messageType) New() protoreflect.Message { - return new(fastReflection_MsgAuthenticateResponse) +func (x fastReflection_MsgAllocateVaultResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgAllocateVaultResponse) } -func (x fastReflection_MsgAuthenticateResponse_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_MsgAuthenticateResponse +func (x fastReflection_MsgAllocateVaultResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAllocateVaultResponse } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_MsgAuthenticateResponse) Descriptor() protoreflect.MessageDescriptor { - return md_MsgAuthenticateResponse +func (x *fastReflection_MsgAllocateVaultResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAllocateVaultResponse } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_MsgAuthenticateResponse) Type() protoreflect.MessageType { - return _fastReflection_MsgAuthenticateResponse_messageType +func (x *fastReflection_MsgAllocateVaultResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgAllocateVaultResponse_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_MsgAuthenticateResponse) New() protoreflect.Message { - return new(fastReflection_MsgAuthenticateResponse) +func (x *fastReflection_MsgAllocateVaultResponse) New() protoreflect.Message { + return new(fastReflection_MsgAllocateVaultResponse) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_MsgAuthenticateResponse) Interface() protoreflect.ProtoMessage { - return (*MsgAuthenticateResponse)(x) +func (x *fastReflection_MsgAllocateVaultResponse) Interface() protoreflect.ProtoMessage { + return (*MsgAllocateVaultResponse)(x) } // Range iterates over every populated field in an undefined order, @@ -1556,7 +1590,19 @@ func (x *fastReflection_MsgAuthenticateResponse) Interface() protoreflect.ProtoM // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_MsgAuthenticateResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +func (x *fastReflection_MsgAllocateVaultResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Cid != "" { + value := protoreflect.ValueOfString(x.Cid) + if !f(fd_MsgAllocateVaultResponse_cid, value) { + return + } + } + if x.ExpiryBlock != int64(0) { + value := protoreflect.ValueOfInt64(x.ExpiryBlock) + if !f(fd_MsgAllocateVaultResponse_expiry_block, value) { + return + } + } } // Has reports whether a field is populated. @@ -1570,13 +1616,17 @@ func (x *fastReflection_MsgAuthenticateResponse) Range(f func(protoreflect.Field // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_MsgAuthenticateResponse) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_MsgAllocateVaultResponse) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { + case "did.v1.MsgAllocateVaultResponse.cid": + return x.Cid != "" + case "did.v1.MsgAllocateVaultResponse.expiry_block": + return x.ExpiryBlock != int64(0) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthenticateResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse")) } - panic(fmt.Errorf("message did.v1.MsgAuthenticateResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName())) } } @@ -1586,13 +1636,17 @@ func (x *fastReflection_MsgAuthenticateResponse) Has(fd protoreflect.FieldDescri // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgAuthenticateResponse) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_MsgAllocateVaultResponse) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { + case "did.v1.MsgAllocateVaultResponse.cid": + x.Cid = "" + case "did.v1.MsgAllocateVaultResponse.expiry_block": + x.ExpiryBlock = int64(0) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthenticateResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse")) } - panic(fmt.Errorf("message did.v1.MsgAuthenticateResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName())) } } @@ -1602,13 +1656,19 @@ func (x *fastReflection_MsgAuthenticateResponse) Clear(fd protoreflect.FieldDesc // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_MsgAuthenticateResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgAllocateVaultResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { + case "did.v1.MsgAllocateVaultResponse.cid": + value := x.Cid + return protoreflect.ValueOfString(value) + case "did.v1.MsgAllocateVaultResponse.expiry_block": + value := x.ExpiryBlock + return protoreflect.ValueOfInt64(value) default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthenticateResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse")) } - panic(fmt.Errorf("message did.v1.MsgAuthenticateResponse does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", descriptor.FullName())) } } @@ -1622,13 +1682,17 @@ func (x *fastReflection_MsgAuthenticateResponse) Get(descriptor protoreflect.Fie // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgAuthenticateResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_MsgAllocateVaultResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { + case "did.v1.MsgAllocateVaultResponse.cid": + x.Cid = value.Interface().(string) + case "did.v1.MsgAllocateVaultResponse.expiry_block": + x.ExpiryBlock = value.Int() default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthenticateResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse")) } - panic(fmt.Errorf("message did.v1.MsgAuthenticateResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName())) } } @@ -1642,36 +1706,44 @@ func (x *fastReflection_MsgAuthenticateResponse) Set(fd protoreflect.FieldDescri // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgAuthenticateResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgAllocateVaultResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "did.v1.MsgAllocateVaultResponse.cid": + panic(fmt.Errorf("field cid of message did.v1.MsgAllocateVaultResponse is not mutable")) + case "did.v1.MsgAllocateVaultResponse.expiry_block": + panic(fmt.Errorf("field expiry_block of message did.v1.MsgAllocateVaultResponse is not mutable")) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthenticateResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse")) } - panic(fmt.Errorf("message did.v1.MsgAuthenticateResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_MsgAuthenticateResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgAllocateVaultResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "did.v1.MsgAllocateVaultResponse.cid": + return protoreflect.ValueOfString("") + case "did.v1.MsgAllocateVaultResponse.expiry_block": + return protoreflect.ValueOfInt64(int64(0)) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthenticateResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse")) } - panic(fmt.Errorf("message did.v1.MsgAuthenticateResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_MsgAuthenticateResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_MsgAllocateVaultResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgAuthenticateResponse", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgAllocateVaultResponse", d.FullName())) } panic("unreachable") } @@ -1679,7 +1751,7 @@ func (x *fastReflection_MsgAuthenticateResponse) WhichOneof(d protoreflect.Oneof // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_MsgAuthenticateResponse) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_MsgAllocateVaultResponse) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -1690,7 +1762,7 @@ func (x *fastReflection_MsgAuthenticateResponse) GetUnknown() protoreflect.RawFi // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgAuthenticateResponse) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_MsgAllocateVaultResponse) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -1702,7 +1774,7 @@ func (x *fastReflection_MsgAuthenticateResponse) SetUnknown(fields protoreflect. // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_MsgAuthenticateResponse) IsValid() bool { +func (x *fastReflection_MsgAllocateVaultResponse) IsValid() bool { return x != nil } @@ -1712,9 +1784,9 @@ func (x *fastReflection_MsgAuthenticateResponse) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_MsgAuthenticateResponse) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_MsgAllocateVaultResponse) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*MsgAuthenticateResponse) + x := input.Message.Interface().(*MsgAllocateVaultResponse) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -1726,6 +1798,13 @@ func (x *fastReflection_MsgAuthenticateResponse) ProtoMethods() *protoiface.Meth var n int var l int _ = l + l = len(x.Cid) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.ExpiryBlock != 0 { + n += 1 + runtime.Sov(uint64(x.ExpiryBlock)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -1736,7 +1815,7 @@ func (x *fastReflection_MsgAuthenticateResponse) ProtoMethods() *protoiface.Meth } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*MsgAuthenticateResponse) + x := input.Message.Interface().(*MsgAllocateVaultResponse) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -1755,6 +1834,18 @@ func (x *fastReflection_MsgAuthenticateResponse) ProtoMethods() *protoiface.Meth i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if x.ExpiryBlock != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.ExpiryBlock)) + i-- + dAtA[i] = 0x10 + } + if len(x.Cid) > 0 { + i -= len(x.Cid) + copy(dAtA[i:], x.Cid) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Cid))) + i-- + dAtA[i] = 0xa + } if input.Buf != nil { input.Buf = append(input.Buf, dAtA...) } else { @@ -1766,7 +1857,7 @@ func (x *fastReflection_MsgAuthenticateResponse) ProtoMethods() *protoiface.Meth }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*MsgAuthenticateResponse) + x := input.Message.Interface().(*MsgAllocateVaultResponse) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -1798,12 +1889,63 @@ func (x *fastReflection_MsgAuthenticateResponse) ProtoMethods() *protoiface.Meth fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAuthenticateResponse: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAllocateVaultResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAuthenticateResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAllocateVaultResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Cid", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Cid = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExpiryBlock", wireType) + } + x.ExpiryBlock = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.ExpiryBlock |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -1844,6 +1986,7 @@ var ( fd_MsgProveWitness_authority protoreflect.FieldDescriptor fd_MsgProveWitness_property protoreflect.FieldDescriptor fd_MsgProveWitness_witness protoreflect.FieldDescriptor + fd_MsgProveWitness_token protoreflect.FieldDescriptor ) func init() { @@ -1852,6 +1995,7 @@ func init() { fd_MsgProveWitness_authority = md_MsgProveWitness.Fields().ByName("authority") fd_MsgProveWitness_property = md_MsgProveWitness.Fields().ByName("property") fd_MsgProveWitness_witness = md_MsgProveWitness.Fields().ByName("witness") + fd_MsgProveWitness_token = md_MsgProveWitness.Fields().ByName("token") } var _ protoreflect.Message = (*fastReflection_MsgProveWitness)(nil) @@ -1937,6 +2081,12 @@ func (x *fastReflection_MsgProveWitness) Range(f func(protoreflect.FieldDescript return } } + if x.Token != nil { + value := protoreflect.ValueOfMessage(x.Token.ProtoReflect()) + if !f(fd_MsgProveWitness_token, value) { + return + } + } } // Has reports whether a field is populated. @@ -1958,6 +2108,8 @@ func (x *fastReflection_MsgProveWitness) Has(fd protoreflect.FieldDescriptor) bo return x.Property != "" case "did.v1.MsgProveWitness.witness": return len(x.Witness) != 0 + case "did.v1.MsgProveWitness.token": + return x.Token != nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgProveWitness")) @@ -1980,6 +2132,8 @@ func (x *fastReflection_MsgProveWitness) Clear(fd protoreflect.FieldDescriptor) x.Property = "" case "did.v1.MsgProveWitness.witness": x.Witness = nil + case "did.v1.MsgProveWitness.token": + x.Token = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgProveWitness")) @@ -2005,6 +2159,9 @@ func (x *fastReflection_MsgProveWitness) Get(descriptor protoreflect.FieldDescri case "did.v1.MsgProveWitness.witness": value := x.Witness return protoreflect.ValueOfBytes(value) + case "did.v1.MsgProveWitness.token": + value := x.Token + return protoreflect.ValueOfMessage(value.ProtoReflect()) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgProveWitness")) @@ -2031,6 +2188,8 @@ func (x *fastReflection_MsgProveWitness) Set(fd protoreflect.FieldDescriptor, va x.Property = value.Interface().(string) case "did.v1.MsgProveWitness.witness": x.Witness = value.Bytes() + case "did.v1.MsgProveWitness.token": + x.Token = value.Message().Interface().(*Token) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgProveWitness")) @@ -2051,6 +2210,11 @@ func (x *fastReflection_MsgProveWitness) Set(fd protoreflect.FieldDescriptor, va // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_MsgProveWitness) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "did.v1.MsgProveWitness.token": + if x.Token == nil { + x.Token = new(Token) + } + return protoreflect.ValueOfMessage(x.Token.ProtoReflect()) case "did.v1.MsgProveWitness.authority": panic(fmt.Errorf("field authority of message did.v1.MsgProveWitness is not mutable")) case "did.v1.MsgProveWitness.property": @@ -2076,6 +2240,9 @@ func (x *fastReflection_MsgProveWitness) NewField(fd protoreflect.FieldDescripto return protoreflect.ValueOfString("") case "did.v1.MsgProveWitness.witness": return protoreflect.ValueOfBytes(nil) + case "did.v1.MsgProveWitness.token": + m := new(Token) + return protoreflect.ValueOfMessage(m.ProtoReflect()) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgProveWitness")) @@ -2157,6 +2324,10 @@ func (x *fastReflection_MsgProveWitness) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if x.Token != nil { + l = options.Size(x.Token) + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -2186,6 +2357,20 @@ func (x *fastReflection_MsgProveWitness) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if x.Token != nil { + encoded, err := options.Marshal(x.Token) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x22 + } if len(x.Witness) > 0 { i -= len(x.Witness) copy(dAtA[i:], x.Witness) @@ -2354,6 +2539,42 @@ func (x *fastReflection_MsgProveWitness) ProtoMethods() *protoiface.Methods { x.Witness = []byte{} } iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Token == nil { + x.Token = &Token{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Token); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -2866,16 +3087,14 @@ func (x *fastReflection_MsgProveWitnessResponse) ProtoMethods() *protoiface.Meth var ( md_MsgSyncVault protoreflect.MessageDescriptor fd_MsgSyncVault_controller protoreflect.FieldDescriptor - fd_MsgSyncVault_cid protoreflect.FieldDescriptor - fd_MsgSyncVault_macron protoreflect.FieldDescriptor + fd_MsgSyncVault_token protoreflect.FieldDescriptor ) func init() { file_did_v1_tx_proto_init() md_MsgSyncVault = File_did_v1_tx_proto.Messages().ByName("MsgSyncVault") fd_MsgSyncVault_controller = md_MsgSyncVault.Fields().ByName("controller") - fd_MsgSyncVault_cid = md_MsgSyncVault.Fields().ByName("cid") - fd_MsgSyncVault_macron = md_MsgSyncVault.Fields().ByName("macron") + fd_MsgSyncVault_token = md_MsgSyncVault.Fields().ByName("token") } var _ protoreflect.Message = (*fastReflection_MsgSyncVault)(nil) @@ -2949,15 +3168,9 @@ func (x *fastReflection_MsgSyncVault) Range(f func(protoreflect.FieldDescriptor, return } } - if x.Cid != "" { - value := protoreflect.ValueOfString(x.Cid) - if !f(fd_MsgSyncVault_cid, value) { - return - } - } - if len(x.Macron) != 0 { - value := protoreflect.ValueOfBytes(x.Macron) - if !f(fd_MsgSyncVault_macron, value) { + if x.Token != nil { + value := protoreflect.ValueOfMessage(x.Token.ProtoReflect()) + if !f(fd_MsgSyncVault_token, value) { return } } @@ -2978,10 +3191,8 @@ func (x *fastReflection_MsgSyncVault) Has(fd protoreflect.FieldDescriptor) bool switch fd.FullName() { case "did.v1.MsgSyncVault.controller": return x.Controller != "" - case "did.v1.MsgSyncVault.cid": - return x.Cid != "" - case "did.v1.MsgSyncVault.macron": - return len(x.Macron) != 0 + case "did.v1.MsgSyncVault.token": + return x.Token != nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgSyncVault")) @@ -3000,10 +3211,8 @@ func (x *fastReflection_MsgSyncVault) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { case "did.v1.MsgSyncVault.controller": x.Controller = "" - case "did.v1.MsgSyncVault.cid": - x.Cid = "" - case "did.v1.MsgSyncVault.macron": - x.Macron = nil + case "did.v1.MsgSyncVault.token": + x.Token = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgSyncVault")) @@ -3023,12 +3232,9 @@ func (x *fastReflection_MsgSyncVault) Get(descriptor protoreflect.FieldDescripto case "did.v1.MsgSyncVault.controller": value := x.Controller return protoreflect.ValueOfString(value) - case "did.v1.MsgSyncVault.cid": - value := x.Cid - return protoreflect.ValueOfString(value) - case "did.v1.MsgSyncVault.macron": - value := x.Macron - return protoreflect.ValueOfBytes(value) + case "did.v1.MsgSyncVault.token": + value := x.Token + return protoreflect.ValueOfMessage(value.ProtoReflect()) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgSyncVault")) @@ -3051,10 +3257,8 @@ func (x *fastReflection_MsgSyncVault) Set(fd protoreflect.FieldDescriptor, value switch fd.FullName() { case "did.v1.MsgSyncVault.controller": x.Controller = value.Interface().(string) - case "did.v1.MsgSyncVault.cid": - x.Cid = value.Interface().(string) - case "did.v1.MsgSyncVault.macron": - x.Macron = value.Bytes() + case "did.v1.MsgSyncVault.token": + x.Token = value.Message().Interface().(*Token) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgSyncVault")) @@ -3075,12 +3279,13 @@ func (x *fastReflection_MsgSyncVault) Set(fd protoreflect.FieldDescriptor, value // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_MsgSyncVault) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "did.v1.MsgSyncVault.token": + if x.Token == nil { + x.Token = new(Token) + } + return protoreflect.ValueOfMessage(x.Token.ProtoReflect()) case "did.v1.MsgSyncVault.controller": panic(fmt.Errorf("field controller of message did.v1.MsgSyncVault is not mutable")) - case "did.v1.MsgSyncVault.cid": - panic(fmt.Errorf("field cid of message did.v1.MsgSyncVault is not mutable")) - case "did.v1.MsgSyncVault.macron": - panic(fmt.Errorf("field macron of message did.v1.MsgSyncVault is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgSyncVault")) @@ -3096,10 +3301,9 @@ func (x *fastReflection_MsgSyncVault) NewField(fd protoreflect.FieldDescriptor) switch fd.FullName() { case "did.v1.MsgSyncVault.controller": return protoreflect.ValueOfString("") - case "did.v1.MsgSyncVault.cid": - return protoreflect.ValueOfString("") - case "did.v1.MsgSyncVault.macron": - return protoreflect.ValueOfBytes(nil) + case "did.v1.MsgSyncVault.token": + m := new(Token) + return protoreflect.ValueOfMessage(m.ProtoReflect()) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgSyncVault")) @@ -3173,12 +3377,8 @@ func (x *fastReflection_MsgSyncVault) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - l = len(x.Cid) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.Macron) - if l > 0 { + if x.Token != nil { + l = options.Size(x.Token) n += 1 + l + runtime.Sov(uint64(l)) } if x.unknownFields != nil { @@ -3210,20 +3410,20 @@ func (x *fastReflection_MsgSyncVault) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } - if len(x.Macron) > 0 { - i -= len(x.Macron) - copy(dAtA[i:], x.Macron) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Macron))) + if x.Token != nil { + encoded, err := options.Marshal(x.Token) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) i-- dAtA[i] = 0x1a } - if len(x.Cid) > 0 { - i -= len(x.Cid) - copy(dAtA[i:], x.Cid) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Cid))) - i-- - dAtA[i] = 0x12 - } if len(x.Controller) > 0 { i -= len(x.Controller) copy(dAtA[i:], x.Controller) @@ -3312,43 +3512,11 @@ func (x *fastReflection_MsgSyncVault) ProtoMethods() *protoiface.Methods { } x.Controller = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Cid", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Cid = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 3: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Macron", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) } - var byteLen int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -3358,24 +3526,26 @@ func (x *fastReflection_MsgSyncVault) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + if msglen < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } - postIndex := iNdEx + byteLen + postIndex := iNdEx + msglen if postIndex < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.Macron = append(x.Macron[:0], dAtA[iNdEx:postIndex]...) - if x.Macron == nil { - x.Macron = []byte{} + if x.Token == nil { + x.Token = &Token{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Token); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex default: @@ -3823,56 +3993,10 @@ func (x *fastReflection_MsgSyncVaultResponse) ProtoMethods() *protoiface.Methods } } -var _ protoreflect.List = (*_MsgRegisterController_3_list)(nil) - -type _MsgRegisterController_3_list struct { - list *[][]byte -} - -func (x *_MsgRegisterController_3_list) Len() int { - if x.list == nil { - return 0 - } - return len(*x.list) -} - -func (x *_MsgRegisterController_3_list) Get(i int) protoreflect.Value { - return protoreflect.ValueOfBytes((*x.list)[i]) -} - -func (x *_MsgRegisterController_3_list) Set(i int, value protoreflect.Value) { - valueUnwrapped := value.Bytes() - concreteValue := valueUnwrapped - (*x.list)[i] = concreteValue -} - -func (x *_MsgRegisterController_3_list) Append(value protoreflect.Value) { - valueUnwrapped := value.Bytes() - concreteValue := valueUnwrapped - *x.list = append(*x.list, concreteValue) -} - -func (x *_MsgRegisterController_3_list) AppendMutable() protoreflect.Value { - panic(fmt.Errorf("AppendMutable can not be called on message MsgRegisterController at list field Keyshares as it is not of Message kind")) -} - -func (x *_MsgRegisterController_3_list) Truncate(n int) { - *x.list = (*x.list)[:n] -} - -func (x *_MsgRegisterController_3_list) NewElement() protoreflect.Value { - var v []byte - return protoreflect.ValueOfBytes(v) -} - -func (x *_MsgRegisterController_3_list) IsValid() bool { - return x.list != nil -} - var _ protoreflect.List = (*_MsgRegisterController_4_list)(nil) type _MsgRegisterController_4_list struct { - list *[][]byte + list *[]*Credential } func (x *_MsgRegisterController_4_list) Len() int { @@ -3883,32 +4007,37 @@ func (x *_MsgRegisterController_4_list) Len() int { } func (x *_MsgRegisterController_4_list) Get(i int) protoreflect.Value { - return protoreflect.ValueOfBytes((*x.list)[i]) + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) } func (x *_MsgRegisterController_4_list) Set(i int, value protoreflect.Value) { - valueUnwrapped := value.Bytes() - concreteValue := valueUnwrapped + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*Credential) (*x.list)[i] = concreteValue } func (x *_MsgRegisterController_4_list) Append(value protoreflect.Value) { - valueUnwrapped := value.Bytes() - concreteValue := valueUnwrapped + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*Credential) *x.list = append(*x.list, concreteValue) } func (x *_MsgRegisterController_4_list) AppendMutable() protoreflect.Value { - panic(fmt.Errorf("AppendMutable can not be called on message MsgRegisterController at list field Verifications as it is not of Message kind")) + v := new(Credential) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) } func (x *_MsgRegisterController_4_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } *x.list = (*x.list)[:n] } func (x *_MsgRegisterController_4_list) NewElement() protoreflect.Value { - var v []byte - return protoreflect.ValueOfBytes(v) + v := new(Credential) + return protoreflect.ValueOfMessage(v.ProtoReflect()) } func (x *_MsgRegisterController_4_list) IsValid() bool { @@ -3916,11 +4045,12 @@ func (x *_MsgRegisterController_4_list) IsValid() bool { } var ( - md_MsgRegisterController protoreflect.MessageDescriptor - fd_MsgRegisterController_authority protoreflect.FieldDescriptor - fd_MsgRegisterController_cid protoreflect.FieldDescriptor - fd_MsgRegisterController_keyshares protoreflect.FieldDescriptor - fd_MsgRegisterController_verifications protoreflect.FieldDescriptor + md_MsgRegisterController protoreflect.MessageDescriptor + fd_MsgRegisterController_authority protoreflect.FieldDescriptor + fd_MsgRegisterController_cid protoreflect.FieldDescriptor + fd_MsgRegisterController_origin protoreflect.FieldDescriptor + fd_MsgRegisterController_authentication protoreflect.FieldDescriptor + fd_MsgRegisterController_token protoreflect.FieldDescriptor ) func init() { @@ -3928,8 +4058,9 @@ func init() { md_MsgRegisterController = File_did_v1_tx_proto.Messages().ByName("MsgRegisterController") fd_MsgRegisterController_authority = md_MsgRegisterController.Fields().ByName("authority") fd_MsgRegisterController_cid = md_MsgRegisterController.Fields().ByName("cid") - fd_MsgRegisterController_keyshares = md_MsgRegisterController.Fields().ByName("keyshares") - fd_MsgRegisterController_verifications = md_MsgRegisterController.Fields().ByName("verifications") + fd_MsgRegisterController_origin = md_MsgRegisterController.Fields().ByName("origin") + fd_MsgRegisterController_authentication = md_MsgRegisterController.Fields().ByName("authentication") + fd_MsgRegisterController_token = md_MsgRegisterController.Fields().ByName("token") } var _ protoreflect.Message = (*fastReflection_MsgRegisterController)(nil) @@ -4009,15 +4140,21 @@ func (x *fastReflection_MsgRegisterController) Range(f func(protoreflect.FieldDe return } } - if len(x.Keyshares) != 0 { - value := protoreflect.ValueOfList(&_MsgRegisterController_3_list{list: &x.Keyshares}) - if !f(fd_MsgRegisterController_keyshares, value) { + if x.Origin != "" { + value := protoreflect.ValueOfString(x.Origin) + if !f(fd_MsgRegisterController_origin, value) { return } } - if len(x.Verifications) != 0 { - value := protoreflect.ValueOfList(&_MsgRegisterController_4_list{list: &x.Verifications}) - if !f(fd_MsgRegisterController_verifications, value) { + if len(x.Authentication) != 0 { + value := protoreflect.ValueOfList(&_MsgRegisterController_4_list{list: &x.Authentication}) + if !f(fd_MsgRegisterController_authentication, value) { + return + } + } + if x.Token != nil { + value := protoreflect.ValueOfMessage(x.Token.ProtoReflect()) + if !f(fd_MsgRegisterController_token, value) { return } } @@ -4040,10 +4177,12 @@ func (x *fastReflection_MsgRegisterController) Has(fd protoreflect.FieldDescript return x.Authority != "" case "did.v1.MsgRegisterController.cid": return x.Cid != "" - case "did.v1.MsgRegisterController.keyshares": - return len(x.Keyshares) != 0 - case "did.v1.MsgRegisterController.verifications": - return len(x.Verifications) != 0 + case "did.v1.MsgRegisterController.origin": + return x.Origin != "" + case "did.v1.MsgRegisterController.authentication": + return len(x.Authentication) != 0 + case "did.v1.MsgRegisterController.token": + return x.Token != nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterController")) @@ -4064,10 +4203,12 @@ func (x *fastReflection_MsgRegisterController) Clear(fd protoreflect.FieldDescri x.Authority = "" case "did.v1.MsgRegisterController.cid": x.Cid = "" - case "did.v1.MsgRegisterController.keyshares": - x.Keyshares = nil - case "did.v1.MsgRegisterController.verifications": - x.Verifications = nil + case "did.v1.MsgRegisterController.origin": + x.Origin = "" + case "did.v1.MsgRegisterController.authentication": + x.Authentication = nil + case "did.v1.MsgRegisterController.token": + x.Token = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterController")) @@ -4090,18 +4231,18 @@ func (x *fastReflection_MsgRegisterController) Get(descriptor protoreflect.Field case "did.v1.MsgRegisterController.cid": value := x.Cid return protoreflect.ValueOfString(value) - case "did.v1.MsgRegisterController.keyshares": - if len(x.Keyshares) == 0 { - return protoreflect.ValueOfList(&_MsgRegisterController_3_list{}) - } - listValue := &_MsgRegisterController_3_list{list: &x.Keyshares} - return protoreflect.ValueOfList(listValue) - case "did.v1.MsgRegisterController.verifications": - if len(x.Verifications) == 0 { + case "did.v1.MsgRegisterController.origin": + value := x.Origin + return protoreflect.ValueOfString(value) + case "did.v1.MsgRegisterController.authentication": + if len(x.Authentication) == 0 { return protoreflect.ValueOfList(&_MsgRegisterController_4_list{}) } - listValue := &_MsgRegisterController_4_list{list: &x.Verifications} + listValue := &_MsgRegisterController_4_list{list: &x.Authentication} return protoreflect.ValueOfList(listValue) + case "did.v1.MsgRegisterController.token": + value := x.Token + return protoreflect.ValueOfMessage(value.ProtoReflect()) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterController")) @@ -4126,14 +4267,14 @@ func (x *fastReflection_MsgRegisterController) Set(fd protoreflect.FieldDescript x.Authority = value.Interface().(string) case "did.v1.MsgRegisterController.cid": x.Cid = value.Interface().(string) - case "did.v1.MsgRegisterController.keyshares": - lv := value.List() - clv := lv.(*_MsgRegisterController_3_list) - x.Keyshares = *clv.list - case "did.v1.MsgRegisterController.verifications": + case "did.v1.MsgRegisterController.origin": + x.Origin = value.Interface().(string) + case "did.v1.MsgRegisterController.authentication": lv := value.List() clv := lv.(*_MsgRegisterController_4_list) - x.Verifications = *clv.list + x.Authentication = *clv.list + case "did.v1.MsgRegisterController.token": + x.Token = value.Message().Interface().(*Token) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterController")) @@ -4154,22 +4295,23 @@ func (x *fastReflection_MsgRegisterController) Set(fd protoreflect.FieldDescript // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_MsgRegisterController) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.MsgRegisterController.keyshares": - if x.Keyshares == nil { - x.Keyshares = [][]byte{} + case "did.v1.MsgRegisterController.authentication": + if x.Authentication == nil { + x.Authentication = []*Credential{} } - value := &_MsgRegisterController_3_list{list: &x.Keyshares} + value := &_MsgRegisterController_4_list{list: &x.Authentication} return protoreflect.ValueOfList(value) - case "did.v1.MsgRegisterController.verifications": - if x.Verifications == nil { - x.Verifications = [][]byte{} + case "did.v1.MsgRegisterController.token": + if x.Token == nil { + x.Token = new(Token) } - value := &_MsgRegisterController_4_list{list: &x.Verifications} - return protoreflect.ValueOfList(value) + return protoreflect.ValueOfMessage(x.Token.ProtoReflect()) case "did.v1.MsgRegisterController.authority": panic(fmt.Errorf("field authority of message did.v1.MsgRegisterController is not mutable")) case "did.v1.MsgRegisterController.cid": panic(fmt.Errorf("field cid of message did.v1.MsgRegisterController is not mutable")) + case "did.v1.MsgRegisterController.origin": + panic(fmt.Errorf("field origin of message did.v1.MsgRegisterController is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterController")) @@ -4187,12 +4329,14 @@ func (x *fastReflection_MsgRegisterController) NewField(fd protoreflect.FieldDes return protoreflect.ValueOfString("") case "did.v1.MsgRegisterController.cid": return protoreflect.ValueOfString("") - case "did.v1.MsgRegisterController.keyshares": - list := [][]byte{} - return protoreflect.ValueOfList(&_MsgRegisterController_3_list{list: &list}) - case "did.v1.MsgRegisterController.verifications": - list := [][]byte{} + case "did.v1.MsgRegisterController.origin": + return protoreflect.ValueOfString("") + case "did.v1.MsgRegisterController.authentication": + list := []*Credential{} return protoreflect.ValueOfList(&_MsgRegisterController_4_list{list: &list}) + case "did.v1.MsgRegisterController.token": + m := new(Token) + return protoreflect.ValueOfMessage(m.ProtoReflect()) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterController")) @@ -4270,17 +4414,19 @@ func (x *fastReflection_MsgRegisterController) ProtoMethods() *protoiface.Method if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - if len(x.Keyshares) > 0 { - for _, b := range x.Keyshares { - l = len(b) + l = len(x.Origin) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.Authentication) > 0 { + for _, e := range x.Authentication { + l = options.Size(e) n += 1 + l + runtime.Sov(uint64(l)) } } - if len(x.Verifications) > 0 { - for _, b := range x.Verifications { - l = len(b) - n += 1 + l + runtime.Sov(uint64(l)) - } + if x.Token != nil { + l = options.Size(x.Token) + n += 1 + l + runtime.Sov(uint64(l)) } if x.unknownFields != nil { n += len(x.unknownFields) @@ -4311,23 +4457,42 @@ func (x *fastReflection_MsgRegisterController) ProtoMethods() *protoiface.Method i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } - if len(x.Verifications) > 0 { - for iNdEx := len(x.Verifications) - 1; iNdEx >= 0; iNdEx-- { - i -= len(x.Verifications[iNdEx]) - copy(dAtA[i:], x.Verifications[iNdEx]) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Verifications[iNdEx]))) + if x.Token != nil { + encoded, err := options.Marshal(x.Token) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x2a + } + if len(x.Authentication) > 0 { + for iNdEx := len(x.Authentication) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Authentication[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) i-- dAtA[i] = 0x22 } } - if len(x.Keyshares) > 0 { - for iNdEx := len(x.Keyshares) - 1; iNdEx >= 0; iNdEx-- { - i -= len(x.Keyshares[iNdEx]) - copy(dAtA[i:], x.Keyshares[iNdEx]) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Keyshares[iNdEx]))) - i-- - dAtA[i] = 0x1a - } + if len(x.Origin) > 0 { + i -= len(x.Origin) + copy(dAtA[i:], x.Origin) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Origin))) + i-- + dAtA[i] = 0x1a } if len(x.Cid) > 0 { i -= len(x.Cid) @@ -4458,9 +4623,9 @@ func (x *fastReflection_MsgRegisterController) ProtoMethods() *protoiface.Method iNdEx = postIndex case 3: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Keyshares", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) } - var byteLen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -4470,29 +4635,29 @@ func (x *fastReflection_MsgRegisterController) ProtoMethods() *protoiface.Method } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } - postIndex := iNdEx + byteLen + postIndex := iNdEx + intStringLen if postIndex < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.Keyshares = append(x.Keyshares, make([]byte, postIndex-iNdEx)) - copy(x.Keyshares[len(x.Keyshares)-1], dAtA[iNdEx:postIndex]) + x.Origin = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Verifications", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authentication", wireType) } - var byteLen int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -4502,23 +4667,61 @@ func (x *fastReflection_MsgRegisterController) ProtoMethods() *protoiface.Method } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + if msglen < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } - postIndex := iNdEx + byteLen + postIndex := iNdEx + msglen if postIndex < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.Verifications = append(x.Verifications, make([]byte, postIndex-iNdEx)) - copy(x.Verifications[len(x.Verifications)-1], dAtA[iNdEx:postIndex]) + x.Authentication = append(x.Authentication, &Credential{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Authentication[len(x.Authentication)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Token == nil { + x.Token = &Token{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Token); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } iNdEx = postIndex default: iNdEx = preIndex @@ -4555,20 +4758,20 @@ func (x *fastReflection_MsgRegisterController) ProtoMethods() *protoiface.Method } } -var _ protoreflect.Map = (*_MsgRegisterControllerResponse_2_map)(nil) +var _ protoreflect.Map = (*_MsgRegisterControllerResponse_3_map)(nil) -type _MsgRegisterControllerResponse_2_map struct { +type _MsgRegisterControllerResponse_3_map struct { m *map[string]string } -func (x *_MsgRegisterControllerResponse_2_map) Len() int { +func (x *_MsgRegisterControllerResponse_3_map) Len() int { if x.m == nil { return 0 } return len(*x.m) } -func (x *_MsgRegisterControllerResponse_2_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { +func (x *_MsgRegisterControllerResponse_3_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { if x.m == nil { return } @@ -4581,7 +4784,7 @@ func (x *_MsgRegisterControllerResponse_2_map) Range(f func(protoreflect.MapKey, } } -func (x *_MsgRegisterControllerResponse_2_map) Has(key protoreflect.MapKey) bool { +func (x *_MsgRegisterControllerResponse_3_map) Has(key protoreflect.MapKey) bool { if x.m == nil { return false } @@ -4591,7 +4794,7 @@ func (x *_MsgRegisterControllerResponse_2_map) Has(key protoreflect.MapKey) bool return ok } -func (x *_MsgRegisterControllerResponse_2_map) Clear(key protoreflect.MapKey) { +func (x *_MsgRegisterControllerResponse_3_map) Clear(key protoreflect.MapKey) { if x.m == nil { return } @@ -4600,7 +4803,7 @@ func (x *_MsgRegisterControllerResponse_2_map) Clear(key protoreflect.MapKey) { delete(*x.m, concreteKey) } -func (x *_MsgRegisterControllerResponse_2_map) Get(key protoreflect.MapKey) protoreflect.Value { +func (x *_MsgRegisterControllerResponse_3_map) Get(key protoreflect.MapKey) protoreflect.Value { if x.m == nil { return protoreflect.Value{} } @@ -4613,7 +4816,7 @@ func (x *_MsgRegisterControllerResponse_2_map) Get(key protoreflect.MapKey) prot return protoreflect.ValueOfString(v) } -func (x *_MsgRegisterControllerResponse_2_map) Set(key protoreflect.MapKey, value protoreflect.Value) { +func (x *_MsgRegisterControllerResponse_3_map) Set(key protoreflect.MapKey, value protoreflect.Value) { if !key.IsValid() || !value.IsValid() { panic("invalid key or value provided") } @@ -4624,21 +4827,22 @@ func (x *_MsgRegisterControllerResponse_2_map) Set(key protoreflect.MapKey, valu (*x.m)[concreteKey] = concreteValue } -func (x *_MsgRegisterControllerResponse_2_map) Mutable(key protoreflect.MapKey) protoreflect.Value { +func (x *_MsgRegisterControllerResponse_3_map) Mutable(key protoreflect.MapKey) protoreflect.Value { panic("should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message") } -func (x *_MsgRegisterControllerResponse_2_map) NewValue() protoreflect.Value { +func (x *_MsgRegisterControllerResponse_3_map) NewValue() protoreflect.Value { v := "" return protoreflect.ValueOfString(v) } -func (x *_MsgRegisterControllerResponse_2_map) IsValid() bool { +func (x *_MsgRegisterControllerResponse_3_map) IsValid() bool { return x.m != nil } var ( md_MsgRegisterControllerResponse protoreflect.MessageDescriptor + fd_MsgRegisterControllerResponse_success protoreflect.FieldDescriptor fd_MsgRegisterControllerResponse_controller protoreflect.FieldDescriptor fd_MsgRegisterControllerResponse_accounts protoreflect.FieldDescriptor ) @@ -4646,6 +4850,7 @@ var ( func init() { file_did_v1_tx_proto_init() md_MsgRegisterControllerResponse = File_did_v1_tx_proto.Messages().ByName("MsgRegisterControllerResponse") + fd_MsgRegisterControllerResponse_success = md_MsgRegisterControllerResponse.Fields().ByName("success") fd_MsgRegisterControllerResponse_controller = md_MsgRegisterControllerResponse.Fields().ByName("controller") fd_MsgRegisterControllerResponse_accounts = md_MsgRegisterControllerResponse.Fields().ByName("accounts") } @@ -4715,6 +4920,12 @@ func (x *fastReflection_MsgRegisterControllerResponse) Interface() protoreflect. // While iterating, mutating operations may only be performed // on the current field descriptor. func (x *fastReflection_MsgRegisterControllerResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Success != false { + value := protoreflect.ValueOfBool(x.Success) + if !f(fd_MsgRegisterControllerResponse_success, value) { + return + } + } if x.Controller != "" { value := protoreflect.ValueOfString(x.Controller) if !f(fd_MsgRegisterControllerResponse_controller, value) { @@ -4722,7 +4933,7 @@ func (x *fastReflection_MsgRegisterControllerResponse) Range(f func(protoreflect } } if len(x.Accounts) != 0 { - value := protoreflect.ValueOfMap(&_MsgRegisterControllerResponse_2_map{m: &x.Accounts}) + value := protoreflect.ValueOfMap(&_MsgRegisterControllerResponse_3_map{m: &x.Accounts}) if !f(fd_MsgRegisterControllerResponse_accounts, value) { return } @@ -4742,6 +4953,8 @@ func (x *fastReflection_MsgRegisterControllerResponse) Range(f func(protoreflect // a repeated field is populated if it is non-empty. func (x *fastReflection_MsgRegisterControllerResponse) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { + case "did.v1.MsgRegisterControllerResponse.success": + return x.Success != false case "did.v1.MsgRegisterControllerResponse.controller": return x.Controller != "" case "did.v1.MsgRegisterControllerResponse.accounts": @@ -4762,6 +4975,8 @@ func (x *fastReflection_MsgRegisterControllerResponse) Has(fd protoreflect.Field // Clear is a mutating operation and unsafe for concurrent use. func (x *fastReflection_MsgRegisterControllerResponse) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { + case "did.v1.MsgRegisterControllerResponse.success": + x.Success = false case "did.v1.MsgRegisterControllerResponse.controller": x.Controller = "" case "did.v1.MsgRegisterControllerResponse.accounts": @@ -4782,14 +4997,17 @@ func (x *fastReflection_MsgRegisterControllerResponse) Clear(fd protoreflect.Fie // of the value; to obtain a mutable reference, use Mutable. func (x *fastReflection_MsgRegisterControllerResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { + case "did.v1.MsgRegisterControllerResponse.success": + value := x.Success + return protoreflect.ValueOfBool(value) case "did.v1.MsgRegisterControllerResponse.controller": value := x.Controller return protoreflect.ValueOfString(value) case "did.v1.MsgRegisterControllerResponse.accounts": if len(x.Accounts) == 0 { - return protoreflect.ValueOfMap(&_MsgRegisterControllerResponse_2_map{}) + return protoreflect.ValueOfMap(&_MsgRegisterControllerResponse_3_map{}) } - mapValue := &_MsgRegisterControllerResponse_2_map{m: &x.Accounts} + mapValue := &_MsgRegisterControllerResponse_3_map{m: &x.Accounts} return protoreflect.ValueOfMap(mapValue) default: if descriptor.IsExtension() { @@ -4811,11 +5029,13 @@ func (x *fastReflection_MsgRegisterControllerResponse) Get(descriptor protorefle // Set is a mutating operation and unsafe for concurrent use. func (x *fastReflection_MsgRegisterControllerResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { + case "did.v1.MsgRegisterControllerResponse.success": + x.Success = value.Bool() case "did.v1.MsgRegisterControllerResponse.controller": x.Controller = value.Interface().(string) case "did.v1.MsgRegisterControllerResponse.accounts": mv := value.Map() - cmv := mv.(*_MsgRegisterControllerResponse_2_map) + cmv := mv.(*_MsgRegisterControllerResponse_3_map) x.Accounts = *cmv.m default: if fd.IsExtension() { @@ -4841,8 +5061,10 @@ func (x *fastReflection_MsgRegisterControllerResponse) Mutable(fd protoreflect.F if x.Accounts == nil { x.Accounts = make(map[string]string) } - value := &_MsgRegisterControllerResponse_2_map{m: &x.Accounts} + value := &_MsgRegisterControllerResponse_3_map{m: &x.Accounts} return protoreflect.ValueOfMap(value) + case "did.v1.MsgRegisterControllerResponse.success": + panic(fmt.Errorf("field success of message did.v1.MsgRegisterControllerResponse is not mutable")) case "did.v1.MsgRegisterControllerResponse.controller": panic(fmt.Errorf("field controller of message did.v1.MsgRegisterControllerResponse is not mutable")) default: @@ -4858,11 +5080,13 @@ func (x *fastReflection_MsgRegisterControllerResponse) Mutable(fd protoreflect.F // For lists, maps, and messages, this returns a new, empty, mutable value. func (x *fastReflection_MsgRegisterControllerResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "did.v1.MsgRegisterControllerResponse.success": + return protoreflect.ValueOfBool(false) case "did.v1.MsgRegisterControllerResponse.controller": return protoreflect.ValueOfString("") case "did.v1.MsgRegisterControllerResponse.accounts": m := make(map[string]string) - return protoreflect.ValueOfMap(&_MsgRegisterControllerResponse_2_map{m: &m}) + return protoreflect.ValueOfMap(&_MsgRegisterControllerResponse_3_map{m: &m}) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterControllerResponse")) @@ -4932,6 +5156,9 @@ func (x *fastReflection_MsgRegisterControllerResponse) ProtoMethods() *protoifac var n int var l int _ = l + if x.Success { + n += 2 + } l = len(x.Controller) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) @@ -5001,7 +5228,7 @@ func (x *fastReflection_MsgRegisterControllerResponse) ProtoMethods() *protoifac dAtA[i] = 0xa i = runtime.EncodeVarint(dAtA, i, uint64(baseI-i)) i-- - dAtA[i] = 0x12 + dAtA[i] = 0x1a return protoiface.MarshalOutput{}, nil } if options.Deterministic { @@ -5034,7 +5261,17 @@ func (x *fastReflection_MsgRegisterControllerResponse) ProtoMethods() *protoifac copy(dAtA[i:], x.Controller) i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Controller))) i-- - dAtA[i] = 0xa + dAtA[i] = 0x12 + } + if x.Success { + i-- + if x.Success { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 } if input.Buf != nil { input.Buf = append(input.Buf, dAtA...) @@ -5086,6 +5323,26 @@ func (x *fastReflection_MsgRegisterControllerResponse) ProtoMethods() *protoifac } switch fieldNum { case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Success = bool(v != 0) + case 2: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) } @@ -5117,7 +5374,7 @@ func (x *fastReflection_MsgRegisterControllerResponse) ProtoMethods() *protoifac } x.Controller = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: + case 3: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Accounts", wireType) } @@ -5279,65 +5536,1289 @@ func (x *fastReflection_MsgRegisterControllerResponse) ProtoMethods() *protoifac } } -var _ protoreflect.List = (*_MsgRegisterService_3_list)(nil) +var ( + md_MsgAuthorize protoreflect.MessageDescriptor + fd_MsgAuthorize_authority protoreflect.FieldDescriptor + fd_MsgAuthorize_controller protoreflect.FieldDescriptor + fd_MsgAuthorize_address protoreflect.FieldDescriptor + fd_MsgAuthorize_origin protoreflect.FieldDescriptor + fd_MsgAuthorize_token protoreflect.FieldDescriptor +) -type _MsgRegisterService_3_list struct { - list *[]PermissionScope +func init() { + file_did_v1_tx_proto_init() + md_MsgAuthorize = File_did_v1_tx_proto.Messages().ByName("MsgAuthorize") + fd_MsgAuthorize_authority = md_MsgAuthorize.Fields().ByName("authority") + fd_MsgAuthorize_controller = md_MsgAuthorize.Fields().ByName("controller") + fd_MsgAuthorize_address = md_MsgAuthorize.Fields().ByName("address") + fd_MsgAuthorize_origin = md_MsgAuthorize.Fields().ByName("origin") + fd_MsgAuthorize_token = md_MsgAuthorize.Fields().ByName("token") } -func (x *_MsgRegisterService_3_list) Len() int { - if x.list == nil { - return 0 +var _ protoreflect.Message = (*fastReflection_MsgAuthorize)(nil) + +type fastReflection_MsgAuthorize MsgAuthorize + +func (x *MsgAuthorize) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgAuthorize)(x) +} + +func (x *MsgAuthorize) slowProtoReflect() protoreflect.Message { + mi := &file_did_v1_tx_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return len(*x.list) + return mi.MessageOf(x) } -func (x *_MsgRegisterService_3_list) Get(i int) protoreflect.Value { - return protoreflect.ValueOfEnum((protoreflect.EnumNumber)((*x.list)[i])) +var _fastReflection_MsgAuthorize_messageType fastReflection_MsgAuthorize_messageType +var _ protoreflect.MessageType = fastReflection_MsgAuthorize_messageType{} + +type fastReflection_MsgAuthorize_messageType struct{} + +func (x fastReflection_MsgAuthorize_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgAuthorize)(nil) +} +func (x fastReflection_MsgAuthorize_messageType) New() protoreflect.Message { + return new(fastReflection_MsgAuthorize) +} +func (x fastReflection_MsgAuthorize_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAuthorize } -func (x *_MsgRegisterService_3_list) Set(i int, value protoreflect.Value) { - valueUnwrapped := value.Enum() - concreteValue := (PermissionScope)(valueUnwrapped) - (*x.list)[i] = concreteValue +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgAuthorize) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAuthorize } -func (x *_MsgRegisterService_3_list) Append(value protoreflect.Value) { - valueUnwrapped := value.Enum() - concreteValue := (PermissionScope)(valueUnwrapped) - *x.list = append(*x.list, concreteValue) +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgAuthorize) Type() protoreflect.MessageType { + return _fastReflection_MsgAuthorize_messageType } -func (x *_MsgRegisterService_3_list) AppendMutable() protoreflect.Value { - panic(fmt.Errorf("AppendMutable can not be called on message MsgRegisterService at list field Scopes as it is not of Message kind")) +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgAuthorize) New() protoreflect.Message { + return new(fastReflection_MsgAuthorize) } -func (x *_MsgRegisterService_3_list) Truncate(n int) { - *x.list = (*x.list)[:n] +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgAuthorize) Interface() protoreflect.ProtoMessage { + return (*MsgAuthorize)(x) } -func (x *_MsgRegisterService_3_list) NewElement() protoreflect.Value { - v := 0 - return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(v)) +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgAuthorize) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_MsgAuthorize_authority, value) { + return + } + } + if x.Controller != "" { + value := protoreflect.ValueOfString(x.Controller) + if !f(fd_MsgAuthorize_controller, value) { + return + } + } + if x.Address != "" { + value := protoreflect.ValueOfString(x.Address) + if !f(fd_MsgAuthorize_address, value) { + return + } + } + if x.Origin != "" { + value := protoreflect.ValueOfString(x.Origin) + if !f(fd_MsgAuthorize_origin, value) { + return + } + } + if x.Token != nil { + value := protoreflect.ValueOfMessage(x.Token.ProtoReflect()) + if !f(fd_MsgAuthorize_token, value) { + return + } + } } -func (x *_MsgRegisterService_3_list) IsValid() bool { - return x.list != nil +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgAuthorize) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "did.v1.MsgAuthorize.authority": + return x.Authority != "" + case "did.v1.MsgAuthorize.controller": + return x.Controller != "" + case "did.v1.MsgAuthorize.address": + return x.Address != "" + case "did.v1.MsgAuthorize.origin": + return x.Origin != "" + case "did.v1.MsgAuthorize.token": + return x.Token != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorize")) + } + panic(fmt.Errorf("message did.v1.MsgAuthorize does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAuthorize) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "did.v1.MsgAuthorize.authority": + x.Authority = "" + case "did.v1.MsgAuthorize.controller": + x.Controller = "" + case "did.v1.MsgAuthorize.address": + x.Address = "" + case "did.v1.MsgAuthorize.origin": + x.Origin = "" + case "did.v1.MsgAuthorize.token": + x.Token = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorize")) + } + panic(fmt.Errorf("message did.v1.MsgAuthorize does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgAuthorize) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "did.v1.MsgAuthorize.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + case "did.v1.MsgAuthorize.controller": + value := x.Controller + return protoreflect.ValueOfString(value) + case "did.v1.MsgAuthorize.address": + value := x.Address + return protoreflect.ValueOfString(value) + case "did.v1.MsgAuthorize.origin": + value := x.Origin + return protoreflect.ValueOfString(value) + case "did.v1.MsgAuthorize.token": + value := x.Token + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorize")) + } + panic(fmt.Errorf("message did.v1.MsgAuthorize does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAuthorize) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "did.v1.MsgAuthorize.authority": + x.Authority = value.Interface().(string) + case "did.v1.MsgAuthorize.controller": + x.Controller = value.Interface().(string) + case "did.v1.MsgAuthorize.address": + x.Address = value.Interface().(string) + case "did.v1.MsgAuthorize.origin": + x.Origin = value.Interface().(string) + case "did.v1.MsgAuthorize.token": + x.Token = value.Message().Interface().(*Token) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorize")) + } + panic(fmt.Errorf("message did.v1.MsgAuthorize does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAuthorize) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.MsgAuthorize.token": + if x.Token == nil { + x.Token = new(Token) + } + return protoreflect.ValueOfMessage(x.Token.ProtoReflect()) + case "did.v1.MsgAuthorize.authority": + panic(fmt.Errorf("field authority of message did.v1.MsgAuthorize is not mutable")) + case "did.v1.MsgAuthorize.controller": + panic(fmt.Errorf("field controller of message did.v1.MsgAuthorize is not mutable")) + case "did.v1.MsgAuthorize.address": + panic(fmt.Errorf("field address of message did.v1.MsgAuthorize is not mutable")) + case "did.v1.MsgAuthorize.origin": + panic(fmt.Errorf("field origin of message did.v1.MsgAuthorize is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorize")) + } + panic(fmt.Errorf("message did.v1.MsgAuthorize does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgAuthorize) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.MsgAuthorize.authority": + return protoreflect.ValueOfString("") + case "did.v1.MsgAuthorize.controller": + return protoreflect.ValueOfString("") + case "did.v1.MsgAuthorize.address": + return protoreflect.ValueOfString("") + case "did.v1.MsgAuthorize.origin": + return protoreflect.ValueOfString("") + case "did.v1.MsgAuthorize.token": + m := new(Token) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorize")) + } + panic(fmt.Errorf("message did.v1.MsgAuthorize does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgAuthorize) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgAuthorize", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgAuthorize) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAuthorize) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgAuthorize) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgAuthorize) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgAuthorize) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Controller) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Address) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Origin) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Token != nil { + l = options.Size(x.Token) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgAuthorize) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Token != nil { + encoded, err := options.Marshal(x.Token) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x2a + } + if len(x.Origin) > 0 { + i -= len(x.Origin) + copy(dAtA[i:], x.Origin) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Origin))) + i-- + dAtA[i] = 0x22 + } + if len(x.Address) > 0 { + i -= len(x.Address) + copy(dAtA[i:], x.Address) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address))) + i-- + dAtA[i] = 0x1a + } + if len(x.Controller) > 0 { + i -= len(x.Controller) + copy(dAtA[i:], x.Controller) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Controller))) + i-- + dAtA[i] = 0x12 + } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgAuthorize) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAuthorize: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAuthorize: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Controller = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Origin = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Token == nil { + x.Token = &Token{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Token); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } } var ( - md_MsgRegisterService protoreflect.MessageDescriptor - fd_MsgRegisterService_authority protoreflect.FieldDescriptor - fd_MsgRegisterService_origin_uri protoreflect.FieldDescriptor - fd_MsgRegisterService_scopes protoreflect.FieldDescriptor + md_MsgAuthorizeResponse protoreflect.MessageDescriptor + fd_MsgAuthorizeResponse_success protoreflect.FieldDescriptor + fd_MsgAuthorizeResponse_token protoreflect.FieldDescriptor +) + +func init() { + file_did_v1_tx_proto_init() + md_MsgAuthorizeResponse = File_did_v1_tx_proto.Messages().ByName("MsgAuthorizeResponse") + fd_MsgAuthorizeResponse_success = md_MsgAuthorizeResponse.Fields().ByName("success") + fd_MsgAuthorizeResponse_token = md_MsgAuthorizeResponse.Fields().ByName("token") +} + +var _ protoreflect.Message = (*fastReflection_MsgAuthorizeResponse)(nil) + +type fastReflection_MsgAuthorizeResponse MsgAuthorizeResponse + +func (x *MsgAuthorizeResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgAuthorizeResponse)(x) +} + +func (x *MsgAuthorizeResponse) slowProtoReflect() protoreflect.Message { + mi := &file_did_v1_tx_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgAuthorizeResponse_messageType fastReflection_MsgAuthorizeResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgAuthorizeResponse_messageType{} + +type fastReflection_MsgAuthorizeResponse_messageType struct{} + +func (x fastReflection_MsgAuthorizeResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgAuthorizeResponse)(nil) +} +func (x fastReflection_MsgAuthorizeResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgAuthorizeResponse) +} +func (x fastReflection_MsgAuthorizeResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAuthorizeResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgAuthorizeResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAuthorizeResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgAuthorizeResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgAuthorizeResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgAuthorizeResponse) New() protoreflect.Message { + return new(fastReflection_MsgAuthorizeResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgAuthorizeResponse) Interface() protoreflect.ProtoMessage { + return (*MsgAuthorizeResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgAuthorizeResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Success != false { + value := protoreflect.ValueOfBool(x.Success) + if !f(fd_MsgAuthorizeResponse_success, value) { + return + } + } + if x.Token != nil { + value := protoreflect.ValueOfMessage(x.Token.ProtoReflect()) + if !f(fd_MsgAuthorizeResponse_token, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgAuthorizeResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "did.v1.MsgAuthorizeResponse.success": + return x.Success != false + case "did.v1.MsgAuthorizeResponse.token": + return x.Token != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeResponse")) + } + panic(fmt.Errorf("message did.v1.MsgAuthorizeResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAuthorizeResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "did.v1.MsgAuthorizeResponse.success": + x.Success = false + case "did.v1.MsgAuthorizeResponse.token": + x.Token = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeResponse")) + } + panic(fmt.Errorf("message did.v1.MsgAuthorizeResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgAuthorizeResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "did.v1.MsgAuthorizeResponse.success": + value := x.Success + return protoreflect.ValueOfBool(value) + case "did.v1.MsgAuthorizeResponse.token": + value := x.Token + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeResponse")) + } + panic(fmt.Errorf("message did.v1.MsgAuthorizeResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAuthorizeResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "did.v1.MsgAuthorizeResponse.success": + x.Success = value.Bool() + case "did.v1.MsgAuthorizeResponse.token": + x.Token = value.Message().Interface().(*Token) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeResponse")) + } + panic(fmt.Errorf("message did.v1.MsgAuthorizeResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAuthorizeResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.MsgAuthorizeResponse.token": + if x.Token == nil { + x.Token = new(Token) + } + return protoreflect.ValueOfMessage(x.Token.ProtoReflect()) + case "did.v1.MsgAuthorizeResponse.success": + panic(fmt.Errorf("field success of message did.v1.MsgAuthorizeResponse is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeResponse")) + } + panic(fmt.Errorf("message did.v1.MsgAuthorizeResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgAuthorizeResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "did.v1.MsgAuthorizeResponse.success": + return protoreflect.ValueOfBool(false) + case "did.v1.MsgAuthorizeResponse.token": + m := new(Token) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeResponse")) + } + panic(fmt.Errorf("message did.v1.MsgAuthorizeResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgAuthorizeResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgAuthorizeResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgAuthorizeResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAuthorizeResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgAuthorizeResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgAuthorizeResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgAuthorizeResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Success { + n += 2 + } + if x.Token != nil { + l = options.Size(x.Token) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgAuthorizeResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Token != nil { + encoded, err := options.Marshal(x.Token) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if x.Success { + i-- + if x.Success { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgAuthorizeResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAuthorizeResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAuthorizeResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Success = bool(v != 0) + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Token == nil { + x.Token = &Token{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Token); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.Map = (*_MsgRegisterService_5_map)(nil) + +type _MsgRegisterService_5_map struct { + m *map[string]string +} + +func (x *_MsgRegisterService_5_map) Len() int { + if x.m == nil { + return 0 + } + return len(*x.m) +} + +func (x *_MsgRegisterService_5_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { + if x.m == nil { + return + } + for k, v := range *x.m { + mapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k)) + mapValue := protoreflect.ValueOfString(v) + if !f(mapKey, mapValue) { + break + } + } +} + +func (x *_MsgRegisterService_5_map) Has(key protoreflect.MapKey) bool { + if x.m == nil { + return false + } + keyUnwrapped := key.String() + concreteValue := keyUnwrapped + _, ok := (*x.m)[concreteValue] + return ok +} + +func (x *_MsgRegisterService_5_map) Clear(key protoreflect.MapKey) { + if x.m == nil { + return + } + keyUnwrapped := key.String() + concreteKey := keyUnwrapped + delete(*x.m, concreteKey) +} + +func (x *_MsgRegisterService_5_map) Get(key protoreflect.MapKey) protoreflect.Value { + if x.m == nil { + return protoreflect.Value{} + } + keyUnwrapped := key.String() + concreteKey := keyUnwrapped + v, ok := (*x.m)[concreteKey] + if !ok { + return protoreflect.Value{} + } + return protoreflect.ValueOfString(v) +} + +func (x *_MsgRegisterService_5_map) Set(key protoreflect.MapKey, value protoreflect.Value) { + if !key.IsValid() || !value.IsValid() { + panic("invalid key or value provided") + } + keyUnwrapped := key.String() + concreteKey := keyUnwrapped + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.m)[concreteKey] = concreteValue +} + +func (x *_MsgRegisterService_5_map) Mutable(key protoreflect.MapKey) protoreflect.Value { + panic("should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message") +} + +func (x *_MsgRegisterService_5_map) NewValue() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_MsgRegisterService_5_map) IsValid() bool { + return x.m != nil +} + +var ( + md_MsgRegisterService protoreflect.MessageDescriptor + fd_MsgRegisterService_controller protoreflect.FieldDescriptor + fd_MsgRegisterService_origin_uri protoreflect.FieldDescriptor + fd_MsgRegisterService_scopes protoreflect.FieldDescriptor + fd_MsgRegisterService_description protoreflect.FieldDescriptor + fd_MsgRegisterService_service_endpoints protoreflect.FieldDescriptor + fd_MsgRegisterService_metadata protoreflect.FieldDescriptor + fd_MsgRegisterService_token protoreflect.FieldDescriptor ) func init() { file_did_v1_tx_proto_init() md_MsgRegisterService = File_did_v1_tx_proto.Messages().ByName("MsgRegisterService") - fd_MsgRegisterService_authority = md_MsgRegisterService.Fields().ByName("authority") + fd_MsgRegisterService_controller = md_MsgRegisterService.Fields().ByName("controller") fd_MsgRegisterService_origin_uri = md_MsgRegisterService.Fields().ByName("origin_uri") fd_MsgRegisterService_scopes = md_MsgRegisterService.Fields().ByName("scopes") + fd_MsgRegisterService_description = md_MsgRegisterService.Fields().ByName("description") + fd_MsgRegisterService_service_endpoints = md_MsgRegisterService.Fields().ByName("service_endpoints") + fd_MsgRegisterService_metadata = md_MsgRegisterService.Fields().ByName("metadata") + fd_MsgRegisterService_token = md_MsgRegisterService.Fields().ByName("token") } var _ protoreflect.Message = (*fastReflection_MsgRegisterService)(nil) @@ -5349,7 +6830,7 @@ func (x *MsgRegisterService) ProtoReflect() protoreflect.Message { } func (x *MsgRegisterService) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_tx_proto_msgTypes[10] + mi := &file_did_v1_tx_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5405,9 +6886,9 @@ func (x *fastReflection_MsgRegisterService) Interface() protoreflect.ProtoMessag // While iterating, mutating operations may only be performed // on the current field descriptor. func (x *fastReflection_MsgRegisterService) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Authority != "" { - value := protoreflect.ValueOfString(x.Authority) - if !f(fd_MsgRegisterService_authority, value) { + if x.Controller != "" { + value := protoreflect.ValueOfString(x.Controller) + if !f(fd_MsgRegisterService_controller, value) { return } } @@ -5417,12 +6898,36 @@ func (x *fastReflection_MsgRegisterService) Range(f func(protoreflect.FieldDescr return } } - if len(x.Scopes) != 0 { - value := protoreflect.ValueOfList(&_MsgRegisterService_3_list{list: &x.Scopes}) + if x.Scopes != nil { + value := protoreflect.ValueOfMessage(x.Scopes.ProtoReflect()) if !f(fd_MsgRegisterService_scopes, value) { return } } + if x.Description != "" { + value := protoreflect.ValueOfString(x.Description) + if !f(fd_MsgRegisterService_description, value) { + return + } + } + if len(x.ServiceEndpoints) != 0 { + value := protoreflect.ValueOfMap(&_MsgRegisterService_5_map{m: &x.ServiceEndpoints}) + if !f(fd_MsgRegisterService_service_endpoints, value) { + return + } + } + if x.Metadata != nil { + value := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + if !f(fd_MsgRegisterService_metadata, value) { + return + } + } + if x.Token != nil { + value := protoreflect.ValueOfMessage(x.Token.ProtoReflect()) + if !f(fd_MsgRegisterService_token, value) { + return + } + } } // Has reports whether a field is populated. @@ -5438,12 +6943,20 @@ func (x *fastReflection_MsgRegisterService) Range(f func(protoreflect.FieldDescr // a repeated field is populated if it is non-empty. func (x *fastReflection_MsgRegisterService) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "did.v1.MsgRegisterService.authority": - return x.Authority != "" + case "did.v1.MsgRegisterService.controller": + return x.Controller != "" case "did.v1.MsgRegisterService.origin_uri": return x.OriginUri != "" case "did.v1.MsgRegisterService.scopes": - return len(x.Scopes) != 0 + return x.Scopes != nil + case "did.v1.MsgRegisterService.description": + return x.Description != "" + case "did.v1.MsgRegisterService.service_endpoints": + return len(x.ServiceEndpoints) != 0 + case "did.v1.MsgRegisterService.metadata": + return x.Metadata != nil + case "did.v1.MsgRegisterService.token": + return x.Token != nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterService")) @@ -5460,12 +6973,20 @@ func (x *fastReflection_MsgRegisterService) Has(fd protoreflect.FieldDescriptor) // Clear is a mutating operation and unsafe for concurrent use. func (x *fastReflection_MsgRegisterService) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "did.v1.MsgRegisterService.authority": - x.Authority = "" + case "did.v1.MsgRegisterService.controller": + x.Controller = "" case "did.v1.MsgRegisterService.origin_uri": x.OriginUri = "" case "did.v1.MsgRegisterService.scopes": x.Scopes = nil + case "did.v1.MsgRegisterService.description": + x.Description = "" + case "did.v1.MsgRegisterService.service_endpoints": + x.ServiceEndpoints = nil + case "did.v1.MsgRegisterService.metadata": + x.Metadata = nil + case "did.v1.MsgRegisterService.token": + x.Token = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterService")) @@ -5482,18 +7003,30 @@ func (x *fastReflection_MsgRegisterService) Clear(fd protoreflect.FieldDescripto // of the value; to obtain a mutable reference, use Mutable. func (x *fastReflection_MsgRegisterService) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "did.v1.MsgRegisterService.authority": - value := x.Authority + case "did.v1.MsgRegisterService.controller": + value := x.Controller return protoreflect.ValueOfString(value) case "did.v1.MsgRegisterService.origin_uri": value := x.OriginUri return protoreflect.ValueOfString(value) case "did.v1.MsgRegisterService.scopes": - if len(x.Scopes) == 0 { - return protoreflect.ValueOfList(&_MsgRegisterService_3_list{}) + value := x.Scopes + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "did.v1.MsgRegisterService.description": + value := x.Description + return protoreflect.ValueOfString(value) + case "did.v1.MsgRegisterService.service_endpoints": + if len(x.ServiceEndpoints) == 0 { + return protoreflect.ValueOfMap(&_MsgRegisterService_5_map{}) } - listValue := &_MsgRegisterService_3_list{list: &x.Scopes} - return protoreflect.ValueOfList(listValue) + mapValue := &_MsgRegisterService_5_map{m: &x.ServiceEndpoints} + return protoreflect.ValueOfMap(mapValue) + case "did.v1.MsgRegisterService.metadata": + value := x.Metadata + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "did.v1.MsgRegisterService.token": + value := x.Token + return protoreflect.ValueOfMessage(value.ProtoReflect()) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterService")) @@ -5514,14 +7047,22 @@ func (x *fastReflection_MsgRegisterService) Get(descriptor protoreflect.FieldDes // Set is a mutating operation and unsafe for concurrent use. func (x *fastReflection_MsgRegisterService) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "did.v1.MsgRegisterService.authority": - x.Authority = value.Interface().(string) + case "did.v1.MsgRegisterService.controller": + x.Controller = value.Interface().(string) case "did.v1.MsgRegisterService.origin_uri": x.OriginUri = value.Interface().(string) case "did.v1.MsgRegisterService.scopes": - lv := value.List() - clv := lv.(*_MsgRegisterService_3_list) - x.Scopes = *clv.list + x.Scopes = value.Message().Interface().(*Permissions) + case "did.v1.MsgRegisterService.description": + x.Description = value.Interface().(string) + case "did.v1.MsgRegisterService.service_endpoints": + mv := value.Map() + cmv := mv.(*_MsgRegisterService_5_map) + x.ServiceEndpoints = *cmv.m + case "did.v1.MsgRegisterService.metadata": + x.Metadata = value.Message().Interface().(*Metadata) + case "did.v1.MsgRegisterService.token": + x.Token = value.Message().Interface().(*Token) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterService")) @@ -5544,14 +7085,31 @@ func (x *fastReflection_MsgRegisterService) Mutable(fd protoreflect.FieldDescrip switch fd.FullName() { case "did.v1.MsgRegisterService.scopes": if x.Scopes == nil { - x.Scopes = []PermissionScope{} + x.Scopes = new(Permissions) } - value := &_MsgRegisterService_3_list{list: &x.Scopes} - return protoreflect.ValueOfList(value) - case "did.v1.MsgRegisterService.authority": - panic(fmt.Errorf("field authority of message did.v1.MsgRegisterService is not mutable")) + return protoreflect.ValueOfMessage(x.Scopes.ProtoReflect()) + case "did.v1.MsgRegisterService.service_endpoints": + if x.ServiceEndpoints == nil { + x.ServiceEndpoints = make(map[string]string) + } + value := &_MsgRegisterService_5_map{m: &x.ServiceEndpoints} + return protoreflect.ValueOfMap(value) + case "did.v1.MsgRegisterService.metadata": + if x.Metadata == nil { + x.Metadata = new(Metadata) + } + return protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + case "did.v1.MsgRegisterService.token": + if x.Token == nil { + x.Token = new(Token) + } + return protoreflect.ValueOfMessage(x.Token.ProtoReflect()) + case "did.v1.MsgRegisterService.controller": + panic(fmt.Errorf("field controller of message did.v1.MsgRegisterService is not mutable")) case "did.v1.MsgRegisterService.origin_uri": panic(fmt.Errorf("field origin_uri of message did.v1.MsgRegisterService is not mutable")) + case "did.v1.MsgRegisterService.description": + panic(fmt.Errorf("field description of message did.v1.MsgRegisterService is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterService")) @@ -5565,13 +7123,24 @@ func (x *fastReflection_MsgRegisterService) Mutable(fd protoreflect.FieldDescrip // For lists, maps, and messages, this returns a new, empty, mutable value. func (x *fastReflection_MsgRegisterService) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.MsgRegisterService.authority": + case "did.v1.MsgRegisterService.controller": return protoreflect.ValueOfString("") case "did.v1.MsgRegisterService.origin_uri": return protoreflect.ValueOfString("") case "did.v1.MsgRegisterService.scopes": - list := []PermissionScope{} - return protoreflect.ValueOfList(&_MsgRegisterService_3_list{list: &list}) + m := new(Permissions) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "did.v1.MsgRegisterService.description": + return protoreflect.ValueOfString("") + case "did.v1.MsgRegisterService.service_endpoints": + m := make(map[string]string) + return protoreflect.ValueOfMap(&_MsgRegisterService_5_map{m: &m}) + case "did.v1.MsgRegisterService.metadata": + m := new(Metadata) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "did.v1.MsgRegisterService.token": + m := new(Token) + return protoreflect.ValueOfMessage(m.ProtoReflect()) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterService")) @@ -5641,7 +7210,7 @@ func (x *fastReflection_MsgRegisterService) ProtoMethods() *protoiface.Methods { var n int var l int _ = l - l = len(x.Authority) + l = len(x.Controller) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } @@ -5649,12 +7218,42 @@ func (x *fastReflection_MsgRegisterService) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - if len(x.Scopes) > 0 { - l = 0 - for _, e := range x.Scopes { - l += runtime.Sov(uint64(e)) + if x.Scopes != nil { + l = options.Size(x.Scopes) + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Description) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.ServiceEndpoints) > 0 { + SiZeMaP := func(k string, v string) { + mapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + 1 + len(v) + runtime.Sov(uint64(len(v))) + n += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize)) } - n += 1 + runtime.Sov(uint64(l)) + l + if options.Deterministic { + sortme := make([]string, 0, len(x.ServiceEndpoints)) + for k := range x.ServiceEndpoints { + sortme = append(sortme, k) + } + sort.Strings(sortme) + for _, k := range sortme { + v := x.ServiceEndpoints[k] + SiZeMaP(k, v) + } + } else { + for k, v := range x.ServiceEndpoints { + SiZeMaP(k, v) + } + } + } + if x.Metadata != nil { + l = options.Size(x.Metadata) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Token != nil { + l = options.Size(x.Token) + n += 1 + l + runtime.Sov(uint64(l)) } if x.unknownFields != nil { n += len(x.unknownFields) @@ -5685,24 +7284,95 @@ func (x *fastReflection_MsgRegisterService) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } - if len(x.Scopes) > 0 { - var pksize2 int - for _, num := range x.Scopes { - pksize2 += runtime.Sov(uint64(num)) + if x.Token != nil { + encoded, err := options.Marshal(x.Token) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err } - i -= pksize2 - j1 := i - for _, num1 := range x.Scopes { - num := uint64(num1) - for num >= 1<<7 { - dAtA[j1] = uint8(uint64(num)&0x7f | 0x80) - num >>= 7 - j1++ + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x3a + } + if x.Metadata != nil { + encoded, err := options.Marshal(x.Metadata) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x32 + } + if len(x.ServiceEndpoints) > 0 { + MaRsHaLmAp := func(k string, v string) (protoiface.MarshalOutput, error) { + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = runtime.EncodeVarint(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = runtime.EncodeVarint(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = runtime.EncodeVarint(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x2a + return protoiface.MarshalOutput{}, nil + } + if options.Deterministic { + keysForServiceEndpoints := make([]string, 0, len(x.ServiceEndpoints)) + for k := range x.ServiceEndpoints { + keysForServiceEndpoints = append(keysForServiceEndpoints, string(k)) + } + sort.Slice(keysForServiceEndpoints, func(i, j int) bool { + return keysForServiceEndpoints[i] < keysForServiceEndpoints[j] + }) + for iNdEx := len(keysForServiceEndpoints) - 1; iNdEx >= 0; iNdEx-- { + v := x.ServiceEndpoints[string(keysForServiceEndpoints[iNdEx])] + out, err := MaRsHaLmAp(keysForServiceEndpoints[iNdEx], v) + if err != nil { + return out, err + } + } + } else { + for k := range x.ServiceEndpoints { + v := x.ServiceEndpoints[k] + out, err := MaRsHaLmAp(k, v) + if err != nil { + return out, err + } } - dAtA[j1] = uint8(num) - j1++ } - i = runtime.EncodeVarint(dAtA, i, uint64(pksize2)) + } + if len(x.Description) > 0 { + i -= len(x.Description) + copy(dAtA[i:], x.Description) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) + i-- + dAtA[i] = 0x22 + } + if x.Scopes != nil { + encoded, err := options.Marshal(x.Scopes) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) i-- dAtA[i] = 0x1a } @@ -5713,10 +7383,10 @@ func (x *fastReflection_MsgRegisterService) ProtoMethods() *protoiface.Methods { i-- dAtA[i] = 0x12 } - if len(x.Authority) > 0 { - i -= len(x.Authority) - copy(dAtA[i:], x.Authority) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + if len(x.Controller) > 0 { + i -= len(x.Controller) + copy(dAtA[i:], x.Controller) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Controller))) i-- dAtA[i] = 0xa } @@ -5771,7 +7441,7 @@ func (x *fastReflection_MsgRegisterService) ProtoMethods() *protoiface.Methods { switch fieldNum { case 1: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -5799,7 +7469,7 @@ func (x *fastReflection_MsgRegisterService) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.Authority = string(dAtA[iNdEx:postIndex]) + x.Controller = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -5834,55 +7504,127 @@ func (x *fastReflection_MsgRegisterService) ProtoMethods() *protoiface.Methods { x.OriginUri = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: - if wireType == 0 { - var v PermissionScope - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= PermissionScope(b&0x7F) << shift - if b < 0x80 { - break - } + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Scopes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow } - x.Scopes = append(x.Scopes, v) - } else if wireType == 2 { - var packedLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - packedLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if packedLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + packedLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { + if iNdEx >= l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - var elementCount int - if elementCount != 0 && len(x.Scopes) == 0 { - x.Scopes = make([]PermissionScope, 0, elementCount) + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break } - for iNdEx < postIndex { - var v PermissionScope + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Scopes == nil { + x.Scopes = &Permissions{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Scopes); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ServiceEndpoints", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.ServiceEndpoints == nil { + x.ServiceEndpoints = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -5892,16 +7634,142 @@ func (x *fastReflection_MsgRegisterService) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - v |= PermissionScope(b&0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } } - x.Scopes = append(x.Scopes, v) + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postStringIndexmapkey > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postStringIndexmapvalue > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > postIndex { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + iNdEx += skippy } - } else { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Scopes", wireType) } + x.ServiceEndpoints[mapkey] = mapvalue + iNdEx = postIndex + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Metadata == nil { + x.Metadata = &Metadata{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Metadata); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Token == nil { + x.Token = &Token{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Token); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -5940,12 +7808,14 @@ func (x *fastReflection_MsgRegisterService) ProtoMethods() *protoiface.Methods { var ( md_MsgRegisterServiceResponse protoreflect.MessageDescriptor fd_MsgRegisterServiceResponse_success protoreflect.FieldDescriptor + fd_MsgRegisterServiceResponse_did protoreflect.FieldDescriptor ) func init() { file_did_v1_tx_proto_init() md_MsgRegisterServiceResponse = File_did_v1_tx_proto.Messages().ByName("MsgRegisterServiceResponse") fd_MsgRegisterServiceResponse_success = md_MsgRegisterServiceResponse.Fields().ByName("success") + fd_MsgRegisterServiceResponse_did = md_MsgRegisterServiceResponse.Fields().ByName("did") } var _ protoreflect.Message = (*fastReflection_MsgRegisterServiceResponse)(nil) @@ -5957,7 +7827,7 @@ func (x *MsgRegisterServiceResponse) ProtoReflect() protoreflect.Message { } func (x *MsgRegisterServiceResponse) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_tx_proto_msgTypes[11] + mi := &file_did_v1_tx_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6019,6 +7889,12 @@ func (x *fastReflection_MsgRegisterServiceResponse) Range(f func(protoreflect.Fi return } } + if x.Did != "" { + value := protoreflect.ValueOfString(x.Did) + if !f(fd_MsgRegisterServiceResponse_did, value) { + return + } + } } // Has reports whether a field is populated. @@ -6036,6 +7912,8 @@ func (x *fastReflection_MsgRegisterServiceResponse) Has(fd protoreflect.FieldDes switch fd.FullName() { case "did.v1.MsgRegisterServiceResponse.success": return x.Success != false + case "did.v1.MsgRegisterServiceResponse.did": + return x.Did != "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterServiceResponse")) @@ -6054,6 +7932,8 @@ func (x *fastReflection_MsgRegisterServiceResponse) Clear(fd protoreflect.FieldD switch fd.FullName() { case "did.v1.MsgRegisterServiceResponse.success": x.Success = false + case "did.v1.MsgRegisterServiceResponse.did": + x.Did = "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterServiceResponse")) @@ -6073,6 +7953,9 @@ func (x *fastReflection_MsgRegisterServiceResponse) Get(descriptor protoreflect. case "did.v1.MsgRegisterServiceResponse.success": value := x.Success return protoreflect.ValueOfBool(value) + case "did.v1.MsgRegisterServiceResponse.did": + value := x.Did + return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterServiceResponse")) @@ -6095,6 +7978,8 @@ func (x *fastReflection_MsgRegisterServiceResponse) Set(fd protoreflect.FieldDes switch fd.FullName() { case "did.v1.MsgRegisterServiceResponse.success": x.Success = value.Bool() + case "did.v1.MsgRegisterServiceResponse.did": + x.Did = value.Interface().(string) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterServiceResponse")) @@ -6117,6 +8002,8 @@ func (x *fastReflection_MsgRegisterServiceResponse) Mutable(fd protoreflect.Fiel switch fd.FullName() { case "did.v1.MsgRegisterServiceResponse.success": panic(fmt.Errorf("field success of message did.v1.MsgRegisterServiceResponse is not mutable")) + case "did.v1.MsgRegisterServiceResponse.did": + panic(fmt.Errorf("field did of message did.v1.MsgRegisterServiceResponse is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterServiceResponse")) @@ -6132,6 +8019,8 @@ func (x *fastReflection_MsgRegisterServiceResponse) NewField(fd protoreflect.Fie switch fd.FullName() { case "did.v1.MsgRegisterServiceResponse.success": return protoreflect.ValueOfBool(false) + case "did.v1.MsgRegisterServiceResponse.did": + return protoreflect.ValueOfString("") default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterServiceResponse")) @@ -6204,6 +8093,10 @@ func (x *fastReflection_MsgRegisterServiceResponse) ProtoMethods() *protoiface.M if x.Success { n += 2 } + l = len(x.Did) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -6233,6 +8126,13 @@ func (x *fastReflection_MsgRegisterServiceResponse) ProtoMethods() *protoiface.M i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.Did) > 0 { + i -= len(x.Did) + copy(dAtA[i:], x.Did) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Did))) + i-- + dAtA[i] = 0x12 + } if x.Success { i-- if x.Success { @@ -6312,6 +8212,38 @@ func (x *fastReflection_MsgRegisterServiceResponse) ProtoMethods() *protoiface.M } } x.Success = bool(v != 0) + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Did = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -6371,9 +8303,9 @@ type MsgUpdateParams struct { // authority is the address of the governance account. Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` // params defines the parameters to update. - // - // NOTE: All parameters must be supplied. Params *Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"` + // token is the macron token to authenticate the operation. + Token *Token `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` } func (x *MsgUpdateParams) Reset() { @@ -6410,6 +8342,13 @@ func (x *MsgUpdateParams) GetParams() *Params { return nil } +func (x *MsgUpdateParams) GetToken() *Token { + if x != nil { + return x.Token + } + return nil +} + // MsgUpdateParamsResponse defines the response structure for executing a // MsgUpdateParams message. // @@ -6440,24 +8379,22 @@ func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { return file_did_v1_tx_proto_rawDescGZIP(), []int{1} } -// MsgAuthenticate is the message type for the Authenticate RPC. -type MsgAuthenticate struct { +// MsgAllocateVault is the message type for the AllocateVault RPC. +type MsgAllocateVault struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // authority is the address of the governance account. + // authority is the address of the service account. Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` - // Controller is the address of the controller to authenticate. - Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` - // Address is the address to authenticate. - Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` - // Origin is the origin of the request in wildcard form. - Origin string `protobuf:"bytes,4,opt,name=origin,proto3" json:"origin,omitempty"` + // subject is a unique human-defined identifier to associate with the vault. + Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"` + // token is the macron token to authenticate the operation. + Token *Token `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` } -func (x *MsgAuthenticate) Reset() { - *x = MsgAuthenticate{} +func (x *MsgAllocateVault) Reset() { + *x = MsgAllocateVault{} if protoimpl.UnsafeEnabled { mi := &file_did_v1_tx_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6465,54 +8402,52 @@ func (x *MsgAuthenticate) Reset() { } } -func (x *MsgAuthenticate) String() string { +func (x *MsgAllocateVault) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgAuthenticate) ProtoMessage() {} +func (*MsgAllocateVault) ProtoMessage() {} -// Deprecated: Use MsgAuthenticate.ProtoReflect.Descriptor instead. -func (*MsgAuthenticate) Descriptor() ([]byte, []int) { +// Deprecated: Use MsgAllocateVault.ProtoReflect.Descriptor instead. +func (*MsgAllocateVault) Descriptor() ([]byte, []int) { return file_did_v1_tx_proto_rawDescGZIP(), []int{2} } -func (x *MsgAuthenticate) GetAuthority() string { +func (x *MsgAllocateVault) GetAuthority() string { if x != nil { return x.Authority } return "" } -func (x *MsgAuthenticate) GetController() string { +func (x *MsgAllocateVault) GetSubject() string { if x != nil { - return x.Controller + return x.Subject } return "" } -func (x *MsgAuthenticate) GetAddress() string { +func (x *MsgAllocateVault) GetToken() *Token { if x != nil { - return x.Address + return x.Token } - return "" + return nil } -func (x *MsgAuthenticate) GetOrigin() string { - if x != nil { - return x.Origin - } - return "" -} - -// MsgAuthenticateResponse is the response type for the Authenticate RPC. -type MsgAuthenticateResponse struct { +// MsgAllocateVaultResponse is the response type for the AllocateVault RPC. +type MsgAllocateVaultResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // CID is the content identifier of the vault. + Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` + // ExpiryBlock is the block number at which the vault will expire. + ExpiryBlock int64 `protobuf:"varint,2,opt,name=expiry_block,json=expiryBlock,proto3" json:"expiry_block,omitempty"` } -func (x *MsgAuthenticateResponse) Reset() { - *x = MsgAuthenticateResponse{} +func (x *MsgAllocateVaultResponse) Reset() { + *x = MsgAllocateVaultResponse{} if protoimpl.UnsafeEnabled { mi := &file_did_v1_tx_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6520,17 +8455,31 @@ func (x *MsgAuthenticateResponse) Reset() { } } -func (x *MsgAuthenticateResponse) String() string { +func (x *MsgAllocateVaultResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgAuthenticateResponse) ProtoMessage() {} +func (*MsgAllocateVaultResponse) ProtoMessage() {} -// Deprecated: Use MsgAuthenticateResponse.ProtoReflect.Descriptor instead. -func (*MsgAuthenticateResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use MsgAllocateVaultResponse.ProtoReflect.Descriptor instead. +func (*MsgAllocateVaultResponse) Descriptor() ([]byte, []int) { return file_did_v1_tx_proto_rawDescGZIP(), []int{3} } +func (x *MsgAllocateVaultResponse) GetCid() string { + if x != nil { + return x.Cid + } + return "" +} + +func (x *MsgAllocateVaultResponse) GetExpiryBlock() int64 { + if x != nil { + return x.ExpiryBlock + } + return 0 +} + // MsgProveWitness is the message type for the ProveWitness RPC. type MsgProveWitness struct { state protoimpl.MessageState @@ -6543,6 +8492,8 @@ type MsgProveWitness struct { Property string `protobuf:"bytes,2,opt,name=property,proto3" json:"property,omitempty"` // Witness Value is the bytes of the witness. Witness []byte `protobuf:"bytes,3,opt,name=witness,proto3" json:"witness,omitempty"` + // token is the macron token to authenticate the operation. + Token *Token `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` } func (x *MsgProveWitness) Reset() { @@ -6586,6 +8537,13 @@ func (x *MsgProveWitness) GetWitness() []byte { return nil } +func (x *MsgProveWitness) GetToken() *Token { + if x != nil { + return x.Token + } + return nil +} + // MsgProveWitnessResponse is the response type for the ProveWitness RPC. type MsgProveWitnessResponse struct { state protoimpl.MessageState @@ -6638,10 +8596,8 @@ type MsgSyncVault struct { // controller is the address of the controller to sync. Controller string `protobuf:"bytes,1,opt,name=controller,proto3" json:"controller,omitempty"` - // cid is the IPFS content identifier. - Cid string `protobuf:"bytes,2,opt,name=cid,proto3" json:"cid,omitempty"` - // Macroon is the public token to authenticate the operation. - Macron []byte `protobuf:"bytes,3,opt,name=macron,proto3" json:"macron,omitempty"` + // Token is the public token to authenticate the operation. + Token *Token `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` } func (x *MsgSyncVault) Reset() { @@ -6671,16 +8627,9 @@ func (x *MsgSyncVault) GetController() string { return "" } -func (x *MsgSyncVault) GetCid() string { +func (x *MsgSyncVault) GetToken() *Token { if x != nil { - return x.Cid - } - return "" -} - -func (x *MsgSyncVault) GetMacron() []byte { - if x != nil { - return x.Macron + return x.Token } return nil } @@ -6731,10 +8680,12 @@ type MsgRegisterController struct { Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` // Assertions is the list of assertions to initialize the controller with. Cid string `protobuf:"bytes,2,opt,name=cid,proto3" json:"cid,omitempty"` - // Keyshares is the list of keyshares to initialize the controller with. - Keyshares [][]byte `protobuf:"bytes,3,rep,name=keyshares,proto3" json:"keyshares,omitempty"` - // Verifications is the list of verifications to initialize the controller with. - Verifications [][]byte `protobuf:"bytes,4,rep,name=verifications,proto3" json:"verifications,omitempty"` + // Origin is the origin of the request in wildcard form. + Origin string `protobuf:"bytes,3,opt,name=origin,proto3" json:"origin,omitempty"` + // Credential is the list of keyshares to initialize the controller with. + Authentication []*Credential `protobuf:"bytes,4,rep,name=authentication,proto3" json:"authentication,omitempty"` + // token is the macron token to authenticate the operation. + Token *Token `protobuf:"bytes,5,opt,name=token,proto3" json:"token,omitempty"` } func (x *MsgRegisterController) Reset() { @@ -6771,16 +8722,23 @@ func (x *MsgRegisterController) GetCid() string { return "" } -func (x *MsgRegisterController) GetKeyshares() [][]byte { +func (x *MsgRegisterController) GetOrigin() string { if x != nil { - return x.Keyshares + return x.Origin + } + return "" +} + +func (x *MsgRegisterController) GetAuthentication() []*Credential { + if x != nil { + return x.Authentication } return nil } -func (x *MsgRegisterController) GetVerifications() [][]byte { +func (x *MsgRegisterController) GetToken() *Token { if x != nil { - return x.Verifications + return x.Token } return nil } @@ -6791,10 +8749,12 @@ type MsgRegisterControllerResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // Success returns true if the specified cid is valid and not already encrypted. + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` // Controller is the address of the initialized controller. - Controller string `protobuf:"bytes,1,opt,name=controller,proto3" json:"controller,omitempty"` + Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` // Accounts are a Address Map and Supported coin Denoms for the controller - Accounts map[string]string `protobuf:"bytes,2,rep,name=accounts,proto3" json:"accounts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Accounts map[string]string `protobuf:"bytes,3,rep,name=accounts,proto3" json:"accounts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *MsgRegisterControllerResponse) Reset() { @@ -6817,6 +8777,13 @@ func (*MsgRegisterControllerResponse) Descriptor() ([]byte, []int) { return file_did_v1_tx_proto_rawDescGZIP(), []int{9} } +func (x *MsgRegisterControllerResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + func (x *MsgRegisterControllerResponse) GetController() string { if x != nil { return x.Controller @@ -6831,6 +8798,123 @@ func (x *MsgRegisterControllerResponse) GetAccounts() map[string]string { return nil } +// MsgAuthorize is the message type for the Authorize RPC. +type MsgAuthorize struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address of the governance account. + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // Controller is the address of the controller to authenticate. + Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` + // Address is the address to authenticate. + Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` + // Origin is the origin of the request in wildcard form. + Origin string `protobuf:"bytes,4,opt,name=origin,proto3" json:"origin,omitempty"` + // token is the macron token to authenticate the operation. + Token *Token `protobuf:"bytes,5,opt,name=token,proto3" json:"token,omitempty"` +} + +func (x *MsgAuthorize) Reset() { + *x = MsgAuthorize{} + if protoimpl.UnsafeEnabled { + mi := &file_did_v1_tx_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgAuthorize) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgAuthorize) ProtoMessage() {} + +// Deprecated: Use MsgAuthorize.ProtoReflect.Descriptor instead. +func (*MsgAuthorize) Descriptor() ([]byte, []int) { + return file_did_v1_tx_proto_rawDescGZIP(), []int{10} +} + +func (x *MsgAuthorize) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgAuthorize) GetController() string { + if x != nil { + return x.Controller + } + return "" +} + +func (x *MsgAuthorize) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *MsgAuthorize) GetOrigin() string { + if x != nil { + return x.Origin + } + return "" +} + +func (x *MsgAuthorize) GetToken() *Token { + if x != nil { + return x.Token + } + return nil +} + +// MsgAuthorizeResponse is the response type for the Authorize RPC. +type MsgAuthorizeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Token *Token `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` +} + +func (x *MsgAuthorizeResponse) Reset() { + *x = MsgAuthorizeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_did_v1_tx_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgAuthorizeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgAuthorizeResponse) ProtoMessage() {} + +// Deprecated: Use MsgAuthorizeResponse.ProtoReflect.Descriptor instead. +func (*MsgAuthorizeResponse) Descriptor() ([]byte, []int) { + return file_did_v1_tx_proto_rawDescGZIP(), []int{11} +} + +func (x *MsgAuthorizeResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *MsgAuthorizeResponse) GetToken() *Token { + if x != nil { + return x.Token + } + return nil +} + // MsgRegisterService is the message type for the RegisterService RPC. type MsgRegisterService struct { state protoimpl.MessageState @@ -6838,17 +8922,25 @@ type MsgRegisterService struct { unknownFields protoimpl.UnknownFields // authority is the address of the governance account. - Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + Controller string `protobuf:"bytes,1,opt,name=controller,proto3" json:"controller,omitempty"` // origin is the origin of the request in wildcard form. OriginUri string `protobuf:"bytes,2,opt,name=origin_uri,json=originUri,proto3" json:"origin_uri,omitempty"` - // PermissionScope is the scope of the service. - Scopes []PermissionScope `protobuf:"varint,3,rep,packed,name=scopes,proto3,enum=did.v1.PermissionScope" json:"scopes,omitempty"` + // Permissions is the scope of the service. + Scopes *Permissions `protobuf:"bytes,3,opt,name=scopes,proto3" json:"scopes,omitempty"` + // Description is the description of the service + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + // service_endpoints is the endpoints of the service + ServiceEndpoints map[string]string `protobuf:"bytes,5,rep,name=service_endpoints,json=serviceEndpoints,proto3" json:"service_endpoints,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Metadata is optional additional information about the service + Metadata *Metadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` + // token is the macron token to authenticate the operation. + Token *Token `protobuf:"bytes,7,opt,name=token,proto3" json:"token,omitempty"` } func (x *MsgRegisterService) Reset() { *x = MsgRegisterService{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_tx_proto_msgTypes[10] + mi := &file_did_v1_tx_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6862,12 +8954,12 @@ func (*MsgRegisterService) ProtoMessage() {} // Deprecated: Use MsgRegisterService.ProtoReflect.Descriptor instead. func (*MsgRegisterService) Descriptor() ([]byte, []int) { - return file_did_v1_tx_proto_rawDescGZIP(), []int{10} + return file_did_v1_tx_proto_rawDescGZIP(), []int{12} } -func (x *MsgRegisterService) GetAuthority() string { +func (x *MsgRegisterService) GetController() string { if x != nil { - return x.Authority + return x.Controller } return "" } @@ -6879,26 +8971,55 @@ func (x *MsgRegisterService) GetOriginUri() string { return "" } -func (x *MsgRegisterService) GetScopes() []PermissionScope { +func (x *MsgRegisterService) GetScopes() *Permissions { if x != nil { return x.Scopes } return nil } +func (x *MsgRegisterService) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *MsgRegisterService) GetServiceEndpoints() map[string]string { + if x != nil { + return x.ServiceEndpoints + } + return nil +} + +func (x *MsgRegisterService) GetMetadata() *Metadata { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *MsgRegisterService) GetToken() *Token { + if x != nil { + return x.Token + } + return nil +} + // MsgRegisterServiceResponse is the response type for the RegisterService RPC. type MsgRegisterServiceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Did string `protobuf:"bytes,2,opt,name=did,proto3" json:"did,omitempty"` } func (x *MsgRegisterServiceResponse) Reset() { *x = MsgRegisterServiceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_tx_proto_msgTypes[11] + mi := &file_did_v1_tx_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6912,7 +9033,7 @@ func (*MsgRegisterServiceResponse) ProtoMessage() {} // Deprecated: Use MsgRegisterServiceResponse.ProtoReflect.Descriptor instead. func (*MsgRegisterServiceResponse) Descriptor() ([]byte, []int) { - return file_did_v1_tx_proto_rawDescGZIP(), []int{11} + return file_did_v1_tx_proto_rawDescGZIP(), []int{13} } func (x *MsgRegisterServiceResponse) GetSuccess() bool { @@ -6922,149 +9043,205 @@ func (x *MsgRegisterServiceResponse) GetSuccess() bool { return false } +func (x *MsgRegisterServiceResponse) GetDid() string { + if x != nil { + return x.Did + } + return "" +} + var File_did_v1_tx_proto protoreflect.FileDescriptor var file_did_v1_tx_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x13, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, - 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, - 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x87, - 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, - 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, - 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x65, - 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, - 0x38, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x07, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, - 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, - 0x72, 0x69, 0x67, 0x69, 0x6e, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, - 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x8f, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x65, 0x57, 0x69, 0x74, - 0x6e, 0x65, 0x73, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x69, 0x74, 0x6e, - 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x77, 0x69, 0x74, 0x6e, 0x65, - 0x73, 0x73, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x22, 0x4f, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x65, 0x57, 0x69, - 0x74, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, - 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x79, 0x22, 0x83, 0x01, 0x0a, 0x0c, 0x4d, 0x73, 0x67, 0x53, 0x79, 0x6e, 0x63, 0x56, - 0x61, 0x75, 0x6c, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x10, - 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x06, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x6e, 0x3a, 0x0f, 0x82, 0xe7, 0xb0, 0x2a, 0x0a, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x22, 0x30, 0x0a, 0x14, 0x4d, 0x73, 0x67, - 0x53, 0x79, 0x6e, 0x63, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xb5, 0x01, 0x0a, 0x15, - 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x64, + 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, + 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x64, 0x69, 0x64, + 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, + 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x12, 0x23, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x05, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x99, 0x01, 0x0a, 0x10, 0x4d, 0x73, 0x67, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, + 0x56, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x63, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0c, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x24, 0x0a, - 0x0d, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x22, 0xe7, 0x01, 0x0a, 0x1d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x0e, 0x82, 0xe7, + 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x4f, 0x0a, 0x18, + 0x4d, 0x73, 0x67, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x79, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0xb4, 0x01, + 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x65, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, + 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x77, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x12, + 0x23, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x22, 0x4f, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x65, + 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x79, 0x22, 0x7e, 0x0a, 0x0c, 0x4d, 0x73, 0x67, 0x53, 0x79, 0x6e, 0x63, + 0x56, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, - 0x4f, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x33, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x1a, 0x3b, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xac, 0x01, - 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, - 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x55, 0x72, 0x69, 0x12, 0x2f, 0x0a, 0x06, 0x73, - 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x64, 0x69, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x3a, 0x0e, 0x82, 0xe7, - 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x36, 0x0a, 0x1a, - 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x32, 0xda, 0x03, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x48, 0x0a, 0x0c, + 0x23, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x0f, 0x82, 0xe7, 0xb0, 0x2a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x22, 0x30, 0x0a, 0x14, 0x4d, 0x73, 0x67, 0x53, 0x79, 0x6e, 0x63, + 0x56, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xea, 0x01, 0x0a, 0x15, 0x4d, 0x73, 0x67, 0x52, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, + 0x72, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, + 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, + 0x67, 0x69, 0x6e, 0x12, 0x3a, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x64, 0x69, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, + 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x23, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x22, 0x81, 0x02, 0x0a, 0x1d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x08, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x64, + 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x81, 0x02, 0x0a, 0x0c, 0x4d, 0x73, 0x67, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, + 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, + 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, + 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x23, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x0e, 0x82, 0xe7, + 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x55, 0x0a, 0x14, + 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x23, + 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, + 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x05, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x22, 0xc4, 0x03, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, + 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x75, + 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, + 0x55, 0x72, 0x69, 0x12, 0x2b, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x23, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x43, 0x0a, 0x15, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x0f, 0x82, 0xe7, 0xb0, 0x2a, 0x0a, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x22, 0x48, 0x0a, 0x1a, 0x4d, 0x73, + 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x64, 0x69, 0x64, 0x32, 0xd4, 0x03, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x48, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x17, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1f, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0c, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, - 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, - 0x1f, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, - 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x48, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x76, 0x65, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, - 0x12, 0x17, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x50, 0x72, 0x6f, - 0x76, 0x65, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x1a, 0x1f, 0x2e, 0x64, 0x69, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x65, 0x57, 0x69, 0x74, 0x6e, 0x65, - 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x09, 0x53, 0x79, - 0x6e, 0x63, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x79, 0x6e, 0x63, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x1a, 0x1c, 0x2e, - 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x79, 0x6e, 0x63, 0x56, 0x61, - 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x12, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, - 0x72, 0x12, 0x1d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x1a, 0x25, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x2e, 0x64, 0x69, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x22, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, - 0x01, 0x42, 0x77, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x42, - 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x68, 0x77, - 0x61, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x69, - 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x44, 0x69, 0x64, 0x2e, - 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x44, 0x69, - 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x09, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x12, 0x14, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x1a, 0x1c, 0x2e, 0x64, 0x69, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0d, 0x41, 0x6c, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x75, + 0x6c, 0x74, 0x1a, 0x20, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, + 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x09, 0x53, 0x79, 0x6e, 0x63, 0x56, 0x61, 0x75, 0x6c, + 0x74, 0x12, 0x14, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x79, + 0x6e, 0x63, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x1a, 0x1c, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x79, 0x6e, 0x63, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x12, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x64, 0x69, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x64, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x51, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, + 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x1a, 0x22, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0x77, 0x0a, 0x0a, 0x63, + 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x69, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, + 0x44, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x44, 0x69, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, + 0x69, 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, + 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7079,45 +9256,62 @@ func file_did_v1_tx_proto_rawDescGZIP() []byte { return file_did_v1_tx_proto_rawDescData } -var file_did_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_did_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 16) var file_did_v1_tx_proto_goTypes = []interface{}{ (*MsgUpdateParams)(nil), // 0: did.v1.MsgUpdateParams (*MsgUpdateParamsResponse)(nil), // 1: did.v1.MsgUpdateParamsResponse - (*MsgAuthenticate)(nil), // 2: did.v1.MsgAuthenticate - (*MsgAuthenticateResponse)(nil), // 3: did.v1.MsgAuthenticateResponse + (*MsgAllocateVault)(nil), // 2: did.v1.MsgAllocateVault + (*MsgAllocateVaultResponse)(nil), // 3: did.v1.MsgAllocateVaultResponse (*MsgProveWitness)(nil), // 4: did.v1.MsgProveWitness (*MsgProveWitnessResponse)(nil), // 5: did.v1.MsgProveWitnessResponse (*MsgSyncVault)(nil), // 6: did.v1.MsgSyncVault (*MsgSyncVaultResponse)(nil), // 7: did.v1.MsgSyncVaultResponse (*MsgRegisterController)(nil), // 8: did.v1.MsgRegisterController (*MsgRegisterControllerResponse)(nil), // 9: did.v1.MsgRegisterControllerResponse - (*MsgRegisterService)(nil), // 10: did.v1.MsgRegisterService - (*MsgRegisterServiceResponse)(nil), // 11: did.v1.MsgRegisterServiceResponse - nil, // 12: did.v1.MsgRegisterControllerResponse.AccountsEntry - (*Params)(nil), // 13: did.v1.Params - (PermissionScope)(0), // 14: did.v1.PermissionScope + (*MsgAuthorize)(nil), // 10: did.v1.MsgAuthorize + (*MsgAuthorizeResponse)(nil), // 11: did.v1.MsgAuthorizeResponse + (*MsgRegisterService)(nil), // 12: did.v1.MsgRegisterService + (*MsgRegisterServiceResponse)(nil), // 13: did.v1.MsgRegisterServiceResponse + nil, // 14: did.v1.MsgRegisterControllerResponse.AccountsEntry + nil, // 15: did.v1.MsgRegisterService.ServiceEndpointsEntry + (*Params)(nil), // 16: did.v1.Params + (*Token)(nil), // 17: did.v1.Token + (*Credential)(nil), // 18: did.v1.Credential + (*Permissions)(nil), // 19: did.v1.Permissions + (*Metadata)(nil), // 20: did.v1.Metadata } var file_did_v1_tx_proto_depIdxs = []int32{ - 13, // 0: did.v1.MsgUpdateParams.params:type_name -> did.v1.Params - 12, // 1: did.v1.MsgRegisterControllerResponse.accounts:type_name -> did.v1.MsgRegisterControllerResponse.AccountsEntry - 14, // 2: did.v1.MsgRegisterService.scopes:type_name -> did.v1.PermissionScope - 0, // 3: did.v1.Msg.UpdateParams:input_type -> did.v1.MsgUpdateParams - 2, // 4: did.v1.Msg.Authenticate:input_type -> did.v1.MsgAuthenticate - 4, // 5: did.v1.Msg.ProveWitness:input_type -> did.v1.MsgProveWitness - 6, // 6: did.v1.Msg.SyncVault:input_type -> did.v1.MsgSyncVault - 8, // 7: did.v1.Msg.RegisterController:input_type -> did.v1.MsgRegisterController - 10, // 8: did.v1.Msg.RegisterService:input_type -> did.v1.MsgRegisterService - 1, // 9: did.v1.Msg.UpdateParams:output_type -> did.v1.MsgUpdateParamsResponse - 3, // 10: did.v1.Msg.Authenticate:output_type -> did.v1.MsgAuthenticateResponse - 5, // 11: did.v1.Msg.ProveWitness:output_type -> did.v1.MsgProveWitnessResponse - 7, // 12: did.v1.Msg.SyncVault:output_type -> did.v1.MsgSyncVaultResponse - 9, // 13: did.v1.Msg.RegisterController:output_type -> did.v1.MsgRegisterControllerResponse - 11, // 14: did.v1.Msg.RegisterService:output_type -> did.v1.MsgRegisterServiceResponse - 9, // [9:15] is the sub-list for method output_type - 3, // [3:9] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 16, // 0: did.v1.MsgUpdateParams.params:type_name -> did.v1.Params + 17, // 1: did.v1.MsgUpdateParams.token:type_name -> did.v1.Token + 17, // 2: did.v1.MsgAllocateVault.token:type_name -> did.v1.Token + 17, // 3: did.v1.MsgProveWitness.token:type_name -> did.v1.Token + 17, // 4: did.v1.MsgSyncVault.token:type_name -> did.v1.Token + 18, // 5: did.v1.MsgRegisterController.authentication:type_name -> did.v1.Credential + 17, // 6: did.v1.MsgRegisterController.token:type_name -> did.v1.Token + 14, // 7: did.v1.MsgRegisterControllerResponse.accounts:type_name -> did.v1.MsgRegisterControllerResponse.AccountsEntry + 17, // 8: did.v1.MsgAuthorize.token:type_name -> did.v1.Token + 17, // 9: did.v1.MsgAuthorizeResponse.token:type_name -> did.v1.Token + 19, // 10: did.v1.MsgRegisterService.scopes:type_name -> did.v1.Permissions + 15, // 11: did.v1.MsgRegisterService.service_endpoints:type_name -> did.v1.MsgRegisterService.ServiceEndpointsEntry + 20, // 12: did.v1.MsgRegisterService.metadata:type_name -> did.v1.Metadata + 17, // 13: did.v1.MsgRegisterService.token:type_name -> did.v1.Token + 0, // 14: did.v1.Msg.UpdateParams:input_type -> did.v1.MsgUpdateParams + 10, // 15: did.v1.Msg.Authorize:input_type -> did.v1.MsgAuthorize + 2, // 16: did.v1.Msg.AllocateVault:input_type -> did.v1.MsgAllocateVault + 6, // 17: did.v1.Msg.SyncVault:input_type -> did.v1.MsgSyncVault + 8, // 18: did.v1.Msg.RegisterController:input_type -> did.v1.MsgRegisterController + 12, // 19: did.v1.Msg.RegisterService:input_type -> did.v1.MsgRegisterService + 1, // 20: did.v1.Msg.UpdateParams:output_type -> did.v1.MsgUpdateParamsResponse + 11, // 21: did.v1.Msg.Authorize:output_type -> did.v1.MsgAuthorizeResponse + 3, // 22: did.v1.Msg.AllocateVault:output_type -> did.v1.MsgAllocateVaultResponse + 7, // 23: did.v1.Msg.SyncVault:output_type -> did.v1.MsgSyncVaultResponse + 9, // 24: did.v1.Msg.RegisterController:output_type -> did.v1.MsgRegisterControllerResponse + 13, // 25: did.v1.Msg.RegisterService:output_type -> did.v1.MsgRegisterServiceResponse + 20, // [20:26] is the sub-list for method output_type + 14, // [14:20] is the sub-list for method input_type + 14, // [14:14] is the sub-list for extension type_name + 14, // [14:14] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name } func init() { file_did_v1_tx_proto_init() } @@ -7125,8 +9319,9 @@ func file_did_v1_tx_proto_init() { if File_did_v1_tx_proto != nil { return } - file_did_v1_models_proto_init() + file_did_v1_constants_proto_init() file_did_v1_genesis_proto_init() + file_did_v1_models_proto_init() if !protoimpl.UnsafeEnabled { file_did_v1_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgUpdateParams); i { @@ -7153,7 +9348,7 @@ func file_did_v1_tx_proto_init() { } } file_did_v1_tx_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgAuthenticate); i { + switch v := v.(*MsgAllocateVault); i { case 0: return &v.state case 1: @@ -7165,7 +9360,7 @@ func file_did_v1_tx_proto_init() { } } file_did_v1_tx_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgAuthenticateResponse); i { + switch v := v.(*MsgAllocateVaultResponse); i { case 0: return &v.state case 1: @@ -7249,7 +9444,7 @@ func file_did_v1_tx_proto_init() { } } file_did_v1_tx_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgRegisterService); i { + switch v := v.(*MsgAuthorize); i { case 0: return &v.state case 1: @@ -7261,6 +9456,30 @@ func file_did_v1_tx_proto_init() { } } file_did_v1_tx_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgAuthorizeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_did_v1_tx_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgRegisterService); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_did_v1_tx_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgRegisterServiceResponse); i { case 0: return &v.state @@ -7279,7 +9498,7 @@ func file_did_v1_tx_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_did_v1_tx_proto_rawDesc, NumEnums: 0, - NumMessages: 13, + NumMessages: 16, NumExtensions: 0, NumServices: 1, }, diff --git a/api/did/v1/tx_grpc.pb.go b/api/did/v1/tx_grpc.pb.go index 29ad8109c..e636df6bb 100644 --- a/api/did/v1/tx_grpc.pb.go +++ b/api/did/v1/tx_grpc.pb.go @@ -20,8 +20,8 @@ const _ = grpc.SupportPackageIsVersion7 const ( Msg_UpdateParams_FullMethodName = "/did.v1.Msg/UpdateParams" - Msg_Authenticate_FullMethodName = "/did.v1.Msg/Authenticate" - Msg_ProveWitness_FullMethodName = "/did.v1.Msg/ProveWitness" + Msg_Authorize_FullMethodName = "/did.v1.Msg/Authorize" + Msg_AllocateVault_FullMethodName = "/did.v1.Msg/AllocateVault" Msg_SyncVault_FullMethodName = "/did.v1.Msg/SyncVault" Msg_RegisterController_FullMethodName = "/did.v1.Msg/RegisterController" Msg_RegisterService_FullMethodName = "/did.v1.Msg/RegisterService" @@ -35,10 +35,11 @@ type MsgClient interface { // // Since: cosmos-sdk 0.47 UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) - // Authenticate asserts the given controller is the owner of the given address. - Authenticate(ctx context.Context, in *MsgAuthenticate, opts ...grpc.CallOption) (*MsgAuthenticateResponse, error) - // ProveWitness is an operation to prove the controller has a valid property using ZK Accumulators. - ProveWitness(ctx context.Context, in *MsgProveWitness, opts ...grpc.CallOption) (*MsgProveWitnessResponse, error) + // Authorize asserts the given controller is the owner of the given address. + Authorize(ctx context.Context, in *MsgAuthorize, opts ...grpc.CallOption) (*MsgAuthorizeResponse, error) + // AllocateVault assembles a sqlite3 database in a local directory and returns the CID of the database. + // this operation is called by services initiating a controller registration. + AllocateVault(ctx context.Context, in *MsgAllocateVault, opts ...grpc.CallOption) (*MsgAllocateVaultResponse, error) // SyncVault synchronizes the controller with the Vault Motr DWN WASM Wallet. SyncVault(ctx context.Context, in *MsgSyncVault, opts ...grpc.CallOption) (*MsgSyncVaultResponse, error) // RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias. @@ -64,18 +65,18 @@ func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts return out, nil } -func (c *msgClient) Authenticate(ctx context.Context, in *MsgAuthenticate, opts ...grpc.CallOption) (*MsgAuthenticateResponse, error) { - out := new(MsgAuthenticateResponse) - err := c.cc.Invoke(ctx, Msg_Authenticate_FullMethodName, in, out, opts...) +func (c *msgClient) Authorize(ctx context.Context, in *MsgAuthorize, opts ...grpc.CallOption) (*MsgAuthorizeResponse, error) { + out := new(MsgAuthorizeResponse) + err := c.cc.Invoke(ctx, Msg_Authorize_FullMethodName, in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *msgClient) ProveWitness(ctx context.Context, in *MsgProveWitness, opts ...grpc.CallOption) (*MsgProveWitnessResponse, error) { - out := new(MsgProveWitnessResponse) - err := c.cc.Invoke(ctx, Msg_ProveWitness_FullMethodName, in, out, opts...) +func (c *msgClient) AllocateVault(ctx context.Context, in *MsgAllocateVault, opts ...grpc.CallOption) (*MsgAllocateVaultResponse, error) { + out := new(MsgAllocateVaultResponse) + err := c.cc.Invoke(ctx, Msg_AllocateVault_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -117,10 +118,11 @@ type MsgServer interface { // // Since: cosmos-sdk 0.47 UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) - // Authenticate asserts the given controller is the owner of the given address. - Authenticate(context.Context, *MsgAuthenticate) (*MsgAuthenticateResponse, error) - // ProveWitness is an operation to prove the controller has a valid property using ZK Accumulators. - ProveWitness(context.Context, *MsgProveWitness) (*MsgProveWitnessResponse, error) + // Authorize asserts the given controller is the owner of the given address. + Authorize(context.Context, *MsgAuthorize) (*MsgAuthorizeResponse, error) + // AllocateVault assembles a sqlite3 database in a local directory and returns the CID of the database. + // this operation is called by services initiating a controller registration. + AllocateVault(context.Context, *MsgAllocateVault) (*MsgAllocateVaultResponse, error) // SyncVault synchronizes the controller with the Vault Motr DWN WASM Wallet. SyncVault(context.Context, *MsgSyncVault) (*MsgSyncVaultResponse, error) // RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias. @@ -137,11 +139,11 @@ type UnimplementedMsgServer struct { func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") } -func (UnimplementedMsgServer) Authenticate(context.Context, *MsgAuthenticate) (*MsgAuthenticateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Authenticate not implemented") +func (UnimplementedMsgServer) Authorize(context.Context, *MsgAuthorize) (*MsgAuthorizeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Authorize not implemented") } -func (UnimplementedMsgServer) ProveWitness(context.Context, *MsgProveWitness) (*MsgProveWitnessResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ProveWitness not implemented") +func (UnimplementedMsgServer) AllocateVault(context.Context, *MsgAllocateVault) (*MsgAllocateVaultResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AllocateVault not implemented") } func (UnimplementedMsgServer) SyncVault(context.Context, *MsgSyncVault) (*MsgSyncVaultResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SyncVault not implemented") @@ -183,38 +185,38 @@ func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } -func _Msg_Authenticate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgAuthenticate) +func _Msg_Authorize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgAuthorize) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).Authenticate(ctx, in) + return srv.(MsgServer).Authorize(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Msg_Authenticate_FullMethodName, + FullMethod: Msg_Authorize_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).Authenticate(ctx, req.(*MsgAuthenticate)) + return srv.(MsgServer).Authorize(ctx, req.(*MsgAuthorize)) } return interceptor(ctx, in, info, handler) } -func _Msg_ProveWitness_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgProveWitness) +func _Msg_AllocateVault_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgAllocateVault) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).ProveWitness(ctx, in) + return srv.(MsgServer).AllocateVault(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Msg_ProveWitness_FullMethodName, + FullMethod: Msg_AllocateVault_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).ProveWitness(ctx, req.(*MsgProveWitness)) + return srv.(MsgServer).AllocateVault(ctx, req.(*MsgAllocateVault)) } return interceptor(ctx, in, info, handler) } @@ -285,12 +287,12 @@ var Msg_ServiceDesc = grpc.ServiceDesc{ Handler: _Msg_UpdateParams_Handler, }, { - MethodName: "Authenticate", - Handler: _Msg_Authenticate_Handler, + MethodName: "Authorize", + Handler: _Msg_Authorize_Handler, }, { - MethodName: "ProveWitness", - Handler: _Msg_ProveWitness_Handler, + MethodName: "AllocateVault", + Handler: _Msg_AllocateVault_Handler, }, { MethodName: "SyncVault", diff --git a/api/oracle/module/v1/module.pulsar.go b/api/oracle/module/v1/module.pulsar.go index bc45ee5e8..1fee45c67 100644 --- a/api/oracle/module/v1/module.pulsar.go +++ b/api/oracle/module/v1/module.pulsar.go @@ -104,9 +104,9 @@ func (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.hway.oracle.module.v1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.sonr.oracle.module.v1.Module")) } - panic(fmt.Errorf("message onsonr.hway.oracle.module.v1.Module does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message onsonr.sonr.oracle.module.v1.Module does not contain field %s", fd.FullName())) } } @@ -120,9 +120,9 @@ func (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.hway.oracle.module.v1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.sonr.oracle.module.v1.Module")) } - panic(fmt.Errorf("message onsonr.hway.oracle.module.v1.Module does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message onsonr.sonr.oracle.module.v1.Module does not contain field %s", fd.FullName())) } } @@ -136,9 +136,9 @@ func (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) pro switch descriptor.FullName() { default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.hway.oracle.module.v1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.sonr.oracle.module.v1.Module")) } - panic(fmt.Errorf("message onsonr.hway.oracle.module.v1.Module does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message onsonr.sonr.oracle.module.v1.Module does not contain field %s", descriptor.FullName())) } } @@ -156,9 +156,9 @@ func (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value proto switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.hway.oracle.module.v1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.sonr.oracle.module.v1.Module")) } - panic(fmt.Errorf("message onsonr.hway.oracle.module.v1.Module does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message onsonr.sonr.oracle.module.v1.Module does not contain field %s", fd.FullName())) } } @@ -176,9 +176,9 @@ func (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protore switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.hway.oracle.module.v1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.sonr.oracle.module.v1.Module")) } - panic(fmt.Errorf("message onsonr.hway.oracle.module.v1.Module does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message onsonr.sonr.oracle.module.v1.Module does not contain field %s", fd.FullName())) } } @@ -189,9 +189,9 @@ func (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protor switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.hway.oracle.module.v1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: onsonr.sonr.oracle.module.v1.Module")) } - panic(fmt.Errorf("message onsonr.hway.oracle.module.v1.Module does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message onsonr.sonr.oracle.module.v1.Module does not contain field %s", fd.FullName())) } } @@ -201,7 +201,7 @@ func (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protor func (x *fastReflection_Module) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in onsonr.hway.oracle.module.v1.Module", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in onsonr.sonr.oracle.module.v1.Module", d.FullName())) } panic("unreachable") } @@ -415,28 +415,28 @@ var File_oracle_module_v1_module_proto protoreflect.FileDescriptor var file_oracle_module_v1_module_proto_rawDesc = []byte{ 0x0a, 0x1d, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x1c, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2e, 0x68, 0x77, 0x61, 0x79, 0x2e, 0x6f, 0x72, 0x61, + 0x1c, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2e, 0x73, 0x6f, 0x6e, 0x72, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x20, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x28, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x1e, 0xba, 0xc0, 0x96, 0xda, 0x01, 0x18, 0x0a, 0x16, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, - 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x68, 0x77, 0x61, 0x79, 0x42, 0xfa, 0x01, 0x0a, 0x20, 0x63, 0x6f, - 0x6d, 0x2e, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2e, 0x68, 0x77, 0x61, 0x79, 0x2e, 0x6f, 0x72, + 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x42, 0xfa, 0x01, 0x0a, 0x20, 0x63, 0x6f, + 0x6d, 0x2e, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2e, 0x73, 0x6f, 0x6e, 0x72, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, - 0x2f, 0x68, 0x77, 0x61, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, + 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x76, 0x31, 0xa2, 0x02, 0x04, 0x4f, 0x48, 0x4f, 0x4d, 0xaa, 0x02, 0x1c, 0x4f, 0x6e, 0x73, - 0x6f, 0x6e, 0x72, 0x2e, 0x48, 0x77, 0x61, 0x79, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, + 0x65, 0x76, 0x31, 0xa2, 0x02, 0x04, 0x4f, 0x53, 0x4f, 0x4d, 0xaa, 0x02, 0x1c, 0x4f, 0x6e, 0x73, + 0x6f, 0x6e, 0x72, 0x2e, 0x53, 0x6f, 0x6e, 0x72, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1c, 0x4f, 0x6e, 0x73, 0x6f, - 0x6e, 0x72, 0x5c, 0x48, 0x77, 0x61, 0x79, 0x5c, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5c, 0x4d, + 0x6e, 0x72, 0x5c, 0x53, 0x6f, 0x6e, 0x72, 0x5c, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x28, 0x4f, 0x6e, 0x73, 0x6f, 0x6e, - 0x72, 0x5c, 0x48, 0x77, 0x61, 0x79, 0x5c, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5c, 0x4d, 0x6f, + 0x72, 0x5c, 0x53, 0x6f, 0x6e, 0x72, 0x5c, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xea, 0x02, 0x20, 0x4f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x3a, 0x3a, 0x48, 0x77, - 0x61, 0x79, 0x3a, 0x3a, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x3a, 0x3a, 0x4d, 0x6f, 0x64, 0x75, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x20, 0x4f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x3a, 0x3a, 0x53, 0x6f, + 0x6e, 0x72, 0x3a, 0x3a, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x3a, 0x3a, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } @@ -454,7 +454,7 @@ func file_oracle_module_v1_module_proto_rawDescGZIP() []byte { var file_oracle_module_v1_module_proto_msgTypes = make([]protoimpl.MessageInfo, 1) var file_oracle_module_v1_module_proto_goTypes = []interface{}{ - (*Module)(nil), // 0: onsonr.hway.oracle.module.v1.Module + (*Module)(nil), // 0: onsonr.sonr.oracle.module.v1.Module } var file_oracle_module_v1_module_proto_depIdxs = []int32{ 0, // [0:0] is the sub-list for method output_type diff --git a/api/oracle/v1/genesis.pulsar.go b/api/oracle/v1/genesis.pulsar.go index 149db8b0c..447e1f22a 100644 --- a/api/oracle/v1/genesis.pulsar.go +++ b/api/oracle/v1/genesis.pulsar.go @@ -420,7 +420,7 @@ var file_oracle_v1_genesis_proto_rawDesc = []byte{ 0x6f, 0x6d, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, - 0x68, 0x77, 0x61, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2f, + 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4f, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x09, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x15, 0x4f, 0x72, 0x61, 0x63, diff --git a/api/oracle/v1/query.pulsar.go b/api/oracle/v1/query.pulsar.go index 18e9372e9..7d3fc5ce9 100644 --- a/api/oracle/v1/query.pulsar.go +++ b/api/oracle/v1/query.pulsar.go @@ -30,7 +30,7 @@ var file_oracle_v1_query_proto_rawDesc = []byte{ 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x8f, 0x01, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x68, 0x77, 0x61, 0x79, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4f, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x09, 0x4f, 0x72, 0x61, 0x63, diff --git a/api/oracle/v1/tx.pulsar.go b/api/oracle/v1/tx.pulsar.go index 1d63906ae..39a948648 100644 --- a/api/oracle/v1/tx.pulsar.go +++ b/api/oracle/v1/tx.pulsar.go @@ -30,7 +30,7 @@ var file_oracle_v1_tx_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x8c, 0x01, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, - 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x68, 0x77, 0x61, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, + 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4f, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x09, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, diff --git a/app/app.go b/app/app.go index 461d57bf0..5747870f7 100644 --- a/app/app.go +++ b/app/app.go @@ -145,12 +145,12 @@ import ( tokenfactorykeeper "github.com/strangelove-ventures/tokenfactory/x/tokenfactory/keeper" tokenfactorytypes "github.com/strangelove-ventures/tokenfactory/x/tokenfactory/types" - did "github.com/onsonr/hway/x/did" - didkeeper "github.com/onsonr/hway/x/did/keeper" - didtypes "github.com/onsonr/hway/x/did/types" - oracle "github.com/onsonr/hway/x/oracle" - oraclekeeper "github.com/onsonr/hway/x/oracle/keeper" - oracletypes "github.com/onsonr/hway/x/oracle/types" + did "github.com/onsonr/sonr/x/did" + didkeeper "github.com/onsonr/sonr/x/did/keeper" + didtypes "github.com/onsonr/sonr/x/did/types" + oracle "github.com/onsonr/sonr/x/oracle" + oraclekeeper "github.com/onsonr/sonr/x/oracle/keeper" + oracletypes "github.com/onsonr/sonr/x/oracle/types" ) const appName = "sonr" diff --git a/app/decorators/msg_filter_test.go b/app/decorators/msg_filter_test.go index bfbb2f4dc..e63e3cc83 100644 --- a/app/decorators/msg_filter_test.go +++ b/app/decorators/msg_filter_test.go @@ -10,8 +10,8 @@ import ( banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" "github.com/stretchr/testify/suite" - app "github.com/onsonr/hway/app" - "github.com/onsonr/hway/app/decorators" + app "github.com/onsonr/sonr/app" + "github.com/onsonr/sonr/app/decorators" ) type AnteTestSuite struct { diff --git a/app/encoding.go b/app/encoding.go index 59a270b87..4bd9bfbb9 100644 --- a/app/encoding.go +++ b/app/encoding.go @@ -9,7 +9,7 @@ import ( simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - "github.com/onsonr/hway/app/params" + "github.com/onsonr/sonr/app/params" ) // MakeEncodingConfig creates a new EncodingConfig with all modules registered. For testing only diff --git a/app/local.go b/app/local.go index 522e95760..02d549dee 100644 --- a/app/local.go +++ b/app/local.go @@ -2,6 +2,7 @@ package app import ( "github.com/ipfs/kubo/client/rpc" + "github.com/onsonr/sonr/internal/files" ) var ( @@ -11,6 +12,10 @@ var ( // Initialize initializes the local configuration values func init() { + err := files.Assemble(".data/vaults/0") + if err != nil { + panic(err) + } } // SetLocalContextSessionID sets the session ID for the local context diff --git a/app/upgrades.go b/app/upgrades.go index 3cecae42c..a613b29d1 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -5,8 +5,8 @@ import ( upgradetypes "cosmossdk.io/x/upgrade/types" - "github.com/onsonr/hway/app/upgrades" - "github.com/onsonr/hway/app/upgrades/noop" + "github.com/onsonr/sonr/app/upgrades" + "github.com/onsonr/sonr/app/upgrades/noop" ) // Upgrades list of chain upgrades diff --git a/app/upgrades/noop/upgrades.go b/app/upgrades/noop/upgrades.go index e21f21d6d..cf67da610 100644 --- a/app/upgrades/noop/upgrades.go +++ b/app/upgrades/noop/upgrades.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" - "github.com/onsonr/hway/app/upgrades" + "github.com/onsonr/sonr/app/upgrades" ) // NewUpgrade constructor diff --git a/chains.yaml b/chains.yaml index 8d4050d0c..262c9b928 100644 --- a/chains.yaml +++ b/chains.yaml @@ -1,7 +1,10 @@ # This file is used to create docker images using the heighliner binary. # see: https://github.com/strangelove-ventures/heighliner +# Sonr Node - Identity - name: sonr + github-organization: onsonr + github-repo: core dockerfile: cosmos build-target: make install binaries: @@ -9,6 +12,8 @@ build-env: - LEDGER_ENABLED=false - BUILD_TAGS=muslc + +# Ethereum Node - Web3 - name: evmos github-organization: tharsis github-repo: evmos @@ -16,6 +21,8 @@ build-target: make install binaries: - /go/bin/evmosd + +# Bitcoin Node - Gold - name: nomic github-organization: nomic-io github-repo: nomic @@ -26,7 +33,5 @@ cargo install --locked --path . -Zbuild-std binaries: - /build/nomic/target/${ARCH}-unknown-linux-gnu/release/nomic - # TODO remove platforms here so that both linux/amd64 and linux/arm64 are built - # once these changes are merged: https://github.com/nomic-io/orga/pull/154 platforms: - linux/amd64 diff --git a/client/go.mod b/client/go.mod deleted file mode 100644 index a07a4b514..000000000 --- a/client/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module client - -go 1.22.0 diff --git a/cmd/sonrd/commands.go b/cmd/sonrd/commands.go index 6167e31c5..3f3d6ce7d 100644 --- a/cmd/sonrd/commands.go +++ b/cmd/sonrd/commands.go @@ -7,7 +7,7 @@ import ( cmtcfg "github.com/cometbft/cometbft/config" dbm "github.com/cosmos/cosmos-db" - "github.com/onsonr/hway/app" + "github.com/onsonr/sonr/app" "github.com/spf13/cast" "github.com/spf13/cobra" "github.com/spf13/viper" diff --git a/cmd/sonrd/main.go b/cmd/sonrd/main.go index 980000e08..06d6db692 100644 --- a/cmd/sonrd/main.go +++ b/cmd/sonrd/main.go @@ -6,7 +6,7 @@ import ( "cosmossdk.io/log" svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" _ "github.com/joho/godotenv/autoload" - "github.com/onsonr/hway/app" + "github.com/onsonr/sonr/app" ) func main() { diff --git a/cmd/sonrd/root.go b/cmd/sonrd/root.go index 981eec5ae..fa5fffa5f 100644 --- a/cmd/sonrd/root.go +++ b/cmd/sonrd/root.go @@ -20,8 +20,8 @@ import ( txmodule "github.com/cosmos/cosmos-sdk/x/auth/tx/config" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/onsonr/hway/app" - "github.com/onsonr/hway/app/params" + "github.com/onsonr/sonr/app" + "github.com/onsonr/sonr/app/params" // NewRootCmd creates a new root command for chain app. It is called once in the // main function. ) diff --git a/cmd/sonrd/testnet.go b/cmd/sonrd/testnet.go index 9c3d44466..0a86f0411 100644 --- a/cmd/sonrd/testnet.go +++ b/cmd/sonrd/testnet.go @@ -39,7 +39,7 @@ import ( genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/onsonr/hway/app" + "github.com/onsonr/sonr/app" ) var ( diff --git a/cmd/vault/main.go b/cmd/vault/main.go new file mode 100644 index 000000000..39b93ec7b --- /dev/null +++ b/cmd/vault/main.go @@ -0,0 +1,104 @@ +//go:build js && wasm +// +build js,wasm + +package main + +import ( + "database/sql" + "encoding/json" + "fmt" + "net/http" + + _ "github.com/flimzy/go-sql.js" + wasmhttp "github.com/nlepage/go-wasm-http-server" +) + +var db *sql.DB + +func main() { + var err error + // Open a new in-memory SQLite database + db, err = sql.Open("sqljs", "") + if err != nil { + panic(err) + } + defer db.Close() + + // Initialize the database + initDB() + + // Define your handlers + http.HandleFunc("/", homeHandler) + http.HandleFunc("/api/items", itemsHandler) + + // Use wasmhttp.Serve to start the server + wasmhttp.Serve(nil) +} + +func initDB() { + _, err := db.Exec(` + CREATE TABLE IF NOT EXISTS items ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL + ) + `) + if err != nil { + panic(err) + } +} + +func homeHandler(w http.ResponseWriter, r *http.Request) { + fmt.Fprintf(w, "Welcome to the WASM SQLite Server!") +} + +func itemsHandler(w http.ResponseWriter, r *http.Request) { + switch r.Method { + case "GET": + getItems(w, r) + case "POST": + addItem(w, r) + default: + http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) + } +} + +func getItems(w http.ResponseWriter, _ *http.Request) { + rows, err := db.Query("SELECT id, name FROM items") + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer rows.Close() + + var items []map[string]interface{} + for rows.Next() { + var id int + var name string + if err := rows.Scan(&id, &name); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + items = append(items, map[string]interface{}{"id": id, "name": name}) + } + + json.NewEncoder(w).Encode(items) +} + +func addItem(w http.ResponseWriter, r *http.Request) { + var item struct { + Name string `json:"name"` + } + if err := json.NewDecoder(r.Body).Decode(&item); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + result, err := db.Exec("INSERT INTO items (name) VALUES (?)", item.Name) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + id, _ := result.LastInsertId() + json.NewEncoder(w).Encode(map[string]interface{}{"id": id, "name": item.Name}) +} diff --git a/devbox.json b/devbox.json index 0d4d00570..2ac61568c 100644 --- a/devbox.json +++ b/devbox.json @@ -1,16 +1,30 @@ { "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.12.0/.schema/devbox.schema.json", - "packages": ["go@1.21", "air@latest"], + "packages": [ + "go@1.22", + "templ@latest", + "commitizen@latest", + "goreleaser@latest", + "go-task@latest" + ], "env": { "GOPATH": "$HOME/go", - "PATH": "$HOME/go/bin:$PATH" + "PATH": "$HOME/go/bin:$PATH", + "CHAIN_ID": "sonr-testnet-1", + "DENOM": "usnr", + "KEYRING": "test", + "MONIKER": "florence", + "MIN_GAS_PRICES": "0.0001usnr" }, "shell": { "scripts": { "init": ["make install", "sonrd init"], - "proto": ["make proto-gen"], + "gen": ["make proto-gen", "make vault", "make templ"], "build": ["make build", "make local-image"], - "testnet": ["make sh-testnet"] + "testnet": ["make install", "make sh-testnet"], + "icnet": ["make install", "make testnet"], + "explorer": ["make explorer"], + "release": ["cz bump --yes", "goreleaser release --clean --dry-run"] } } } diff --git a/docker-compose.yaml b/docker-compose.yaml index 3f837c90c..5f60f669c 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -6,7 +6,7 @@ services: context: . dockerfile: Dockerfile volumes: - - /home/prad/.core:/root/.sonr + - /home/prad/.sonr:/root/.sonr ports: - "26657:26657" - "1317:1317" diff --git a/go.mod b/go.mod index 10bba71dc..0c86dd3c0 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,19 @@ -module github.com/onsonr/hway +module github.com/onsonr/sonr -go 1.22 +go 1.22.5 + +toolchain go1.23.0 // overrides replace ( cosmossdk.io/core => cosmossdk.io/core v0.11.0 + github.com/ChainSafe/go-schnorrkel => github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d + github.com/ChainSafe/go-schnorrkel/1 => github.com/ChainSafe/go-schnorrkel v1.0.0 + github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 github.com/prometheus/client_golang => github.com/prometheus/client_golang v1.18.0 github.com/prometheus/common => github.com/prometheus/common v0.47.0 github.com/spf13/viper => github.com/spf13/viper v1.17.0 // v1.18+ breaks app overrides + github.com/vedhavyas/go-subkey => github.com/strangelove-ventures/go-subkey v1.0.7 ) replace ( @@ -42,6 +48,7 @@ require ( cosmossdk.io/x/nft v0.1.0 cosmossdk.io/x/tx v0.13.3 cosmossdk.io/x/upgrade v0.1.1 + github.com/a-h/templ v0.2.771 github.com/btcsuite/btcd/btcec/v2 v2.3.3 github.com/cometbft/cometbft v0.38.8 github.com/cosmos/cosmos-db v1.0.2 @@ -51,13 +58,20 @@ require ( github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8 v8.0.2-0.20240228211029-91e486ec4dbb github.com/cosmos/ibc-go/modules/capability v1.0.0 github.com/cosmos/ibc-go/v8 v8.2.0 + github.com/flimzy/go-sql.js v0.0.0-20170413005827-c7e22c0fd6e9 github.com/go-webauthn/webauthn v0.10.2 github.com/golang/protobuf v1.5.4 github.com/gorilla/mux v1.8.1 github.com/grpc-ecosystem/grpc-gateway v1.16.0 + github.com/ipfs/boxo v0.21.0 github.com/ipfs/kubo v0.29.0 github.com/joho/godotenv v1.5.1 - github.com/onsonr/crypto v1.5.0 + github.com/mattn/go-sqlite3 v1.14.23 + github.com/mr-tron/base58 v1.2.0 + github.com/ncruces/go-sqlite3 v0.18.2 + github.com/ncruces/go-sqlite3/gormlite v0.18.0 + github.com/nlepage/go-wasm-http-server v1.1.0 + github.com/onsonr/crypto v1.23.0 github.com/spf13/cast v1.6.0 github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 @@ -66,11 +80,13 @@ require ( github.com/strangelove-ventures/poa v0.50.0 github.com/strangelove-ventures/tokenfactory v0.50.0 github.com/stretchr/testify v1.9.0 - golang.org/x/crypto v0.25.0 + golang.org/x/crypto v0.26.0 google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 google.golang.org/grpc v1.64.0 google.golang.org/protobuf v1.34.2 gopkg.in/macaroon-bakery.v2 v2.3.0 + gorm.io/gorm v1.25.11 + lukechampine.com/adiantum v1.1.1 ) require ( @@ -79,10 +95,12 @@ require ( cloud.google.com/go/iam v1.1.6 // indirect cloud.google.com/go/storage v1.38.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect + git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect github.com/DataDog/datadog-go v3.2.0+incompatible // indirect github.com/DataDog/zstd v1.5.5 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect github.com/alecthomas/units v0.0.0-20231202071711-9a357b53e9c9 // indirect github.com/aws/aws-sdk-go v1.44.224 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -124,9 +142,9 @@ require ( github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dustin/go-humanize v1.0.1 // indirect + github.com/dustinxie/ecc v0.0.0-20210511000915-959544187564 // indirect github.com/dvsekhvalnov/jose2go v1.6.0 // indirect github.com/emicklei/dot v1.6.1 // indirect - github.com/ethereum/go-ethereum v1.14.6 // indirect github.com/facebookgo/atomicfile v0.0.0-20151019160806-2de1f203e7d5 // indirect github.com/fatih/color v1.16.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -156,6 +174,7 @@ require ( github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.2 // indirect + github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c // indirect github.com/gorilla/handlers v1.5.2 // indirect github.com/gorilla/websocket v1.5.3 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect @@ -181,7 +200,6 @@ require ( github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/ipfs/bbloom v0.0.4 // indirect - github.com/ipfs/boxo v0.21.0 // indirect github.com/ipfs/go-bitfield v1.1.0 // indirect github.com/ipfs/go-block-format v0.2.0 // indirect github.com/ipfs/go-cid v0.4.1 // indirect @@ -201,6 +219,8 @@ require ( github.com/ipld/go-codec-dagpb v1.6.0 // indirect github.com/ipld/go-ipld-prime v0.21.0 // indirect github.com/jbenet/goprocess v0.1.4 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.9 // indirect @@ -230,7 +250,6 @@ require ( github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mmcloughlin/addchain v0.4.0 // indirect - github.com/mr-tron/base58 v1.2.0 // indirect github.com/mtibben/percent v0.2.1 // indirect github.com/multiformats/go-base32 v0.1.0 // indirect github.com/multiformats/go-base36 v0.2.0 // indirect @@ -241,6 +260,8 @@ require ( github.com/multiformats/go-multihash v0.2.3 // indirect github.com/multiformats/go-multistream v0.5.0 // indirect github.com/multiformats/go-varint v0.0.7 // indirect + github.com/ncruces/julianday v1.0.0 // indirect + github.com/nlepage/go-js-promise v1.0.0 // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect github.com/oklog/run v1.1.0 // indirect github.com/onsi/ginkgo v1.16.5 // indirect @@ -271,6 +292,7 @@ require ( github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/tendermint/go-amino v0.16.0 // indirect + github.com/tetratelabs/wazero v1.8.0 // indirect github.com/tidwall/btree v1.7.0 // indirect github.com/ulikunitz/xz v0.5.11 // indirect github.com/whyrusleeping/base32 v0.0.0-20170828182744-c30ac30633cc // indirect @@ -291,15 +313,15 @@ require ( go.uber.org/zap v1.27.0 // indirect go4.org v0.0.0-20230225012048-214862532bf5 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect - golang.org/x/mod v0.18.0 // indirect - golang.org/x/net v0.26.0 // indirect + golang.org/x/mod v0.20.0 // indirect + golang.org/x/net v0.28.0 // indirect golang.org/x/oauth2 v0.21.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.22.0 // indirect - golang.org/x/term v0.22.0 // indirect - golang.org/x/text v0.16.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/term v0.23.0 // indirect + golang.org/x/text v0.18.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.22.0 // indirect + golang.org/x/tools v0.24.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect gonum.org/v1/gonum v0.15.0 // indirect google.golang.org/api v0.169.0 // indirect diff --git a/go.sum b/go.sum index 4ba2f4eec..46409dd37 100644 --- a/go.sum +++ b/go.sum @@ -803,6 +803,9 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= +git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw= +git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9 h1:Ahny8Ud1LjVMMAlt8utUFKhhxJtwBAualvsbc/Sk7cE= +git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M= @@ -830,6 +833,8 @@ github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/a-h/templ v0.2.771 h1:4KH5ykNigYGGpCe0fRJ7/hzwz72k3qFqIiiLLJskbSo= +github.com/a-h/templ v0.2.771/go.mod h1:lq48JXoUvuQrU0VThrK31yFwdRjTCnIE5bcPCM9IP1w= github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= @@ -1064,6 +1069,8 @@ github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3 github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= 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/dustinxie/ecc v0.0.0-20210511000915-959544187564 h1:I6KUy4CI6hHjqnyJLNCEi7YHVMkwwtfSr2k9splgdSM= +github.com/dustinxie/ecc v0.0.0-20210511000915-959544187564/go.mod h1:yekO+3ZShy19S+bsmnERmznGy9Rfg6dWWWpiGJjNAz8= github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= github.com/elastic/gosigar v0.14.3 h1:xwkKwPia+hSfg9GqrCUKYdId102m9qTJIIr7egmK/uo= @@ -1090,8 +1097,6 @@ github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6Ni github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= github.com/envoyproxy/protoc-gen-validate v1.0.1/go.mod h1:0vj8bNkYbSTNS2PIyH87KZaeN4x9zpL9Qt8fQC7d+vs= github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= -github.com/ethereum/go-ethereum v1.14.6 h1:ZTxnErSopkDyxdvB8zW/KcK+/AVrdil/TzoWXVKaaC8= -github.com/ethereum/go-ethereum v1.14.6/go.mod h1:hglUZo/5pVIYXNyYjWzsAUDpT/zI+WbWo/Nih7ot+G0= github.com/facebookgo/atomicfile v0.0.0-20151019160806-2de1f203e7d5 h1:BBso6MBKW8ncyZLv37o+KNyy0HrrHgfnOaGQC2qvN+A= github.com/facebookgo/atomicfile v0.0.0-20151019160806-2de1f203e7d5/go.mod h1:JpoxHjuQauoxiFMl1ie8Xc/7TfLuMZ5eOCONd1sUBHg= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -1102,6 +1107,8 @@ github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/flimzy/go-sql.js v0.0.0-20170413005827-c7e22c0fd6e9 h1:rAjGCKhKN+iStQ250cH9J9vtW9ch8/g0SXaq7Hrz4aI= +github.com/flimzy/go-sql.js v0.0.0-20170413005827-c7e22c0fd6e9/go.mod h1:N12LGw7VcXxCm94kw4ePQPPnADHUqopSEO54v/jMERc= github.com/flynn/noise v1.1.0 h1:KjPQoQCEFdZDiP03phOvGi11+SVVhBG2wOWAorLsstg= github.com/flynn/noise v1.1.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= @@ -1191,10 +1198,6 @@ github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRx github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= @@ -1547,6 +1550,10 @@ github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= @@ -1573,8 +1580,6 @@ github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8 github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= 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/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= @@ -1687,6 +1692,8 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= +github.com/mattn/go-sqlite3 v1.14.23 h1:gbShiuAP1W5j9UOksQ06aiiqPMxYecovVGwmTxWtuw0= +github.com/mattn/go-sqlite3 v1.14.23/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/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= @@ -1764,7 +1771,17 @@ github.com/nats-io/nats.go v1.30.2/go.mod h1:dcfhUgmQNN4GJEfIb2f9R7Fow+gzBF4emzD github.com/nats-io/nkeys v0.4.4/go.mod h1:XUkxdLPTufzlihbamfzQ7mw/VGx6ObUs+0bN5sNvt64= github.com/nats-io/nkeys v0.4.5/go.mod h1:XUkxdLPTufzlihbamfzQ7mw/VGx6ObUs+0bN5sNvt64= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/ncruces/go-sqlite3 v0.18.2 h1:m7QXhBWIwXsp84HE11t+ze0n1v3LRU+zGFg4uHjBeFA= +github.com/ncruces/go-sqlite3 v0.18.2/go.mod h1:4sZHOm+b/FM8FJRVGN4TemkPPDq5JXGK/1EHIEWxsYo= +github.com/ncruces/go-sqlite3/gormlite v0.18.0 h1:KqP9a9wlX/Ba+yG+aeVX4pnNBNdaSO6xHdNDWzPxPnk= +github.com/ncruces/go-sqlite3/gormlite v0.18.0/go.mod h1:RXeT1hknrz3A0tBDL6IfluDHuNkHdJeImn5TBMQg9zc= +github.com/ncruces/julianday v1.0.0 h1:fH0OKwa7NWvniGQtxdJRxAgkBMolni2BjDHaWTxqt7M= +github.com/ncruces/julianday v1.0.0/go.mod h1:Dusn2KvZrrovOMJuOt0TNXL6tB7U2E8kvza5fFc9G7g= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nlepage/go-js-promise v1.0.0 h1:K7OmJ3+0BgWJ2LfXchg2sI6RDr7AW/KWR8182epFwGQ= +github.com/nlepage/go-js-promise v1.0.0/go.mod h1:bdOP0wObXu34euibyK39K1hoBCtlgTKXGc56AGflaRo= +github.com/nlepage/go-wasm-http-server v1.1.0 h1:phw2NtSp71m/6NmGjE2veQ41PBPzWFcnE614cKucy5M= +github.com/nlepage/go-wasm-http-server v1.1.0/go.mod h1:xpffUeN97vuv8CTlMJ2oC5tPsftfPoG9HkAgI9gkiPI= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= @@ -1787,8 +1804,8 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= -github.com/onsonr/crypto v1.5.0 h1:iAmjTdzuu6inJL48/gHsLcQsyq+GbnVaKSBxlkpkBnE= -github.com/onsonr/crypto v1.5.0/go.mod h1:g77+cbK6mD5qILg4dN6d2X9fNtYrEUAOQ6JIlj12Um0= +github.com/onsonr/crypto v1.23.0 h1:8YYDwja/tGpRaA2Tcoau3Rw5j1t/RfZkIcVacKIi7dI= +github.com/onsonr/crypto v1.23.0/go.mod h1:nPb9pp3n7kMl4/3l2sW3ZJWMU3DQsGoNzyYAqLwL+EY= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI= @@ -1898,6 +1915,8 @@ github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5X github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/regen-network/gocuke v0.6.2 h1:pHviZ0kKAq2U2hN2q3smKNxct6hS0mGByFMHGnWA97M= github.com/regen-network/gocuke v0.6.2/go.mod h1:zYaqIHZobHyd0xOrHGPQjbhGJsuZ1oElx150u2o1xuk= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= @@ -2000,6 +2019,8 @@ github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70 github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= +github.com/tetratelabs/wazero v1.8.0 h1:iEKu0d4c2Pd+QSRieYbnQC9yiFlMS9D+Jr0LsRmcF4g= +github.com/tetratelabs/wazero v1.8.0/go.mod h1:yAI0XTsMBhREkM/YDAK/zNou3GoiAce1P6+rp/wQhjs= github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= @@ -2150,8 +2171,8 @@ golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98y golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2218,8 +2239,8 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= -golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= +golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20150829230318-ea47fc708ee3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2296,8 +2317,8 @@ golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= 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= @@ -2352,8 +2373,8 @@ golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.2.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.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2471,8 +2492,8 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -2489,8 +2510,8 @@ golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= 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= @@ -2512,8 +2533,8 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= 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= @@ -2522,11 +2543,9 @@ golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0/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/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181008205924-a2b3f7f249e9/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -2599,8 +2618,8 @@ golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= -golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= -golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= +golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= +golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2715,6 +2734,7 @@ google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= @@ -2980,6 +3000,8 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C 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/gorm v1.25.11 h1:/Wfyg1B/je1hnDx3sMkX+gAlxrlZpn6X0BXRlwXlvHg= +gorm.io/gorm v1.25.11/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ= gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -2990,6 +3012,8 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +lukechampine.com/adiantum v1.1.1 h1:4fp6gTxWCqpEbLy40ExiYDDED3oUNWx5cTqBCtPdZqA= +lukechampine.com/adiantum v1.1.1/go.mod h1:LrAYVnTYLnUtE/yMp5bQr0HstAf060YUF8nM0B6+rUw= lukechampine.com/blake3 v1.3.0 h1:sJ3XhFINmHSrYCgl958hscfIa3bw8x4DqMP3u1YvoYE= lukechampine.com/blake3 v1.3.0/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= diff --git a/internal/db/db.go b/internal/db/db.go new file mode 100644 index 000000000..2f916c6b1 --- /dev/null +++ b/internal/db/db.go @@ -0,0 +1,174 @@ +package db + +import ( + "fmt" + + "github.com/ncruces/go-sqlite3" + _ "github.com/ncruces/go-sqlite3/embed" +) + +type DB struct { + *sqlite3.Conn +} + +func New(opts ...DBOption) *DBConfig { + config := &DBConfig{ + fileName: "vault.db", + } + for _, opt := range opts { + opt(config) + } + return config +} + +func Open(config *DBConfig) (*DB, error) { + conn, err := sqlite3.Open(config.ConnectionString()) + if err != nil { + return nil, fmt.Errorf("failed to open database: %w", err) + } + + db := &DB{ + Conn: conn, + } + + if err := createTables(db); err != nil { + conn.Close() + return nil, fmt.Errorf("failed to create tables: %w", err) + } + return db, nil +} + +func createTables(db *DB) error { + tables := []string{ + createAccountsTable, + createAssetsTable, + createChainsTable, + createCredentialsTable, + createKeysharesTable, + createProfilesTable, + createPropertiesTable, + createPermissionsTable, + } + + for _, table := range tables { + err := db.Exec(table) + if err != nil { + return fmt.Errorf("failed to create table: %w", err) + } + } + + return nil +} + +// AddAccount adds a new account to the database +func (db *DB) AddAccount(name, address string) error { + return db.Exec(insertAccountQuery(name, address)) +} + +// AddAsset adds a new asset to the database +func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { + return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) +} + +// AddChain adds a new chain to the database +func (db *DB) AddChain(name, networkID string) error { + return db.Exec(insertChainQuery(name, networkID)) +} + +// AddCredential adds a new credential to the database +func (db *DB) AddCredential( + handle, controller, attestationType, origin string, + credentialID, publicKey []byte, + transport string, + signCount uint32, + userPresent, userVerified, backupEligible, backupState, cloneWarning bool, +) error { + return db.Exec(insertCredentialQuery( + handle, + controller, + attestationType, + origin, + credentialID, + publicKey, + transport, + signCount, + userPresent, + userVerified, + backupEligible, + backupState, + cloneWarning, + )) +} + +// +// // AddProfile adds a new profile to the database +// func (db *DB) AddProfile( +// id, subject, controller, originURI string, +// publicMetadata, privateMetadata string, +// ) error { +// return db.statements["insertProfile"].Exec( +// id, +// subject, +// controller, +// originURI, +// publicMetadata, +// privateMetadata, +// ) +// } +// +// // AddProperty adds a new property to the database +// func (db *DB) AddProperty(profileID, key string, accumulator, propertyKey []byte) error { +// return db.statements["insertProperty"].Exec(profileID, key, accumulator, propertyKey) +// } +// +// // AddPermission adds a new permission to the database +// func (db *DB) AddPermission( +// serviceID string, +// grants []DIDNamespace, +// scopes []PermissionScope, +// ) error { +// grantsJSON, err := json.Marshal(grants) +// if err != nil { +// return fmt.Errorf("failed to marshal grants: %w", err) +// } +// +// scopesJSON, err := json.Marshal(scopes) +// if err != nil { +// return fmt.Errorf("failed to marshal scopes: %w", err) +// } +// +// return db.statements["insertPermission"].Exec( +// serviceID, +// string(grantsJSON), +// string(scopesJSON), +// ) +// } +// +// // GetPermission retrieves a permission from the database +// func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { +// stmt := db.statements["getPermission"] +// if err := stmt.Exec(serviceID); err != nil { +// return nil, nil, fmt.Errorf("failed to execute statement: %w", err) +// } +// +// if !stmt.Step() { +// return nil, nil, fmt.Errorf("permission not found") +// } +// +// grantsJSON := stmt.ColumnText(0) +// scopesJSON := stmt.ColumnText(1) +// +// var grants []DIDNamespace +// err := json.Unmarshal([]byte(grantsJSON), &grants) +// if err != nil { +// return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) +// } +// +// var scopes []PermissionScope +// err = json.Unmarshal([]byte(scopesJSON), &scopes) +// if err != nil { +// return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) +// } +// +// return grants, scopes, nil +// } diff --git a/internal/db/enums.go b/internal/db/enums.go new file mode 100644 index 000000000..339a0f716 --- /dev/null +++ b/internal/db/enums.go @@ -0,0 +1,36 @@ +package db + +// DIDNamespace defines the different namespaces of DID +type DIDNamespace int + +const ( + DIDNamespaceUnspecified DIDNamespace = iota + DIDNamespaceIPFS + DIDNamespaceSonr + DIDNamespaceBitcoin + DIDNamespaceEthereum + DIDNamespaceIBC + DIDNamespaceWebauthn + DIDNamespaceDWN + DIDNamespaceService +) + +// PermissionScope defines the Capabilities Controllers can grant for Services +type PermissionScope int + +const ( + PermissionScopeUnspecified PermissionScope = iota + PermissionScopeBasicInfo + PermissionScopeRecordsRead + PermissionScopeRecordsWrite + PermissionScopeTransactionsRead + PermissionScopeTransactionsWrite + PermissionScopeWalletsRead + PermissionScopeWalletsCreate + PermissionScopeWalletsSubscribe + PermissionScopeWalletsUpdate + PermissionScopeTransactionsVerify + PermissionScopeTransactionsBroadcast + PermissionScopeAdminUser + PermissionScopeAdminValidator +) diff --git a/internal/db/options.go b/internal/db/options.go new file mode 100644 index 000000000..9699a3ea2 --- /dev/null +++ b/internal/db/options.go @@ -0,0 +1,83 @@ +package db + +import ( + "crypto/rand" + + "github.com/ncruces/go-sqlite3/gormlite" + "github.com/ncruces/go-sqlite3/vfs" + "golang.org/x/crypto/argon2" + "gorm.io/gorm" + "lukechampine.com/adiantum/hbsh" + "lukechampine.com/adiantum/hpolyc" +) + +type DBOption func(config *DBConfig) + +func WithDir(dir string) DBOption { + return func(config *DBConfig) { + config.Dir = dir + } +} + +func WithInMemory() DBOption { + return func(config *DBConfig) { + config.InMemory = true + } +} + +func WithSecretKey(secretKey string) DBOption { + return func(config *DBConfig) { + config.SecretKey = secretKey + } +} + +func WithOpenFlag(flag vfs.OpenFlag) DBOption { + return func(config *DBConfig) { + config.OpenFlag = flag + } +} + +type DBConfig struct { + Dir string + InMemory bool + SecretKey string + OpenFlag vfs.OpenFlag + + fileName string +} + +func (config *DBConfig) ConnectionString() string { + connStr := "file:" + if config.InMemory { + connStr += ":memory:" + } else { + connStr += config.Dir + "/" + config.fileName + } + return connStr +} + +// GormDialector creates a gorm dialector for the database. +func (config *DBConfig) GormDialector() (*gorm.DB, error) { + return gorm.Open(gormlite.Open(config.ConnectionString())) +} + +// HBSH creates an HBSH cipher given a key. +func (c *DBConfig) HBSH(key []byte) *hbsh.HBSH { + if len(key) != 32 { + // Key is not appropriate, return nil. + return nil + } + return hpolyc.New(key) +} + +// KDF gets a key from a secret. +func (c *DBConfig) KDF(secret string) []byte { + if secret == "" { + // No secret is given, generate a random key. + key := make([]byte, 32) + n, _ := rand.Read(key) + return key[:n] + } + // Hash the secret with a KDF. + return argon2.IDKey([]byte(secret), []byte("hpolyc"), 3, 64*1024, 4, 32) +} diff --git a/internal/db/queries.go b/internal/db/queries.go new file mode 100644 index 000000000..807d70193 --- /dev/null +++ b/internal/db/queries.go @@ -0,0 +1,79 @@ +package db + +import "fmt" + +// Account queries +func insertAccountQuery(name, address string) string { + return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) +} + +// Asset queries +func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { + return fmt.Sprintf( + `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, + name, + symbol, + decimals, + chainID, + ) +} + +// Chain queries +func insertChainQuery(name string, networkID string) string { + return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) +} + +// Credential queries +func insertCredentialQuery( + handle, controller, attestationType, origin string, + credentialID, publicKey []byte, + transport string, + signCount uint32, + userPresent, userVerified, backupEligible, backupState, cloneWarning bool, +) string { + return fmt.Sprintf(`INSERT INTO credentials ( + handle, controller, attestation_type, origin, + credential_id, public_key, transport, sign_count, + user_present, user_verified, backup_eligible, + backup_state, clone_warning + ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, + handle, controller, attestationType, origin, + credentialID, publicKey, transport, signCount, + userPresent, userVerified, backupEligible, + backupState, cloneWarning) +} + +// Profile queries +func insertProfileQuery( + id, subject, controller, originURI, publicMetadata, privateMetadata string, +) string { + return fmt.Sprintf(`INSERT INTO profiles ( + id, subject, controller, origin_uri, + public_metadata, private_metadata + ) VALUES (%s, %s, %s, %s, %s, %s)`, + id, subject, controller, originURI, + publicMetadata, privateMetadata) +} + +// Property queries +func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { + return fmt.Sprintf(`INSERT INTO properties ( + profile_id, key, accumulator, property_key + ) VALUES (%s, %s, %s, %s)`, + profileID, key, accumulator, propertyKey) +} + +// Permission queries +func insertPermissionQuery(serviceID, grants, scopes string) string { + return fmt.Sprintf( + `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, + serviceID, + grants, + scopes, + ) +} + +// GetPermission query +func getPermissionQuery(serviceID string) string { + return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) +} diff --git a/internal/db/tables.go b/internal/db/tables.go new file mode 100644 index 000000000..e15a8ccf7 --- /dev/null +++ b/internal/db/tables.go @@ -0,0 +1,104 @@ +package db + +const ( + createAccountsTable = ` + CREATE TABLE IF NOT EXISTS accounts ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + address TEXT NOT NULL UNIQUE, + public_key BLOB NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ) + ` + + createAssetsTable = ` + CREATE TABLE IF NOT EXISTS assets ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + symbol TEXT NOT NULL, + decimals INTEGER NOT NULL, + chain_id INTEGER, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (chain_id) REFERENCES chains(id) + ) + ` + + createChainsTable = ` + CREATE TABLE IF NOT EXISTS chains ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + network_id TEXT NOT NULL UNIQUE, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ) + ` + + createCredentialsTable = ` + CREATE TABLE IF NOT EXISTS credentials ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + handle TEXT NOT NULL, + controller TEXT NOT NULL, + attestation_type TEXT NOT NULL, + origin TEXT NOT NULL, + credential_id BLOB NOT NULL, + public_key BLOB NOT NULL, + transport TEXT NOT NULL, + sign_count INTEGER NOT NULL, + user_present BOOLEAN NOT NULL, + user_verified BOOLEAN NOT NULL, + backup_eligible BOOLEAN NOT NULL, + backup_state BOOLEAN NOT NULL, + clone_warning BOOLEAN NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ) + ` + + createProfilesTable = ` + CREATE TABLE IF NOT EXISTS profiles ( + id TEXT PRIMARY KEY, + subject TEXT NOT NULL, + controller TEXT NOT NULL, + origin_uri TEXT, + public_metadata TEXT, + private_metadata TEXT, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ) + ` + + createPropertiesTable = ` + CREATE TABLE IF NOT EXISTS properties ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + profile_id TEXT NOT NULL, + key TEXT NOT NULL, + accumulator BLOB NOT NULL, + property_key BLOB NOT NULL, + FOREIGN KEY (profile_id) REFERENCES profiles(id) + ) + ` + + createKeysharesTable = ` + CREATE TABLE IF NOT EXISTS keyshares ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + metadata TEXT NOT NULL, + payloads TEXT NOT NULL, + protocol TEXT NOT NULL, + public_key BLOB NOT NULL, + role INTEGER NOT NULL, + version INTEGER NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ) + ` + + createPermissionsTable = ` + CREATE TABLE IF NOT EXISTS permissions ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + service_id TEXT NOT NULL, + grants TEXT NOT NULL, + scopes TEXT NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (service_id) REFERENCES services(id) + ) + ` +) diff --git a/internal/files/assemble.go b/internal/files/assemble.go new file mode 100644 index 000000000..6a0413825 --- /dev/null +++ b/internal/files/assemble.go @@ -0,0 +1,63 @@ +package files + +import ( + "fmt" + "os" + "path/filepath" + + _ "github.com/mattn/go-sqlite3" + + "github.com/onsonr/sonr/internal/db" +) + +var ( + kServiceWorkerFileName = "sw.js" + kVaultFileName = "vault.wasm" + kIndexFileName = "index.html" +) + +func Assemble(dir string) error { + err := os.MkdirAll(dir, 0o755) + if err != nil { + return err + } + + // Write the vault file + if err := writeVaultWASM(filepath.Join(dir, kVaultFileName)); err != nil { + return err + } + + // Write the service worker file + if err := writeServiceWorkerJS(filepath.Join(dir, kServiceWorkerFileName)); err != nil { + return err + } + + // Write the index file + if err := writeIndexHTML(filepath.Join(dir, kIndexFileName)); err != nil { + return err + } + + // Initialize the database + if err := initializeDatabase(dir); err != nil { + return err + } + + return nil +} + +func initializeDatabase(dir string) error { + db, err := db.Open(db.New(db.WithDir(dir))) + if err != nil { + return fmt.Errorf("failed to open database: %w", err) + } + defer db.Close() + + // You can add some initial data here if needed + // For example: + // err = db.AddChain("Ethereum", "1") + // if err != nil { + // return fmt.Errorf("failed to add initial chain: %w", err) + // } + + return nil +} diff --git a/internal/files/embed.go b/internal/files/embed.go new file mode 100644 index 000000000..d319469ef --- /dev/null +++ b/internal/files/embed.go @@ -0,0 +1,58 @@ +package files + +import ( + "context" + _ "embed" + "os" +) + +//go:embed vault.wasm +var vaultWasmData []byte + +func writeServiceWorkerJS(path string) error { + // Create the service worker file + file, err := os.Create(path) + if err != nil { + return err + } + defer file.Close() + + // Write the service worker file to the specified path + err = VaultServiceWorker(kVaultFileName).Render(context.Background(), file) + if err != nil { + return err + } + return nil +} + +func writeVaultWASM(path string) error { + // Create the vault file + file, err := os.Create(path) + if err != nil { + return err + } + defer file.Close() + + // Write the embedded vault file to the specified path + err = os.WriteFile(file.Name(), vaultWasmData, 0o644) + if err != nil { + return err + } + return nil +} + +func writeIndexHTML(path string) error { + // create the index file + file, err := os.Create(path) + if err != nil { + return err + } + defer file.Close() + + // write the index file to the specified path + err = IndexHTML().Render(context.Background(), file) + if err != nil { + return err + } + return nil +} diff --git a/internal/files/sw.templ b/internal/files/sw.templ new file mode 100644 index 000000000..88acdebd5 --- /dev/null +++ b/internal/files/sw.templ @@ -0,0 +1,32 @@ +package files + +templ VaultServiceWorker(path string) { + @serviceWorkerJS(path) +} + +script serviceWorkerJS(path string) { + importScripts('https://cdn.jsdelivr.net/gh/golang/go@go1.18.4/misc/wasm/wasm_exec.js') + importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v1.1.0/sw.js') +} + +templ IndexHTML() { + + + Sonr ID + + + +} diff --git a/internal/files/sw_templ.go b/internal/files/sw_templ.go new file mode 100644 index 000000000..47f0d9543 --- /dev/null +++ b/internal/files/sw_templ.go @@ -0,0 +1,74 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.771 +package files + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +func VaultServiceWorker(path string) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = serviceWorkerJS(path).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) +} + +func serviceWorkerJS(path string) templ.ComponentScript { + return templ.ComponentScript{ + Name: `__templ_serviceWorkerJS_2501`, + Function: `function __templ_serviceWorkerJS_2501(path){importScripts('https://cdn.jsdelivr.net/gh/golang/go@go1.18.4/misc/wasm/wasm_exec.js') + importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v1.1.0/sw.js') +}`, + Call: templ.SafeScript(`__templ_serviceWorkerJS_2501`, path), + CallInline: templ.SafeScriptInline(`__templ_serviceWorkerJS_2501`, path), + } +} + +func IndexHTML() templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var2 := templ.GetChildren(ctx) + if templ_7745c5c3_Var2 == nil { + templ_7745c5c3_Var2 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Sonr ID") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return templ_7745c5c3_Err + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/internal/files/vault.wasm b/internal/files/vault.wasm new file mode 100755 index 0000000000000000000000000000000000000000..b5a056b73d68e9d65e86cce29905fc5f07e668b7 GIT binary patch literal 5362794 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 FTz$(oG%3ugIQ^N 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

  • Y&AI6+c?qQZS$x=kN0bfC9! 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

    vOE$;F6b{DFgQTh3I^Fa4afZpqsOgNH|!|Ycb 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%0D;qUls%bd&C&)x=)

    S;-4ULhKrnI&B0vg>UH8+eLs`!Zs_lE)VbFl)xtbAV_UJ^t;AC-Jr z>8p&r`a-<-Wu@3#CPVmX5W|$@eZq(=>&=X!d_y1>T=X$I`|IdzNQ#9_p>>5$Rj>3n zwMrqwK1f4qI=H@6m>1+qrC@B~Lo-qYW?_0GL_lM#k%E!N*5M4`a-=|C;@%qIou;ph z7$1WG15P$k%t0W-m+@lOzED5Y6PTp!OQ)E&FYRK=zO=UMgEm=pvY6k2z;@VXdSlxG zGUJ6QGL#;n<`f69cnETbB6Fcd>#|-CchW(O!^`tv{y`nw-Fe%Iy|G36VtO)YF)Y-8 z`<(uD$R%{C3l~^}62uWas_wVTqNKZDhQaLecs~SY)r7%UL^+qD4IC|HFYtylMZ8o- zPyBqAe!{5+oJ5HLx2wFdI!@B{B&Eqk4Vp%D-XtpH#-*eJ_}mHh#lbf(MUdYRl^olK zy-e4{dtU}R4gghkq05xCe`{w?K^43K(vxNqMT(=85)?x7KEzJZ>*HDPu)XJWrU4hN zbU~QB833y%86BDuWin3+4VO|Z&8&xHlvwDv@Pc+}Eci0kD7uUM15*?nJ9;=Nj}rhG zvNxJtMWeZY$x#hx8KnEyM8-6;`4b^4u!_=lxf<#_ELGc4)|tlln3 zJ1#ydVKt!(PJ$ptB82{vgZzu?tqfZSxw+@8ZQ;TP5_>@6nvS_OxSn)Jkf72QA#y)Q zQh|Oz<+(>h6iW?K>Kq5tCCVqS1dn67`ydj?2ni_k=QkAim+~^C+o?evB)rqb&qU!2 zu;!K(f7znvpT}_J73+2KwZiUmm?s|zCC<;lzGnUvDR%wU8zdGQEd=LZ-U|C%Fb2*uUNnQepI!`T92jzxw_r;daY zIp-?v@~5YQibc9OTKgB%lNqXzt>q-)*nmxZgu%Fxoy)$NkLE%M!|EfNF&j)hCJ}yu zY=wvA-Ot|S%-61ME|l58ju=sei*1fI;#|zo7gO086-%-cOKuvjxL!Y_;$p30vL$XD zu4qbrRJ^2Ck(?^tUmEY7e<oWDd;sJ|>{85%{-ff`R};lntHa{B@EU; zIl$tc4oL{%ld*zMC$a{zJ!*O&J1M(J1#RCt1H#`9)?*+h=(|rT4bcfOwRCldGIx|# zv^ncyK@3_c(!r=thRh~+IgQ^cCL&K~L$U$!N|qG2}QG6C!!L75DQ~k3kr;uizIuXebL%QTmB_Jm+)ZEcdMqaVws?7g*eo* zkG*OY*cHS3S0f`PDIIE!5|zHpqqfWcgB;Q!do2A8;QY&?^b8z?)`7gQy0KJeZh32q ze{di~M?z%C{&sz6&4wErj_h8KZtRm!ekLv2>HO_FoWF%h+w9pdc)<%^_}Dh>T@_T3 zP5W>{mB8$+gIvcf%3tUu|w#L`)`5YQh#JG4ge@&G1Fvoe6jQ7{Zdtc@6kb;qk z*!5As$M@W!25yM=9w(=x+qwSkc<&uN2leYA!#71aC$m;=bA=qgaYVUIeq0evZw6&X zNSS13en(WCQDQp4}hS4XLD3Q^3#Q1MFmpFTpAVb%#*vX4K=kif+NZct4GPF5?BOn|j zcJf`(uy54aXt+4=rjui!HKX(GQON=6EL7t3N={7vtV%5VY87STKC+~?`|esLnz(!I zb2{f%0Q`5NWvFP{6Xb>pI3d_NskrCd8|r52%2_ z9EZ^-0Si<8zo79Crf`I7&;W>PTcilx$>)g409;wckMaS{+qkg_HOKp(<^!6uW7Hpx zQTrARzrQ=)J1z}dwm%Z@eb%&W_YXI)I4moiC_`fH$D_9Q&ajH&AC~lmd?G42fbh7p z)`9<9@XS>i-S3I=Zr92a_~; zVc+}OS{Ron84^0#o8s^w`%L-pKF9Jp54>iXhKHlW8lFxA%Y*e-EJ97I(_6uyQ285Z zQbrqTcshfURkG2#9A;SHHrBW$UrX)xYC!%4c-U`5MX=PQfazp&r1#IuyLx?UT5+J$UsS zDpw$tb;rgapa7-Ii6>u0Pdf*6Dx9Sc1Fm^x=hfIaf(OI16|*#kv1TLrmYb ziLtsLUl{g?#q<@Q`^X#Voo|U$JOgv|qyoFgDqL#YAh+Y(%(4RP<_UQwDzl^cYyxg4 znjIjn4D6P5KJ+XED!!#un64)syFeIp=`m9TFt#<_IK?J-;=faDXY3d7HS;8DZq@5> zuZYn;Xcr>zSRDMqX|%)f+*d_$pB#$&sH#DRS2vXfZ_@=_o!k0|ja06yk)2)B)WC?& zu4^vq2Ck7^+|XF9dFfh}6X&-?U0*sL3?%o)3@c3SO;Pr8)1W*lR}FmL5+!|w?Of09 zFH3`+RQ(6l!F7g$Ybnf(^%rsuL_C?I~%mwqC$VYhIX#Sbx5P}N-cxsMN$ zTy~g0QXYXLDvH<`2vpLYAMyvg(}Rckz^*nzMp67A55ihybs5j9u7vmaX4G8?wD=|) zfb8z)V8XKb4mWOsqn=e8fA7e~6{cppSOLEG2XuVRR1yG#Fy<5Ln~`KXgt+R>E#Zr@M|VUpc?y7Wdt^TCe$$xDBl2dR^oon=v_fG@i{ZVrEIRF$4Q{tFzezB75*tnvV_PHsZIq!D9}I(OVWIFMDrt zVPr8B_xUD1?!z)0wW(BVMCkUkFD!n58ez)=<(c`@%+?s{E-pUwdtPrDFuF6^bs3t* zz{dz!!4<)2FfKzAWI4yZRfqQ_QPlMwdV7jL{`ayqpnAFErBTV-Cu+x_FN^msbIYWt zrFWXwuNdjS|JndQhoUZ8Gvz5yx*(%*m*^f{0(wDvLJHPAY z>+$*S@A;nZ{oe2UzVHA3ANYY+Y5Cz%2R%pSEs=sk!B{QJmQLcv4+WH6qd+~-fwtRvcCe}cC41ZQ2U%E{J2 z9;Qo|8YWAE{opJ(czGhx`-g&-c1F#I#^w6EiW4juuFm6#DcnOk)43~(yJdxA|IhMS{*o({BB%u&5Vg-HplFTUSQU35}3cDdO z-;ZaF!?-er;irZ!<&cw{rqw`e2h8AW+!(+2r{7`qi>X}|ZThjHORUYgEJ0>xrDUb~ ze7YlhENkb69vXv`00#Z=*bM9tepX?pmN)T3(eltgBrYs@;0o82r#FlV!8?Ai=d`YIO&sc_$8NRD`b2 zS7ydXP-o0N^Dy%|!<=*O+?;dI%;DS4jDQ#s72g>K z$EYY#QE|o@@BhEn+IxMqzptu0h;!!tez&7k)%We^+H0@(UVEJt02YwBTEOr+zFMOI zD6AUxMi<&`a`qgq0>ya>MsVPUA3VS_hq?iex{%+Q&>vPrGyur>I9+9LASI2$mcmdM z-XM1YhKbQNT0F3OKJjxnp4vg>0^d>&Vq#aK|6T2{vr{{4Dy}O84FO|3wNqR_9XpIn z^aRFZIXu~V9+i7SkC_{7U0q3e({COkanj?Y4Q$+J)?b4UEC8JSRKZ?tCw=DPQ_p%0$$~N$%GjB%H5Nb$UD0U3Sum9!N{XQ-P<|aViib8N>iq zYtqGjnKZpg|4r8eJVNFcvFHvO@BXX41iRo%A)fMlrC>hHtYafcYmS0{EyE*#I7|Z+ z42T9L?pMCxCmQk>v0G3GJs&U0CjZ(8g{7Cn^#RGWzyBiraa?TH#%Bewgv3VJK^fD( znn?Gb@yn=+c0{EUBPQzHI~0rxM70p(?GMHS&eUnKMUu}YQS4_Yvs?0P;^ zz%LE&CW3;dtY9VEjHE~52TsF+*Hpv@DIp0&g<^H;YX7Pa&3r_EAwvV>D6m>_2zC01 z_DTN}iVNl>YI77ooZW#k3V#S8DGraXd#C2R{Bv~b@4w;iP4)RRywCroXFiT^dL>g$ z{-0^iM8NI~5HQ>=1(6*nRedA->+O#GQK`}!q`%YZX<*lny`-t-XQQMq!cY9Y zfnyooFRr};h998qb`r7Ib6F@tCM@%3Ue{RW>!sk%wBRqg6x=08+K7u3NI{^3?^}MD z^BcJq&4wmV_kf#-Cp`E)FW?Ygham>X=a>25HR5J!-Nf&|%NbWnYYnENfSnKo9Ly;S zi|=Hu-{!1|w9_;Va-U!+xA)}_$BZIieB!!*T+7qIt+%t%6QG@rB78&6(!DoL&@LgyfTf^& zUA-EUJ~ z=!ajO-MWhi}O+@>Ow6Y?Z#iPCkrQ;VL zsKe;5M}-=b^^SiqaSxdLuW(FCI!eYt*sw6(qen` zrN_0*Um)c2D0z+-j%eGwzTq(wd*<7JUc}?)C7oXFl?>77BKJnG@%M&kcBBh-K=^mC zr;-M*^$G`b++_^&3CCR+HYmPnEZ_vzQSn6V#HHoOmOI#WjsZJWOMHV5-r^xBKWi zj<;0hJXg2&4-N&v{@;7N1)TJ+K;$z?%*1Qu;4Y@W7-w4KPiTHZ^g;LK58;|e@>mNT z$DsesW>YdV%83?UD0lM7r{GRG=4d+oh4_0Bk~Cqpy6}kY36G#s+IlkZ2yRd_D8&tH zx3;UP7Vo#Dff}pZu~BpGy+p7DCOYFb@ob{dxFylIN2kUs46#_WpWn@7EB-Axj~Z}9 z52utMC1?^00YD`zN*ojGeAH%Gez9gaF*CAgL5ql_aY&%br`2C!S>YJW zBf7Na4#Mzxe;kgU1^Wz1wj3Y{1?aO=_fx;*G(0`Hn>2qf^nAXK(o6#FUMAj>U@`D zE2_>*vT!-JlBn}?N`>ltIC3EmI@EdO3%6q{MRoojx~saY^MB9Rz14X+wo*{%_pwT% z&dVv4qB<`R%If?htXrkdGpty&c`^d03c?Z+!nog8p`_5?*MPVa(&yJF^&bR~z8bYm zAawWG-J61V@L4^OM-^fgvAbe_K#VSRbjI)sQ3rnUw5bj1+i|8A{;P0jzlCnFKTO<- z;*Z6t3M1qGi3tPQC4O5Nr|;S|-qlakD+y^C1$SmrenJ^TRv`UhZkw#@A$UN2 zu0TDcR)`zvwVh{z+U;8sxJwN3gecJ1dTOKZth3td81o!X?Djm~P1=Hq;OaCnu<;S8 z3!5}z&fIfMnm`?lkGExG3}KX7qB66N>0uP1!0V-!u%nE1c4KDYYnrgs`RjNVE zuGU1u&`Tzo4IMWl6(Jy?=ROHklmiR0+YzstA~1)*wYaCD{(w`S>&+)?7^0MhNXq{Bg9R zKu$rfJA%9^&yK@03MP0kfgNAVfBd~$ufJ-?*FJO#7n^1zh$%VffE-;LL_sOq$>o~L zgECX++tocQWh~ggv~ixL7(a6f{hnQ()Z>a8_5DkFz#3`;ow| zKSw$=K||68yGCsRdLGIrgx~P7ovh^J;rxX7nEC)uJ)XZxhkAT`Lp7i;Kaa+E`gqX& zSsQRuDne?61YzScW=F%R^%1PYg-1~Lj72h_nR}OEzNA`rUYGVCMeIbN^{5J|c7U)I~-j2v;Iq!vmNBPzXi!+vYcpb~F?}~y+e4u_dAGuGfeZS)rG*m91ZPOlGv>9?C}$er?Ey@euxq-Caz@F2X@)SOewgC9SNK454PV4nfJYMskGy{+|qIkeP@PopcvUOEUY3B zEX4QIX~1=8PCGO|po-V&G8ybb&WP=tm$!Gm{myS?qrVb$7aqgD7F+r)X_P~RQ({3V zKMf|T!-cQU`?(?Ap>N7&6sSJzCC$vbkj+2P6I!=;C2M}%npdZ)kNzWG(x4>* zO6>ll{@$R~9FZ(3o%YLJUd({N_xUY7&FQy#B^za@(epNcZ+(l};)B243s|pW*Zf@1 zu6(3lW(}8 z=!VdsPOo&QSF#zuWX&`2gHQBce{U0o=oLuV!zA`}Ez8*!QFOfKXT7G) zmZp~c(Vl0-AMi>x9D29C(a-sN8xD;ug#w@V0@f=y=S;yY4|*l*RjhGwhkn7|Td%Z+ zVAf@MQT3yrG9~EDmJbM4ht?=q6(lNwViyPTU5QjAOI4ZZFqSl_XzoZC83YkCkP@u-TP%5D@UaVFtBzl04WYF{&;~p4N^9~-o!Mi9Rg0Jb6zcEg%@l31i3RR1#;u^+MHJZVP5-kBEW|6+q1bU+ z{UizKk#xQA2<(w{qMEoHc03kaVLdU`bF?}z(KCStp@(Icq;cb0yw7han-#RH%A=-e zcRO>4%#3#R$zK1Wsf|$({G+)oB=>}v&p%vGbr@26ntBdEbU|1Jgr^(fjU#4i3z^+1 zIK%VJ_(Di@#2`_)mx#jI0B%8L7FCaU1~x+693@D#M87=s5`iCdns7JRl3*l;<>V`9 zqeq^i&0fa@ezq;Fi+PF$&X!|ew)Ap-hL`S&J}ph#iWBETaAOG5+UiYjEQVGBk@Uj$!%WJ zHXKP34U?VlzuLe{gi4!)noylE4%2IKroBO190DdT4ivGVTh%Ewn;q^TXu%R& zzGlVpz1urCS};5!wqV-f95~y(m@Na}=kHm4WC1l^DBr!(d%cpeBFSYG>CpT9y{!%D zP}SPJ-%DC1B}U;^B9Bs!j~;9WqCiDJF^;I=&)8U?6{Ebv4n20E4fiL^j9I{3#m8Ze z1cz3)V-3S0*3kTzqEt|I(4UNd8Rr-PMb5xDR?6=vakx3seC8EW z$CWr59&(t8r%fLh0uh`g_75P|M;c zDChG48&?6~(&PaH{LP)qQwFfAVxV0p=tBtwW$Ht_$cey7Z@gdKjuni6vVxQZJa?+M z&JljC7q>WRCW{jm%VNG4vvqH3KW)55da z-y372C;>q#xv{B`vk*u7jN&J4P%zAB{(O3-_SoaB2R2qH0d z5Fc8gmrvqSAEX_j=1%D~NM@a(FRpWt^udZ4ELdX(fXW`P^d9Yyv?$+ISJLQCd4l<) ze_iFf$Q;6V>?UZ1&LjppF57^N9h2Ab)akL^qW=J;B>UOMQ8;CVf zE?PEpDUxdIO4W|la!3=)l_Lc!;^_t}Urt3!yZsK}peV=K`b@pMkeC*fWjgQ2`9Ox1 zkob#y9JY`&zjOEy-pIy;oKU%z=m75GWhC4wKfKu6*`XF71`Y*&7`#t#NC|4Ohh-*= z2_?4givo)fs*wqF0qUmpCA0ED)=zjB=fSoKgA04U#n| z7(o=nq`L5heFHIOO<#NPbjJx4;orN#gO_W*xrQOepl2yIDvI`LoRq&k=liuf{a zvR=zvM%ep;vihNLelI;b-Id(Ht8s2iE_xH$S7KFXytwnx1neTcEfKKidt>?`!62Hz z5eL;}HP*FbQ??r1VM2_c#ORU`px9SkmSoCXuqB}Yh1J`Vjn{2SxCjvbY)Kfeim)nM z5^SqwMms4Zifb+g;|KC27FAm+QbAM-{0+>JKZS3yTV37&gyQnDRsJrm@5MHS^7_hl zT~c0OU`OTC=p6z*weOBbTOCrRBOccYi?)QAHw4L`395x>VO_CBX*&_U5>Qt&6Alcs z-f~3SaR1WCRa_!tEAyz&z^HB#$x7t}Vw17T3;F%gpYsj@f_B3fovWEmos})gWNHEW=~TGAN}mXO8SI z`1}q?Ax_M6n5Me(bO#FVI{K_`$2RZK!#wQ1sFQSuPf?l__hJZKrp+%PY6TsWa};;< zVi$k}u5ZPkpr(5MxqZ~#&G$iE<%@(1;lgh*j0SE7tH+!X`95lghW7zD4uhud2<^-D=q8UzbH71?% z|7O2oasGxYBb*$}T>g0XgZ%kXb*3ocu?YE_J8z!eEChEgJ+|twJyQNGO0yaM#{A^^ z@p5$i6s9-F(e>^q@IrdH(x8|Vzeja&@3rtQ5h zX9I?Mbh5d+lgL4^Wvj+^N%v}^1t?XF+koNPIQA{02bC7X)uNI7e4*($;3FqcG(?)F zz*DIZN4TVU%C0Q+eJXre+;)=UnT$l7Wj|&d6M_>F@7Y|{L?&E4P+=*6Mgc->Z;MLo z(cN{W?oO`k?s0Z^Qn9q_2}o_rG8GT?B_A|b7G+%8WZG*RA*PcK)9pS7mk_> z2*>;LIk?pfCoKs_iNckntjD86TzMuBBuDIojR2`($hrG*aT*Y@)*NJ1{TlpGo&QpicKr*5@%TnXkgpOyfgc=bLIPpDE23 zHWbp4(Q(9f189hmj*GpIJ@Tjr$cQZVH~2u0c{O?KU7yXj?>wC^l20@Tcw&S1dP*=I ztR#E{(i7&3grQh|{KkC2p$2SqzrdzxGeJR}uiWU!AV^$@M|`k$B8EWx0!f3Fy12gS ze7{thFU&4F-v;N~m(8M)uT?if87|n#h}tC)P;rjt4`ivPoEJnKiI@tUpJyaZ0<3n( zMDdV9tL7eYKJqOeo1NScZ$ivbf;wE!gg^bg*Rr!4660B{WjQmvr$@bx^&}_Oin%o^ zdiqDNWj#UjgE*!0P`M{fp7C9;V?99%Kpicol4^NQ-}hS9lbG>~JyneFhhEDxAW`>b zsP&^#Ej=$&m{mnzPn2r;iJ7m=RxuaV{Mj}Bsp{2_z&0lN;XzWKVgaPOC;%$LxTq`P zQcY0+Qc-t7H!*Xa2|_OFQqhMoS7=BuIa1V>b=DWN5q0C>Ow@&bpYMgJZ6b%7w}Z<@ zIuwyy%gC0l0m-`!`(huqNymtF;t8z5t^)Ptr79Hap(26gM3>L*jn}2V*eku>4^4NkDdw=RTF{y`+)fd1BhFCtPUI$oTQICO@utUK#6rJ6WGv>qchd6R>81QYAIgs^Sf`j)bW@;{>M>G4nwCGoxS_0T z{8W9?{{dB=CHzaR0L+CDVzav=%Gv}`gnOA?Ki_f1HJ@+kM^V>CJT*Jj1cg1V_|}$)`V;nEv8=u2D*K+yvr0XD-6`nEVL>R5fi^~Z;_mykgWF= z-c*TAzU^q>@93=X*D?9u^Ed3Wi!$TmVS9!9xp`e6k`ge@h+5Gk_oH1HI5v*Ig?3%w zgj^NKivsoRv!sB;>E{=}iUjsbqWqDT=rD3`g@cQ|z{I%iRzzAfAn~_Ij2w zg->!!Hq{p(IVKnB_d%9fpx=iiRl{4T@FT?nh&`Q++;aC*5&mNkh@rfX$ywz09~mpb zeM?C0Ey>H|`5)r>aNfs2Zu$KO_#N^RkOlE_8p*XNZ~u=G;VjFG&z4)uqvLb(YziSI z_*jFX?7;nD!o0@jHDR2?bzw*0&aytcWMC>o<8KCG=x+{-Wndj2{5~Gw3XdGOJdV$$ z9dcrgwX$GrzO>dHJEU1}&gJD~!#H}v`BKpOJq%)w%$~pAgkSUHuQ%e?AsEgaAx3AT zhcVE@fhLlw!-&)zpygoJ>`?SM%HU>z?mSqa8qGr) z-#mxRqJa*Vp^L0J4*@gynE#?io7ut+c~Rp@7)yDH!W4f)`P{-!;L|RCLe*P=58&KR z{=~`4<@gwp*g5s_=ozhHfMX0OiU~ZxrG4E57uc4pVCxD_M+=$Vxuf^0;5qF#K0h3N%tAY%K zDoi+v+pD?euVDiee{s=VPEi{3kg1qW6$3cFaey{E!INJR1ivHj#;msia{2Vd3XSc< z`OfUEDv{aT1&%ghPF|WS0KoFdy8JfnL*Jti_-z@$w&6qqdzTlqIfjBFJPN362V>6l zIOkt-{7X50B)%HPyvGp%kD2S;&wR%E<8?8}X(6*g*7K3XmikX@>(yv0m=k}_2e0A- z$e7=PA+;XuY6z>R)eOBZ8=HqMFxYyKgS)0~QQDPlvNCkv1xd|#tBFdQN(HwBDc z%(29o$V&W_^}PsN@4$~RS)s{m?LT5@z@e$hlq7gZhf2NMuhQo5Tl@x z?+|t`=Gz&&KfvzKDs=w?K4310)QDQ_{v5eCaiH~87RF^b9lejtzW495{!0tJ@8^S; z%+Py#cx=8*UNSW6 zswObUYVF4I3!=)NL0*DkUB#Wlq%(_auP66H43VDf*fOjbwjAq;r&GhYXo=*JsV0z6 z30D;$bB$ia2*z9$fgt-89Hg-xW#=|W<%^g*YUC@cNV#!Q!WZk{?KqWmd@GaUr;f(h9i1oLP@h9)0O=BJ>clhF{$W#ot_q>R3Y`dzj3kYWun|-Wjhul>$Kf~1 z$w-*m;`t-3hq->ohDPQmjm&2wFs6k@KE=}XZ=j&Gawi`w9BF->pW|#s);~1UCw3FF zqR^C~=97C_nu8O=I>7Q7K0s;)vFuF}|{4czY^)wsn{6Bjw>q)G(GeF{By_T7m)IJZQaRA~{6s}9` z`GO0gfMVULi9Yy6s+V}J*D9Lm^8(;=wQRW{u)*sXIK%>G&NY1KhL@t zH=tzotBwU+?P7P|l&Cfm!liciC<}^liHeKrHb;q;5Pjy1i;@ZG$lL8L(xho7ak(HA zl5$VT8t~;%YT#Paj)Sql1hwi^9Ia8S&KDSI6QaQCli?qxEdiPILEsM-obJ=tvAWxV ze5y53bUPHHhE?YwneJa<|157`1r8G0`}Ni1DDX2uO#Von^X0{^6T$kR7Mu{n=0H%MX(OhJfz zsySWhJsEK52GKD)UDR>QZy)3~ulfbmTr>n9YLA&UnNE-=wFRa=7XHTAWk~9ZI~RE< z#2bwxUa0(wg%tK!EMBugN3t|ygEHMJL_?B{1P%oyh?3&fY97`LxJBeF1S7xA$NqU8 zI|mZ)v=C*=bWn^Wnn|ElK=5o}D!iw%U+)sa;!~|g_f)4rqHz?>unQ{y%L-+Pl}+4( zK?I=+OGhE&4UWZk$d~>3RHG|`)CECwZVvnFef)+Xlv7g#SwS%3z>mtzD>0UOke7ij zdb21+PM+-TPj=0X-h&|q!whw-Ga$x$y{aJw-H>9DGQ>C$omyPsa>WZ9BStJjFlnD2 z&+rWjHFc>@XeDsuPF}|;IC4(saF%ys$O`+JVn|@%6N)X{0=68F-?&s&Bm!W7SvDN< zH~Hi~rh@cU}D8x)6#ikiA8=P9(`6Hn1PX5qQwb~WgxRtrx*DZ`R zus6mj!VlV$y=_ZKsBm}7@knw6&<7~mz6(&aZ5Kc;+=`~9ku$5%92aQ}&9S-gENEY>(IbdqT zPn-Q5OK@fl;)Mzr6f!7ga4FPR#Mn^Ah4OSc{v?-A2n=ORXwPfxu1(fVGTFtmgM@2X zBU`etMz&-t3;O_t!SCk0751HEDOR^*KW2~Pg?BMD+*lwE&&4Qd5^7<8c!UKfrgL8c z#V1L*e3jRG(-uBTO%8iHAv{xF&Ipf{L)%RG37uT1S`BurKAKA{bQFn4VD$lome5f) zEZYeNQGTU=l_l!u(Wc~1bLzQ_Sz{sE#?S_FXmRaa!D*|CNHcUR$t2J!$oVLmNR4BR z_M^@iY-0=+WKO?e8uO5|hM2~{0tV% z?Q@G-7%`^UHi=*<*N8}fL@Z6T0qLR-VFjF5T@N3tNg8ab*)JxKlTeDOTQtfN3O`I} z%wZaAb2K_o?7$GjR`&w@<_SKEO)z@191P!TorCR7@PuYAhE z%zN79b*v|iw&)#rcAM9-o@Ntm@o}$J(l*~;4dD2 znYQ!{7GR83)m8QhuP#(kX3;=WUo*%rB^RJcUWEz?;?j)a;dT!4ASh=__ag5Vk{RRU zHGV$uW$?H>6~ET_Ak1h_J<77YW6({-hl91L_cd>N;#brggZH%6r?R)z36@GC6)X=pC(H09A=x5VnAuM?-y`7S#wvC(%xq5- zH3{d|_Enr6J$qn^HBClSSFbh(_%p0 zr-&gV0#i_8pE~VvLt$9Rhjkpv+psW{pa?-WW*p5Vy0DTRt0z!r;iXoXLU>BAuJrES zS)uNVrHPQ^u+daO_>U{aPK~KXXkO#Z-mkOJbFUzorsy3HIDz$bwCnix4zF*k5w%!@ z0>O*rO|2I1@`{Fl2qB_S(G*CCm!1bKsn}vZFxlXprmf^-Wsv~V5=9X@(OF{AEa2^< z$AySt4fX024PNufPoOK|tLR%960IH_05Mi~0*AK*T~Aoov)K@f5{Vht8is)wG&mY@=ok}i?}`IPfb$B%2rLIoQ?E1(?j z5thAxrNYWa8gKhS1wLPpwcgJ4u9{QwH;RO#4`~}q4DPn4(k9n=lRpnZ%4h_GQx>ng zdrwVT@sX_eYBmzJv+`tRrv$XYOWNE~67dM=VF5{*e#NkG#kM@f*Gc;d(P+ZHV)Fw) z;hGs8O*d2S*Q!J{SzNV`V|}T?_Og%f4C_@~V0900vG0@g-WhdYqMgdC+{@;YR%qd>twJ$g!kg1Lf`E%Cd`mSk~{;e7YFh_O5$T$P`@223tLz=#hzuEqPkQ1l|~RaweqB}|VE8xky(UA{~d z&Ppri=60-N@xdIn>^blkwWr=k-|(2y`DHk(5cc{cktgMYmwAK6aMZj36e+TQ+GwNC z7+Z`ZL`+Q(Cu9J&LpyNg8gKq9idD=b6hiS}y8ygIJ7xzo6@V^bpP#31N7*(zC(&fFDN#p(wR@S?DRhE zREx@bp-&U#K1~FQK5otlNMsZU^p`X2P;$fm^C$;u?EsK&?H@y-70X;{b z)VkMeSzjU<<`>?ktE=^nOKRQkwX837)Iagn;s}pUYCTY@<*xd5vpt6ZM$oL;pYrIy z0Ch%S_US3=pjuIAR}!j$E*SivZ^BElk}*w_*j%L;^B!IhrMm}{Q0Q zkrq!#Da~F4ZH2^FxJFSrD{OG=*u3J{+9q%L@oZrYIV=QKFcA_BQRYBW!nqbsu)rS{ zRPl#Py+xyfbb86Wid2w(&8S0QFYCnpm|d6gUg53Vc;%7=g1(4v07VCV*yh!YJ^ZkVx;vh&k7!#6>%Jyw0@npk}@{KFK-ZNG+(Ain7Z5AX~j0>bwpb}sO= zq$aFs?+J6Ztw`wsUh{_$t02M&v;*9r_As`7N$x6F)m{Q8SWwchFRJV=-wpGNamFUM zkAhRzKecdN;!POGpF@6_Z^P;)2!5#-{jRc30z|w$5>rp}3p9E5h^Ix2Pg}zM2?0#j zDLv2FUIHnI8HlrQfT!CcHqCAiM3hE}rW0SXTgX`}=dDcTXUJ>Q1PPr+x ze@d%Tu%kPk0!xPkUcGG&4+kg}Z4Uc`T1v>SbY94x=h{zlW4&f{M}8>2rvl3Ac5M1> z&QAne4av9%R}k0075K<#;Br2i=Nl6YFZo#oB-d6U_UB=%=1$V{%JO4m?1yy%5K zP)GQ6KA=w*5nc`pOIQSJ1$(b#B2y;E$16I4u-t*bx2hrPP8=3iEtBFz>=Gn(mj$M| zh_I6;e0Uptc-QLi#3Hi4Lgx^Z$lb-m{9)O#=$i3NcM3NPcQp`cqCQ&k5`H~ddyyAn z@B=2Dpe+(7hZ=^qtbuY^zG-As44emMbD)5%Y>DhXu{|X>j2Z+)_;Bq&R^5NB!c? z7ul2u66Kok17Q(x+7ii_&=H_1H~O6$YKm=X7Eb+P8+VF${H-38rX- ztj+;CMKr4N*b5r%CD~2GdVxkWd6@TwUW{%C?i4-DlQv*e?8Cky*(k1VnQX+C3#&Vu zRht!Do|qmEG5?&Bb^DPQVe!PO}Nn`Aqg@BWHhr`{K@GRGlLl)yded3&p#l0KL6)ouo5A!1ODor_pvyRRUn z$82fXdPcFG8f&{1ywyv*RiiP{iO*?@f+?x* zK%bTv36<=3PEA&HQr5uwtiwrrOKS4$P7Fr7_7XsigI*NB`zW{iC=G>$z*kA!0B|5o zoPK)G-R0g=DTME-3Rq7hXnZgNR&Qw_wtSG}rU-(rg6mPf8WBsl5P>UkA@sX1#F};- zQlup?Rdf@uK0=W-gi#btGoTj1Fax5|)7AcD0$t)~F-uuV^NAHqmr!#6ligACNs6y; zmx}{~VAFbX;f-cIr|||REy%x5F60*grG1QjnL37}Da$n2g|~jB=nh#RsP2&5=pC2R z+FVUy8)Ts(*y@w|Pl;_!|HR6o)V3F~{bd42A+}LOf)K|@88jB2c`KW7+}0kq7Yfj}C)3`CanvgtdNqeOcJdKm`DZJJ8tNG2CX zRG^oLYZEN~#X|Orb4NsL{10LAz+%{o(0uzCZm%klOifrDXMviB8Des0)1<}2A856U zX`?N7dw4QA!Am=fBjYULWvtPGm&?21Wx03~4z6|W*mpr^ zj5br{LY!Mdg?dPB3wxkQFCv6QeF4HnS>b87Z%u_>o`QX=_cF$oe-q-@F%H%!a!p{T zVV8?~z+I=`eRbEgM;*36RNMTTce(1CLsl z$aJh?WEz*ioSM(48aADUL~pze2FQp5=Qsg8*2v*$W0E)?RKw#bp}aV$7tf31I2JA< zroR`jqGXHxnP+F#0X7HKR6F+nE%m9AK(SRzaUq@v?PZp<{337C5P~El-PbGms8hzM zvIWgN7LILO%Go#i7_RH?s}ZUZ$Ty)AkP7UoFlC3<#olZO*>LemLu+G0)B*WJ7*hB# z%BhQXC~GPV*tIzm2Hkt!}pAWk;iK%6idKd&M{whpaPZl7RZ9HXTb*u+%8~LT){1YGhhkL z;aKf_oboPgQ^g|`(E#DQsc2G#z?yFZ)qp8RC`h)3XZvYGS!H+tTC#s^+0;+}vh^qSCQS}lB ziyaBqXt8A_4fawmX*eM2Dl&&1Bj?81?~>@FjmO0aws=q+fYZa}Jo70ys&S158Yl~S z|9S?F02sTDfoW?e(;<>#H|t1cN%ijeCPt%C+3S46oMKo+gI9nH=uu26MROrOZY*`rw{6qtoRHwRrlBPO;_Rgw%7WFL2yOac%Xx?}at(IHV%k?k4qY z=?B&Bo~Z}6laU$?)ux(uC&=3p5KEMr-3qQ$?_9%9qBLkllq`VOJ+;Es?bx;fnb^t( zh;9qsO1tag8U!C&t04-JzKD+rdxTWcl!J4)g^f6xLAoev7&Tm)AK-4)bdbc;6`)?d zbc#|AuysCMlMX2UA#hCX!`NeS{p>qPD2awfOUFypq8hToUPt=CiHHiTbdaxuwq>yG zE)wL=aGX+NSD+caXzY|v%kWB6z^Z$;b-9=Oa+hR_i@dSY9>3!0!pLiXgBTgxuE5AA zYfm>yPH!urBo{r34OsPvQ)Ci&SAmvs%m;^-hX}{|O{3-EPZ=%av<@CEkpj6x4Z5fu z8!MsZRa6fHp{!5(Kaj}zAdyjs)xgOv_Pgl>C&fM=HN(QfMcFXsw3?Yr#>NdPQ-v#% zKM={HY*=K+-Gs9ad;=BbZyQ>X_rxK5()BGOY9cDHZO4KphN;m9%&lO6UddsC$MKQT zb)ncUrbwWG4vo?+t_PH1sTh)n0Ig!I6KE4esL2@e1nSN@raB7L)2&pR=0+cVLH~;s zJ}7uVE!PA8tyRDLnVlO7gDMdEUV7hVpIuRa=&JV#z3%0I5gTKN{X{byb(bY>NOlRO zc_e0vX$w{+=(M^WYq(U8Rb45Dl6o+dK+5J?pDX|AFq1TBCZSXd&Y#c(*E9?J#0)hV5!im zd*eRB#Ia|lGYTC1F6qy>fjGF%5v;JE#x;T%0m&&61#EUr^sY1`59!XB`Yc4eVUv~w z(MxbXi??zXd1yIV)DTL(8MG-#A?gacn3fl?;gE$PPZcq&->`8eU=h=fu$jicX@*+@vKGC)Pfu`fY}z*4Y!9JCvzAJtvjX(7oq+C$yXa-- zUek`FEVAORal3y!FJE5_elXfjAwqBk(ZnFcg9P-noUZrg3#)|K)cpLj<#Ms;juinMlD^2_1u;(i z9<(*WmkjcPd>1z!r5hx0P7Wz>PLk-5eiB?Xe}3n>p&i?KpaN0oTNJ-LTsHW?iwjqk zs6u3@+bHZ;g-$B_^#3{|g#|I#=ptvV4^+s>i zlpf@F`RZ>xt1uE=Vg`it8C~X;?$Js#x^pZGl9HEu$vd>9*x=%pyu#mqT;Iz+j_yre@=B$+tWOt-PPGUKti^Ew{Hg3mFS*@^jjp?(tRjS8N+C9s2{EA@ z#9i3270U>uQLS)gAWdVVMWZklr$Mv<{fD3^*?+m@On8xo4{tOq#h`3gV39O4cY|)j zai$BdjWhKX`@(8kQrcnq%fpBN`)K`F7__$dJC0(!WFhe2$jV~F@8<1 zM_Dhgxc=fYZ_Bdhh%n#vX#Lmb_fX`V1pPYSfCw)J7LahoY+lR=!Bj5H z1!~kKsptexdROJAKu(U(nIQtkW|0_#F_(4kQ2ykDxT_T+EAnY;3I_DpCp{jC9*;wh z;VMY}em+M)p1B8^qM7!&i$QO*cWxs5v8WhC_;H*>X|4(Vadym_&0DI__L=q5IQ6|l z5T18wPzRoY5ben0O=Sh5bgB3Bpi1rwLr;+0^S7>|$1>M@1DP*+Tw%C(Xkqv&8b z?HNjpOjmf*20>bQNERBNQ&cz_QX^aOluBsia|=!XCvbn zEd;GGygZ82FLHczvVX|vF}Xe<;M|?8|5w3B4WT0Z@NIgX4}Y~nhCKu=-MA2EgH6i* znO%$%+dqVN&IUTWr8E?~EsVjto%U`&s`(i;ZJ7!_9o>>JosT?fkbCNH#6_#}NpxW7 z25-|!qkpdVwrxd_vrMCZEKvw+GFzGC6=67eZg)m9?J2XRLqxR9)K6lbnwq+EvQhFS z%!BB_sg~S*+kH5ebNU$q;Wjg+1JXKW<&FC^Uj_MTOvIyGNl=@dztsNwynV|FE(vZ= zub-CB5r^T6Fe$mAOZH1JM|04-hw|yq;~ZGV!aNG5H{+P<{V;Yfuoo+@D7On3?JKy$ zyEWl}f>r*V&lH7&xjL;ty7HU7k_iWtqjb9@ML*z0?^5ng$teHvhl=g%b)`P2onFb> z=VG$`-MUA-=m)*1Ngw2>`2+7Owx3q|kXN$y8C=2k9}atvyb!;4rBy#%s!CzX$8(Fn zH))4*lfVCnzc*=z(o(+u3XMEhf7$Ld2IZq(tC;glR@@Of$32NaFz;-aS1Y++Z-#f~ zd}>Jb$)bz|hB#O=hKPZ6k%jgIZewb&NPH>_5o(i>i&^Fw8j*uPqk`SDPMZB}Z98^i z+n-{gl=K<%=MwuVR1`Wca6& zWyU|VDnhVCeo&FvyFl~)1e#)1j7I_T-H(NM!2;pXB>5#Of&@aLvFnu}t0IzS=vd?B z47yrQWI585WdJpytNtuUDP$Z99axGsZcR-VB^N9)-;mkr&QZ|?;!B@g%*CA&i7e+5 zSeh-}Iku9dzu^_gDw_}b`h=5CO>0qt0MZqO0p44*?ky?U$*6x*F&8Dh=p`$TF0yBi zP8D(o!)EVgtM8B`8{hPMzyIbpXwHbP)e$^H=wD} z(7!_I)|6kQSBmji-Hugk&$0^TQXumZ#ku$!Y4HvH-jM~ zTos%B9AF(VybavTiwsZ&BFFmmK7!-Kxb`1006}^)oWG6D{so&2S$9=8Y(ut(z}GlW z(-ljxKbPJy{++?%7zC}U< z)UdK!b%t#m{-1_%O^1GMTydNnmx4y-&Q5KN-s?v1^*-(OPo!52(#-X2VtEs>6zh2v z)Uz1P45%q>DEN5TdNG)WzvIXZLfgYg387Sj-{d2)JEd00NUSFb8&Fv22yBFq9!0O= z%2G_{#fEPIXi_o#5^vtH@+~T+kB;@jv=Hw>zk;y+V>W;};vxw%v^FqcKqTJ%o;H6~ zsrf&uZ2nR<|A*H6IB)s3^g+`4I0C78={R}=FXiRtBdf-SGF&dS&r(9;$U<%IAE5qV zb4YSTZ{~ylzy}C>;??Tma&u7#WzS9E+Mq*)hJ=Gm9cK* zSl=Xr@0SO-S*kYojW&2pu{mgWKjCCTyu@Sq_|Vv}jC>JFpRHZv)~96T;bNvR^4~(? zWoTM1W+G;siU+U916&)m3Q994V0TAB-|ZMVP#3o#ww9p6YkWTaKnTounAstRM?fZq z#poq>U;i%J?Z-=9MVa{!PEb&tnIoU0>=C~gjLj`B=XwI*cL)Gm&NY1S+kAlKEJ8$^ ztBuX`rJUdT4l^vj8W(AEN{3)E=3`3pxEO~dQ_>+7yS{)uy{gdlzp}AcR(2h+XI|_3 zEcJ5SMb0kgqsw{dQnGu^pRvndvTk1J@)vy2>fPm>*5fR7mMz>oLpe!&HE+f)f6lsR z7P|Z?AG~a)E`P#OFO9gOST1fq#g!IsQ-2AN0BG_xmVGg36~sS|2ZqP~yiaiBQNCJ& z&ct{Le>2$^xfp0F9MYtLD_9Ti^L`paVY$+m9qQ4yoVJ)O`y!!?p!YPJLWqNrsPzc@ zdLjFg5Hx<6_Zb0Wt*`R!X&gx42*xeWHDT6BbYN1(!&Iz}EG)7X5MOq%D-d)LX8ta* zmw)h~o0Q8j2*Eb?;;~>t$%B+@BYuID-owDJFz&q`1qLrLe;6m3s<;g^Y>7ZC1V`sL z=aI@meVK1m?o))$BEW7Q$sB-rCm)j(Ut2+hn*nwiUH zpdJMRNED^56y>CqFSGXZM_NDPCrzL6d>2tckiNq%{) zC%u+ghxE3Gf@WCi>7Tuh^+aII)YHFsE$d0IV(8UV`+_K$T2H)PVWyr|doAnfD5=$} zr*&S(deV!wdP8r6*Rq~yaO_+sb+bCeFY-Fp(=(+`aK~1!(qq#_MfSSk-S@#?q&J=;v=)x>s8rI?rGVw%3vvm0l@iaP%AHGSv?+xfVnPB3 zgPMrDzvVUob(uL>AZsP*50{;wQ$z0J#x7}TA52G3iKr?uL~BEA-T=!!=0HwFr@~M}=ixD%-6rtS zg$M;>Js%a4KL=d8UpEI0XnMdkGWjPl9{v#J@qqmhj?efjzL6sw1Ovqi@?eI%%QoW! zy^wrQ2IU9^pal&{jJ<#p!`z8_1m|{sg7i)E6RWh1pQx}W2r5PbqTpf}ZNYb5_v8E-X$XiZ?P@h(-nlAQf*T=jH1CRPx3I;h@Y5!tE5lB9&$$ z$smqqpT7#{iC2veo9u&6%xtKMPt0_bpO`s9C>CRRfzkjO{qndkghSZX0I>_?d^dlD z6U2M?!`S_nMmNjc$CzofuPX%t%^9i%vlcq+VlsX>V1^lwh_4|uilbx{U&r|w!x7GG z5eo$D=*!#K^CDC?FiGYef*b8zDrC6Z5gQ)wkw__3$p&!P`r9WmLxXs9E=uhX8qc<-x2^KAr!7jJWvBZLHw>a=#g)BII&235!^;;7I&E z8-GXP7WL;o_qorbZI#B=h4_<5iHYNnKjFj^PdfSJQ%;RIjl6Xwo9NdATn()k6Ro$n zO>`IIt6M`@e<~FK?@mcF46Ek(bny4##i_bYi9=CJpz`CTWd*2H(coYt0#=7QZ^zDu z)~wR}8)l9nm8LbX zS$_i!CuE}3YJ^cydzF_3oDBFO2wCOVitw`A5l<4J!0&=jLn}pO0I^JvLYW{zRhJPq z2qTy9k#h(Vl3Bg{bpSm9C=H<>yj6{QQJfCKnO_a63=k93!I2q}Vyu%<;te)tyL1H# zDXnn&u&EvA_kQIF&zE_D*PtDDvH+Avqi@lpVp0izO;9uapTwN#do0fR4117R6us0= zi4Iz|g=8&8sxXGco{63AerkDRoTjcM%?pBDfqJkZLe?6DDq)?93iY!w(;B$zRVJg{2^ zxDT)lWs69#ZYp<%Z z&A}un>4QEyv#q0{K{SOR50OH}C5~8VFV?Ab7hh<_u#2EB2;l4$I)Ueh zki3Uw%|8r6C}E0_zjT+d>zTJtoenHUSPhM|xPcg85qAW4hwc>L4tpGorVxtw8)XyJ zk#$LS(S4iJc3TL%t8|Ey2yKd|BB!G@uS@{hUF^ztgCb&|h9 z-ag06%q3b8(C8vG?n}5U?_+F*n{hamW-^o2?O4SKu*N)L<{bo>3(EyL3`oG_wI`}N zV#EtutdS3jUt%r_0W+~L>Mgp(q0ROsIDfJCX*drJx}Kj%{}{trcS8+CC#TnshUW}P zfb!>nVJB^DsceIqESM2$GYm}vAkW?*+vfaL$jXggEKZhbh`15bpKsgL(Twgzo&EyQEpJQIpgwh9ZX8TPCT8RM^N zrY~PW#ydc(Iz(>p^Eg26jK1+f46z0^il1;2!Ax71^<%^xBZ%wGVQP{S_{lxd4?@r! z5F$dFj~j`a!_9j9P0fidjS})h=Yhcy6xoQ%v_IpCz3vK8*aXE-Gt5NazoCA_{3_A% z(FFO4$u3$hu0g5;1*Le&1L(wLY=}LXQ1^a35u03y8RAmQUJ3N7V6vx$fQ(!llu~T! zV0^gwk)7u}5U6CmVfB0Fm|NS9^Rz@%dJWnVl_MZwxL-h6zfpSdDN3Vi9}@14A;&pB zDN`!Uu`LQq#~fA1QlLGxNiXW0G)7UFbkHLg0RX9-xV|)LoyW|R#v(7S-H{L zmuxFiJ?2~t1RXTLD13!sL9)unJI9YE3gZvx!tv{O=T8@w#!u{v){Y*FCdI_g6r{s~ z;|7)@E|Wp4TH5kKZ1O=APl;^lc}irnS4vKa7~s79i@j*&F_BCBedRHcE&jfEOyr@* z^gN0NPM#_d_fEHZrP48xM+QN6W)A2p(w)xlphCyg@F(VB$+XBbB+88A$pM}lz$$g& z$omtbMB%j+j}t<$PZ-7@gS8jeMg{pv zxaDeTv;~&d2c24jViw>9WnVJc)=~IDITy{RN86{oc^liav>Yh^bVd)Xs8K6~El{%( ze~KoO-U2(DdRu9nMCf*o3MNuC>v{LH2bX!LcJ|;fbSlUIww(X!E#c%r-jIHuh2|-M z;N-kCe~9-q-@n3xiMSl8z`JI_v||MV!rB_gEBZmgZ_1(~*)Fb~V~GLy2riE}8ziBH zJ}h8aAxa5oFySpnhp7n@u2riTFRNQ_Z$WUP%nJpl84hxfamNcG@`ayvAlcDjwX=bl zkj)Ey0bSyE;R!}JF`h*26Fv~gpYQ-9E>#CWW9`D60wW2!vhtCTLhxHJq|GVM4j8;3T-X z?8|r{Usat@S{9ZFu(A^Y&b6PArunuVI0;#fgrs1VhynQMloJ9=Aj?TrqBZR}1(Opv z+u5)jQjD#EW6~0998<-fn8RvT9P@dd91~60Tq)*+c~)`Eb*15xCe3E}QVjGYXo)-W zY5oXEy}iIOtM7Ml#GCR#6glRXA1WR_m?tyxN*8*igku_7c+rczXeGzo=_lxn^sr|Vkbc&>iMv|V$v0^es6;x|>%5g3UU1HN*-;P~9>bc{CoEGnMW>;z|P%|le zPJno!xAc%od^8y9!3n!hv&uYRCG0-?iV}9lppIn-_pjF{`48Y92JHC<_;&~XlL_$Y zujqZNQmA0SX9f5-^HF$MatJB_1&kT`dH&gSw7@}OCoFV*7Qh?>Yhycay!AX-j$oL< zil~bSVpn7Ukezc~94EvZ+Ht&=%%4-Mx_3!(Cw!3TS*=(AKJe}u3G5D@UxwM58%%IB z9teWKSVGQNBO)hZu|nX(6{kucPL~(2d zBY+}dn)K8CxXh0;ELq4J6;Zjth3dXaIx9~IAV}Pi5THps1gJ*=YJM&d(T5+OH(Da^pnDcBy zp%f-h<-b7rHwwbzN=CirBiO8m_@^1SL|q;o#c`d(4ihoph$HA!hC>;DII;5_`jp4u zPo_5+2k+rc?!GQ-1=|1x+dU_vD8g$b0*gTez>an%2G0iY^&~J(hB%1x_yob7Hk40% zAtFu+wkF#Rx7>s-Y`dXe-Hvc@S(d>sgn!t83ASG3H7)5)cn z*d3!77S40v+U)@jPh_m=uC`SOR3{(7LN6WZ%BA?>885qlPV|MWz3fv)p3N>~ddL19Ik<$?gvra?$97sk! zz>$M)hmkKvVfA_1$WO)t+Iny(0%tKoD;)W-06dPIarFVzyE#IN$~roXXb=$rI{;Bc z5HUJ{u@Ypn~=%KDKrP6lqo7)qwNs#nOC8tS%JKjDp9wh~D9BqUWfib$j>KL8HNzQ5DkvJl@= zux^Q*-(9LBzE>-!Vr03ePkSv33)WEGz(fd5Wg;%$-0O90bP}c;nN9Va?)O^OlX_Kk z?%l@sIj?0pg$fM4Ydu)1<=VhK^~!_nbqb@i5w@lREiVdNO^ersAdwKT)$LfJL)Mxg z2{#8K%_3BKKz#|jc6(D4fJn%JnJTHra%z+qSEDmTeaSWh~j;<4RnTTU;DKITb64*#n_BgzO zf$MSSFW^3`${MuJpod0{XR3s^AX%6VUd|SV1vprGbN%vw*qJRe%SWYxsHa@+17N`x0zP@L3$4(KeaaIsp-kjlj$J z3Iawxk^pFRJGN`mg&Nuyi7HX@z~h#uFbrD^6gMe?Xb$<+G>{mHM29&^r$`s{GtlEI z+#f=g}3^ahoW1LLYMT$!X9C`n6G(h05C$&;Y_o7zF<_sDF=CnYt zw@HD5)M~UFaad=|*Ga8}3UzM0lmcz=iZfE6jb3&(6bR=-dZc;*oO)68ZDAi9d!*Xm z3aMU##l67yWLeAUT-LN>Lq-tD8VHv~MYym*`%Q|J;vTL73d1og1ZlkP9DagwfvhO% zSLnT=s8PCBMG@tNw=zh-+Jr-%sQ*Bv53k9efUuu>t$KgEvd3$~=na@my5eE`(CHGM zwz?f_7}VyD0B8i;GM#1A{?~ia>clLxT3g`V^05XeULF7MlV}%_A_8fl#1fbU)_{F2 zw%kEP{)F$s^#>^{+Vamiu zO^FEnP`1-6^GXWV%e=dy6jhZtRZ-`iM*?+5x}NU{$n)>#6KH%%Ml=p_43IVS56H~G z!csOBNvDF0Dwa}(QUA2iz(9k)g~uGD$q^;w|3pOn^N*4Lixw?HRuv{ydEtweAgjtt z&p0C{Re8lLU-jyx%&PJlWL0_H>z4r|RKjd6D4!CT4oGIZ=ndRO+x(QkbU6!qtYX`U zRT!24anYzM}3RoH?WTt<;XF}kEVuJ=K`LkIPG8B}o_F3~Ls?xxg} zXWGQ!zerz5{5PeHU@xLz^EwJP35mMUJ2Tk64ut@?(P)qniS9xI_qA+*_M!n&5|N5v z$7JDPFG`!=T54W0N6-c|K;wx7X+vrhP_Q|09`kiD z4pF2(+9vQVEID&}Kxzy*JsAG6G#m_%!eE!29*i4(H9CvJAjQyE;lUglm|`oOHaw6L zdWoDK(8fn$xWZgIMA+3F`YU8EnvmpIG_$;%56loWU*0ONE%s9qloo}sh_qGzLyU5o|VC$T^}m~EBE=Zg4Iq4PfO12;`s6I>LrD%Eg)T&gph z1Q$6c!|dZKA(rt~2H>b0yVwVC(o z>4FQQIA%Sm&Ahj5VvX0bp44Vu>?z&t>%ETkq&9Ocr*>bkibP49@>|0tv5X1b2F{z8zcmJ3ZYM=i3v0L$ zgmXa;pcjYdb;Jkb)Q8>Op+t{#ICvs{hske-uQSC_JwH^U_GkvC)0R!}@T4`02u0M867UdqMiABW6^K~Egg)uT6{ZYadOC)z2C(+OSzOUeYhtsKSYo}n z54eR470mt%$^$Q%1`{nnAQ2K%NCc4?r%pH#bMC^>Zc1p6#1F;Ga!;$Tu*)p$2r1CI z0W>~Iv3@zss{6jS6**^GJT=IGB2Bge$IgK@cJga)RSW^mAiMh*st_*WV4jN!G|M;J z>vjZ_5zJIzG=gkro#!xV+C>67zB+aUB(2Z}%{C09$$Z?{Hf#}xRS`gfFM3!NjE>n} z!eP}Hpx#338;4aj57U68XC!6iE?WfWWHZa#Kfl_h6huGGXCR8Ua?=!q8r5ldUWzB_b(kA~(}dw*7p^glG&X478DBK@g-=t4BtBO5?c{+(X_ zQ<^M|xfAl+-d^lP1x2Ti@A694NjMOuZWS+iy_dA+dHO5=(hrKwk0xWf!7EwwJj~{e zzT4m15rZS3niKu&k`@-c%Fv(mbE&poiT#36%mF4D!ej**eaGKO{KZIBNJU87<9%=U zzHL!>o;|<#hT?=$vHiVX$tFbiI0rYGO#OXc(%?llnt!S1#S-uLO4d9b^=y7g()>+c z(wgT%U7y_!e{Y97i1K8j^Kn3D;mG+C(2=44Ymq9QBEpCskzbhL^&k_%F%YBobm%bHiZ-A%s0#v z11KQ^34cSZ?Kn~1*J4kZohZMCqV7|VY=vn1!WuY>rdsH?KM`ytT$PtOFklsOt^TQS z`%E15#1eF2DmxRV!p&!aF|usY3BlMQ69Xq`(tzmHw+8W!cAku{q1y{iO^iX`kSqe4 z7*BVbOETh}4N^@-cnXvkSfL>+^yPzZMYvuA#xexyt-{ms^nRqx?KlGyu(8{CZBuQ0 z2$uw{85_=E^rMVDj3CzLz?)wQ+~ZQwJb*OW>&KC58u)<&6Gx#dCYe?#n?`s98zSSi z=vCx-JbaJzV~iNY;T+e{`XqYN1b7}xh2Vm2FUBL!~q3@9_DXbez-$1#udKVi z%Zsb12FRc+S~f-+>Z$mPrH{N6hOZ$0RxLdaM2X}sY<~c71_p2`u=@2?;{%C$wcW>I zs}DJRKvsXCV)ch)^_f+i2ZoS7Vm;P=NY@^n#I*+==-Lm++Al-}QVYq@(YGo`bZdW$ z>nu@Zk@S7Y2eVBXrNkUK?fgiofUCh*JR7uO&c74)EGW(EYM?aC=t9*wcw4D8mxR}5 z69Mp=O>F}4?{KNor;2MT^qvZFsJ`q>;DnCmId&R~ z9nd%jf?MW?*F*|(8>JZ>SeZ&wfbs@ULGyEn^ar1#5N2pDSVGa7Ia^3|!C-?aNHT)G2$k_1AUS_kNF;~BQNEV; z@LfzrV*GC-6{WYNAB5TvD*$fv4@Qn27dEpExh;I#=oxT4hf3zQ-6B2WNN zsvY!9G3|?DPCk8Wmvs*uDsJ#?-nuRMqLKW-MF_ktsEaaVNa)!i$477nc$ED(w#zTdr;;dBLfxxUkR zH86cBl$0;vrU9RqgnRY;NrF;}6h?t^0G2w6fK1#JOzA`qo$RnZ+34e9ZM7u7>eE3m zBU;}hbc3VO-zzcQT^PTF+3(4?Ny89O051T4xWMG=E_H{Y29Qw-vNmw0A=V-sK0(oa z*2cNi1bBQ0Gh+*5gMw*vv{i2-6nZ$rU6R0Qe3k5l0EG|?84stqT*^}XJTkphfs7)d^`nMwpXxWZ&dB*S^X zH)O-1-W-Ml#88Y6#FO}k!66YZj)GvR?xhzInzIpAMB`HY#18F~9eS#~>pZKgXe?FyRTM)B_Hn&C#cacoH5-pFf%f+8Y>Z=JP&qN{h5TO0# zP*H&hWT3ma#7b_2UJx)y7Oi>SML5OJ{qW#J7~K+t(J2V0EQaR^z4)|G^^tzrE9z)i zD>aZxNFb?;VOx&s9R_T8s#{QpkhHzW+kUhd6$`0_!F8Y(FT*4UM>LNn{0IG%{fxkX zqX)U~B$N`{2KzRT%y!NqdNnGD~VN~^>LJf>2G`OuVpf+PyYY^{=W(V zD52l2*J{v0EwgC6Pf@actD(ysxUg~^v4APRCEYiVX7f){e#-&vV~#!c`8=aNVL87g z_V<)i5&i2|Dl+`{#d@tGZdGjMFMq`=@rMZD-~R32!Qb!V?==hr#`TK$I~!Ll@`goT zu=t0#UNPLRc+Ow_r~mw4{?EVuzgGU&|Mq|X_rLku|8egB{D1z}s`K7@emlD$Tb-@R z)@JLn_1T7OD!VYdDBGBA$~I>gXP0DKvaQ*r*=5<~*%jH9*;U!L?CR{A>}}b#+1s=0 zvUg^<3y+4k(c+558hXE$X#vYWFHWIMADW*^EvoZXUrB>QOg zciFD&*6g-Iv{;eK!7kAbTMD z9RBT<8Hov&Zr8K=vd2`*HRY{Cgt%X$Bf%<^$aNR7%gj zD={DZoaI|nbvrBx`pb|h5=BsG(XqmVZFm5|JD_MyBLwN)fN3-z;4CeD3%#UR- zrG;_i-H}o*huh&^T^58Sc$)@n%mIR{q1dVC1(H&!xp5NQ;~*0CPAGg=mO~8JHR4 z@feEG*wbR_?C|qkVJN{p+~|PEmVWg{$A>7#0d2g{AO<&GQzl&ecq4; zjj+}?V@t8|Z%9KLH*z|P;CE>NUz0K#-NBjQcPOL5BW(LCv26_>ksVrG1g1m~)#6SH z#Sfzmn%(qT#xH5*Z2`v>ol(J-;UQK*A(}fhT1Rq8d{Lk1LWschkPU4cjt2qA*8GEL z9u>vaB-ae$fy@BKxE5AyuN2e8kbC9uAQS_@tkeTxtg;;T@Uv1?*W>FPEFQ2=U68Nv z$^G6KSHvpb8(Z@pJ|m6knn-Xn9+b!NX(^?vB9p>{P>Rc99o!u|z`8)5WLOUjdgFbh zv=Re+mkiZpf4ODyQ+(1VyXyNK`kkQ!sz|8v9nuvn!=S}_=7TJw!sID({PxULw-ERe zSqbIsG!*c0-|FU0`6Q=68l+??;Uz!v^6F3d1dE5lfrc$5<$+>OhYo01q-Ul#K1^G) zQdHw|99kpMwVv># z60XC2xF%d8QBi`TMCB3`G+flEC=o>?1x+m#Y_Yum|5|JB{ha+g&&-?U+mCOSp0SywyiIPK z-l#oS(Q|wKN>;kbdLBordYXY%L=I`s-)GNwO$vvlk7x*JfD}6PD|>GhiQ6m5t83_AIZODa~G&rdhX~pc2UJp?=;uS!u?E2XZRS;D*quu7+zet3g`4T3WP059^gMAU_0& zkn}dN)2p;o;N6C&j^uTSRgtM2CEl-?F5aiZ9o-!G)nNGK+(WljZ)uYQ$ZOXDueSsY zm@ne8CKO)+}vh zzNipF-IvPrrwHJMHesM%mE6L-F0iLUyI3tog+r|N307P0M)^tpIzKhaz;pHl%Xef( zDQ)k;D0SJTP%cZTC6wQp0p^^hDd%Fpi{oFLMi;n=p=0VzM+CP^W=}H}`&=crNrJkPXDWa>rfbp#vI7VBC1Ef5gg!(X% zbXGu}Dsd0-X(Nrg)P#{qeVGN$6j9+;ZX6MKUjS3N_i|Z$8GEi}=6!$M@ENIwJ@5V! zAzbDloQidC3vDXv{s(C@rN>Bnf3IR$CUH0tKoN(2g8iQ^txPQ#r^lc%XKxhYDeUL( z2#Zy;Y^(W1*FqV~$vSB}d#lVVhPm#=`PahiS*+$?12@TS|Cmkzd~l?!e?3&PV9LKj zCDMeJim zh0q=64zwrXO|r54OA_FJM-^TOG>kn`q$-q+&<1sfKeHD@e38svj;%#*B@bJamK5)j z;{VQeKE$r64lcwWL&tdy7&y?(^i)$2t84`}<((J>pm+@8wTIC*~^sAbN2$ zCdY}=MEbM5;`9NPaL*=vKyXU%7+*DhRE4=tUnljPZxgKFC0Ns8=&#W-lk#P<04#2` z2K3l#V1q9Q9NG@xZwpDJ>%=Dv&KmJHp4ItHoz_K+-jD!~(CS`(@(FaEWh+Tau3DP>Ofoz~zkbqIw9&yE{> zcd9{xAUt@S*gaLSi$^;nuTso|&k1cRe@LXw6c3j6>aIQGHvy>gLIY3fmiTZADu?@= zVTzamgqdNUpK0-wREvI`mvWpEs+z*S-${taxjr~PBjBy3pmXH^A@|zeP#3K|m z;**E$@E5*5VU_ThAh63~TW%ocm~n-%W6F_C z$Ceg)0%A6PT>#zY5xHA1W42~7k5{w1Bd0r$;thh!7Kb49boI;CQDm|PKNk1rt!(TF z?^LbUxA1`mbHX@FduydU&UneOM*3;1^^frvPBIF%fIZZJ>sLbsm!U^=#q9yU&=lAe z_((O^(05st2ObeuD6WTZ^8rIK;mAFM`T;|W7@>^-zUnHZrDoiWn7Dp4xJ#E^v|}{t z%)N(g^vh_}yY~Rh5{Ry3K3 zi*Ch==A=iq&bLCXi?o)8+NEk40|?N4C)BZ?c#f~hOPkZvlcARNlu2h|QMsX~r$QaW z0}t;AojDB@J;m62I@GeB%9dm8lhu^qgJx=}jxc{D+99YN=GFFS+0}-rZ3k z3weOQemlIG)eZn2e52y0hV<+u=x5hEbCjx%e{H9 zI4=&_MNFY14PRxKDsseny(_!DE9iM721zEXjg!SGD44Bn5maDAE*S{O4N%pBKAwEZ z`;?&4B(YCvq~RMoTUQkOjb?lzgXPgsZ7*Q?p=dlpeUoF^S9#`D!}9hBs!6f@;1ljF zF|qvC%mVR^6=QjG4wikj7|UyW5TDw%*N^RiQ_K_M)BNgst~Yb?4snge#QAuHwnIsr z?p8XGCh2qFgV3*dnnp4);I|O12=qC4O6`PHEJdlKu!>Vtpj9yrL)FOHs_y9Kb`4dT z2TnX5*mm3s!7ptx%m~^F6r7!UAqh{nG1(2IfOsBR;1H`>#;$h*FMLhSb90Yg{>qX} zbkl}lG6IsE0@VvT6qLTCV-aL@;E$iZYMPx9`i zYfE-3+l_Ui@H58V_VIq!ElZ0|e)J>}ClFXvhmdqNZ zj;UjW5{NO*urXq=D^TMU@ifVRXJrOV4FtH{zKkj=FZD}ap2a{2b||M5IIB3*+Bz~` zRAjIrs2U08!6SoN?sJhr{h|pO`&da_O;2RB`w6E`(Vj*Iqw?7%lYTUzjhaLg+8CLS z!{aHmwG(@cT_^Tl=dd>e*lRbUN#Su0(A7wx>*Z5CP@;YiVTitH6=5)IKx@e_Usn5A zsZG|Di~G-`xjn2kX~_Mx4bL7-MN(ylzyz5ki$7wa*N2*!R9?4qf*J04Dlag-*@aB6 zn9=Qs7@cG=aE$KQ%AgTF=Je%~Oe0SPTPA~=MU3r_M{-h#mvZogio5fD2=k?GiM(s| zK*(51bl~!aIjmK1GBQlr{veC6q*vCaGNPnobuzp{HhX<Sp@euVjJA(N;atH$B z`69TQ%df+v1Ozx<;Dm~IGIC*p;`;Thuq4oeX(vGQB(#_D8o3i>LClY(AKkyYt<(4>yX0%`KbBW)|r`p~VI1sssDZIwDeAi_{rCreX3 zR|tyhr;PUlO!$oPq)eN5PdlzLMo{YS-IvHeP;t z%6Vub2o~X*hOhT!y}7iFQFO_8bG3MH?3_?-msTsjd}m!K>#x2@)}eim!yFFu5UFL4mFEg9zKqlZTW!azdh9R!HsC7gM=l6~ZG^ z#eWsyB9c7QnF7gJ!#B54^?uEjiPBu}AR>AMX+BVy8pa>6vjtp4i=xf8wV@^3Y~%Sh z9=F>*SFYECTu^NrR#H?TSk-1eZma zi6G=6KJi9U(c-fA_eMaS07MQr=zV9#t77md z7Xc4BvE)9=NA&EMyOvw75>5|8wUMz0F*Er#bHyazR51_!ym5mG>9jTSeL=5y{zF@PA8T}wB0O=!yI zlFBX{iYvz z>sw@GDDbIJzkF4HZpJ zFVB!{u*}s5bQVah-O<39rJ+9Hr4~%KdKHAKsTpQR`3achOt*3Hw8VfI!v zd>2TVuA_s_e0K`Z}o}E*b17TRYV_jGd$&R~CGY`G43sp^vXSN5k zWJ0kELa|3Q^#NCy(=NGSJ=>IY4PNP@4Wn9?+Ay}G=4tYx(C{j47`r3|u#Sharq-*b zTZ__#TjxrCNi#Kpb$kOI$PL;(1xZbGcs#BQk^RYcj2OqYyNUyUKFF zjrEYx4v&)Weguh7>U_{qIH;RKb2ccdoDd?>pf-kbHYh9C(x6C*P+BvC+LUR%y=hRa zhy0p;P(uBCk#9U7Ew5(2ar3{pjRca@{75YsY53YP-#9wOz`zp9!LXLqG2xUI8Hrld z=e5rCUdjXBQ+RwFairnP|GS3uOu8F(cE_|VQn5*KrzKdP-=@GMVVDDzzP$U<8rN{} zxPj7==X2TD{rzZM+Y`W4DY@U=F$t>%aeKzE``PnZCj%aRDV7;{RA*9X=aZ8&6@ zPPSa}{ddZ;b2kve>-(cl|AgKg#s<=;sJC$wK2a3uKyUYb>;7WGdo) zQ!>VU2o56o0j;)+`is6(6EZC-&JIo4F?%WkjvK4pZ@48?c!RUcvTCM6)5Sh9GSTD$ z90pPV=AmhAfXC28#beLVbWUi?&=mY+50>FdzNJVc|>srL>)}LPCn4WWb;PP-+$y9(Yama1`r%chYQ1r*@ z+)?k01kV#CHQABm>J}Rrh)T9)n>i=bjLI_K46N#)y-Va}##M7(XyZo}S(@$elCjoo z*&QV`1MJ@qLuj7`)bI>bw>~uW&9q0-L+)$F2KPmon$9ViMe}$l>z$HV)H&L>cq0Eb z$f4?RL>e6><@3d4aE_Z%=e+P7ZeHI6a!Alo&+Fc7%*m(PO*R&TdfIiaCt-jWxf!&{ z7H4_QcwHFCNW&L=Lg#{1k(%n+#Ku;KjZhJHce@_G9{k(jI;`Ert^6)b2}HZN>$!)9 zZ4n~&DMM^%3O95|O~qoIG}p)4+p>V1m#Iymi%i6v53E3pWf9K0;F;+;dZaZc&$rIR zv4y&FGJgM6a<;(^N2Ijnf38eprDF1Q{$vxXW0IA6rNc*hrRwC#*ajjgy`tf3n3NXL zMKr{`Y%CQ0#~`{KreGA77=Oe0lA8v^f(Pb9Q+fa(UJ&PoX1}k^>KtPIa|egMMB0C_ zoj4Crp4@&|&OEphwkwfSLTBpVflc$vq?x0tLR1$fyQ+O6LNR%Yg(Bfwvi-Y~LD{h} za&rA1$ab{h+jzPpoLdQRc4l&XIh!0SH&3uSn-rSnces&QVB1jd`@4QvCbbf{yh#Q@ zV%e^4SmK9o(g02=vFxw_BN)zV+~CG*FmOSjoN(vQ2_XEA{HxGeEF@74!FsuOl+3AU zHxTI7Jy!HB}D4!cQI&8sJCd2 zWN@ZYWeyH?9pPxx4rpcO-Cz|Edd3lOPNvt6CPx74i37pB8>E@>2b*LDVN|y7?Wpyk z)eD`lH@@W7L(Yz@Qu|9&vX~xG2GsB^M*nRQ`b7(Hf&u&@qMVV2uVCnB1z`u60F!He zfGa}jAL#%&yJ!{0t_I>UD8&pu>Isd;W`T!Tu#HLOSbWeIXC7S@n*Y4|3@~?bmQ`BL z!e`hmPVmfiYDHJybLphqU6>pLj)cE$E(pJn*F2EMeo#X}{IiI4NBT5Siczmag|FdZ z1zz0NvqdJ)g|{ETdd4+5?4aP1qzNLj5|bvc&YNW)jTMX7L78}t$Ep619AW2)UU zxw5K?XLd^jqVP1GSzRnKCqSY`SH;X^(}AOD91Z1c8d*;GU$Sjpygrao(Y3l>=S@{* z-ru=vo=9P8Wuho2&)=73S4lZO@)_FthDvlLw3>*FUGo4&o&}`L>OCH#x>m4GDzMd9 z$McG_8h1Nj8wzY{mb~owQV{aKsdia$EL|XCwz`J%C zgrd7uC=(18<^RD(;IJx;=s&Acr9D?(#wF!PBW#-^0-+TT>E38aO}NY(lCNMxa&Vf{ z4}2iP!iq+Il|JyLjXih0n*jdV!w=W5=N?RX6Fhq-ij9ZYCGiCb7N8iuS}54oDhhms z>7yXO3Q@56wSa<$T1A1cFntu{S0M_vycSTfy;T(W3e!hHeifo%>uUi8kGF~fUt#(v z$ge^aYym6{2A0YXJqjT1A1cFntu{S0M^sd@Z2h*;Y~DD@-2+`BjL5 z-FpiK*EcKsuo^_wH>Xytu%6Y}?S|bniaw{dXZ>KKg;l7&cVR5!J?`5?&lzc5)>|aw zEdu#`>p&J&383v2$X;w6vZ5*uvT>XS5BmQe~h3^i8A1hWa^fu;zP^qknd&h0rgK%x-KhyBfyDSOew2j9^zMyPwsa2p3E+?4Iz- zO*wZ`b5Hs-*j_gLaXX=p8nT0hY_U&b6tNpK6Mi5&UATCI9V<(A{%~gGu|7LM_fd7F z?VonI(zWXLju=ZQ(U07V^1cOal$M|NWF#Wbw9OFeiCAJ%CZIV8Zck%MTu}l$8NhFPbba6!3O|tVs zx|tS7?_U@ObG>?s85S-Ma-j*qnA_u4@Z7J=eRFRB7z`UPa}RYv^H^oWK8#hpS2#l? zyQP>E7mmgG0iTnB%C5>B3{%dN&PD5THZpsP>WVN3n-STW!2p0MT>mE!F9Pla3QX^! z1UvO}c#fKh<$0_KI}N-Rk^TBg?fk(xl8e8Hbp!>&Guf7Wu_On*dD5RZDeJW0bakzr z$5MHvDXtCc#~<11%R5b^b0u*LoFdI`6&#k=g%LF!P}b?wK!NPJgLB;KwmKoaqg6#> zooi|O+D=gwQV_MB%?L*U0mU1BtwMHD>yQ;yagc4zhwQdrJ%b;2gPk^m_cdOV4BkWc z8fWkx&i^kkct4o`lNr1p#N-VAMP-oW@MAc<`kLnOen>5F__)rVbNDMAYneWWFRJ4B z=$3pw+A4>iXdSYmDh{%3dk3-`T8FHtii2!jz7e~l+3=T`ysnab%Cfgvup7D2L73i+ zoHXFYRWLHp-AHV_G9(duZ^_1;nIO7V4d0E$b*W`q6Fm#D4ixh_!6mXOzo#R+%>g>y zk@*TmBb&$@nXmPXZbXNX9b1`VWPjDP5e@q;#7Je`Nt@kpik2VD{4L)@44|l>L})q( z1p=j7T~&8X)nOdRHQFeu;%Ikc{;ImPnRci2tZiu>vZ5*uGMIijDBDxgyW0UcUDERv zib${VXwIVYwd??WAU&LIpL|hGG^1SD1*mT_PO){eK_y$ilTIi?wALbP9f1t4g+?my zrD)l=v^ef{El;vI)~#M&W_pXuqjs!t}YWK`O!+opyZv+0@ z;NEfkKGgaEimEthC-%dA>2VykTD@zwz=s^S2{8p&Zh*R@EDJ6Z>< zsEPw@w)-;ColkGA?uI=QI!B%?i9C*z8|y>Sy2@S z*$$7soqGv=yIKdbsEPw}XFgB4t;H4cZ0nE}RdJ9FxG#gt+_y##VjgqWbE{;yyLD)b zsyNViv}-Rw_I&G*6;*MNjpf@jt>Wy()*&mZ;vjo5A7|fhk@j9{9kQY-4ze-758UwI zUi8Zu^Q?+QpQp_2-Tv#2@O4-BGJJ9gqb2RDajhLwpG5m|$CGk<+oL$z6|UE`lI>z) z^MX!&g(f9CH;&d9{fy?jP|aGiA~q?ISu<-7H0!avkvJPXY1}ilX6;*;j%K|F5S}wB zgcA==4WV!0Rf2Hcq!4a?Y-$L73$GG{7flM`bnGYJ!m9+~_@oeS|IySq^es#W!hb7g zBF@DQ#i0gRqWo~#75J^LoD5bNpV1cVNW)iXTK(`_#is>vUeUGvPw6Q7QYOlrCpcZ8 zxy#|G*O|bvWwGW(=53_GOxs^K;b2R1J>?ZZ7~F67K9b`p@U`v>PAWUoG{4lv3)l4E zX%V#jDNhw_HnhvIh3cTAbqC7;^b+Yihe0d>*Fq08IS8B975jksGctBO$jojWRkp`A3B`S3<7!_ctAUm4si(B zI`mD+VvlBWU1;hdok^ZU5)xo_G}U|~g*6rik3*M^R_&&Qut9V4>t9j4P z|9Y(8;~0XG?B{cOA1lB2m6#-+LBj=Ni1Wbg@rK&|YW-b!Heaepk;CPu^?;@C1B(XP zEo+?~h*TSi=w@xhk7%pX%~7anX@)%gXr*1HqEsGJ^>S|LfWir!q!SfnEb zMS5p7$Nv@%l^90+&76wjia!tsWoT=wzYXOEriqaY0<8CGSP^TsfRReFkId&A(dl6V z>`dOe%}A$1<>x+r?&R{0=}gn50jSR_0_U~{)U=4Mj@m}q5|E3-xs~{*|=|aCL^m4!U!UVFdj%#Veq&9|D zO)xW|=Bp@}Zw?)rU}hRym)X0&6~TN9?sL_9IT4Is>^wF`ycpAs)-5y{$ zD5Wk!A#v$Tn15H2*)u@0t^QX0)Z7NA6VPGi;MNtgNak3>0iBKn-HD|%)G??gcZ6O| zOJ$QzJGEX^RdWgPsMqC-D_zBdbJ`-&erM>!M7tgeKfR_o1WU_#H8IkC`peIm0m%ob zQYX_$NL_w0=I##7+ZcT27wTsssx*9*7!dizc+BI0Kj>i`tqjeY%^R8?DKAVy0!3>7 zQtDHNQEQoQ(YzrWYEoXZ*^$O(rzi#7u;>J{FE@u6uPQ3Ldmb`X7|p#nub=k;xcFGj zdjv2tTIuz@^Y!3+<9NKrN$f6sf zFg)dXOlfX{226b_2V7mVm}r={Tedlg-E?UJtf2@jBwKJ`eL+=5$&|nm3^WhOH1@eL_Tp3#FHd`ztxm5_Qh;o7<{k>yr7?t^C5&GB+}{Oukzun&&~W=O>wGr9(f@vA7v++?$U8nB|<-VIy){ z^!TaO)4Bmg9~e4crn^c@xmY}`41InqjVIt7OF$J4$(mQuIN9liL33HrIRz=N;zGzBgR5nZo2+PTbC@*F zi%!6*DLP&(LzJF?Kk{p=f~yo_L6TFsnoTe^7CKp>DkuF$;HHv1ZI`Y@nW-9*UpFYh zPsSgeAIG66zWsECwXi0%{Z(ySH4iYfV=FQ(H6(0)lXVAHmDAms)?H}z?9l2;ZMD-- z8KGcpC}{X&S{uh8kFC5(lhF)hi2?4O=k9Sij4`+b2f?TlrF>l;yOuat)7|`Jg>z)F z*6X8M>jFTTbh~@7ne&jNj;sq=r)PH5|474Ec`isqb*^Fhy0mza@A#&^LKZ?P{mTAf zO%0du5xvUa9njr_53UX1xwu(<`{MJu*S(&f{ob(u0kaRJ^XkoSKKS56YPb+|-l2zK zb_+aJ+apxbCsE%PJXH%L(iv&^8b&&-0aF1>Zy06kCu0d8PR%lVCTV4+?%`Tayj-}1 zQJh%fYho5L`Z&t-ON)`3>(|imv3Nv32j~>(w*7kDmg_u9w*27YIK%MSq5H>`7t+_k z_CS)(M)ll#q0G4#!iyq`SsNM~(OADZ0-Bn;^uY_`sne6xZZGi&;5id?HQ#209j!F(-mxjhHuNd#W5hX;%#0zWuyu(by znKHPd4QE{9qSm5!u(V|BTFFhH<`b8P_CKchV~Y-0$NGmetpAEo&*<-<^od9z9v)tU z2c>VfFhP)y07}^OEAMv!cwP1rQ`?t%gT+3Z6^7Lmi0Yy+>m{X=D}9PWr)j$sf}Ry# z6F^<5L!>W8nvSSoB9t7}k_YHb4LK8YLnvz#Lw}0{H(ISXhr)&}T-HM=iTxlhR{AgH zLP{>Psw}g&vj0W62m5}Srb_hZs1gjvQ6xG6aZwen*46RBUu3aEsvm%guu|!#<#~7~;G-Ft-0^%`lQ|@!zLUCndd3G@=LSra_dC6L@WsPC z0J_xuDsqnr5z7<_4sJOpPX;eM9DeakDuAXb8vqxATQ{0H$Qd_t%$@6IP8>g+KyU`k zE8W2|duq4~9_odL`}ytDFitRsvrGJ_?M??S?la&uvTDBH(qJF6PLmoF*Xp&WxWj8vVmP|hZ@Oo%!Mwh1wmir8>cVUEQ!WK7mq=SO-NCmUfrA-0{6}8Fc*Y@nC#RI zgP~}^7lv}4Qd4XqPuDrXxQ5DDOac`gYUy;^`TK!NNJJpenj(W^uqd7fQ0(=ZS}YAwP(4c^i4p zA3Fx!&a_K=LdOn(|NQ&PFn|f%P!T!o@BMO)2|6eE@%{-oDBz)ZqXgI-jL#u8e){L& zGZ)SZd=5M8u)_xij*t)IZWwsO$QuOR9DD3>$DeS*(9ntRc;`v)I{B1SP8qJ(>&dC_ zw$HE0=huH@!F%5GUVPs7Uw-qqetY3*r=9jY?|=UXKJb6x^Sd8hgwOB&-tWujzy84= z{?UJ1{KtRtryu&zhyLup|M`*+fB3_H@t6POum1Y~Ui$z14L*PSw}1OTKk|{k`+rYw z{`{}M|A&7-SossbRld4>O?jexZTY(L_2nDNHjQt0xmRXa#Ds5V@%qNHdR(8S#}#@5q6;dFF1V5FX(QGm7s}=`Euc&I2%SJL zd@SXjWlYRXd^*Oba7$Vue{3uon++@Qo*(qq2l4`L1V6$gf^!RN}P+ zk=-X%Ey18eJnT){ti(0t-UJ?1D}~UfgY3oCc+p2q#@?j_2{a)QDwHBQ9*1)q9#iIV zxQbw;T@H}!;TANYFzf$J8efS}bOpg4<5Ow`6>(iplxr1<-5?GxXMuGrp#MiP@laES z>-Yrjx>vL>2!P(E-hlD4`EkJ$o3-qVLRk|6C=1T$@9X3M&4_CQRFF-)fFX0?0xnf{ zWE9$wv1BhL!|le|veM_)a-b0q*7YQ;OEG-BgfN^_ohu}GEgxT^kD2#;E8&to-zpS_ zc6g-Pg=`oIb1{om@fInn$YUP)u%CGk2v05lNr4>A71q2sJ2g^tMVKR2=ke1EqK)@i2ew7`rWKp8J zZw}+7{qq&lM6GMtoHpjy+EDADo`AnBTN6^QVFKw9+sc_F=}DR@rVeYq`~w$}?*MM? z@{fnv>nK{!P~(>}6oz7;Mt{4hR2`A3;RX;}y_)VMcl8R$3+Hr1i|CO|cMTx3gH$)C z^Y8n+$~D+un%?TWg!xP$s$;`3t>qx*YnJ+)pT0V%p1MZ1BcIX%fK z@Nc7}Aog2q<_x^+k!Q7D$yp{(mw{W9Km<>+$lv#(YfN4jTF10?jU^?4`Tr91%{~!g(plCP|Ch858X)KY9{V_5I_#={pFjSNivh$h zj1+t$!3x0lx@S&L1zg>#%!yT;QwhY4@7Tcfn~SD#caY>3(P@MnpK?e2{L(SBnJ_dw zYLv;+JLeFpbZ`vP z$@?ch`%8NyOD=h_QBZ(EPYipI|Rzp~Ds zv&ze-FH1VD&M&mi6|D2;s57x8RYwXVB)BWNwEk~pe}NTRhY9b zP)~_;j>(%3ds-%4rV_s}l`H0;>+)!ScNqjVru|;Z20uicCIidxm^tMj+U9geQ@HZ1 zSXz7tOG4IG&)@gsQZkHI*VYBZ|DU48ZdqHs%jV3`wKY?o9NoW9ZDwsB8I2VE6BM1n zwKcP8ZJozv{uu9O>e|{z)|Nb7EYsOjzmP@#s25#hZLvQtTCOd^qH7D!W^!%eFTrtZ zi-6C@lOw82(6_Cvp0c+1hg@6YW$ierbSxH9*SpHc*Lt|pE@qE^Al-M?FXfNlk5*c( zGg@hv1jN}&V->&Ba4a%+rO6@5oRx;1v|}NI%Ey$C$HZ5-Qr)`i0r$e|t>rnrLebX{ zzD1mfXf7`cAlY(UMC{EkeaJ~+*8Cu9mTNflIzdT_VI7S>IBANN&8LpF)SQ_niYg4x zD?{r)SC94Y$_gTLAh44RYJTZx4oJs_qQm`yhKVw#Lzn3d1nmRZi39PUPTKF`QthbU z$mhQUPTb$2v)4h20H(UoMkmVkV*TPxZ~bnT{Ox$!WYq`FQ`b(4Vcr%-^|UffHsQ3+ zj6%056gL#3IHYTt#HfE4<1eU?UJTM9g|gfUA~UE;$sGjsw=fTsnQn6A;ctQlq4U%~ z$rA75z^MO#8P8EP-O1m0t+w%ye=h4(Be8m3(_R;y#yLs7)R8;0c-a29Ok=$#9sgFR3Ytj zBGGvI@q3GI^2!u@f@e?kPq;Zz`Z8)`j)!Yj3 z+#mY+qTXeBGRUa0203ZOGLrg2u$XF+$^tOlio_K^%+5|Cxh7@d)?em>cWUoUQVPQg znO${nL*Bi^y{q8`@^_T#(#8%cZW+d23{x)E_ zsd6hVtAbn6bh9{@gU_r{`Z@J&O>elvNW=pC8b^Y|IvE}J(a@_+%kfPru2jS^9;m&^ zcRvE91+ZXcSTMvd*enk5=x~>$rX`FvjBrQjYm<)fXld;jv<5zjTqlrs!k zIcZg#$ju8qy?%chD%(1Lt8{XDiV(3jnhEiAn-Q)kp+lKt9C6Cf;q#$+gYC#BI+TiU zX{JM68_n*b^QaFZ@Tb{B@=MML0(lBOBvJrjJ;}IuNaX)m@3kspNqWo4`pYj55rfjl zTt?F*>)dnD?+SK32W@~&;J>!|7$4Mtr7%^iM!Xuju~T?0-y37{E)w8T#Hk1+1Y3g6 z#a&>48l~+py@;=B2Gp z^-%HLQ1MnB7Ed1q-Zkz#bL)r_9xKAj@v=aHKS%JwQIWix%V&U%ZsZO(lqusf7qgP2 zFQ*Kal|q})eV6T;=-#>u0zhLb1r9)yA`4+ihEZd zDD@)4egs|1qM6P@GU&rC30QY6!wUsHC1#a z?#?XOvUb|AcCaH|xJ+J*AZIjG-9esAeDie?>P8yAhVARKaoBiH6-LNk7}sbheU4gp zHZBp}Fh^!^c&3+XOj6z%ldOz$t)E5x{c5G*2WMWaMC7Jb&NS$%zd z*zDCn^aCXny%>ovMMz}Cay@lj%c96Q7-{$#wpv(&CNs42jODT-uQZ(|v?oyuo|Kpm zaVJtVJiHZF#Qn-QgH>n+$BGy^g23Z5rIiNQ3|WycVyuX}e^9wRE8>>Q>+lSxxv8oO z3#E31u5?EeD&qiuE-@pVVH2V#(KAvN*2ZJcImC5I7^xALo{t7w!)S3HN<CI(ZC6Oc*Yhof%|V1m*=+#HWG%r0RC3)t8}lZYQk8HH%Hj?vh$X3v}M{ zu7*){@1A|Y$2wo77#?u8KN5})H3=WYzR9Pv6Dkuw&?$On$cI-^fypV4+h0Ei*r6N7 zv*2^cAugz8u72jtoAeY;<2tJIxYo?1pq#=PGRHXABQw8nZfn3bjBH0}B}|t*le02h zGe~xow2jWOd@)j|19f0wgKunJoz}Gb72n?MSlRGk+^lBDJnbp=D6S3#jVR^{L_Alq zAj5>$!+xdDdEMZbQBA@A`qVT4~=>Nd*5K zp(bzu&)5NQCSKasn>T-=T+@_=5J0{oqagolR`%Ox%-EtBls#mt$890SRr` z=|$yE!6%cD^t(AAzPse)5*vY!nKMEiw1yI3fny|iZ2fC%Xci!qlI6=}KTTpCk}7pn zHcGjJL+5mZ4vpy)ChaO&l6GVXfMXpprn&*KFu)d0Y#v@`R5}mNU{uk{y)J`x^$ZLH z-5*H$xEW2yC7`ZgfN~UKKpJyyl&Zu?@HR9>8rWHCa{OEcmF1Su<9#|Ktn4?e0JB#{ zffHsa+cc+*Dm#yy$Yp4ocn1~ibVOfUS3CLJBGL2GgSClAfsB+60a6vzDT3_0FVySR z`w{^CSOCFnI_8&7lakAqNlC%1)K$z@QtPeC^@fJ4!cD%z?hxQAOE8VsZ)ZkL z&LH$g3RhzCbS?|U91b}PMFr^YH$i~z^C}6@%5bayAab{qRpz$gV=@;Kx3jB@ehNL` ziX*NFB^9%RmIY6`GL&?`{b*shj|P;=saG6)#nD$tV18<~T0cLCES)Pd_;7xZ&CP#~ zJo3o5%I9tJVW8?ty<3m{y z3G_Nj*Vk!GCJAK1`DH&<#`F(k`sE>LFfG1K=(nSYY{ezdT$*;vy+N2{;A<-yzFQOE z*nwli@B%ll*;S#WF|&7BLC{xLgpcJFPl@mehM0O8zR@vn^4@$QezrB3U5zI-VPYlM zpO+v(IVS?)XgR4QN-VxZxP$*<_40J9Z5)b!J8Kl4n;FbI-MWHHO4y{B5`^AKkvwnS z`p}N~Ti%g1E20Aj%++=x=Y-6-_&P`(kg4dh4WZP*TJRExVPSYu2E~vnxwDZu33GNK z0*zc1p#HQPL##r4`j$j1Ln0$poY*w+Lrn_Oh71}y12h^aOzqx|J9F76^b;^P6&6Qe zoVq&+ZfyG`c}UG%@_17K?=uP>cPayTW>IMf8O;|t5<}GvF#)wUYIe&3W|az*#4L#d z#Xu)0P~CtJF&zkZI!MD3pg}=5qiO{?&G3&d{MTJS3D6&nNph8AR)q0rIkyYN>s~{Z7U=@j41#*`H;-2~g1nmfjT}6Q?FoZcRPqqfs z+M0h08sbpq^k9@caNNsbQl&hiw@#}LW(c6eIQdsK5GoZkKw>T6!A$Fi6P%u9h$(_# z?VrKuH7F`GL{a$$;f2itlq4Ef`*l8{l>%j)P{?oEA8n||vOTCHa} zBD{F4ab~T3&aB!#B61lbHcP(E#CY~WWXMcJiS#m%WCok%sOI$6?`LlaA(4P2C`B#? zq)Wqo5vZ}4z-#AF)}ba55^B!Skr?=8y7LTT4ew@%EdQQ1i-?g3_fKZ9gF3y$eLseX zCYVmG4ZpK`(o>nLpb1%q89nI-MMb@y)Wn+Q1an4F`k^(FWzCvRASg-_<7~b%$3CL< zxs=)^)u>J`;sM5)(bI-|% zHA(z_z702Uzn=sQ{iI8b#)H@#wpsZL}f(OpsK@x?jT7$CN|DN$Z2 zlRzLX+DS;QVf9T%IHsxFICMQg7U=a zn$V7kQ+hDDvm33YwV|MOxZjj=SK>u! z8aaC!2RXxrhbg1DZPxn@vl~e=Y9k86A!3nYHX7&UnQ_8hW=dBph`lNNW@>uc`kN}E=eJE*l@Zepwx+Tumnz#5L(LD03?a>0J7m^WLEXf z0diZ_x~LaNBfKS)vk_W3G>Zuo7c%EpdJ!FrQeHZz170^^@LZL2$|PARw-X8C$0Y|i z9e%dS)%1@BFicJ7sF6}R^uV9i(LaoumTR0bm!c$^lQwHiM4t$K*^niql7dH#$jzw( zPwR3HJYh7=dxDLx%!|y9J3}AYJ;67=iZ0vA@ZS0dOZ294sf7K$ChxD&dC7p8D=z`}N8zKg=~n=}Ueui%db|D;pjdqw)7>!>31Ua&;(Z1iC;M12{(35M7g3+IS+@491c& zM8~E!MAuq_S#9Sx0EV|b#gl`^tq(!XN?VtB?7hr_OWF+BG>RO`qY#IX&uzjo_6Hh& zod_Yvz-AM|DTo}+{*3z#D@&?tGlg$>ziaNi=vO8UkBzUBo zz07na!W5#{uLEx8_LQ4h{EcpJY!Q9bb)H^Jbf%&iy*dD8GkU6)6U8pq@jOo&3yxv}6%OJmqrzOz7U0D=!RC(n-<0$)bE@wbN3BS=w%vBE9+&oC^aRhYM%~c7nuc z1a^uM_<5@Hw5Mgygd=-NA)MIN~JdoV>X} zEx3~f7-YAw)+Gz>%j}CbcYMO^!7y?|JbLe>y3*fO7oYc$_$_*g(PBnXdpOess^nW} zUo9%?Ewm<{C5lhRLVLs-$?_~1^h)(ANx6>`D99BqWb&u%20200X&-*EG}5N@PfAqftxKgEvc$|KBq?62wn^YA-wW;jtV>KqL>McU=#Wsq|LMVC6uij1O~7CmP~+3nG^P44h*q_@iPoXacGu4`P#_|iyIn*p<27VjU(jasjnc5Czo$2(aQFNP-UkeJ+!0R4P}#aqJ9kaSAS`wA-Nvatv&P3Hvu zLE*nK(tjD6HKfDF7R3StM>+y#WyCAlCS!8w_$#TeYBis|p|>vY)M}OP2EY+zTPamc zvh9hkPk?M0+M?uYT+6mJx<-@VCcTrfnZ4THIY zZR2}856h%P1MEG`<{$TYNv2P@9;Htp8)t(cjirO`UPY9ci?ZPdz6ZC9B{K^Mxhynj zq0|if?4V1V$=w|}#4eYsLp2*a%qE_zhMSnAQ0pKlmvb11d`UXt<}!CVX0(10pVM(* zo}YZsZVY`GXd#rcF>|j)>{W&~X zL#81ek0#71$-tu$4I4f~3}4Je8FLJGVsme)Kq>ZyfSGh}csrXbN&6n6=6_P@y{U#x z^Cp~-v}$ZInpuuskUJNr{9<=C^E}neNrHY@hg}XvdiFUPd@|eu<@8rMXLECDVbhm!-*o;nvXzS+%F z0Gy{|#|8{1IPoe291@%i*mr=L(Fv{y02!&h-nhAPVn!kg=S+5P(L)u1V_Y5T+F+E0 z3PLhHT@y-MPy03v9pcOn9YGr+Lgt`%A0YzTrM!zU02+4~n2m{W{zy3}Af_CLBl~2EpF5f%GWE=52-ykzc&FLPaRW+&@UO zjpdSj${K;r=n?(M2^S641o_~@sC4^4&WWItAQJQ7nfFezk-f=2k~!T6arQe`9+Q$W zc4UBw$s{Y;+ZZZ>U=ijeJMK8-CG+7SCowk}y?5`XL#8-PWL+de>2ykmiDUvdMjF0~ z@f%jL%`jmP4ZA zbQSi}Geb~Lt964^yA1+ROE+M||LHElY7hzhGN*C?Jqjlbaomi%q1_8EumXbqr4T{rTM>jt!Bj9bEaMbo0Xt>R59scE zHz?Hf5{E2KIY9(pOc$#oJ`B8dOyx!U>s;x)D5B@TVa4>z>bP+VBfGIQzpBN>?S_XoaReMNC`1GpG>i!kp8)e zCts+_oK$)rVScy(lv65KvrBWl@N8CX6(E1tT0*zCl+S!BiXoblbe7EOPnE5>F{{O0 zNHH>fi>^KDUpCO8jHq9q87Sz6PC~R|bK%xxNi`Ls+^a4Xka{!#CL*i4$ z9k;t7F$%^GJ{B~FA+Z(`5up~;8s8#^#5dG?s8YV6zk!TQjvJC^P`GDHOO&&%jEOpX97-)1Hud z5iqxhS~di3sHM>Ou~5L8g%ks3cD%~Ir)lkw-%wf2pG`DCV+h?r#a zq{(^i%+wOsWb&17rTf|^>g%pdErY?0h|12J?56^f%?fa?glk*DdRAF3cd)uz4uzEe}Q3L*$wo)lH@M{>{O}| z2=VXW8FLo~!}KnQ?8gUth1eksAKfUFxELNb*VE?kWfiF*_c}aU7MC}osLu!niQ=R0 z`+*J%Tcenf7!^LV*oy(!2Zg-=dKsy;fkDsF@AXUz=B&rYU1TP>VK|9TjKF!xYnnk3yZ;C>I#* zxz=9R!$)Xk71)Yk+ddLshXr>y;pBFf__O)6<$N!P09j%MXa`OEZMw_GZ9;m}s@Z%m z5+>;Ky;R{au4=v)Hp;L$%jJDg{bT4m%lPG-Eer=72qUT;%3A zxjCl}pp}WMfJaqqOY}GZ4ugWOZw6vlxs6t*vw{0)Vhpwde4A|B5i4y>7KUv+-R5G1 z4owOA;KVo`T*hy*kw*(#5@sNQ2_~GIx3I%yCyTFOOXT6?p3L}E;j5vE(`s$Yac&Zs z*8Ab&(@}VZPw;P0-}^jU#>{k3v020Bb5RmNnAGH~^pe2^xiR;%@g zkH$Li7B*bK1~eAfTiYT=$GG$Q)^N~hq0!2-+!3MY2di))@SJ99#)%m5Cmx_F4iv3u z_)d+jnZsv6MEk2kLE~13N&gFSxz$)+=@hqGnC4b6ho)p#XIq0=c7=VufQFS`uo`3Z zVSczX(&e>apnNK=g*l}-kZgS4xtW1rkIx1Ik}le!$mFP9AKJ0gqI1(eVg=j0KQ5M! z?l%dJXD>s|ZfvmubgMvyJ7}O(Zl3uNKett|Kb!C z+*q%5x)c=%f)@}F1P}Bwx}v*&A7O&5Zbu9Vk3Pj=IiCwS3hISynV=}MZ&>;b#;w1u zS7KBVk=f0`VUq*H5*IMDR!{`TaS;z>TE{7BL_(Y2r0zDIeF$sitD&TF<@fqPO*0r6K+m!4S7n+C-NXV>Zh;FAkU;SL@ zICH-Gs@J|%^iZTM{EDn155``zihPTKZGjw$tfHLKDLtcgt4Q0+su}-j6{#lyGZ8W0 z8yoQ)fTvDr6=mx{nIhYPsqpGsMYOOWg)>$W`X~Q}RfKP^$SR7*m$izp(Xppy(F^~- zGK;oHobErwEb^UBWfu8@(=v;4N~hS>9+*YiV3uFK+GbHakUcevd^`Wgm_;7q*PvPC zVY~M~&7vZ+$m1yJ7kkkxid*0NW)TvTd9#S}ax$|hhDOXHR(h4qBH!;TH;a5z`DT$| zW4dM$M?RTZlC zDda%%{IVWDLGRilzpQV^6p%xw<(CzwG5xZ|$@yeB=9e8dC+t!=V=aDJ!~*F=sh?x1 z`DJ-R!uy7 zrYRtL_F{>SQNo`Xd@uWlgDv`H;o!*i%QF7bIjrPhT8>{9yTViYW!1mil3(@!^ULlZ z`(@#%E%wWL92w;zv1fq-vY+~8u`itGm*rW8tY0>6U0lQkepzn6PRlRbXMS1467WiT zRY1TWXeLjpfW**19g^J0u>wL5vGdFRkRC*MfGrcO_+=%ovjxAb@7EL%9%yU!%Vub@ z$S>=gvgsnu%rD!HzraQ(e6dK3o#&TrSHEoPIDjZ1&`sf&jVJHPu(W+&*ksz2I837> zi8FYb7(#G`?wsIgJacmKxCsscEX1F#Og@Z7RAF?#h#Orc<4cAFTagQNH-90Ic`=Dj zC;!ywt;R4Up~EXxf+WF`cMcCt=^Xw^z(|u4G~}5k*S_$#uEaZs8>!@*JNL{v{7<3d zj1n|{Ae5l)S8-FCN>FS6u#J6VS#_p#6b>(?WO_~g;FcvOr9mu?Uig5mY~K37^fb6u z4oCL)*V~rf^d>#3FZVq3OU6xZUGqalDSUWZ-<{Q;&kqjl^TR{?IJJ+@iO9Q&w43je z#G9w!Gh7GJ7N}V}A~ow&6php@+ui1EZwbktdKRde+eds>ch9gVKBvM1`0<5J!z?l7 zg-sq3BRZZzm%c)%5AW&ZX>+Vjk{kJ;_&i1GQwCExSX8SdHQ5}TiQ+hfE`cg=J|eyu z@?OpdzQaFk!$YKx!U^ujxxP=7#>eD_-EecyI{vnsd-7=;sz9V8UexddGQPsLi*&?G z@=CuF9dXgM77zjmQqZLs<0%48u4k%p+-E)aYC5GoKPdC$~+z=azc%Y zu9jk>Oy}6*)l%Fh#zpU8T)AOGn=_MeG>%29gFJmL5;IW_a%6H84dex%wnh)N*FR4x zdi$PHk!GDlk2uXtMb)J>V=5z_Um_%+)HL~bLM(Q2qm`KtX$5Ig$~LApLpYIpL+eM! zA+?=o>!MKQDfx#9wHP~2`=pkQ0YbKkbDl~u1e|>5rfi&P=>CAZqvn?S%QI;ZiR=dy z8_tI4uPEwm|j zjXLbM5xdaO9d`eXV`s<*^;w)dBF-emV?U7=t?F-taoVbeCgzg5Q4vOXfgC22tB`ma zDsJK1nHFG5xE9D$1)f8CadRl(LimTM*;EUHN`mMIowuKB85~QD;CwRE3tEb|q`#L} zsEc%it!<+ofr4kW_?(Uz{GS+-=Zqua^NKtd%*k_JM8M}&d0zG9X*B@D%aUcw=EM;H zI0Fo94*>=z^gFFmJc8%)Dhce+b;}5K=<$6sMm28?v_SI4!1&a>F))$@Hx#g4iX)!X zf)1_t&{)z~61gz%>NoK z1JqHT!9E~QrG4Wjo6KJszD~Rfh2R|-576kuYxpbza*X+3$sTY(oAYAfVvCgd;{>?E z2!_m=^H1exypkqDM>gT8hGDbnE1hc0V5>B#;j+8m0Lx^?ufQ^a{c%Q1E?YSRFzJnR zmiE7fKw8`~$9rDoY&h}kqrldi<0Rbn72O;sx5mv=C4eEt42-2zd5Y>Lz3`$P zNYpB1h9CuZs@1yvt#L>v0M~C%6q3svQ;51nL(DO!DmPuf@UtQuw}=15A-S?;+U-Je z`+F4xHbY0Yh^W(H!FOwtI_S7en&dJe$I-c4GbNK z8`He|W^%vqV;T66R)~J#u70`BPvUj0VWJlKR-i*MS=b_TAJ3qg1I8vDNk%kk!D1^x z4aPL|)+O&5)nHnS)FGfNEX5zq9;D20X3CC~d)rb0@ZSzVsw%;@oDK;}lyx4F|LN*M zT}sQ?-(9r;5zbi91Df7z5s+kQy|{)fua^uK?)YX$acYdX8B$!o-y^z3apic%qAR!b zngjLoE+TG>Wx3T#-a%Ll&atw(dIM;j2C=m3|HO`h7hYV>t$E>p5D-}Cg>ME-P=?8a zmKeuJ|1dOWLV^UUet4*ajD1FA@+xwpO^KsGXuoD?#9He!In6=V1e$`YUE;mFQZphG zu$y>M-#ZjhB(D?t8dmyh@F!%#l4ePgo)+$B#?!K-nTa-RS};B0f*&SA08Wkz9_cf& z3Bibc4b$$<4bw){JQPa0DndNMzj7Sj6~AywW#$(FV@BI;*2NC6r`7cRk zZIh5$Wf+7uLkUezLU&Jm2 zA^9*T5$UaH>~aXPd1ZenCjya2Gpfsx4oU7eag@x{$wJArt!wnboZ+f)OM>6M9~97|*)tNz-dzDtFH8W+W*2hJlYXdh79{$?Iz)Vc zD5(?&qCapakZ~8PJ|;8A5?o2`N?Av^AryV0j88kqL}NVHE*znTX1|Zq16BBy-7*d6 zz9>L)pXRiO7KbH+=>{i&KSP}6ym*3ML(CVC*5DEdnaV+AvjYR-Te=JFE!1WpN^nxc z8}h44QX!|}d3%b?ZI9w2rDH24pM+S(dNAH9$6-Uw1n)?V90hNk&@q8G95I!v!l0he zjv zRWG2|CATs}WNfouV+sP?e9}!t_Wk3s`lylJgG>>GdV~q*hWVq?wRM zSMg$@bOB+=VwolLUc6Y&ZoC*R7D%tW#X^mY1SE^4E4x_OQHS)Yi$&9L?2D(!av-2E zEP#9p8dZ>cfR(**Z=5uV7FxDYM{>4uCA0{%Z7X+iv~pL6 z)-5F(g3!4}MN>iR^GgGwXz!1iQUenmFf?f5={V8vn$VVABBOC#U~LwFq5B1u4N0T1 zeFG5}n{U*&z}cFw$6F#W%Z32xNLUCSbp<5As*I4}6!+;N;hX@t<^Q6(=JE%NCYYX) zb3^f<-6>q;lku3CEmYYoFc$@+F5u9#>M)ShWe$O15ic@Ql;GWt8B)_AlQgNNWsE1O zMu(6T5AA|(v+4;NE(v-?0wvFV%PBs!m*9DAgF##LB;}S+J@d@WxNhZE}AQxxC8Y0*I=wJd z4dw*8=#!yAiO0P&RG9R7UZ|Jszt4t>=X#YT_cmZ_WQIPTX?HO|!jb6943QWK*MwK>p`J?g-Ez9^s+*c&`DJ~k6dmKMU7lE6Gn`dkA-rEmNaK1 zO?nhnNhh#E9G!q<0T=03L^=@D>G=iE7My$apKX$dJumZG&$~*<5E*LDFSb5 z_5+6VhLWh&)2L@|!9o$Z&e5HTK+>J}#U(F3a8*|B`6^%6m8z6Bl$1UwJ3UVB zfTLhH5eOavV}ZK>=qr7YYnchRKxGN{eW{N@zr)M-;|&cXn#hd!J|o$ZGXyu?EVf!llXOj#Y) z)GmBW+rh+y2jap2#M4T$m|r3=D@SxDe?GZci5cv|465Q%JZTq2lSU0WOj=`G&ZPM& zHfid9$D}Ea!lWgFJDW57sLJ**)dSrDDVPr22jGCR>ChEvGa*bo=op*`kpPNxPL}=5 z$9t@kt_rGw&~0jM6`=4@$mzoN=)t_ zuMGcc{sAW+B=u20(G;b^J9_mn1QZgSfIt?~0}jx`56s<{x{5+#jc~|8FC&zz2yvbv zdkJCfFMhLaIK7e^jVm3p4As9udY&lTQa_@)vFsCV1!@NSBW zWZh#K@?RBtct&~FyU~KsUU0<0*+=fwjSfx)588QCZ+|7(df!#9bson^w*KH^vGt?* zK09>qwCcSq-3%fg7!xCt88^Ks6W4i8Xv##^utsjIE6-`4E77`N;eI3!TC_pM*^0;B zl_=+=G~XGo{$s$$cHoZ617i?)3WIf^@u@bXujnzwi3?%`noGS@-&K04S2*IJSB>Qr z0q-M@8}}QI1&2wQ$*@wq`Jym}Zz#UsDXk+4LG(cBsCoTQsGL#vddy}o3GH2{cOtx_ zSE5n$R0Pa3)smX&YCP03OyVp@WgcdM#nbR!ZY8rJT|-2RA|{&hD?{toD@+WP6ZkED z@&KR}0dktxPUl+<=qrEfuEVtD( z1KKXqixOdW8nDlW25hv<*GbT9V!Xzr&cQIGdqPbcvgEn*>}6|sZ$suqI-&mO!+YzQ ziN?eGFNF6tkG$Y6y#Hc&Z|x)04WeRGdY<%qsB~|rWQ&4FGg7VI9|{;$bPPC7I=~1yQyf;v}moS~h@L;HEi=lag;7j4Xfy)hzFy1eR_l88e_`~~$!h3^^23hir zNjb~Ip^_m{yab`uuZ98!6+N9(AaQ%BWJnY5sEnySskB8{C;Za* zdE!Z>&8fn}Csa4uPugx6$+TSBb1?$!b!Oa@69G>)`CUzJO4fs~C+((8#=nA1qb8f_ z#?Z=EU3kKTb5<0VDt#H}#pY<$idHoss}@t5T>06{WAkK1 z!`Cr)1S#d%N>`Ir&h2*`XKiXj8D>eC+oog&w=AXoP}>t!xy=(g zc6c72(PU-u!pJs$PM_C=#xB!7so({fs577^);A?c7UVKac)jS_(84MON6)v;j+o;0 zp`78=%1yR!1$H4@bl_gP7r{LtM7w1c`NmA^`!p?b)VXI-3|*)8F0E1?k%7fs1$GtGB4 zAx$bGe0(abft+u-Kh5#p7?JE3Lq{2o_le1sC-j}ih3<&B5H((}8~87XO!Wm#Nf32u z;!81m9}NYKy^F%6*L<;Q+2Qc_eSN%~V$+TlgZYNAT6gbS8kQ{%=%0mP0W4W65)Ake zi;sth?k&$4@o!Pwlpt{Mk$oJEtkwKN z6fz=ae2gulY$0JNVrI{tec*w(7)MhI9n23L?3~Bl8sw&2Gvjj@Y25AbXo~`_9VjJU zpUd6TUy)NwIzR-gqA^AJn{#Qjr?|`dvM>)#=kR=tj@GKhmahB8qWJM1omr< z)WjXqq*Sa84cx3V$nnd}JOAnD2@+CtBsYBSlHgTkbR%yqMp@o>fPj~67de|^7aovF zs8L}>q6K+g=-A8%Wc5RUvv=JB8Qd_$5kl-vR`Fk@&P!*ST`ZS`RyKBu-;wVuPg^$+DhT?FM)R;CfMD}rm&EDtW5eR+P~3(O4S@tV0WCRV?wj(< zVpvV#FZ*FuJh7;>hs2ekP~VCT%gv$HU20fT`Iuii1YuW1`!PVfY8`0QZE_Y^*&h#W z-KyjxCLZUW%T7bfg$&}c-4SXU9-vDE7I5Y=iC+*Z^3ez<05XY_m-Z!iMQ&Hu?fgMq zGU%<8Omt$Js0Jw{CzbBOMi|suzo#K`5sVF(i*aYUeY|#bcYt)Qj?rriwrwJf$&sEQ zD((rjzM@!`AWksG>_&T7EHRe85Lz)T!LO9XQZoKvEDi4sHB-jUG$!W0P|>=?0xBTT z2lLD35NMbO5e|7cNbcB~5}V1}qILFg=qsauY>8z#q}o2Ercb%INCd2CY>k8wWU!Y+ z=_s=zG@M=30(dUSOVt1;`kS?ozloF(0FF3N`%DJ&y@fE-(x%8VwL7Euyh3DcE9|&A zB(E4*1ueXa$a<&{=BbeNeFpAoyl`bWL=0Dk)BiAO`;{yTp-TUm98O{+0*GC;$V5YV zJ_!CwD;b<8xe`0lFamHDlY0tX3*?fFXYKD*jqPp-W`EPOErf*@)Qxp=Wk1%=vEJ8Y zY9n5G+`6Y34+-MhS_aXQ)K(?6)e`wc(_5lwWH;Sejyd{ifu?tE=sL~7MA~z0P@RCJ z3Vd^YsPL%jQ!2k9fSf+XbXXF!q%ax3&Vh-e8VL4oP6-Wh`qSbAfB~?BBO`L8@wl6k zFRM3cQgh?W45MnxJ!I;bm4>mv<CMwCcZnZ@i z{vbhW!o&kxQ|W59Nf_kH(AsgL4H6QB9gAq~(m0GDnk5<;{z2-86=++#dZ7*S%d@?5 zzi6$E2{q{W#l{3)Agxsya($POZjFH&gcDB>88ttWJ1VC{Q8-~c(#YgW1Pc3%Y5G5t zanC0roC(K2uJU3plztB2C61(;?7ON~U5Q8dz7j|AQ<0YZ(K#mXlD;v#o`X`$+$auN z#qo2%C!hbd8CJaW2^XrHjrso zE}06JJIUu5YK1w(aPsW>oo+C;CqTbQeTUkE$-1A&$s-peT~+o1gnm?+h$fR5}Cc9Y9QH^mn=UNFRf-IKXr$NF#&9 z776lOoROTedeq&O%9uihUq^-CheOD zLlPD&2R;&~@5GarIe!eTU-b?IQ8^Ys`Jyg6*|LvA5O+;>9dheGPvaE48^;h*gb6Zw;%Pr^2cS#jrX#x|Tp(xm|A& zP~}n?r_Yq5Krwb-yC7WbX&+ry89`$6tL)b8)23{-YkSbsp6}{ahFkrI**@M0TO85u zk)y`qdZpu4yskc)`LM$dKYU;S*W5_X_Q7Jxcs`KJE_XmiHD=eQTk|rnmM+3zo(Zf@<@ba-GlcCZ_2nj;o0!!ZJ|yj{rs)4h&uW! z_4%m%7HY6BXdU+RmQbghJRP1N5uR6)pOu)hfW-%T<aT~`Jv%?C0%}AcwSAzGgn-#ItF@y*?YV6PRDD1s8ve7A9`W(W)u}%aTN5y zaTwwp*5@9#d@h%_=<{mw&!Ie%CtEvh$*%C64qya^3ue{1JD7C%UYH8bYL(d9Ci4Q; z&=b?bdB}dOE%LefcL}k_3!gKUv6ZhTKMLiU%Gg6@w7~MRr>i4rcX;G;I8c)|gBZR^ zbxU&ScAidA^@}h>aaTH2rBGtdNS3cA&xi87ki-L&A}Dh%vV42;Tquui$E3#q@;<}J zHLAY)ARlgN_{Daso@ZvK!e5*rJBT5{=I2u=d{9EMh&0N*R*?x}0s0jY2(l`vtS|^5 z@^H|rH~9u4{Q;?@J*U$aLN3|io{@@<#Y6IF?7X6GZ?cXizuq2QPR?n{JwR1;MP%WA zGK}C!-6j=YoD(mhqU$VPTspJBcBo970fO-zTEYkBFbxgHJV+>#+;71n9de?B9PodW z_a^XmRn`6Yz4wjDBk+(Z49a~k0Uk2FFi2Di?;ZzIt8GwQ)7G|eEUmxxNBjG=r7goD zc_cxmfC0iJPYfgq529j4M1M~~O)J_csAwJHRAbeaUw_tOOXc_duC?}X_BrRi_Y!FT z!^;Qmz31#Ulqc*qLpFrRD|6|5&!g*p~5w2ciddJCXxsj-&r zdOAhI)d5sP0#6G2vB#rK6aQ@tRc(~0%KHd*^DG^|JV9fQUv>cw8s->@#6!WX8;*1y z85tc-ND-tH_ynemXx^QSaJL)b6E?!#*f}I_O`|v#m?F-QfPz6#5*0-x;4oo7{u{u5 zgZOVj=OFZkEsI54+mftO?s~wL1X2kU)$WsHZKEh9?8{}m1RiGy8V0Zp6XT}mNqomJ zaTz4uA;HJ_lGhW`-s{pgl#qoTm<8NfLOOd?1!ZvP0A?4mAR?bCCz~;5!X;^*o{QJ2 z7OOhttW;XBI;+C&ED?d)nJFHpY|eN z0kw#?EnFb>{35=>RT!_G9@!T~h!P(3hCdfAA>rubY#1Y);^)3+G|nz&j@Tu{0@?sL zkK3^<3@Qxde%W@G5v*FgXu7}p^2f^n6WJa^31 zSj1>|a?}{Z27Y3cIX^MUJCek#$^vv&cf_;0)5x<9_B_c2S{#cT!;a?2BH7BPfjOOR zZh32TI-BATx9+y_hg*2t`NK`w{rutPY=%F~i?p#-xfO@KTgU{NYV)uKzOf}t;uX5H z8N$vV;6|L=E>V#Wao*EtG${vb%+;q7L9G^_$Z6mklc-j@5*~Id#u7bcP3~LxQ1HY% zol31&P?aI0%Ji1tnh#gP-rvAqvm5yN7B1?Lk|hEk(9Z$>$=o+_e}G@~3C_VBK>uJR z=(C`GvL5a^fsJ%Bu7z*uzBuQ2K49+=wQO*m#s>qOb7KzJMrsw;!roBJz09vNUw;7B z!U*X}C`t}2i(${x%KK>y?<^@)9OO23Dn^|h>RLze7Iez|U(IP1*6X_b3Rlg?q-GmY zj$%}g(=rxGY^zY~vQX=>LGdahL1G9vSFs!N1kqz4))u8}lBH^b%mg7+u1~UG(8&bU zBzzo>>CKp5J%Zn0sxpltT25g-#XXo-vI?p!nb;dwZdrTEWRLzyp z6QQertS(8KDnJ4DjRE!_DB?6+1m{H1CO3SQBf*t#wj1*?LgFe6(RS|f`lQX^c>w0| zrvQB<21tPrme)?>eXb1v?N)$P=qf;^-6$ldapYn;G&YOF#EZ(qY;LkEOrAPkM7V4> zs4Qdz6eNkvHqz;cQjCdb3B^5L6B%8wYsHIts|WChIv#EniTZ)|O5;H~oMb$@6$(Le zya*C}nw55D>-gGLbX#b~;(f{Ir!$EU^KD@djR{s1-O!co-&vY%cW+A<>3w(6Z|Z&MWr11?QihKiS;k+Mfg2&`!Wn9#Qs4IgXKl za)d{ddxFZrtg?foSYUK(a^KNhFuw-_nR<2xa&T!NzN2SpAX}cDfgDmAi0^1F1DUQM zt=ZMxZB=8@17<1LaK?rsN`d)+D1wdvFXP&xd)Cg4=j>>uNSbURq$=H7I-0 zNDp1y9i}@!U?{t|-O5R`%i$Fhuay>I<{mUeFDi@+ZCNvr^O5b@jO%eLKC#^zWCw=S zF}U&b4c~oyN(2%*F}QGRQ>;l?^wAH zHyiK+Vcp8MlwQQnQ}VJgFW0W~!gX1>ylfp?^m;UkR~@!TMsU+Q?>WRphq6%aaRzxn##`t9FY{f0NZ@l9`j%Ugf<+~51X-+$YG z`-4CH@8|u|AN}$F_@96Br+;?-pa1z^{N-O>aN$MuT;+bpB#f)%O_X)s1riCI<#4Gp zyp2EXm}CHEDe3Vl79$BX=wa1Gz|RuVxdgc~TzHbL@Z|fNq5g z?R}QF_=v{-1^Q@}a+}pSAM{be@fXrOo=TxV$1lB>HjW?UeeTk{u@GFH6#cHW-(+ln zc@Srrup34$sV7-aM4#t#QTAp}KCRa=^JxB`0lGeNKJNPeDOYxHyH|Ek_~1|QR`2na z<@P`DOPEOZK&6cqZgZ(;w82RBFP}Acv{}9W*75xe7Ps5M50AQfLN1)+@Hw#*E9nL`K1^D?! zbTk5mXuzSKH}1UwWd;oOgV-E$sDD2}Ta6Y4^^ikw-i!`9)Z?^ZW1rt~2*Q4zp&lWi zg8EMrxZh&ShI?t+aDNXg{}w6>?$f64;@j8H()4f0v;z6)kOD;d`wbaNgmJ{B3dVa# zSBCA^vF61Ww0qVHJ&1efyM*?2MAl#6W<}r~NCdXAjpEVIZ@7iL-=qJVtn+KABk2D; zfBh!Y|zcXSNQZClp3@tSkT0NoKgRKh>4YG zRHgt2**OIZ+!So(+h1{b!ak-=0q&m16!dq#!=_)wmTd~8X`6yOSou|`EK`s+eLLU2 za+aoF!J(1<(IKZm`g?^8g;RiwER^VhdX#A6V*z$mbwU;pow&ptI9}i;=4_z9-8-ph z=f!X2iM;qp&@OEWVt>eSosE7lNxT)RfwBH0pS_H7z9*M1`t5CjSFPc&UW%GBWj|q^ zmtc^XGF`y(BxB1uW&gqwOzl{hvZwg;EE%UVta!?%*ah-BR!`YG`4$--m0`tGMuyef zS;zOt!&o_Ga@X^VQMq!;Ze-OL&C>L84o#=5ms2MFF@NHq@F{G!0jD`86o~BsrS{4U z4U%VwW_trWISrlI%(4x6CfO3jH`;D;+ieWn^RlwA9og7Nb0j7z?Ri~P+AA*cg49%6 z#_d6Cb73Ls$|Zx8Uan&=%K(?SZLvyZV^^MzV|3t}@X>?!2~Dk3Av*4)T;oF9LZ`$7 z^)*dV*6lZhOTai%TM0*OUA(%vi*yjd(z-eT{%CVaW2Cw0Bmo?*|BirjfiKD4?KPooLkb&<^?U+8!C|3wY$8Ggf`jp!C>fC2HWnHcIvWAt_lg5^xM>xJ>3>6Sx<6^ zzfkFtw5NB4O4gGEQx+j`0%AcU^i+ZHNWPZDies8kx$ zdqXAbNy07tzJ4Y4rb8v`Nh7jcFaRr+#&mC}WIf5r_3k~rFI2LgWaF?q(+A3zbS^dN5S7o_N5!4*^?w z{{>lVJwv?^z9l-nSSJiC=|e(!2npISG|KxRYZ45>2N&r)+fT-ovsZPdhA$DH~ zaJjcQc=?-1Bb0LX1LyT9&MTj(I*L=qEoVV6o*J@9wNXSt(ST?{>WLyvYn~DOVm%{d zTJ49CmYC@pO@@4iYC21!W;+~@dLyVOdT81x?-^n0m&!(&6_|ih1r^d-E`V@%-Gcm= zTlWYPFExT~$$A2p#S|pMt?Uy2V5nFUZqxmH#oEBU4g>R2zpd=I6pm7XU~3rE!wG|m z(j=0KCMZaF=ZolP_-$UnfrzS0V#~MbcVe=c%db@;B|G8)ceEJLIi}00#A`#3vPZYE-o_K!>aQ7CYfo&XuHarus%Ry^vwNNFC)4ACX2{X_$W_s zz_qS-0*lyotBQ9)gCa?(&l!>xEQycabL|G9sC>|IXF`5g$j0sNa2eGT=@lVsa$m>v5UGO$LDi=R zCo9V{Q4Rti+OVDxIos~Z{x=SIEB;L=kg{DG2SJJERkf0@(^RuhuBK>4=-~M zv1jS4Z*UI>vO)iFy*@;ElzOcNUTnUJtHqaE$5L2!@^(X0{oL{+=kY2@My?wr3}BfA zy5Q)>_D#E2j@X@ohilnHKernP@PWf$*aT<~@Ms)P3ktixo?~3YVhaQh3$bf};@q_v zx?pr4K5H+Ok~B&$i9tFK5V2A(_DZ#}O>7Js?g8v`F(x+Bi!O0uk=dLUSmA3~SoYlM zp;`s}584?eoYl)I^|0k|K58KcREv8|+%_jC#!h<%uYdO8YY&Fw=?FZz03Fizu?vzC zq3Jku&FX@>pa_;C$~Omc_<)LSw&N^2qT7i{VjDAMTMfJ9WF)%6i92)ypT-XKF8w0* zsNAn+vFv!!F;(hUcl-WOu9=9;A;OKWw)Kz%Ifz{bIow6tdoXQs789)pjBpnPQ^nJC9y0@YhIxYF8wPl1 z7@)-v{uvOP-SH!h2Gl_BlM?H7Yp7&Fet*hYZJyTB3%En`+d|2Q)Xx1Alnn3R6W%|l z@BgQ?RKCeam5EUEy`iSTfVhTc_TaT~bYi;4a#yL+9~P9~A(f4(|={ z^9=AEi34MGg1mb|O#}SD6Yx)bA_iQ}<3@P8w^RvX6+#4hz7vydl3uT{j;d}iRsDm) zNZuFTTd3uKE4+VycyFPWZ^L^yNF9@-T8hQ}AKaBi#08a6dN7{Q-{4M;#*K`3wnh*} zfwSB^-|A?4M~i2Y+x@SZ9$g@Nhc85H=VFBnjx0p;L!EzMb8nR$YFez?rZodbC3Vh} zBCJDR+t>Lv>%5tW0@=gas=JV`%PC>gWDV!F2ikIJ;GZ)VOmU}uIA=3(;AEL`WyCw_z)d6c>_nv!@|?qc5M^gv$zUWymU?$ z+nUrZS91exOt$y99V{uk&-IN~^5Doe2}k(|yRlEmcKWO*HKYb>K7sr)B69K7T2$d{=`nA!L*yh*MxpAe(LM59C#NafupLM+yq&5G`Z2qs_8#fPS zsDP)hgi6*tqJRYYbCZ%^4JEDlSF-uryF&kWp^`QKOV<2E()`y#NoyW4L(znOJ-jz6 z`NhKfZ-n{N?l(gvqmr{hCB3*C8tb=@nl1JN5y>H%FIhGNf_g^> zg%v^DB?rTidgz|woc|vA$xBeA1?3iU<@@~27$GzP&MHxRyZEewXA3QjjXapZ1Ga`M zhc0L@U_2swI}@b{%fdEp*S=r`WuSHoEEGA24QelhE={(Gj0^(HzU@T@%a7U587R_f z?@L(ziN6sM#3mdpyZH=pK<#}E7J2YOJYZ`A%OYfI?69}fiOq&gnrd45J>c@611`-a zemWX*vWYB@0>-2vNKCXy@J87AjRPRRHX$z8A=)%o`RC0rJsfOrc5!~h-342o|$%&IxhY#)HE2D64 zbU^}2VcNl_gYwcl+TZSz8mQjb=Qz$PMH`d$Kv{vb%Usg4Hls3M_y zYFg*=QXPrk$)>&1x~^15V|Y}`C<4=ox}j8uTSVdtQBCTM#xe2}@gF3#Ga5(B&wkaO&S)GZ zKN$`RCH#!WQv9R}Dwe6;svw#fJRfF8LdXZZbP&}5-!56STCj(iViGN-S+iq+g4N*b$S#)9m-UA2u{LM3Y+H)NpsWsPH!xw$oz zv~z3EVe>!i+Wb31C2O88b~b->()?|qq&1K9OwH_`uG+>_sASD^|BB5Yl{EjZP|}*G z$36Sx12LP|gG6D%ZV#2L`9;?J(xmx!hmzJj65&A8yD6U9^h(h!p^`Q47*ne0-4ROK z)GlQ6|J)V#cZN#VJk!{dbW>GqYba^WGigD#{jnH1NX1iNcH2TFYn}m2Y<^aY;XS3Q za0o^V<-Os(i7tjwg?YIvyf@LsK%eaA-;S~U+yvgcLnULGVH@HR<`-GG*U9u+6Yd{8 z;IIiB4RwF_58zKCco@Tjza)x>mpb9(5>zR7CRXqW9+d6+yKCUb>-0fv;WY*0jGkaI zR|5|Y9tpDHn<*$kqBn9Uj|>`tQ+T|sNy*0zv*!+V`05B4F2P_ZGAv32BWk#9 z*^9CCPQ+w#WB!=7mRL!XWJ^m4=k;n$3Csp2uewa ziy%~9pBqB`fLC)=RN}R1vRLJ%Dj#9-+#axEDu8Zcs$8wEv!zr=qi3M5fhSbgxwBLU zgx@Z}mJKIsbX%ws#m*p|82x2%l3{0nnA7BZBt?dK4!~{3L`X1z)J!@FFSrNE$MB!Y z=U{v2!uCRLDPT7M4Z+4jJ2YGl7b;@tSTE{u(JZ|1f|33Xo99;Gd`McO1MldcLrefT z#D1PbAjnU$4!4^%(J_xZLbmWdN|(-z<{~1?m7JBpt*mASxeBiF9QyWwqROyPG+X%T zv|nzFs!lD25}R|npahOCYphOA{o>*Z2hRs}OM>D^GRs97btKA+04x?gtUCa@`!H7k z)|CLDXgjrq=sw{n`oR>%Jk!WfVGkWROjQ}#)CNux7IInW$XE!49Lj;Tz-!Q>zqo~@ zh+cLxT4LrlRS>2#=Kc3^eNRdxg(g&+smNW!)p2I)419D)7W>s!yl?W#0O*HwN+=S& zqJMN^^h7PAn+KfJy}HXp|LjV<(E2>E-~`gUtAMI?^{ z3+xbt_^oHWmZAYo5e$6`rQ_kt;F;C{3JZKqI#hfPNEXq>94repa2b+AP?oPNthD%b0U+&r81bE@I;yldOrs9Tsa?`RJgpm|C`07Cs;+_>jQ(XKIdYr_Rxm@H6>GnW?8|B z1#(^hTf&Tb&}n$&80)#eIG z^tep{`UhgA0i9D(5T!xB<3bNYA>Zvr57;2o^}vy5RVEw*%i*mj@D3z7d()?CMpY_5 z-*ki*QB|T5t4d{Ktm;70ObUVh{%CV4)=qQ@m+B!8_JYj2=NN)kVaK{$I9ok=e>Wj- ztm5ccS2nY0KY=#zsWrK;Vky|EO>-v*6F?npg1_=6Nk=V$UtYjcQr1Twf8oDY=e5+w_UjS`+*STIp-xuSw&vh6V0U zXhdRIqikpimsykh3dR9hfdgHPsZD^L422(3oOmmij?uwd#nd zA$1$mkE+I0Fj0%%nKiku5e*7dMrxJFIF)beUBFl!YaI5h5vy7FoR@IIrG*Kgr>@wdFOueliSaa8u`B`Rf*+7m~)rP@BgC- z5_iZ{5|>pwKmvy%!zOFi?UQZ}%@QO(^fx*M46Vt1!LR5NWSb^Z$CVy zv3BFvGW;=#*l91&KO_=+;fs(z41Z^yb=E{Dd&x^*7XDt2zq64`Yz4B3@$VI{kep%& zTW4CabIy77t2MRQul_3H*I&0P{4tRI^~f~#+rRTWOg6^9H!`5zlV@i`s~n&HR6?R} zC5dk6k+>_+S+=Qg6H!IV&@x9&6B$qDz7xxQ`W88MxcR1=(pataq393vjvs;#jX^Z& z&X*csN^hcuM5a?HCz!I_^O`XdLv5X1Q~Qm&)(e+5%})MFpKSiryu8=rwlNt zs(3&EoC@-U{Fe4)MOh{J9-z1~K=F0uJB)Q)*4T(pNIG)pD@ItO-aEaT?qzn7U3|{r zu_O!aZ4B-0QU-x=Mb6IT-p|f;p>3O;->SO{_l8i^L@=^uRbIxvBsF|)uBZy8DQ6sY z8fS106$BAsTkzE*;i_#Q?Dd@YY~$Y^njrhO(DcXkhKAo9>M+&Yuh$@$i1W0k>Vm2c z0pVLho4b_`f1SOD89Wv3zYcQ%fC#h&be@2xNV5ftvIqb5%B^m%MZM7Qy`kZ4N}qi1 zxi$1(euoY&x-*@uJVF4~`+mUuDZP_i^n7O|QDb)QABy2L+U5PB!@IRZ#uT#4`;)*) zRk{PH9|$$?(wYn`BnreNB^^J+^~khdKjO`1h{PZ5!8u#JI33S_85rxy^sY21_^J}V z&OotOM);axd#@-U>|+56Lm1z8Lm1*iUL7AJ_Sp9J1T(5h zhMJ!UH4QUoN0>naGwGS0Plg({a$YW@nBgV!kK^nEEPa|><}IS(Ce6TblFPt}Rz`|{ zmI!*;5Ef{n^8Zb#gO_m?FKc|bDGNv{B6<+dvTyte?$((b`v_y+89K0h&>5&7E9vnE zOI-Z1P}VNB=pd~FZgdN70=W%`tFH4k4(TibXI5Dg!1+q(!oWET2!-G(Yv15dq=UzC zQyTi;j8O96P?5xVh*C@pU@hlN;J+h;3|$ndvzb;l+RJ;2#&9mHP_5z3?CEiYZizX} zE;*e!4yAOYu@??yQy&A{5Hjw3i|r%bnTHdC$m2(VzF&5lofk+l03x`t2((pVlMZkR z?RAV+^=7c53aM?+z1US1>Td5qlGqs0~|&kHJWRwjVI@lhDeeDzq4(DFP0x*<6VK%8{H%nm}9+ zC<)F@%hvfJUmq{ka!dygSIJN&@dHAR2=tr3y%ar(i}1++!xxmPYGYu)tS)Ws zRxGeBY$D`M})&MtmWcb7IcPvUY`PXRIunJ_qVw1E@@(R#xQxUY)2nxLwsN;g`G1A4&f6F6iB>=ww@Smim{5`d`=jOQilaT7L=`*EBDhrHyr=jmNc(QM56gF{=|; z(`L__Hse7+rWHvT(fZJsF`|(=Mf$Q()Ydz~PUfaaUs+K#+xSl+TVW-E44`}3Z%6|7 z6~Xk(1V$ADJFUD)6g!PQrh#Maah*)HIyaHPjs)*<^9e@A$fZUpSn3@mI1mfdo9$cz zJ*LX8f%K)0V`Q^U7+9>GrE$*JhxQ-SsR3A^3vg+qs1-gwWmk7@YeJ-RSUgHA=Wm~j zC6Y#Wy)!guILDrJuc}`H8Xe!dSw|zR7i>gSFKkPT>UAekgT3dH>hvR*$J`n2_Wz}$utka>S-!n9EAfoGe@{y?f=K@`@hZ`zLllFJVbV#|Mr z*ve8L%11*_h9HJJTL$$!-{`SWwWp=@CYZ502`c_qXx&i39d@&JNfVzTO(3<8GK`Y` z@`+I2))u0rd3GF!J9#<;(!ea4((3tCMODYNXhs_=!!DvRtG>>c35>)`CkBHCJBXMy zWQM7FB=lob#TKF=KFU@l3@)4b-i@ha>T{v`chm#3aBeF$K=Ap{gh8OGQz~tip3#0` zy90@x_r=hNVH&&91F|Z9w#2?Xsb65CER`ovRF@*WK-gxl7@Fjkl6c@T4w^g4eMvuG zE%gIueP6Ay+Ls!tLNExBEY0^fOAYrHxTRD?Oo8W?N_$Pa_~MJLs{JOnk%CHNt>MyT z z68D|zC6?)+Q$(Ob20cO*NB(wum=eu{-)<9=S|;DCvdflA`*&+{KRjEzx-X@SK=e=5 z2O$L>uiKnjvmek}AG*<+c&7fr>At+tXu552I@&G9y_m;}H^}=`mAIEfoatDwH8VV! z%UCfPydogR?<2_Si*b)*n6e;ghfOQixWO;q?3s1OyS>KQE0Q(}Cx ztu=}OHy>9|ZJm#|)5t;;nnX)+Z|xX@K*-v>HGwg4ZKS0|=2E>RfUd-&Syw4jqAZoD zFs=%qnk2vF*vfz!QE|`c)wxHJxn!0Og*z*um1Q%9J1ZUig6suK-Int^+}DKWzCXC6 zf!yI#zMauR&gC?{RRWS2D$ag{&3IBZlsANC&51yLd|Bfpb(@a>CnH2#V5&ET8g@ns zYG^at_S5(%%KnMCyE#;{qbSrZ-E3eUlJd8N@^;>Z$w9LRx*k2gHB_=r7z0VFTb?xk z&QQ{tKZ4DF>BsRHhLcLSg-X^u^M(e*OojJ$=H;*Jncq&rS8`|LP^6H zkGN%D>U#9+&QQsk=V>=Kzaqix)=<)#=MlF6=(h0QP8;!HTX_GT@ZK=bGi=!D0K&jF z%=-vNG>U1EvlQ8l-(M_12)E8oOaQt&G-%-@(8K^c%qRM~u~aAU0RyTq3HO9rHVL9K zbzd3xhDwGd=?TyyJ!QHqwui!oCB@BDf^&HE;Ud0(hxJuo`2YMS34N?P-B%51u8 z+L{l9O4dB1^{S@%zEIMdXZ&B7#t(+~m50jyD!h*mm94oVp30GA^dAb9N|8a|8vaj` z!LcldJpP47kjHXg7WTSzx0`onxef0MajdDAQOyuPoE&vh> zgpW=p0Tv{6Kc4bv`W{JY#(dKIsgl~{G~?>25vZ?YyPW){NI!n4!&k@2h92q^&c8jM zfRPoBOJnzAWrO&qJ{;XH=QY9_DSAcjQS`B9wDLwBe*S;k5!BhcU3W_LM7uv-BpZth4RLY=AdHS z9x7QUbt=ZYLrH6X4l2f$P|2Dvsu*{K_azmBVea!(F>s6nq&r6yV_WEZ?kdK6LM0ne zor>|^P}1-<2NmP4P|2FFQ!(xiC9V0QiZLDDSE?BIg!cs%gO`RDR1BV%Q5ECUT~&Q3#b^>G*T7g1EE%|Vsu{__k~J^C1Ir1D#iyxVMEj$RE)n0m8^$472`vp zq%}VW732O;$(pZIF+LnhTJuE}cKDg`31qoE zTngbD`2QvOX4m?U`zWQ^LtFrt#=8PPs4TEH6j(3eU}+1Jp};qy0@~e zD*IX&3Vc+fp_)StLG{a0bToCAy-|Njev2E&zi8B&%v?k%o#xOHo`iUE0OSx;(p#ay z>d6RdD%g&~+zrdLN>Bpu$|sGj?qtQ=($*3Q)QD&Nl6;$BsvOc>z}WDk+O(kmL3%Eoi>)=$ngG!7Tgn_TG@%tO0$>a9 z^#Z;&!l||YQeRjBs<3Wk-o+w#ce{zaN1W9uy{*Z8fro@hSU_B^dA^-h4OPs5+KXA^ z8YE^$`{)E!DuFjxrqKf!L$KC5C;`2w$!^?Y--yNTn%CBPWx8<`JSHoUT{Y)gXv7Et zKfu0XLZ1Rp7$KcJCpN1oc|Kl4p6nrTwl%qy1J0BTFgwaC?jx}# zE3DsfPn*Em*4Nf0Af%PH&WhcB&5`F9BW@SqTATX<1@aW;u#&4H8pLEM{N>8lE)4~u z*3g#lD9SQr3-qiH8j2UUvF?>27&i#etqbjK(ybtewL=2YG=bC4%F+TIMr8VZ9v*XZ zPXLCKjh9RE-3~dn!9$jET5D_+$Fi6yq%r(?ZI`BUTc3O(Jeg_eqesJ|ys3{KiypP~ z(HEmfz53`&(W60q^yTQ0!SHzW$bk4t^vFT+)##Z6s(&axHL!kYPeB-uMdIeJJ=rMxkt01jufk&}mbpL{eH;D=YzM2SUshv7WE90J zgg6!X(^`5_s|&+At##@MG&1T1688Z^@q(p{7vm>_ zvCt(#T9zVCEG*Ks)*`U-fFKC0jbo|SLiY$+PgEhREh=-0tTCMHh0v=&)hKj z_{#Oxh!kHNaDJqQykJd5i*d7_u9#{Dlx=KQ<4pUn!`YUmB5gxcv4-6FDcYv+s6=Ld zR59N2a?WeP+XHjJTL+a(+x<^f;;vP>GB@zZef83uY87y&`odHz!d<26yC&EEYjG#O zTSna)?qC!pBsYaeCEWQ@6>!(8W@vN6T~8Tz`JGVO8sM6-1ju`!!HFqZ01?s0z4KrvN3cAW{5C zFw^Encl(ubx1kbudc?hiyWx7=4Hs}XthgJFa5r3yJMF&~cf-c-h7EVH8B*NgQ3-c` zR0Z7CC?Rvh-H~P7T~UdF5yA!%=EAHA6?rL;5?Y|axZNnYCJ0$3K8FzS8 z!kr&g0e3Yz$w%iTE6yt8Zeu0xY7~a0@!`_5p z587Kwd3aR9o*!2Mdvz+xr{;vdrz@_v+Ej_ZIzeBfhEQhU)7uUk^BQeM zp{T`S?$j03R~pPK6c#=!;n9z;fX6zOWsZ2P&{;NDe&g(vT(@#IC7CpVo3pAjZ& zv>t_{9+OV($(`PlS13MwR>GtoVG)ycs?QhZhRQ14XL~g+Yn7j_+E1$fc>SlS0M%(g z3QIjcg9;RMph_jEQVa4UE#kCJ4Vo)XEA*iIYH(Vo2zAwjQdP+7LPcc=+DxTAt*~^# zsaJ=BK2)g?Rcb_jqzO)IRHC`!v_dDkzXqpuN>Nv>C{>HRUQ|?!pxIR7RAK3YQ?D8Y z-KbJIs??7BNE4jas7G_fX@!3DU=2>|6r`>iQmP_(9jT}!LCdMcslw6)r(R78dQzpL zRH-TXktR5;QI+P3(+XW_rUs{V%2HQtDOH!ezEo70pz&1VRAK3YQ?D`wovBi3s??hN zNE4jas7-UlX@%bOa1BoD6sNA5Q>r?7-KnTNLHnu1slw6)r(S&u`ctI>RjEPwktR5; zQK9B?kg$_K{d9#6wW9{7wMtZXEh<%`ydG6lq@W2^VpXB(f>p0d1zoCAnX1&L{8$sL z)~Qq9n4>yXrB6LlgV%b6s=G#2QmKMYl_*tpT9rc71-Fq}73o#gidCg%<;R@hw@$U1 zGkz;{tDSZDtyQkNYgZ-pD(F{ozsDMa1y8&s@F$EsGcDzz*><`lm*YSx_bTcKw? zR)^nOMXS4}RZ_Kru9YZTb=sCf)D6Eu-HPwy=@SH1zB98%qXW z);ob{M}`ug)NI&iYyU>$FuYoXh?Y)c=>U2h_wjJ_N}ED8jKd~K?}V!=w#q5-cr)yU zs1Sw1su!OXP<=5@>cB0_oCsnnw+q{7QMB0NMhCeawl)vL$0q&QjE~09QH|`0yKZZ4 zW%zTu!PpyoG6rW5TelA`IBfV|h^9pi{JNuQzxq)I50}^s$T%dpti@q!kj-{YzN5oMkWmh2J2R`O2& z4{|@KfpbZE@qyeo!(_8Kbf-bF-ZRA*Wl%^(#1LrD5_$2Wl0}TT!XuU(L7oxWH}3F& z95PvC10${M$G0Cm(j)msad4uQ?H-U^Hay&ho8>aB{_LllTnU_gXk`s1(OHD|gLpr6 z<@MZWh67cuE#fIO+%l1Y{Ik!!$5rd|!+OQCvu5{1Av1EE!}T6Ux0veA+TO1*T&GR z@?kve8n+-1o?q!KuZ;1i_5UGG%?NP-hvHHR2;dRCdTw(9Mp<`UcgUYx|5Uz+>2 zE!G@ulX-&jRjesKhy+lWr83kL{(;EWzkg!*2mr3asL*&iUSA-f3)r8 z{;l0i$+{En?Sy{|EymSd;oh$BZzaK&LWT3I+VV>O)F`nD^42>k_7?3bGA-&KkE^c%atetv( zCW?w=3g{Wiz)}Sm;b+1hJ7q_h<>Qbo}N5vY(s#pxS>){VKO3U!VZ{NBxu3;oX-pBR5kAG{7 zi*I2P5<~dn-x}lM+XLO(1N~bgb-oo+XWhmAt&uw49^vX9;olmm^Q|ld*42f;@xeM_ z6^?IdGCud)w`Alz2pvn<_AtNrw{q1ShqbJ6tTu@+{%uMfxLwZ`I&OZ{aYE!2!t^)g zOsp_co-xLxN5s?^`Zx@ni^*?`l!S_XUWp~pqKOa>PR>PIXF|*5KYSYvSSFO{&d*&gZWswLK+B*cmgva=8?@9K``QDhTmYEVYa zw~=Nk>zPxg>zQvO%`%}bzK!NlsEc)#y7<=5<7usJ3lyRJ=6jZzrO#kVW{TN43PK!i_G0Z~51etBcF^m|(C_1Z7K_`1f^Iil727GL~Z zug)2tq6B`Ue``FQ3dx(a3w-f!jTi9ko88+t`?tmm`1URC?OXg?udJQYe5-@%t^Tc7 z){ux!-{OmZ>yT=;?lS}pKg%%EV&`P zH@?pI8~yu@;eD#J;QWp6W^;3XTFb?y6^_-~!`14kP}U@Y(KT5%BKR&^n)5Ou&Z<=t z6|XRW6@&Ov9$8~(s!DOh5X^h)CMOv~4`#vZg{L$HcoMJj6~0YzysWX%!LhImM>jL+ zhTvlkVs*|)CO70Yk)pGSd80l}_&VFpwre}PXnufQ-dmdcI$jQN_e(jr=R<;9lCaW8 zc#V~HmWiN;(DH|uprO!EeVOjW8GP=LI*6g+@X4L)rNxXVmSv&MG5sEe=OcmD9-@! zkNcMm|MlqK-hXQvI{p0qN3gtefsqn3-%E~l)%NmPiCb&Q7ac#?Z9H9`uh!o=KX=1yQpXfgvVcmd^X)3B!_|U$ z>bGeEwtx?|z%OJR${&fGh$9GpoX-4qFw~8Ozs&{Kp@WZ!CczhcfQHx7fntwuy z->qBK!GyXr_uwkYCnglBex4@O-*?BNP|Tb->$U`u!db%>5K)yNlF)jSwuDH&jnJGR zGFsonZnT2wR^!_U&FvDJ{S%^j*VCz6eqHWIQ;BEt+j-*oUbiBh%)(0SA;+v|mUkx@ zl|9&b$tvH1$tvBR5fK5ArC!bojxU)|wm5-XX7)l9gO1yi?PB)a{0{SraM@^n`BoMR z-|9k%=9h01MiR|0-^%>5t}+rozwFoi(c+l){dy*}tg%%29KQIsWhQi#D|FQSn9!_Y zSaVfO?n@>+Sw19kSw3U@;s;{Ohi?VFd|N^DsPUX7XkLj6OM9+jVNL$=U5ntvv+u!N7CX7`&9h9mK@V@mpCtva94auJ4FgN#I z0sHRDI13-Q?}Re?-Ip;2IheuRvUY~;yDww1d@#dxLB5QB_hoFZ2YHdBFQeam8L#Ot zYm9SfL}W?*q}eCKUe;LV3N4!-lK&sMm-yWUvu;;A#y*!%aD}#4mj@Y)S#mi(kGb1x zteA%rW-)@IUX9juYaHPrem0;aepWzBPv@-->y{x66H9b9nOYgll=izcq&^->z_PSNON)@Z{T- z?(Itd)*POEyUM*)GnG)8!;`?Q=35q9?dzJulW)&+Z_o2@&Ed(nx$sCU#&w(vgM z(AuMblufy(MrHHdL-Ctx0PK?nd_$B4Qcmm-gVD-l$O|o z#8f0K&()rZv~wxjl!(upR~W@jY0p%IT+drEaJo{#d}ZKA;yaaf?dbe4@bg3Wc~knI z>&S0S`%jDkb~#Ta^>Yb-ZcJiP3|j%_&*`cG{S8%l>E>_ zAK|9Kx=1<6m~?aHmX9#1(_)Xt^T>S1<118-#{&3Z-eylX*Ctn*P3FGxgJFoZL41F+ zC-bv&zT@!~x{U`~cWErX;#|fu;{AD|I5jOVd=!K^dx=d9B6BgCshy&lH)*%0w~u!q z)CkkBCHUbo_AWuWSkYh42#tu}MSW~1;i+qK-;m*r4RHmiOEFmSNFMFFd_X6iF?>*{ z5X3z#S8mh3q)OJxzVgXin>gPhfoh_FG1_6++J(lL_{0#}l{DRpriBEl2SCf00kJn1 za7b&=RQC!~&?;15pi@y=SKYt#`?#ytL^>8%ibA~$H>Xr~$fB0lWXmNw44(9vNx3ukN0ak!Cn#}%Xp^;Ay3d7X{6S}!7bn{7t zje@!=K2!!h-{v=#ny3BcW}lEIxO6n{XW*Jr3&IHe`)k8{!;_p~sc`tVam&Z|^`=3c zwv9W}8#OkC#{NUGA&WbymzU~YU#b_*C`C64d|lWIPM1Z`zFYC^dlk>VQSt1{70(`@ zTbz z#hlAHeb}@vIz+5B*;%&Le8s;P`L~Fm*4mwW0pRYr09a)s`HCvEy8}48sW^Ly zdCl}sl3^t?T_>x4ub?B$DiNQo=!HZLLQ>_M!qJSkgrCf7G*4CZqo?OZS*fGjdG(RM zx2tro>*Fuxhq1|uUWhT_6Q{O@#b^<}&4pSInS;))O3xJ2@j6Cwx||vmQ>H) zJiET)8SMJc=7;c&HC+SYBvHqLRi>%}T#fB{_PeR3Ut1d5Z}4)|qk5kGZvHRo_m*d> z-#de_nTPzHO1gLQ*AaJ>;0;^Fd!i@IOP$-2fJb&*B)xQT&#U=uwaq&U+pFg9o_F*2 zS8I#2s!`jMp4>FTKppkby3iN8=~Jifl|Hp+ugF^S-NPD=p`DbKR@0fS<^U|jtsc8P0*4cJ;?*m+;au((_j>o$9 z0a7$CchRjdPYvnuie4xnFa+91&!%4ZwVJNoBAbt1c#K!hM827^u3I@l1kLXEbA9ir z-*C42m(BgGF=Q6f(iFCQAiQh#dVb_^X?s0PN#gf_#bD_6Ypm z2`#!b9Cdx}$E_h2y0-zHmfJcE1Ys{03&viai7XM9rJa@%jj+=wNN`N`eGY6a1T~D$ zE2iS|v{Nc5E~a9nB{|~e8Po94Ay_jDFIv(VX{L^~ZhMjc74NVVej{26NYWQ=fZAEq z!w)~=i03}GxI1(IBou!!XU)JcIjm=E9 zr5R)LD))$Fjld_AJRFZ-sgHAUM{R5}!{1?e{7bHMmj4ahkXQt-!yE3DzM@#+LfN!~ zd3-M0-OwbhldRf3XEaXtk2GWk$+%8yx3cC1lCrChH;4-?BmMk5e`EkLID`0aLFW{7 zv;w1Z!CD)e7eetxMF|3uUeIKQ?3%CPx;j*fOL>C;Il<5(fob=>nnieo{%n9Q4d5nrqP+km6%!5dvCR{b@F_D|0_Rr;v&ly$lV@ngH?u zyd+N?MvpH=k1`h6-OCy;80nQ`_L-F4+=PqsVwI#%G(?mZ{E!S%(%Pdokk@h`C!*O2 zotN|5J;HBrLpUpxu%UcIK#MZPGaOnRQzVElX0Ov3htEz|)MLOE>xQMdm0?F7 ze9kT@##}yiqq!v=&FSfA7{T^}FdB;mz$z_I=G?&ai;8L2Vi*nNJf4A;Z6X;<$Zikt zDp8&i;n@-A9FT3wUDYT6Q?egE^KiP4zAb=Z`{?72%s^WzSyO3xSEzHX++DrsM5*Ia zhZKh&2yQymyGrXFKc{;4hI&_Mz30!V-ups5>u(J87LH&eX0Y8S?CG-&5XDh=I@s=) z_4+s;ES2ULoQ^oyfi^}%UezPK>P);{g13F`ep#1aV)0Sd2MZis*zS|3kMZe)3x+50$2)niDV|01} zxw1rBNwDU!#_8nI%NnOqp+L|uSv|S9=kffxas;Z84Ms8Y1-2?N$!!c~H88R;W@De^ zYX&7tPvm1mhMS#y!+_+$_K=|Eb9^8%$nAxvGm4nl-76OMP(X{autObM$il#6Kf^99 zba@_FSgm*iGKiB^BREU4fY@BnUYPZ+&v5_T0!giVGFoSFGbUchiN7T_Dx3MLth9d2 zJS5D;7V5*5K`IbIMkaSU;6b&%-;|L z5+bckd@kIX{jF94nwFf#oaGT;|)v82gmuTBzg?;(ZL^ke!NaGd< zP}z7v3HD6}+Cy3*H&sS^J_y#+cttg&8gkW)`~oTEL$C*jo)vo#1b9+I{@~8&VbrnY zPOY%wV8R{Q7W)m9QRC})(hb3U9mkMJcLbwsWhofI*RTMpV}>B4acD&ia~yPlmJi!z zq)+Uvqo4<5?^v4;UIY=^)9w|qI5N=grKo_oZ}&sW54CY?0BtuCEES6uT41G-{;WAN zAdUx!Oqd;O8IBLZgL)T1(%{K@^t*sUa_iw}wx7@Yhe(ZVkLjdD$Dn``l3$G`otZ{+ z2Irrkc_>s1MX00oh3y59V-(80BC?)?f;^A3z(%q_R3Ws_NZ02Mbxy#?5kOpf;LO%i zj8{`HIx}$s_3Q~$sIU_OyY*)u*FfRb7Eq(dQRNDnNeOjZ!%QR=+Xoj+rqevIjS)4rZl`a)G;Be!rW=^ zr0G;J-yQ1AS(x7w>Xd}}E&G52_w6wURxaCYDv#~$!<81`vjc;;)nXx7?aaX1ldJiGf-w>pCyla%Ss%XGF6zBg?b z#u?|Agu~XRW0BLpi|g)Tw&yy_3xCPT~p(8lrGPnuIdd5FkxN&Pe1wewK>$$<`t z_0N-)t)c9R|07FdaJ0w5O(}k`NZkvtd8nwcFrk6q3vP0uXn-cs2cF8o^y3o;^`Uk= z$);4|_Q^3RiV7;x%6#dICIjqG*5JFtNR2EYK>IQC{cJy;{X1$gtHG}rP=~$nFqtxe z)X}ju^!22!yiiuN3M&fHafw%K3v~@n)UBj|_twIx+a-=Y5lWI`Rd08ddPCjH-ll7N zS!HHNk)2_((w`f8hG4UBkS6>o0}doyxM!9rF%NaAEQtjT=^8#pVV9KtEaM%;EnJ4jm}VCyuLb)kjLdgu^584D@| z-nfz*Ldhd!_e)tZGvghYwbt@XHG~CJ45us5ODw7mg$G3m-H5a{sp$6F+`6snUhmt4 z+zYM}Zqga_kbkzyt0se8NzJIVnSm9@V?h*7V*sU<7{--hsHV>cuf=$DxCK+&v~2a} zkW#l=2mrxJi|_PfS?OJXt%;rqWu$xZfAsbeVZHnxXh{|$JsZ%txkC*Byw9RV`|i8% ze)~b?-v2pJx~X&H@8E+E;osuLhaPs=;WWZ)sBcq3ea}NtJM%zX_bKh{9B zsnA4oEu6=o3eX|=v!8uz0l=he$=2-QzW5>8kwQWw+E#X;n5oYNtH?$H^!duw^Qi7JhokCs=Ezt_7!n~M1 zK6?U9xRo6&U~o5+CUq-2NSdJXW4S*TXVAi|1|wpCiqI&O!d7;ORG}GfF)&d9p7YHP z^?-~0$`%3?y1Ex<76OSb_p!Rc9TOTjSV|XipZaSP=onOFjsxk<| zhZ@&}2cZ`YVYTIXuMBO5PJW3b(c})!!IG{l+sUiQ_MlweEve$6eQL0<-x?&UDpke% zaJVJ`k{0zQ+$RFHZBkhgR%PMh*7735(s@q2bb5Mw$%rvSH7j9rvJ%J?Exbuq!dSwH zCv#uJRsw4|6TH?B+*kibkPOD5RU2k-Gu`*&4^c{WMg@(fz*RJ5sQ#lA_m|9m_J!1%$2aVPa$awT+LgY{bytke87 z{XwvvioeO+*D$P`!7BWx*UKcJT`)?=zN}Q@TBTx8MK*-Sex_*BGyCA|6ktWcCR=gp z!R1VH-dUMBiXZOco%DK@Li>)6jk z!hWW5k1tzSv5K$j%GMZ_brlezLuUW>J*T*%K=wRoSU0wvU}{rYOgem5=x`3#g~pa+ zsj1sTQ;!Ua(yLiq0#7Ig#yH;WW!Aex0~Qt&WY(k2NHJ^)k%OFZz!)CYW;g44OG2@Q zJWnJ=IWrtt{%dky<>$)UXuBio8s;_kih8omn~uU-@4^0%ZU^ui%?DKjoKKou!KS}L zfQ!@M!R}dXF+kjAXnz=_*hBSeb6YY}5yR?7khNJ>NPUfh7^Xs+h~fRah~dSt81}i< zO(nuoF%qx90SLI5ab)HTOB3?EI`=S^NaC5r-re)Yp06<*_745e!QRda?0FbV*!$hc zG!tJ{4+yQPl%6p0OY-dwIW|b_ME2GG1A| zdvqT#w{~S)od+VSe1&WC`x3Ct(ILRviUo6OyC^{qIAoeFNZU{i5Le z9eiaM5R^V>U0^xz11M)v9}V^z@dZz?P#~VDnwjWf{s6H?H>=Tv zA573lyqG1PqOtn=S`h<=MyE7VGE|b)WbXU3)c`}Y74ys4)t+JmMv5jFh*aU@yvsv7RXBprZV;c zzzAL$&B$O<*b-D)a6R_`|IZinm_dd&QeIAmvV04XM*TD?a9C3hC(8LzT{v{zAB$zw*Y4qL za?y;*Z1zh==A&7w?hq6JIbY~3%;WmpkHqGYEeOjoQf9cRjA4b2fybO$jQ`a^!pF|Q zVfs)Rj7|UiG~c%Sc__Bup9NpSm%7s78``z*`e@(T)_8yl8Gs#ruWSl+jm8+mIja(e z1v(zd5;QJHAUH39N4#*~2!x~CHekMB9_Z>zV!G%_vSEr zoLNCA$^_t%wpV~Ja|vz=JJb?s3_O#AV6%^gXr{)&Jy&i84+KxRBFt( z5}!ID~MVtt^9s1hTW>_P;@l z4r|n9X5ta}`cCP(+^u-N5=$UfDQ`Q}1|4JDf&)IW~*sa$RemOdq zye-G`iegpSor+cA8Ro}yqV>H2nI>9QlB-CS6?Y5(vu&SegnF9U)CcrHTwodZ1TZes zMJhg?EWa-;xxG{}?4$fVR!8H#e+WMq$s+xL;2MecUB_`vz2oMTk6Fv6cH;CdkRD)O zoBJB~IG7{#TS-ZmBPUOc2Wov@9Um^LiDj27SwUv05hb|+@@58lTsClk;v_h zAvgEr{)X*)d#e&UJ_fkfzb1l{G}4V4b}4yA{bW3mOa^&&r=V-obsSHIuVGAqHNZeE zYdt0Ga@cUqlBm5b_ciU}0G>C%N)sMRkwZC3Nx=1|>yW|EE!mPkI8v|C_8E;6Al#?^ zSA5`84HwgUCDu40q^ko2Um6r)uV(|GN}@yQRM-+!W2hvfJ(QeF0Fzu}w5)N$s0Lf} zk?bbRxRXAv4Sn3AD)e)P1RWUZ@}%tbp{!wq7as&BX=V-srqrG(qJ<}J_D#`p;{4Hq z{0oi<3@yrvyP;(SeKUFjtnNfZ3m@6$_6p!q^6(@xp<0Mr$5fFf%uD-Nd*$gs2I841$o1r_T z*i4V`aw=THSxd{{j?l(Cv<=F3B|6ABs|+Al z+i&)>w*L{IRjsP6Tu-h`bxw$w>x(-A$B+33Mg%?ttkf|7pEv}@etz|ka^lkMWt=B= z6^z{sNbos}CaY;(C~B*Tf+glJ49(%Bv^?vlVZ)~s6@lxBmw*@psd+6Ng4*U%Lyb)T zsC2AKO^;pF^xwz%U8kv{rsDa72f|E!Cc;-+6La|oIdYCnolT#~kp=kE09Qn}${$aa zA;gtu%EX2ZshE~5S-N!TQAZtpw9m+NQauGc=_b@DU>S;b@}?y(M8p?|DMF3K%Q;X(6V7@4J{2x9ylp#c+9 zV_r<{uIHpC(%q|5CM{0gTUsIt)qpwj@1V!FPgryS{foSVG;OdUhmR&={`zgICPA!L) zn_WYRyjpV-lw~a7{HvRjFRLoUD>EHMl}x$!gyJ^DBXPK+cozcgBDvm@Z0_8m$}BF$ zmbf9#rJiK>fSoJb(ejuj00Gyf6b3Ay5B{8$m~md#jm3zWLF#TSD)hla=_L}02(HYD z>Fr2X8dW0q9FyBa??z9Wi3YuJ&0@krCK_ZGgVO?!UJP7Gl)LhwgbjQkG!>M0Qn`+`(C4l|2|r8tm#!P_E!s+xcJvo(NKkV@f8t=8I!6UI%|yATB;5 z^x4#H=|S+1m%vcvwFt%v4&5nEMwe=_hoL_lTC$-tHHu^k+rvfrsnDV=(wHfg7U`!$ zaa*Ktwb4ux{=EBTQy z0$a&!GG57?1mrJpTM15!M^ZzPlCrJ=1k_q4nG)LDj~m2ckW~qIzDh215C>XznKdyy}OeO+4F#Yy$X`%?r$9jYj{J zW8S9E(f{ca3L(fjk+y4cU%{ySK&R1@M7^ZQP5qpRPm(sg{_RW5DgeyYOhR!{Bjn6K?r6Kn47?-Pb6< z+fJA}^+HaUyMxnTp}A%zM`bo4J?-r63>;tzMu)VdR>yQEEtv^Y+0wDtm24HKL^yzN zn@XwDX<(i=1bmv_qwY<$WGOP~HGy}Nj2QElPW3IJzD@N&ajFFbV$aX_C>ms_qB~sA zO;}oY|F1x@P8TuZI16WtzmnW_r_@$9zLl5u+T7Q$r9D_T-#8%d8t*>e$gL{3hth7+z*MXc(omox^Y}Sb2BN$= zbYeuQp&dq)F0MxW#9-w%0c~ULT$!^hIacw@Ldw@KES;lo9sHka+m{(X82(!t;-JTY zJpM6-3<6^<+w!oTV}+5ge>lT>=%Kn}eZ+Hp=B}fUIR?3xk45t3B*u$KSKb3q!L8TizKU_{7si^A%2m_mVy&w0^Cz;dcxzS&su z_0Hm{k}W?O`uvRUI-D*1i<1|giczait0l>hPu^3n#ydivW+Bo4Qt)ap)I+n+ z;(47{L+y?*mg_>h*Q=RCuaVSu-V(Me8ETy$)Q^ydtxoVGq_@F)?L?7sQdATvr&Upr za!a~Ok#cI7U(>AZe@Jax;MKLslS;0Zo5C>7)$)ArYFV9VJnsx;ZF-NbnqG=N#A4X= za`5VEp^QDcVn=|cBDC(ro#jwu-uSYUVM~CjjK(NTJJ%yu!3wOw;_lJb z(4tZP(n!qrL?mBYr8W(LeC`fy8FyDlP{iF&1$5#F+8ZnG-q4R(ao(i^eWYZ?Z4bq5 zh$AttlHEyWViy+>v9zk_YKe?E#;Y}qiL445B};e;Qj1Qp1?o%J*!=;TPYo_+;b6SB=+2(m6|92)CHT z>#~E8)Vp0~LYv*)E*}pC=j?WQh<$s%%gUn9LUlN%VD^3&c~tbf=wgovI}r1y0!Xv? zUH&?hj4T(-JSVhD5}r@4#J7=nN{tzDaY>XUrPjH{(VZ(yiVhjbR*5j9k}cv5T3Cfo z=5r+wt9&vORN@?GuJOryKD6`<`D7jqEzZR!^H?ZutGVox`7%kv`(%>kJVE5C53FW6 zvxF_Kp0L1T$B8Y~A}jrB2{I_#6(~(P!Z$;`Pbo*xt|~afw>dB>-IXkXXX%wCfTNHa zxc7?rJQp8f3$-K;zZ?2DPmAhP&eNinVeqsl^#xDMN%fufnA@)x9A)NL`U%DATFxeUNle@SQg@4u=zb9uhOseh&bGbMcI{;&l$Q{Dpe zRg4T-<=CE?cnfSrH2s0ITo!sWm4Z73;09im;uaVk|2oS-o1ll|2vHg_(U>F+3+2wX zri7LLg*SxWHiq6z**Po`RiW&rP}U$*&wHZFQq!x73ZZT&Q6b{Vbl~x#7RxR(<9Am` zmehaB9{8IB48~0ljHPwLPc^oPsRK0r0~*x!W|3JsQLw#Plm%RwKv*oURsRb3mZ8CW!S4pvW8a9h`Imhr!IsOEE04 z8-F(W{nmXsidbFXZNCx5K_CcFcvacYt=#w1Oj|RT;0172IbUQ>=K;y71uq1euW>YA zk#J3>fa&UJ_7x1Rnj@5#ge_)r7I7eti@h#OLT(RZuFlb3A4AA|9!3@t0WSgYmX5i08=pGT&o^PTMWZRc!mKF=7b~hJV(C*znw~F zbJbHNq{(L>KJusr{>^(5aHJ-soo0gtbOU24P)V&uemD z#RyMBBxT(WBd8CA!^CQqNNtD8@EYOmn=%neU}dqBtGR?Rl;E_BRDx>|3wDxW4xlu- z7MPd?6Z+IRWQ!wubm=)PN-eCOiI=SJYr`PFsLZ$^tdzRd6GWH2kP&x5M0k;;SJaxl ziYK#sR|sIj^jHgWOvB)6B@f8Yu|#uh>?#SL>jLm5eD)oZ<4WW{oter_JnJ|SW1B-u zCX*xtQeljzhjWk(wcDp zAjptxf`7CRU?6B(_O8h$HYGeoglgM|z@@qF*5tl|;lppFDXj--zAh9sj=>08p%RI& z_B%3Z#mh?-J*5DHf;nYfT*WX7eGKJ@OM2>-9catgMXZJd5U&Y6)osfRq7U1a84oVo zid=c5I+SQfA)S^%rlPP;>Gqb7-Y@QwV3Y-$R%miPONVqzsJu)4-F1PD3e=eS7jbRBW>@HAV1d7qrOx`UHlP1hh z<-offcUY7A8a8{Z0XvSjCy$8b3E3%W3Gvx4IwHDn;l7d{Fv?!Yz5xwI!MXP_%sXzl zJQN?e8xuMa*|m60&TJh467E|&I$(FQ;EUWQ%0rmTMClxqM84c1X%C1sTjKR^53s&n z6ASBpit>80ZD?jx6_+)jD)Qq{y<}y~A7upK;FPDfj^KJ96#6;{5OAZVkDK^B)p$G= z4M{(Y>tps?E0Ueh8P(d#+Uv6R`mATYjl;AKzJETMoZ!x+1>mye$U^sQbTY}Oy)g{Q zNMH9uAlcm(5mj*Pg=9^fcx5+7qZb(&dsA!&%HI^)yIfJk9Sy3=&K}T-g~p;7l2e&6 zqB_jVv4kV-MY2o90I&YRQN2mrk}?460srBm6kG$u+kZv}p@rjOo`p#7hKqXyrSxd< zlq%|kHUy7+qjwVaPV%xt%=HTr_BF3`YgU>nwLElW;-CrTL&z4Cr*1fB}-SZvaJ*p+GM9#Ih2D*yU_1 zkNz+c`S2LNEdjpUl|D4nB(Gv%52{ehQieiJScIT)tze7*@lcBFvz*rf0e6NDZq*K$ z_!#2?oSb8t*a%_*HMhhY!kEfX`#qtyfj10WZSofg1n`UjU-%k8g*py-}=zB&8RFhRxfZ33rncx8kdDeZc(nm&Z-nPflG7~;hF%EYbX`U7zahA zF0cVNLRIhig7#p#b$?ZWAtp^{`casJX@Co3AOAjqkH6s*XLHWvWgwsyGd+N?F<#SVa#hmJ`p}Kd zB(cJo#M0zMg2jjqz&$vwbv<*K=i5C5%M}7`*@cs`SOkH_jN?2=f}P7l_YqS>vt$cZl0ARw-p(<CtE)u~ktz~&ii0@>AcfzBM=)9vy_B3_8%v8YR=B8QH`fxcRIVk2)F8<&T5G^?`Up(Q^R6oa1HoE(QPd5! zz^HA$voZxppu3wwPw`DrRn;0po#xP9+?b>!^z7W2MNLoX*R<6(t+r4vl~!x9pUU_D|DWf5-?i6Td(TV&%h%KJ)7g9N z_1>QMxj)bQytS41PHq|=l=F6YXZTz4#avLVQf#Y`%aVI`Kl=q zbX#!B=7VK0x*SrXhfn@+vf#0v*2goSHJ3=5z#sTQn3H8Nc}llGFt)+%t@RTp%pWxaT0(s zOAj9D1ZYsw0~S($zOPhP@g5dTrl?RQ4FZuzrBh6`Rv4mAv@o)&E^u*LZGtm*4Pa2L z33wpo;0V|+wB`IDHP$xp4?Nb-!JupoDjvX%K|9p$^I}pLX4i%6 z4wlG{UZ~lJg0_mB%M!G=<*|iBn=J^C^Wh^bQRw#c@}HVqWQDUrv=7eYko4*Fw~s~NQBN<)Y&&-I%S>x$~2wd zHBc2#B2S1_Y}p9XWyYAefdOt5XN$OGt`#+GfR_`f-Zwr7^23*5_&Nu*4(g4(I;_8* zn=y)L3;}+57$yW4xf#H^!F$3K#OgZJC1$kc%o-Nx+vbg1&nkj86r|q%OyCN27FidJ z?tf4TFs&+gY#g8lVQTn5uQ9oV^+e-IBxZHidiCU9@vaCofsPe8w%pH%KuclIV%jdp z9x|s2_OR-abmzx}J>1|;zGOPXZTX2qza>rP1BN>cg{=@)#*QAOYS-HZ2Bx!yEC(@S z+QhxCBlu8>xlkP|D0T2`N26c5VOr8$9^39P-Nl52C+X)}t5Ejc9C)grsP&$7CJuZmEtLvejryJ|Fu%a+yohI`$ctF-hS{hlHo8 zrzWPSKpK|*z{{rti>cGj;6o@~8S|;NrNJ*xgI6v+`8|e1`yYpJDA3{ALWgp0k}hxO zHIiOxr*MNL42nvI(tRadVLWGcK4d5n=X31%{_LX=tL`z`pY16gZCXrU5+ZHOW5=#- z@a#x-_+yo8%;(aZ?ls|+m;1AaIbfdOule!8BYY4$aOP$&I>D83m38WqHup*-vToyb@19hLtrwM@AbfG@*4%7NFrd|JQqWKj|o%A)XEM# ztZIR%5*R)XOTLD04X|(UK+y+ft3psNI!!?g+6|48fT+ljiua0un>h<8)4pn;5QGuW zen@1px`O@W3!xAL9I4Ccp1r>89*xc=7e)uP0i>)CYyzMX1Eb0slc`ISSWp=xvmuKG zEjX4<2Cg9)czTn_S?2FoC+K~-adHE}&Z2I>eh48*?d;%JtvZXujlc#XiWqoJ>gO%C z3-k*j%I18S!cf+F;!1XBh~WDw`T0WrQLsrf=F=p2sOL}z=bm=|F(C6~h0nGJ;hW=p{ z{AXUCkor!l?_z5{P+9}IPtV-<*uV+%*lv{=cI5HZdyIdiGRc-=GsdgZ+&r0) zQcDyDc4Y1enqSg@;Q_)EC1pTkHNRiBcpFl4_MU(pE{Y)uv6+k#4k;b*>rkm>B2n~6 zwmUtNZK8+?qM}E#O^+lPDMrK8S)q#Gg7c9Co#WqV3BRsOt9q|NoL(0%;L^RwM|`Dw zjfrKw5_OL{QFK$9n=_nL_4#d#0WJ^G3&eR+gYHbAI{&fg2oq!r6(@T5H4m4NzUbE! z+{^x~xjZ&;v`6t>+mx~gbZ2_i(Vi0ts1?%)pr;_GZ9aYPhql!2C$=-~ipd4Km{>^6 zoSBeuftY){Z@aFu5mE%RQBt%CB_g=M^aHoCTOpj~V9??%3h zY0?$)-E%ZY*r8mW+`vC6mAG;XWt}|f2J99w4g5n`Z{yB-$9jQ;Z z)lIYmv*{U;biuJibb-@kP}lTvtc56kLDmM)vjaCG}9O_nI?U)iaB zB=G}z$JD?TMLTUO*|R}C1#I5{JKqk{m<}ARNP8hIZdY2I4o;!U;ivsM+~zQ-8kmc2Eh4 zoI9WwP;rI>;0+#w#h!ET5R8y!5`KpJhYGyd19|!+97|OAg0!Z-!YwYX<%Tr21Cji! z6UErB-3b!=n)U+M3I&ijqEUk>dVs)dGy${}uElQ^bW1u7Al4n-rU3?NFNR~_WWCT0 z!=bkVx*6wVWT#z^ZuUZ2;+xYF9a40{6E^l{#M6zPpekbzt{w`Ya_nI!xHh=k<*@}> zKEWVMujA$5g2y)SPbP=^)iF{RmF06`Qtld%Givf@Cz@-)T>z#E!;1}^kPK&u?qDp+ z+%qM%O;psuIHR%z(fK^~;Wn)yjbk{4p8FKZHx+p2Cbj|fa#y=jSMMxFNQ@-?L;-W4 z{V1Iep(rdErxTP#O9I6(6)vjyOwwyx#$Me)ZQ}Yg7;wY)o^9h7whdPu)Exb`?fm`0 zCAPCQlm5fjPH=1SuW2zfD__W4C3#nY-&W9lw;w9)HdVLT>A2f7mEDdFe7D&E++V!9 zt^JrHw<+(-&OA2sEjDMdm0SU*WDbdYiw#T;Kpw!20HpR3061Oa9>q)$*T;+uJ<7h> zU1<_Nd+2wtWji=zLd&bu>ou;Hz+=J66JJb?uT72j8zPb}#0X*b0THq0ajaSH6-?U^ zoPKGjg9IUo&4J)N+nB9+qvCHUM5-JxGBQ9-9W)WDu# zvMrDA-)4aiqMWBS#t*ZNV{Ja~>v>`Z!EgN&`BIQ{VapGfrpT?0XFVX6D})*wII6P& z-eU$!feG8LS2Iv!>(0|NSwo33B-X-#gf$^z0z8euRH~uI1ry{h%VWQ{8swHZL$m*J zf!$YE3cJ`~8L%s#JldJZ)}63}!>kT^1rl$S4l!Mpy1LtV$P(cC-KA4$Au&c9GKe54 zRO+^8&c!1o(9w4l(T<0K>@XG9rVn%i_5nHQ&9X-$a-uQsNt`bG(5|tx;%vOc!nWse zKtFX9a`#I3y(7I?+N0xZ@VmT6m#5Z+JrWnf8D?KojKvl(-E-2MS9+>EFX{48maQeso=-ja22kTG9?z3Gv*rgv6hg_UbklCdJLD%n`-B$0=w^bzQ40JIh|KM z17fj(@3%$Cr)ounjL*_8?#yEkzKdiJ*hSNgaDqP=rElOqQfkP}o!y=nnLt^-UY5Fb zCP4JE6ZrJFDgQ)S?obkF1W;4TmMw%(0zClANz*cc+ss{oGU7-5;WlMCE9R|;>uQt| zySgTIRVdt8XBQZeU%hhGWP6xvU8I(C8ZFHUg~3CUcbm}Yshu3fl;%VK%b!wg@}6Z( z>2rfC4yuu0>_4zcx%?pGJd_Mm$ZR1?V}`r0cMkKe((;tU+{*xt4V;YF0L}n-(@oPN zdM24yF^zWQu>+5NT3R!YDl4e0qpA}qs6l+B&A>#Z5LAOlaX^xa)P*XKnXL5bsHQQW zImD%HS|+h6sp)Bl7ZOeS1FADQ*-9(W)K+ky4xK@CG{8Z6^<)uO39-U_)Pf$04f4WzdY-N3;>FA>=e4{V?4^XbSC>Zy_5lzJ{4BR&V5>mtaR zBA6j9l`SnbrXD7x6v`u&6v|uEXr4l;nB9`?7Ax%}r%LS(RmQu$(k_LrZ(&u!aBQq^ z#;B+6|3Oh>jS#T*ST!B#x*!37@1lJyl*ouaSI$)6p>jHOhwW&h)C| zm&IuezeF}chr_1vtOtFtjBG`Mv@Yut+jgbyJ)l)I-BpW$0WC|602bC{4PTYIxXDz4 zu0^I$H7-EP7h_htEyfZ$z7xaQaje=@;bkTCK3u_$8`8*?gx>2JEnWUOE#Qb1FL3uF zIIi8E(H%c_hgG{2VL-w?PuU?$EQOl{Zg2mB995YXU?p}GVATJPVP_dB0Gk8N;=<~1 zt2x6JbSbsqZGmGCB`iCSa9xteIXK4Q>flmbof{oPitrkf?IH9+ci@;#GK_}sdZY6s zgDHvN{HCpXhAoN=&9cjsJlntuJ)@K>q=N?7=I1K>FH7mvu8>724Gp0Q;Vsj<6z>SG zOwJULDlL6iW$B%TI0v*gmUuDY5>HX_1lnY0B7sQBeD9+e75a$0>zxZ9Wt@WEIp|vb zd)W)OPooS2lx48Yn;sIBE| zmK?)h-Ji%`*Kj2Mx+b=jpt9jdeN=l1Wu}j z-=o3!5GUfuz+V-|<&4JSuR;a_a}sX#g3^m846ykVdQ6TOhfK5EnPzvU@}%r+i+Qi1 z=#i?)-R0o-^DOef)QLZ{w{$)C5}~nGY1_K*+8w1`lPjei!z2U-=EZee+zZAdZs6nI zvA&R4G(dv4eD7=<%X=4m-rPHLc_-+g9#5Eq?_CV6hBPt`RoI=<-W5o-w0Fo46^emN zVG;VcLO5UK1eRD5$gGd#0FaXSJ1C4`p%CmOcfRD@1s|$p*o(mblPiLsA3L`)pgmTu z`0w5RfhJT`J6xFXt|dbT*f;3RSO`dwNgsu*kqZ?ASTVFgMl zpp=wAoSo_x6?psLGF)NU7vy(H_mGcR##dLn{Jzo#$xB>}`17h*vS?y*NOhFtf_%&J zUDsQv!?cZZm>;JeL-$uSCB)5ihC~z8X9-M82bqz3MG0{njfM{?u^hACnR;|14H!jx zPGv6%`1PG?#)hP0@K+__VCD%kF7+O(=dKL%K(dY@s%gc~3Qos%$szqQeyZ8JR42I_`P8{?iuH6n`q*q32VIYMClOZ z$1wi43jbRzg$%bm=byjMZaG0Fpna4wX$2!9R^iIRgqei{f|y#B$yBKAk~}WUu?PoD zjM}KI3J3by!xx~e?;!uI=6({9hfspI(Oz{ycHYjpf|lQ2?bJxDS;f!jCXwP!AFfJ@ zmhxJIHLEzHV+}?}>JiRijf;aX6Sk-p41YIy4o!Q@XN3=9roGCXZFHnFS$()Y$O;)` zgSZNTUPL&Z``g2B@Ro23Vadbli3Q;4)LHO7LWPZ0^sv)!0v<|rVAh;9fFj_)Y;b^P zeQ02J=?Fj$&;U4+UYW}-q+NQTA)ZjQ;|#-Q3?|dqDFA8xIQX!Yk>ymuXtTwDPOHMl zVc;5nMfF%mJ)pGLBLRRK{37%U^Avj7MC;M3*$(Z9BXIhlkF@*Or)6AYr$3W-`b*2X zGY5owTm%0g`gDY9$q4D863t5X9k$~bV1C(=Pgp{An&b97wsG}@2D@+`Jj~rd=VM`I zt%2s2Y2Aa=0t8sUM4+Sq9)*1A90GO}v*EsNaxS@GV8v>(aEgk6T#IOv-8TWGfPrtG+N%S8B3d2_3mNGqw1I6$3C^a66I} z%L7nB<}Kv@6<(l#>O9@#WCHI+!Z1T}$FLxHgkf$9AFg9y0Y5dm!+T{hD{^<6mGM~rALu(P3%BQ;bka%f@rjeyo^r}5&&Ea5 zxM%u|=k_k_|3C@bS*CwB-YLDVZ%-52SJL&)CT8;~wp9EmTU<)nizB$Q_dIPUu#-s9 zlCn4DohEG$D8azvnKm45g0}1nx_6!%p2aB~>^+6~ygY?7I;TLj@^npMzUfmSPV&6Y zX*Srt1O>+W*V)s1a916nu@9~I7kAh7>oD)BxaH%sYYkAZWhr%HJlXuI)^HIGMFFRf zi$eLaHz+>V;*IhJH`k;ExWHYDm#}lmV{e$@d}rP zUnEpIjijid)(Mdt(#UQg@&3f9C2G~v6MZ64YPXv)2qTbzFn%4HdQhU{N``k6!|# zIm9o{XlgIAF0XO1vPRT*=~$z!!DI#3^AptVV~; zq%2EBpN&UM^>7h=7QQ0aBYXHC+{EY$A1R`#z3Nr7QZ`cIW?&FqzYGnPwXd$3)bUb0 zQNWZ+r&#FuWFZ`gkUbecQy~tDa=VX>*o`Sm&=EI;A5AF^6iO8+AWI!Tdtcg+8l_ll znm4n1aAU*xAlWni*RRnn1uV^&n}>Jw8}#8L2{8UK=q_R@rrDxg!HQUln0A9Z*`eMg z1UQ(Mv`|)%-`Yz-hGsF+z&}%r2e`N{R_x)DjzA5t=lPG=z&X1+b6jFIXdFdXj(|uE zEW{q9^8&a!b8ZNt`^YNMc~m0^bMv9#z+*gE7xhHO?Vwv2M+Vv7rq<5>t`Mbkr{SRtp6SiSJCo28&$?I1&!jvU6JBlH_5n>sDbsxfj4 z-89QBQHm)e36`!+C9B688Ql^3a{+1GEu#ZXN6f^7g|~R8`!5rfZOdbux0)GL%vOUM z2Dhyo|FnX{?8Lua*`SWas*-)ub}fSzjtET9q)=IJ*pWtaw6->zOY#M0;=)Qg-*XC} zs=@kd{L9+F{5#6Kh`6sbNCRI9emnBaz^Axtaz%HL#brKZl`N>*Mgc21De-D_!lc=7 zK99~4W8^^08B7Myfv+RVB(&wD4aJ=h`y-GGBpk@LAPsS{F975Y+a^mopAH0Lv2v>7 z;PK(1$q;lmT>uHbZYT_91eFlt$~2No63fT})EH_7KMNKv7WN3}Q=Gs%WU(!N596sk zX&i9&NEaivuA4|n#locZ9YjqZ?64D*+2SE{*QE7blh(J>ob<`>@}hcvfu+aUBpUCa z>!WYk^8hP2fFkr(_PsmZKOB(5>0W{?#GSAmu74C_Io6Z4Wh$844&GdH*22AM(hl2|=#tV%B#MxhF*JbOGaL&HK6VMCOWG%S>CE4Xa1 zTB0$XoO(6H4uc*oF;YrfeJ@Z&z)cD*yc)PQ*-!{Sk`0BBa9ZkB39w!o)P%W{0%jUz zkw|3PNra1F{wVpJl8UgQ?SA_I`>@DkM&$c3NnMyee@n84e$dptN}mcQEXSrmsvFV7 zikVIU71j&(9RqD#ds#H?PRn!AWbsuOO|-C>E9?nJ>w&Fi6;gzpxL5xRRI2G%cfB0d6!6OpYroQ`?PcRc`0lF|05=+r-h+Uf*14 zmgLxPF;B8v<`-DZkZF~@Oru8vg%%}BDd)?mMLA#E>Oww=rFe-1Eb$A-Q54f1#;oms zTH0J5NB4a;kyF@b4&}*}?7xuh#WWOJTq{iCdZ0VV0I)#^SaX=BMb2&{#GUgHnUCQym#Agv$ap+H(W@uv34!w#KR*n27Egxi=i&nYr6{|w&dp9_jwao%%zeizv(s+fM;=Z#G$&U-S>Rs4CW zd2jDJ@4Zhjyn$2^z@WyZCOY4BqF*eMo2fuRiGc?GHEBL}aoFq%9XeN1sRB#iDdQ26 zjJhFGIeTPV9{Y8D#4a-l zc{!&HJ4RKauw%YO+Odu;+L7BpN4Z7HiV9Px`l^=Lq9+;U?hYGYVU0&gxqCu~k2B@Q zek+*t_))Hnag=EB??kz`JVEe|{Z`;zN4eeKew-=S20F?udTf;Y$Gu_^k=Y_ur-^?d zS4SsEyUV%7((X|`^uWZ5i3C{)pdeXgJsFMpuPL_R8qp}i#!JdL#} z_(1Y2dM3W^%;SXJM`XD)rh`^|MDyu&$0EF**f@Cgl#A0IoVJCUG8@xH)t6wA(`T2f7Sbi1R3ZuBzE zrW=Y`UPg~t&y1wzqfK)(p{J^QkuIh@Dp6SrOY0=+&G~7Q;TfjUgb@zzEtJGrTj(%;g)61b+sA!*GgmS=Gz(97M4NFpD z6r?}vV-xyyJl@MD$QQwj{h^sA#k3kYKwP2AmOUv`0Nc3n0yTmGv*UKO2eb3+^O_yo z0Zjigh%Xpczijslx4B?fIBITi_PL<%V?%$bZ*~{@E_P>{O)dOvszfb94~&*w}9uBUsU-fNgmHC>a44+?x?t-^*kK?5;N> zIJ%{EX9OIvHzQclh_#G>AgE^qOW=!bO$omq10#s!S78M6gGZqeKo|HgNf(G!DSDRt zerJgTFxje5Mr)d?0G+R%QU&FZ#eNt%fKGsP0V~%7$*Hp+bYxOW>!qz*@q6QSD&WjU z7veI~tijNO)ojKy^U6;lxsvjo*$b9)&GI%4exb)QP;jkZ(%vs@iCXxc)V0v{WXOC$ za7lH#s18%4<5nBVZyuAN{6r|CCdYpCC0qt0;=mhx2`xHi^ zZevLSK;w2B{)!9ed_{i%2Etp#Gb6)5M5op$93yqaYo_~upb6IVsnd^p1y>K0$U?!@pdmlMHRY8WfZ&fdwC%)v-S`KE*8SFuO?l!a z?gv7pwJ9&5xP*F&K95zOqzM+eDyhi|Qc^2dpRVK#?#yPkdn_;f0v$2G2oKTTj%0Rc ztXR(wuTEb!mOC^#`H-@S%hBff^FdTqmLT?Q$?0mjpoP<%3y;9 z9iNs0NzJ*25kDr|m#x{EZ7R&ZFT-*Qv)5u<@rlej0x7N?R%Zeb#Ym%|UCIrlWaEg$YuinvcXCPB7k_!h0ih{!2W zhQzVCK&FYL+^XG}A+r}d$=A$Kz+Ph$`TacDut3WhTnZ!eZaY~x-26r%q;)^xxWTf7 zHz9eJB7qlFwfoL(yb6E%&uzRCf6y!h^vN!b1Y;awQ;H+RJw~voCf0vR9#`wJe!Fvf z(qj67Cg}F)j3%@ rgoYi<0m%}xm)p#WnI4F}YgqR)z4U%`@FJ>)vp?u4bO{bVc zn7Lx-mV!}RzQ4pubmWjQ?ZQgHD+;UxhYk}fp(vHLjpj-+M0#u1rwlyo7<>)wo%p{s zJF&oi;~3Z`vI#7401QRX!2$J@e?_;OQi_JS0#h^q9j0gu$tS=}yY@iGCZY=WE2?{G z?5B1w!%y{lc~xaE?MP#BFQJOYy#!a`XW$_B5W9v6_cQ(Rti~$}+c^l7y#U)ejI;`F zC;nEpeAy>3YhQr3t>n;zojOcIDjyO7w+?uKT4}6+;gw^X)Jid40 zGoN)5&sKGb=-yLe*%NrR=z267#gP&wo#B52N=ZV811xCBqb^g)Vjr`7@Y&o+MHZIc(n0L7pSQu~*HB)j+8m4$_Rmsbw59x2X)bS5XP0 z7DYM5-*K*3ZRm@XItV_+EGzK;p{&J&*Y=H5X>EnW)P`WGPXLw@BpiTtiy^*BpElZcRkYnPURIKJLp3?3}e z;VGSBP`L~+n{m*l4_p-;^<`U3@kPB?`jE2WIjCYI87_>J8;d@=2{7!I1PX*C1qZYd zDqX`nqypm!Z2>+RjZgX}2C}go?f&g*F~rYoY8|Mlz7Mj=_U&1I@wV+-5XDgiwnBd1 zIQTwK7gE-q1ny7k0!ohrB?S>BGrmhsOyE1^F=VO9Jg9{xsVP!Vl+jU;vqcBDoW>pf;^^~kmT_I)CtIAn-gy$qWfk* z;9G^cb;@IE8i|5Vnz(rNBX`3ECx$20rkldBd-|uAOO27^XVlex4|%-;_uC z>EK7fUaf2M=1Q9?KPr!NTcu5vAC=p@rP3zxBjx4QrNy0k9Oo9a$2+1uSJiajs%dTl`oRDNq77@JTlAJJJh^Z zc8REwPYF*X3796$-(|=dQuAL(q(FlI2lm+t1r(_rG(VoPyNLt#sC8!K;O<<$&Ni$>EpZJ{n^ z(|x6_UfU@z+SzeTPcT`5pU!U5L)|w=|FmsAeO8nYu#(%fvG4{hba+AC%pxPA-Nq;S zp$!f^0H%&ye6Ut=ayn#abCK0f3}wyvi6Nv(P@!V_hFM=j+2DnAL7d%eOn{FH@5tAU z=H|d~EZXhX>Kgffr zd~s1O+)9x|P1$0w!$`DmYmq={>YEZal&ukgvPdil6g$gmx+re9s=Zp&$^Z|kbv1|% zh0#f^K{3NiL^HlopjPr0QET5UKZ;sWlND}2qgJLw1!|=e1JsH$b-*i*;To9> zNj1!<-A7{O+@26}y(W+QvutwRo!ayuR}x_$SAg2dRX`?P67G>;NqT``32P!mxWa?4 z;>J)1BDLs1ury!m36`va(O?oRM>LN2I0JDdM0;BTS%qldJP4xgUv{_%1Q`n86>Erf zC%{7`0@S4&ld+C@^>W|Xz|&OOz>1uEqAZWOO|hP`_%hWg^6M7zAtr#$l7xkP@xz05-ig(~KoG zNbk}n?T4|6J|ev-oCXZV+r<6&t{>nexF!iM*Y{0i78ep6_hBI={cl%V$UoRZEG_w9 zg9~5ALOg}Sb;R1W*32zI@~Sj}uDK6o_uLvlB?@67 zQqTUe2>Mhw6s$a3;IT=d8Iw@!gNi7=Z)cAW1K5RhoKN#>4}b>MlDJOXr)pW0Ta*`~ zf&JO>*hN_P+3^={-8*~yH*f<5Hx*BfqqYpeAk&8J(*&fIaE#)LOjgxYfjbcysWVfw zQ9Xk6qu+q<5_eq@r91-?Q4!@w%Pv1r={HkZYlqTi5UWu3gb83Gv@FX|g#h|gcHx{D zN!Fa(4#$G$*$6al7}esM_W*XV(k3B&YANV9dupc(dBl$jYJRqOpsx=$PWTTfxQZx< zf2e5C9rX^EP>)A`XF~}KGE9rfKiY^&l5Fq5miWdd>;wK9OL;S+8I=AoMEbJ zZf5!A*T=%b_7Nu^!c*L*(`=WDR$~O;F!IvCj>v*S=oAdHlE#ICPGNyxDB7Zd7s2Gk zm7HCtX~yVd2J)xF9Q+j4Q2?2_W)aB0|2P8KGSfVza z@cn2K%#M_HMhRwB-_1A`gpip@k(FmIOd94 z>3G+s@xEx|nHT~K;WBL4UTX;X19-DimioHXx$}5)aav}9QKu*SL;&1SX_HizKR+JS z)U6anpqZ8Z1%;i{aIGd?`JnqvpF%gz<_AOJ zw4~9^lnqzu#E^hxkt9U~oq~sBI z!$L_n_Zn%Pt^&~|a>FSGyI+_md#LlmJm~wdpMv--trTzw#W1+o4|goqz>pw`ifI9o zzE~uAg!>H%&A9GzRpKjBOJ6tY&(ayz${tD!w$jnG?ih8Fjk3Z8%c-LU_bqS1AMLr| ztJAc7!DGu@FiN5YQ2B!4vatm}TwXAp5lUjFw(~?U_+vd6e0`d>FZjPKbHO*HmcC$C zz|{^vQeJQ>1NCiKaNe=tGX371rtJ$pZkY?dCAIVg!?Lpl=b!Vcx9~&ATBo~8*4?*b zhduf>9CYIf4_!^NvEC&^X8mfZV;<0Rp} z0x%?$K;4@i{>+UsBX~0^-!g-^NZs}de>5hRSk+t8WS!|-t*vD;{rr|9(=Q9>J5%Ql zLnwvI;)8orONSwVWH4MP!|*h~P%fTt2hx1>x52R`Pf>E=1Sv&k&siiL%36-|Pi{%AB9}BjNz={iA zA(b3ino9Iafl3b6)C@Ii_-FzFunm8PNU!d+Tn%_e~^tnmQ%4uiS2ou>RwYl zV^uWQ4}(TS-XouU)D7ijz`oJX+r_ms4UOt;*9SafgUl(bwn21uBo#DGb!VDt{Vn)KZoE*`Zk$MjFeB_`dm@!_yw$Hr5MjfH!)HkLqy>a3xK zgNQAVnV)c!9~r_o#DiuoDNjxP+2H4)G(EqcGQvCO*_fy*(Ar0dG=4m{VJQLDy%bn} z97VK)kqEWk)E(1(+%yw(esK!`ZogD7VK9dQuu1_Z@%X0;E5%dF=1pg?*u+B1d0ZwkYrNE;zW zL8NsGj0V{)Y4`rsNSZfY@EmMwmc2cFM9vC2EFJ}N6OjE|FR+>!XXy8uWt@&5=oR9; zVdro)WC+M2fC@t{gN1}k$~Zxrl$}}$wxj|o9B$CwOr*V-ru;Q?KJbuLELJAFYO-)t z#cWGPakzgR%<)Q|n<%C{QZ#|NGv+J9aee1)lPc$BIv8;-VCZ^Po>k`tYJtz;LOgcl zWr1)Z>?XL+iLXM&br{f(GGlh=AR(hGqqR53mG0xz*0|wK%hYe@Oi;TsLCq`bGL#q& z@zNUA0=UBwKAGMGf7J=LTDzOl}f$>Qk#h*a+j)C+%^CxXESRwT)WtSNPi*HytqJW7}Xh-Ql&bBgemcIu+SJWU1I>W|7ErVviypC34YxQP)lr1U&{V+dY@3$^EnO5(_kggrw2AI4onZvKGxr@xF#lR6hY`4Jp5F~dE%ZLrXBK3kSTuYjYN9X02C7S}c~kx+aa=fx$uS)M5Q~sm;Fw z20s$uv|J314W5h`94Gf50E6RNYB9KALwFqy2v>=S0y@tg4F<O$CGB#X}y; z<-x6)>VM$N&m>o7er|u{%Eb&_P;?je{EZTFKLfAg+KZTDRKDnBTOM0DcC!WU!!rJi zbX%G{WJDYAhd(5in&oBDgi_35d`CwX?w4vOhH5>VCIrn;{FHfQa_DkU4kZ0-GgvG2 zrSKMyPncqcH>TN7xv2kq8rxS=Eb0$^i&6#u2WG4TD?A*mg>q(4(D`LcS{xET27;EF z_^sU+CLRclGRfr2eDG@hKMQV}7CM2!nbScZwinF^>%`#GMZJ)MO?sh1betlDO4M?F z<`Q_Jl)Ve04d_K$cfZ1mj1O4aFO2Dpwv+4e2TM50BKTJ(ID2vQs7fL$YcG~Z!%He6 zuVs*U^Yk25yAK8*(^n+A_h&ll9fXWZ-2>qy-VP=EJ|w+8&Ap94mP`&z7nAl&LZ zAP~DMn!D3tozAH=9x5x1%vJAD8vTu>mBu}3fDWZGK%-84-jv#OFsxo}Zb@w_3`qUg`g@}8aNG`}4Srf+1>rbGjNe=Tm zTd~HBTed^9v+T3mQ}b;}M*U*nR;Gf2AV%93b}2X24w~SvDyAa zD%0D(TZy-(8D5%Z=$Zgca>xgpA+7)k^DvK2%-J-QiLfV@*o57#)&qb?Xj4G7H1w`C z^o}(rH^!UCP>lwn)+)vVMuB~l<>8g7H>WxsK}y3dq!)G!YB;#KfwJk1YttLI+9?hS zrK(% zHmwIDyI-3hqtCD(6lXpsA|&gx03#)3P@M(XCpCg$QgZ@e6Qm$)D9zyVygUOm$FLhT zmT;KEij-_Jqd_m&$UTOeu5cF+Og+r1dKXY2KJoxr{^&UE=2bq2s-9q$r|Ahq^C;^@ zYS0a+IPi!kb3^f~a|*Bk&NYB<4AP&bBm9K)P*N_@R@LIBdDka>mXK89iUhr@TlR6x zx{;feV;livjl@)N+3e3)2E^IjY+Zn){>skUKBG~p(jrblb$!;i4)9iMQyXe$1h$<& zSV%m|4t!{>C^v1+jR`?q7F+63P(~8FPi<~aZCnZ2*biF8@jyc&L-{Mb@*yQhLH6~qO zn2Jd0Cqit4>yiT{m!d#&yos~BD$TAV2`wNSF`?Y%n$)JEVLeQ@-13spfDNdb$$zNU z-f=>+J3j0x;REIQY%iZ&Y~c7{3czH-he<(RY=a-ciUBY`+0T=bP~62r*u+_geH05R zbTl154=Rp%H8!h_b9@yWgm5GMlaO(Xas z-pb{}Vgw=JDZh-ySZUCF;G_%%M5l10GRcLMVV*pwKY$4v2k%`%o?^@+v6QRwxIHC5 zh*1R`ojw)k_L!TU|DoaK#j3Cc7g?~(U4KCzT?xoB?_RubcbaI0_x(9z_Uf zhU1^<9Z)*DWA{P{yQPp>=}W~1InTRUF9cq|=F5JSE z9dQF5-T6mZ>P31iczU3}#h|`retZF}IbQ7SG8}0HO%iAqnY|~h+wEUg0*F_AbA2;O zTJme~X3##u*HE&NY9+o(A$4@a*G=9Q7{_1DN0&Itwmgph92ps$rzvrK-568dE!MIq z4$+^v+$*CAjL!dn6Q>(Wz?X@C%1@wrvj%}CcnvIJ`nco1gNX{?*{cTbEhP}@h(dHB z&@LtR_)&Z=Y@Z%bUb%yDAIyKb#aInO?nL?qc$#pcm3hq<{)DVYZ4kz{8&ED?-qocR%p#!T`=~>ZBU0PM#P?}3Zcgx(hlRH^b#}|D}v5XS|YI!zahC~?+MOV zsta=1)h>uPxoQFKY1e{Sas!N>(Q>9*(N$u;62)hD_CuTuh|@(7ES9*K zY6KTDthN|?INz{+vuCbYu!3cM`v4&X75c5J$SOiZse3HG!DonDpduszJqXMh66R1b zRKS70!5NSZJcWz`44vCJ9e?1bn8t3C4G!B8sPR>#*Ht`^N@J2e7A5U}W-S?-R&T5>F6}E7i z7Ow$DoW=0VTF=2B=8n!&sFglgvBYWb%cs8?{%=$wq7l^X;UU^q}kBdUTww2*7&JY9H}G0FbYNv zu$nA)wW_O7ac+;C+c*t>sv4bXGGXI21;IiRFvGQ zr9AQ9z&U;*a1OXvSFKtd@5XZF=V?zv?Il*MJ@Le6qG;_&I538qeQQs7_NkNWPCNZM zXFT`JGtZowI_r67KmVK;yx;{deBtzqUi^}CU;481W@fYRdig6}`KtBb{XO6Necumo zcHumClsM08@G2b1F*a=K64UoyjeWy5N?pQkQRDgk@Q6PwsKyp+g?yhqwlK>+-MK;8 z{Jr7rEdQf7>0AO?3Ej8f)7il4Mu2^9VZWw}k@K}-M7=6LlKRy~vE^5^>3||za27`K zPxin$jSqndAY&4Y>ctpoz19$B2D_du(X|hQJ}Fy7S1dlX-X`W#P=s|}s$qLTCOy@( zSK%G?u*Zs6y%5h{$#$IEE7>&yOcH+hI8V2=)kdU5XF^j)XeP)k^36cGRPR+PyWlgv zB99yQJQ3?FFkoPtSd~J`bU3^mGtnX;##K;VKJrX&O9#A2RE90D1~ULPuvB^Xw7>-` zfOrnNoiV`7V^74C+7?-U4t_e1BXZdYtiWZc^-IS)8$Z5GKU$D~3g2JKerPjqY6NI>ZBC>lZDW6GFh$<2ST;^u!>nufdi z&kUFuWsvLZaq90*ZCnPOp*DeT9UQ?di|y`C?c6DRdR;p=S(42A?bOcwFYD^sRmQs~ zwe#^#MZ4AG@PG}s2gK|Cp9ZjGEuNz0lbl_D!v{)~rx-@cwU-)oSLTQLGxO!e5}on= zH6K#C^JF~gnhc2QKf|YOJcVk;gdr3y)m=kmi>x|A{U637bbF-z!kMt&$VY_3?+aR6e-zu{{&d&D>~H8qCg?eZyHBv z!q;gK`%A9VGVQU>^8qna*PJtcia)a)nT8^3#MB4_0qM{AE063Bw@38g&-j3)VVi9z zYMTlF$QXxX(kS5+B!*+#l8o{G1S4aN<{xv$2!`>e9NK*&D*?&*21P)I3)?)7dIPHn zThy${`gh_|1}}8;B6QChv_KHy9>2>D$@0HgD@u3NfX#!7ftH^IERh|`RT5e3%m9$Z zbwtTa;F5nOasMhOM^zzcL^&YpQp!|sS78%mvv{Gkeip#X^JaEDHP) zVD0!Vn1w`&ZH&ZIo4-nJe17!HcN&~^^E;B-`TVM7Bg*sp+tjAw=l$6p zz8DC7k=DAGs+z89vt4I~fr4Y520sT5o^?(ndPzBQ{KApr7me)o!)iy4y1a8~8!ut_ zd>*&MG2AdUEX|wQv{JLnQZq;JlxVQGSsRf7dJZ&%pV%ryNlJ0Di}QB|tn^q6d`5gv z!7*(UKcZ}=BMCD$>8``Bfd>aCa*B=k53rD0mBWzcc>6nMMD$Kh!lc(=(ut}tUKe}z zK$yOVR5-PsVei<$*UJVL)Rm-Wba#w)Dp8-*pdZO>+wna^U%g4Vh#Z(3A~ z;jvqIb_+3Oo(Jgz*`*V=Fi8dLY4dk-q!2}BC_;2bykB7yd1oG1>rrHjw2gUgMJ0;N z-D4y@(%4EO#ofb`M<1N;Gz5)25rrZsjoHQr6u_sW9ybp^oOV6;!WD%`C{(~1^Dl%BBf38Xz7@Yv zB?%Cz%_9VziEq1h2N~EuA8~M7KKeM z%@jHhzl8Wbg?%6$*)_hYG-{+8D8W8%CC@0DaErtd>m%f34JT98J3CR-#L$ocTb(#KGCrpY)^lQeyB1k7X2 z6BuIwh@VGRFQrdRM_ebxM=B*O6cYioy0D}Vl{Vuvyox&{W1yo5S{F&4+Qt|p=yEM4A{q{ZSD%aaD50kun}@0 z5UNlt^%OisbR3(FQV(o*AzUbU!h2s=(IbMGJf8CTAY^ z$kgC(LV*a&RYTEy^LnB9FdQ^=J6TywhDXQI%_?6B$`qq&CFaZ6Tzh1eE_?da+CwjE ztz{mF(g?^T$eCu)&Y!@s*dA6^4a1YHegUQeuaJ1`bMZ(Hxb~`-wIOU_r0 z9N&=k#C%uJ#9WlaL8m^Z$%KFT;Nr;@hsGB3=FJ#C18jIx!CJr(eUw|Mgex*ljjn@KY41y^~+}FPL8tu-7 z7feJjq8&Ht7(jDG&}5nhooC0ihXqQOxT5oH4PL_zAESp%q2M{e{`MMOG6EzS#z(lv z#)|2|4K$5!rt_FLsMjXlQQjmw#bgdf zlS95KHM?QEfK7Rhxe>SE$_H%CGz(VJJ8?|AWjhHf!~zw_AxvBWkmJDJTXpx1#!dAo zPW?L_jxPWK&a5PF-uIGW#A6;4uCFOt2{~(+$X-YCBWw`FHr16Q)P`$_L zy9DW9{hAH0{ejoL{s({P4IBUK5C6y;|J#56(M>=0<3I6}KlMNU=jNaOnV@1H3mYo6a%5_{YE`s}_G z;J-)tkdz;DP4EmHg8bN1OE@)`dU5MUgVJZtXewzss3?#(FTC< z%dY;Nr)hEKtqP_XHEYn4hXBli#`k;5A%UG~&_z3$ccBJ#U0HCLG`(3e7g4V}O|e?Dv|uI3yUxwAy; z&uK@onP)X{RGQa>FJnJ>{P1VH?B~r1w7#D|^ThAxEoo5S&!0Z3{bVlG<|oO12IAq~ z{S@Xjko}_(A|L!@dD~!&w6epuuhpSy@|qlsl$5g`f1rVEq1l7~$!d|A!A#I+qpKfd z*HBpp+H0s*!_}<=^#8^v=_ZcrCpD#qaV_vGc@Q&`OXjG!5S%?tUCI7d|Rb&3e~?3Uu6UFbo&~l zsgZ*zynP;C{sH`o1zgY`x)Awj2OD<#t8y$}i=T$zV#KJQ<|rHRJzS1{F=6r=B|gKB z1QQek{d(iIC(yQQTjjt<*$TON8B%t4&@f~b0~Q4A1IHVK`pmzh1cU}sK*4?-#@nmg zBLe@+(2277n4@|=*04&sYYZDBGpi#RBSeL1poOR{1gM|pG(Tki{$ooz#P21V^5O>H zCz_g$j5)fWAUcbA^y`3p5~E{fG5S(W`g;Xe6sdud z(MYDoL~IbWSJ1~Rlx#3-@qAi~w5#zOQ|Oe&`YM`G0BIj>NVc}#U}sX_p#?FDtw7oW zD>IH{V;5$dx8gd=y_N%vznTaB0??zgAK@mxia2Np=ik{CH_`S>n+Q9Ri@;pav9?aR zIF@jTK4Ev5ZD4_I%k>S}*h_EI2P@lTiG`14n?A(Fy*%vGCfld^(mq)dSz$Y)#gHP}Q^Baevfs1upg-P1olViB z@GyUP9^cH)ir>$YiypNo6GxTIG9$9D!z9!x0<>MyXJc(9~a|L18? z7x&NApet41lmQk~0RO$!`WondCN0#VODE`((0yz+(_f`Q9lGm|3c5##R+B)hCxy{e z1Kqz(3w7wile;u@?>|tqNW?ibTS9lEUf`~*YyOKDJtF3Su?)o*NziDp)Q|)O@lgg zEy}S{=zg8h<)P>&g;c}wZn_LXMKUAgPF%LnPx<}P{ICd73TJ#H0nB3z3Y(-CzLj3s zW1(-wNYV@W#nG4TFIYe%7&q8&dMGf1)Mi_1lD;^nK zw{G2Oc5HA8IOk!5b~S8pe<^IhQ#rGXA!?8<-ci2qWm_JbI2E3SCQ3N~Zew5eH0g`C z4KnZhsG}LJQu~}X?vm8qZ(BV=&Uam3djgKEkdDbCI<0I})|S%npG!hwqB=}u6-VV~ z9_d4jo)M1c;Ag{eua1Hx)p)OYEWHoa4F+MYvnM2La;oOnq9;dn*BIV7O_Ym8tv3RO zucRYtoW8&$^~7lSDnunpdqLCq3xS~85Xw3}^7dfCE92Q(tErFS-2m;Q>t!^4PLRAR zL2{QJW1#-c(`UR|jC}$A0vEOkhr?TPYB6drWt%U;?bM`Oj1QT#pw?((7t!hsZZtBS z=BuiLVZG9`Y;=!@lihg~b?ojmkWF9F;U>CCzC-T!`wYy}^m;qrf#&sBn z=Zx6l*oCZ3fl1*6yEbr6rtQgig}Dek);@|M>4bbHW8WAOpzyV}UJJm?PT)5vL0)kI zqgc^-!hi>LxLA%t1flPsFbaeER7VCmN`$8FL?vsbhY;(6w?_jaZ;#tR64?y6RM^q) zru}>0YNZwyl?Po>fUWr;

    i45Wo9C+4pvD>cVOBc!9W6LT=*dn9}9~Vg=?8#Hvi} z_fxMQ9oEF`d<@Vj9I@m{Q6v|z*G+(N*!J+V+^X^32oVLDINmNNx_>y0b)_LO^8>|3 z*ckvIzl^c~=&93YhC(g4j6)nio)M<(`BIGi*Nk>w8tp0@jjbx9Nq}*-(Zk@g_qd_? z-fH^)qtyRp*1xjx=)uy&H;ng*){vZyf*YNzh@~8htf-&aMDhtKJ9zoi@zN)_4#xKz z`J=*i|2hd?QbwddNfW=^CO$A?kk^6zz}x|b3PbBXm@6%Nb^Ypwc0DE4Ogo)^;CGQlOJNAN$N^)XW(&SMGAz6nGRdUW?9cw1Nv@xIi*l9A|#=pR)iIcP_>9yF52|3vz1mq=P4?_#(c?7Qc2tF6DbP|u5X2yk;I%m50cTa2CNs7}%2p_U1<#eN2D?8opTkzo?gXbMd6H#BMkE5`f436&(euOI3< zD{H(`TcXYeFsVUhl2e7+$K`M`{0m#|9#Q^5l%fDa943a?a`7iIlxq@%4p{OILtDtE zX=USnx|liY&?hh!%<*#@pA??4TkaGf$-Z#_h2IXV%q-MY4(g9F8>oM4+?) zEC4sC0%b4dlrhzNeE;_VUn+n!b|00meF3llWK{g1>qHin0C`hdfCG{Pb^>zRjipYY z!p;P$BTEL6TFg0YILLrAhKGU}N?-?!6$UG;e9$yH3ey&%(@EbmB@a>#IicWm-;`mez zbZ93tCb}Z%Sn^~yruDWoD~FB+T_=scgf}%zYe3mCa2SAqkvS1rF;3Zn$>I|Tzv^WreP(w6(0ufP`^+t=|PP1~f-~h`Z z8Z6z=;>AJ>5r0D&Sm$DzJR9Q+1AA5i!%OhkBA&%P4pSw_3VXc7wBJ{m_QXo3eFmlt zFO#^|1>?iBOm1Sdkqcp|9suD}DeX3Wk^3hz5V-g1{!NW^rK_3^u z-3Ncj7;7zvHqaC=BI!g0BUPi*XhSX~D`*3t2+e>`pdAs5L~jvr-H0RLU_EjCK?QIY zcr3C37r908A>vqY;(+Lt0s%M$;wXrfesVeL37DWJU!swKx7=`>YmzG;PP20w;kh7c zbha<#naUrOb5A>^nNeY}_dq3oMAsaBc6`zyTeP!tIN-@SNE3Be;AOf6bXE>>y;ILGtB(q9X8$i9PZ<(Y-h9iQY^i zvcF=odfbXRF$p1kl2QHgqU1)qa(P14)4Q{*Ka~v3|Ve`i-%#q4mfWUn=dn# zB6aqb#D7wO)Kf%HOF&ASd;sT-xOW&$NL7#v(&+%pBF6=l_Ljzfn&#ptMc<;Vkg_yZ zVyT>rvKf0SfdE0p@e==(yU)R~#t*)036m#bRpde%#Y z`|JDR0Na4$SU8XMdY;I_ku03a`VpSW!m%uz%ldJi%;LZQ!Q)v!%>!CEp@kz_IHQF_ zTED_$S~#cm>pZE2qgp`4F7E2XB}W=gJORD!DhrZ@*F0#$Kl0X(%-?q3EqlNIy@;{( zfp?-;gg>dn8^>iV%xafP;`4-2OJT4E?xx?bqR)Rzp1T!44B|M_D0s4>WH4EWvfugW z``>PdN_oonH}TF;_UVT|eyydI(k%ZCJ^Rv)SDYucf-ah0*Q0xG{_IN>VB_JTElBmm ztxBG+uK{`bM}atqMIVs0nTKXS&_sh@i+%h`wGViN24{bpUHme; zc-zH~exy%*_(7WN$li`FeyK|rcd?6KjO$I)_(e?P;1@gk_=VWV0GBX0`wlk#IX3>c zuiyRGR?VIVA$SyKD7*KjukN*j3vE36S%Rjszn>}hw~zg8j{T*{;3P?Q@E?YBs*+U7z^NH3F8Rov#+KZu!>DU$Nuk_j6V_=aDUT z5*NMIb+b}>5**3iahlcla8{krrHi;@R$t>_uVUl(eDu*jI7W?CT=G?%Kqofx{6gIX z{*isWoPE6aO^;TJmb?HNi_p|KdvtN1h$E*)=nOV#u?*uLD8tX=j zKv6oRgFJuJ9^5}yTcU?qBfM|HDj-}!-kPc*;Gh(bf(&QFyhj5N3Ah7JoGFH@>Z#|B z2$$&BE0wH0@W5JG21)7oTpmS-m*?PFfW~0@X4KYK$p?N3P7bZ&q*=bRFk4hAVAN3=t>=u)DsTAtT12;Dc}9T4;`pl# zH$3|l?jXESD2venGISn5mP%9*WH`T7oW!t!?4Q}q)X3}?`S(n0oDNa+6Z8)6fm(PE za|Oz4e6GR!3@%`}+XCny3UCv=hG)OU5s^Hv>9;W=3S|&jJYG^aU5%*o9_vPC|CNm= zS2$fA^E%b03ztZb>7G)Z?xo}pC$Dh2IC#UVA+y`~7bl%o1l`Nn2n9okckp8Lm@dIygOPPT>g7_OW5{%Yz4paigxdPY=p}y z?&e=4BmmoR!HOXqnE-eJD)kf)4W|GH$ad~!gO~dQ0<8m)AYmCe`NA?XAX3*EgIK-@ULtnUnQg_^RwQG)q zNqQkpx;bKXTa0YjhT^aVV>tz z!W-;9%Rd>8&z4mt@f5BX_<>u-DV|8z8z*r_uBU5HguRE+iSHfH7_4h0w8yh$T*Z}L!9&O-ACXRDv z13J!W7=_G-nC^+nl5o~r`9e0)`CjapY<_xCttJ-CcBE<#1j2{Y_3xE(Bu8XUHd+7hoL1D^we^!rp< zC5#-lPie8Rj?K!aIZkZF%#qDF7bhPRFw01Cby~~&Z7qiEhy;Yh?Yar`9sy|Jmq-m0 z2Zkh=m)ad9zWBVfF_t<5A6|_=fe$Y>{RYP(2LulFH;6#mRxw#^7RgQkr6)!Sc*cSe zkHJ=w0monaxqFsxiQk4ntk_1rgb%Mpl??1o;WkNsH7qohQU(E>SGZyl6KhID6ngfZ z=J1Vb&yA5QSp+v!R&CALf9MF=mHdbG;~z?^V!mD6RS%cQgJ7AR^t3O{B+K)CF(VdH zAEBO*6;x5;AKUWSU*aDC%@h`ZRR7Z3+iTx$w}6c5-|>mFC=thw)N(O#oo?goOmF+F z01zaVgL2`ij{azRf-OXo#LBMJ^u30;6wWBjG|^n!xy_QhHw|MymUjm<_X<1p4DJ(l zs)c_@hUJBGsxl9r2Gy6EoHF{0>Lx0D-;|W-g@89A5N~ zByEEAy@5X9m|9V|T3Rf9Wm$LDCz9HNQYu z6{#V{NL;zF{NqF%*QKuiWmq~4Lo~ICxd97?4GP3N4c7sH_uf@J_J2wN071*)>MeYf zW^qHBg&*BB;WAlRAOO>SeW|NGsjK^KL8dKX{cJ8J@4*lN$Cg#*a%1YCQeyR+)O32) zX9hPg?Z%ik_yOvqsvsSp+J${TQep%!zM8YKFtg!Do_|Acan}I|ZiS%_{+955TOK=f zyl01M0Y8*)2p5j7Cd*8Ddur@V+4AmLleo(KFG+9vP^*{RGV##enL#}7^&M{miJ`xMC=?FPbi~& zbqW9G997ZYw-D{s#+wDB&}T7tdN??YVS8pVZa>X(F<5mc#-s zPcyhaoE0i^eoS3BVC=+JEJnCCG*MXbRpEfpTmw_tC zttfY-EW{)##XobYEg%l}!JLY>XBWaLUcaFhywPuVN)HynuBdJ-{_Bm#xTIPaLK2ej zdS4ry=wVwP2ffBLZ6@%Y)tIEpHv~kYdm4un|Gs>HVS8%m`q)~$80^=;0?x;ruDM=y zyr_Mw>s!S6UjD^lKNX}?4wEI{nQH_GhL3#NBB7*oURsAG^jcv>1>K{2Q-$$|z6veg}h>_A5{V`nu;(7ZI_ryR*#2f9eQb zJw=N^W`usO*A8C@<1fG-?$bFvBmxla6C_=?kP0@GU(m_9r#I8h?A zqe%Hu(zrz>dVXta>fDsqespIH*d@}NQwUi-MmfLK>7A+5-Nq!$S2b-|!(HQPZg*2n zidGABd>Ve!iP@OZB`Lc!9XqY389ff<{*JU3CwEg0F^Jhe=9O^%67Sr*D>dt=Oi{EJ zhD%^OP-&CS(B2Cp;395qYbN{$fzscgK*5G}(Z05q1cbafagK|Jo?e>4wmi02Fnx`k zXL~9y&ZQTxwio3GF=rNpQ1WWY5Au6Ozf@mbL0E}AAK?ZtyMU(qn&wMul8Iv;DxiFp z-&H=^zk_We+2$!cpi3J5ugv{F`t~o zw)kM#XK`tI(PwI=D~K1;49YTG6^mMad4{ZhAvdI~mClKpz6MoMWe~JTJc9T)LqANn z#)oB=!q*u*DmxWBwr)gd2yYcDn8clfCQ?;dc9nLICgJQtE1WBB*fEX$*-5lv6XL+M@O3y6n3QE_ZZVRXGz*g1HUl2 zWZvvdZQZ;<+t%8qnRnzT0YNVHH>>Huhk7jBA zEjaO0jRgAf4?bJDY$G95^mc=EGKwj3-N}A(bG)VWO30TfDRKQE^}*- zDspz@t=+RKrR8X;kl1FU{5}A^p@_t4WqnYbAXW4JGBlYV0 zY0ez94W3F6Kvtv5T$Wn8Dnn}(6OxO=qggeq%G4cM*LazoCoQF3kH0dFi?V9nY2U>#EzW)dAhCCf$DCaX#Dgl~2cOb7=4 zPG`0W-WqDRU_%T+f@T+aJtBHdP9t4r7xArk;JD&&a?6T+3E-7c#+JchiBoT61^Dq!1%l!99L!2ykoB1c{_QHI;+R%ZQ6`H z0mrPk30x+nhfM0V^KXy?^kYKZoWvg)l1-XjsAd(cODObH6&?b>EClxeWlA6fT54t8 zbypt2?RZCn|zYeM9|qjgC$VH_*dM1k`R z`)tM^ED5tO@x1bU@ja;MoHD*nmgwQiH0v*!;bc`u&3#buC|{LcceaMtV>(2(xa%pU z{;y6AT%kLuXeAQ)q8>^oGdOjQ#l;{Jljl_5-6$FkfzdA)gGpkhrh9ItN@pKc2OXN! zD3_e;RuNvm!3QW^j%Q$#!~PM?pqtR*6d}xbEhQS&IH@<3y|lxb03uKp8IH*fCYsPA zWYv+nYQ%4PaU-r^TsHv37iy@ zThmt0o1%7Hb*n)|P=7FlZ804LJW!{NKfiOLvZ)LEIVzPMwzhkUF?*s5{pp-=Ky=qD z%ZPq^nw`6`?TDOBsDkKkNv}JiKcx_i5z2DVyzEWbo7%bbR%Q#-6hklZS2SFNHxCGa zYYr~L4};@=j^Hc@&?S$D^Ak4I{JJWlfEylH) z34mQ4HaS&ucd*Q!quM%43Mwu7anoC4@7FG4>uyfhyB6uKHN*cvbweULI4b}X0E0Z4 zA4d5>^3EMT_VApRB*ZXII9SdXe-#s9+vm5|7;hWZN3eE3;?VB%53xs8@Z&Hznr8#! zL;O|bYqJ>(vl)xOmUGNt2ZWc})l4wo>L(<}?5+gd)=U|^0JG~R+%P~Rk2;~@*f+%w0xN%YLw*uSe7xcFls>|o3HaP!#AmjVWo|tRW7(r&EPpL* zlu(s>(vIUj){VlA>;V?F8^x^J6>ijhgV?BEWh$L}91jVgFfJmw_!q8-?7C_9hKUw4 z36(80H`@#)T(c8P6W(cp9keR%gKs zQx^f_sZJP6vjU7C@!7h5K1CSonZbCa>$>{J;=0P(EG{(<*yQUn235PR{2#iliwTMr zF6h3ldA1hkl=#!S^vu=m9=Sz-!H7Y3N($^w8Lkq-UD(~huvVuW1q)KC*GK9C1F=mE z3}lNtuh#9H5(urAwbt7caJJ@F=);jph;Lc`k)j*by21`82ls{meIC zNEO?ku{vT*BD)`7czO1EEgJO@`6CX~x*X-Zl&5%&OhW`sifv^NEr)o&_N5|{k9wzV z>k~uy15juz%rq50ryaO7E$d#Raym=9=CUGc!D$DMk~2ILHhA7+HMZW`oK-VxuA%zV z>C<(&u%s>bp%OZibZ5sxWTR%=a7TS;;@I5p{9CZDU~5>JjJ5C;TF|mgV1`KP{3_`4)3r*ANDCIq@tE7M-mvB+LgH+k_*|%4*QAVSWb9F;-ojU1j8fSK{vAN>h;=8!6quM3X9P_jhU&VHZ@a5Fig~}%D3_;EK4>#%g)%Mt^uESut}`fbu3J$8L{)Xo zg55=c8N>TtCk_@;ug+JVwtT(tl?6c<074k#fQ6<{drB_va~rRz zpXD{FTW3PN;pnW!Yv3C}0Bn{HWApYdv5}v@t_b3C1ax;A#y8SRqos}HywB&f9o02$ z)C=RbE-~~!_8j`U%FxG!-E|z|(1>@GhhD75sDwAyr=H(uc*6re!s|lMn*jJkKBNH* z*P-LwkoxiB-E=t1k5uSq56=Pi&7O!2dCEvu(0Ki0Z%+1!JBr(58b(^ljcEqHJ?6Pi z+fxM2{)|}~g+x|eWq#z3*J@q9JaYpC$xl+hzDDU5mU6A=(YXZnzo$NOQ<|&mBaG}j zH}%+cEjNY!2DFr(y^-mPz%Zq}LdNOiCS^J@To5fjhBxq%#cymy`0Dw6rm)%y6DV&@ z(|fNW1r=&V-SGb#aqob_p>cOHw1B{!=4lBr=dy`(0wyI#0D-$eyu?a+-Tu0u>|S3j zZt0a-i((Z0DgjOZHUkT#1d-d))T8ojFN(R4BGJqg;0TO;#o(o3cJzRTcnQ#mE$u4@ zM$!p-OF(;zk6cYS;Z!5;VHGi3(Pz_3w*1wbiZ~zQ3Y<)sCveS$VVcVw2?{R9%=(kG z?uB24_1u~I__`%4rF?}e=&I^&w@I&q13WmYu>LNF+o7O*xOP{_(Id2{vi3ZLR-PYu zbZ8F9-pcTY$DZ{>J|bE|^hx2+Af+1P8^AI;-e&1sBJ8vLU&_qll01&=@mAX;u(krb zYP-EOC9=+r{8NB`;((?B9K6mP<-(fmP(>--k%s%GDb(B#xVe0mB?lB&?wo`t>;ki` z$!0Mn_L-jY*=~*w)4nXKxs8zn#m#EXg#VzfE@_AyE^Uttk!d$XxPTd-CIN!4>-{TP zF}J({+w$1Ab89m+>$!DAc8*i#R&%MVKQwM-#vLZ%ds$>u(Qrjq*#{mCbL5PV z^Vvfki35_-$^&js1Ns>ini$)HY*oDH zVGsZF?{XjjOyAZ@+^A@h9dB3V;XDnBM&h2l6Q7Bj@{m2$9@n87T$l1}6_1RU<*9V! z^Ugl|`OiP+oEPBYl<60}=*2I7$xF^X_oci&WyVTKvWDaAhTB)Me^N=g34Z~P`}NnUW_MR}9|U5x*>;lDZjw;lgog8z0jcQ)ts-=)n< zo0s9g%kkeX{C5TZyRvyzbD?>4^P1+h&E5L%y5{xG8=8BXH#To--rT&U`6i}28q=OV zRFj_j=@Msnv(h6Eh5X!geTT`AseOO72{wFdljb6yGME6Ce%+s6`b8@;`A-e}j^V(< zv%4So!ma%=ujv+h__cc<{Gwg0&cog}+e1~FMDIMxb5r3x$%KF5kT>FKwzz-DhE31+ z@NG=xNX(NYZBEBWZf&6aJNPJwR|c+ghVTUnm>aA?3hNgX!t)mo(|)yg@FbIiRoYSb z$XoKH0YQs4J;Xe?rjXgVi5*2{66~l_YT(j5ZpK05e>ZS5iu{NxJgDVN8B?U@0k(FZ zbgKKHQ$b)3%;qh??Yibj$SXZ;(KLY*j}zD+T_e1@>Fl%7|G6to@GhI+ZcdO>G#;&m zruVN%@4wyNzt$E6mK`~|b9XERC48BN9CqSiesPw4s4mO5mEG}<9seJDZvtl5QJstS z-lqqRNCs>R4B>R!fUv>HKtK=yIy;0Y2_z07!O49Ig5)N;N$$IT$xY$}$sB8J&Fxv9 z+oR+`wmi!=w%fBj(w^lJ8Oykh2Lu=+58(IzYptr<(>Z;*)xz+7(f;f{yY}8ywN|aE zR;^lfi+VEX-#!wMCH<#P$P-E*%f;m{jk=$W;8jb2OC#(O*Bab!4x0WBFdi9Tv_V@t zl0nm{0)o!B=^;1lzqM?tc$>oq5XBC`^vj|7sL+K+#!=5qUK35My+Phtg}%he18Z0P zSkcs@WpG0y7pAar;HQ;9lM%zmB6zct>e8gT>?&^Q+L-i{55|AG(iT<6f1%C(eS>0w z+rd^4!+p-d6uY0maIG7Ud(n&W)$!lt>)btsdyr;$-F~{)mns6;qz)K3S@>Y2=Mq3{64GjTjq~gNHfHUVVQ~x@^8J&syMu78mCKc8lO}hs7(A~Ff z(>T$aDU+EUIM&R+f{Ytjh;+b`2{%Us%n0mcDo}B?j=nhmOGp3Hs0t~A-H1b;xSt%& z0k-rX0S7z+0jYx>#+`%Mr7*}I}gE030idNzH$kY74q`}S0!ja3PkR14aLVhSg zMRwpEj**181jn)-QHo@#ly&`mLx7*+C7NF<0F1QAHp2S@;BnU|7fF(b(h+`+5Fl}KgAv}r$4H&*M9GVK-w0rN{jUUI zHo0p6Z@KQm`b4qhBs1b6fGkdqd2IWMnymRqY8fO~Mq$X-ypV-RuPo`BbF}d19yREf z7cfKUXSsTLjj%H9a=Cgrf=zuTphohzeuYh!suy|vU_lL=+%?n)76L6GHFGjhq=heg zfZ@MaLXc3)QbJfxaK6+KS~$VMA!;^*I79o7^>MB|*19+s|HnQCclf z{_lBc;qK4b5cP%(k0@a|T(7|(pT@^Y09!JwCJn)s*Y%`2Ho0qHOR{nS`y%$@b7+;x zyK_|iSr4{QwMn?Xh5)Z;U9(VEIaN#k`p*P_B_%!1e``S1^17bV#wK?SU}5+`)t_Xm zKPmuhN3LP+g>ja}8A<*63B0{2aGw1XOM8Uc6c(zjSH|w=XsUr+I{MyKcTN@wc0aLx z5QZw&wCV!o%`BXOelz=dZdgBBI;@)-4y)vXJrH%359>{A>ce4J2lT$tu*&QE3;VLk zT^m-xLKxQR9MrPiH<;{y%BzK@Uh3t)d&?;C+FulESpY;xDY zP9=zEt4Q1-3F33(%p>Gc1Zu|KU2mZ5XsDDPWnI{+(_oyR;$x({cKZ5By>A4tysm4> zY;xBCzV(6a_f3&;{xMs{!f-NBWMAgI7J$vb7iVVa*gnTvuz9Bes5|%=X*V3GFY0|G zP~~-9@??{{2I}fN*8NyP6~_h=ZzTPT3nsp0Bor?ZEN2^M#v6~^<=`S6Xn}8V@@eGN za3#ZUGNt=^hb>puysPDvBfKxjQWm)#!E|eRj~9fhN`{{N5luTo1-5>MA?NW-%zwte z60JdO47f!zb2w~CI~>&iqKjy*yb4>*Ik~3ecYb~Swa~OJT5&a~+;{PMc=yq9;=7Qz zWOa+6vk0n_<)ELFt|Tzi^hmnn;weIb^}JT>|>$9X_o{Wp>=+1;;yLpxr89%I}UoHdqkcp7Sd+ zk|TWxQd0RE-9dEwN=OINY9x^qaUl>nd5EiNTnS{55)Y;0eG-XiW2#@-MklM)$$9=P zS&(C5Q7f;WKdd#Ho4)%^!paP zT>3tn><~oIOD-96Skx|na|gZz1Zb@nwp^>ezuhlF6Y$}B(aBxTJQGUzj-BZ8*q4}9 zt@NDp)1WopXyj0LM$4VfNy++s`{g{JN7p@>6%xDsxFZ#|**d8!OMu{!{?Gydu|*>v z{|7o~K=(sAx|dzDsl&gL9nY#=OXM=3398tu6`^rH;8t@gU1v-C2iyaIJ+savZqo(gK_LDMsdjFdHc#wT!Q8_g`V#q*Td!rEQzjzKp!N z@Q-Ps9;r^JJ$VXY*#w$gtto(&<+vr8S`REYJYNq(&^S?>O}MOyvGEg|kXRONqB$S4 z2@B6J1I@Z=J7k-@VM_?5Z{$e6uR!uA);)z4Nd77&FKHId5pyrxWDs@~Stx$9y+<$P zNSQ<74}2hb%+9VdcpWLNNOg92lW$%A7a7=pfNV^jd zv?|nHAe~g?iA0#@jE1o#te49OYinC79A$2nvgYN+4%y6I6{Djp+sEz$$9nVo+IvF_ z8v`+Uih$UptvEeU7m0)>;|!9V3orBayEru?T^A@80#w2%Ee|bUrY$R7iqkMvv%3dw zgaT(OeNH#b*)774@RY&ng?#nR$oGZj^g{d3e1gfyVg@ z=*e}$ZXwf!oMf@W2{dsJm_VD+h?1})v{ayZBsHL616KKBfW|Snj z%Tm&vV@pYkFQ)v!PWUt>jZC2VDn>_2hZ)-&sTT5d^wxa?V<*o7sV)!IZ+;7fmWQzc zsX^O{?%eW3iqu-voxbj7q&Ar@j4Y|G;XI_HrIcDQ&Twu^W||EProlvGRgUI(SO^Y! zH}M7Y2tF#t=vTz5Ca3p`W}42^dR&wZB0V8Y)D1CR;?Ohk=bZG41y0R|laBZz_1+xu zKm|_}T`DRbR9NOcLdZktdTZ22S&NP2{NG`c1=$kL1?i@p!Y&NFCV}eWXH!!SJ{-%@ zlL}5(r;1eB7kzaj(gt-%+!~{YHERrdPW6nQ&c>fkIa!OYpz^)cY?;S@jT4E8NM7yH zY-)Puw*k;N-OBO>p_XwtpAb_FhF*2)F+^0{7?M(fNwBg!+n2XNkh;)eEt65U_^EP# zV8_*kFGI-pAft%gcE+-KF{lukSyNMl#x&UH`j?LS9+3w1HJI4b{R#OQ0%ru6Ig0mz zG${@V8HJnuSv@xHJ>?v;>#H>=iR~wx!P$-CM>rMRDRox`uu+ks@Tfp(F3BHVVgCsW0DMnB0%C}cJ!n-E8c z0K0l@SzWot!h2?UO+aaU2W2|T!^_y0!dd76_&B#$3XHcyMVpvlq$0Zythco8J8Ao; zSdp89vNa0OI{y0I4Bo&Tw(@0#%5`~ArDBhzps&Z2P3)T_Eup;I3GA@ldH4eecJLN& z3^{1bY{++Dr+bbD%+2o^#=kq=YZE?2dz(XTbNB2U-ruR>v%G(JJ})OKR)?0a)s}gfg5T03WC0Lt*CHYy8IGFnmn#@V zN5o{-RKvi#>xnPOzk$9mGap@NOgMq1Qyrd+`H$R#4mD=azh63-mSs8-P|~dXtD_ybX&7DJVW&s>Iks*UB8$zqsGmjrq z8$uh>z)Z)5c5QP>x3r773Kz0uj6i<;&FQxTp3NETp3sgDRT&7H_)$TCOR`HmnKRLU ztOlblTc9`)1x(5aAEgME{c+DN)0)q3U)Fjn7(5+34^tu`ro z{?9E`Oy4&g%Th68ZRyKK`ql(1HCFM|iAg64uoPnjFqvapYxxAe;7YM`41XN=a81hx zSY@#fCTRhdQLI3|(6dMg478nmfh7)mf%XhpVQ!A2t_uA(=H{D1Gk%l|%VPI#YELn@ z+o2}Fe<|cX3o3X@GooT z@U%vzFUBC+W}8hV_DjEG2D4veQFK$vei=;LFSeRPJ(IRy=xWZ}FDO$bfS1jFVU$JD ze#wjAf~a3w_nkERMZ+~9vWze}&NLv3_RFx9FDq28o7A;(XTKmwMC_NrV80BZJ)ibVTfvos3&UOWRyeTmie1c|$la z*e6_+6ZB^~xHfdqM3|oW0(eVB*tWC?8{&=W=uHjnlY`4qNr*CCIWlx5gZ6Di7J(q3KZ90aD<15s>kk1iK;oRh^k{k-6=6D#G*@ELE;`4UNzh@ zj-;`A=uhKTZW^fvJj@~Q_|TTA2VHV%Sv{-^6*LpUQ-3W)@P^+65$rp;J4A54^51+B z>>(O+5$tQe;n!3I`wqVKBG`9jmqoCzX*Y;qU-$4L*uVNK5W&8!(TZSSK{FA&M^Oa7 zIQ&XjJXMhUq{Dw()*{eVjqF+!9q&qyjjiBB0yr#21G&ax;v&V>DbR%~yD zKd~e`2URcM?a%yQ(+M`k09v_ts0qWPEmBTnmvL{YDO2T-EocQ8ATH{ zIQ2W6bTtoAa^%+NFUauSLW3?3ubX@6(J_t5@vH3jp=z^Px^>sV#A$yF?wvQ30*O4=;UyWu;IL7 z^zEon)$n5mY)V9O3$$}o=%QhZ(SMDwHRACy2Ds1%9}5GFYsvr;ap=yzcI%1cLW^b= zF1*$guGFZMTh3B|Mn1Ws^-c`$**qcOt)R+JODpTFe1uf&a#9g^ZV)uEIVS?Ca6-@k zM>S9M3+w)yTT}#4(MS+yH6njuMcp>jkin*Nh(U#+Dt`+XD4Yz?<}SAirK}SMU<>;l zCc%qB(>4#%%@otzDjKHnY-hTOjeLE0gzz_!HRLpZ8(LT#TDVn#&X{7MIMCA%+dhZDcRdqAcI5U5h7)S{ksN}18>JazX9U_yGefdyD1VAwR5PI&MYTv@5r2EG7xc4CdahL=9Uu^I_>XvoTx;zl-p z=}+zj%MfvL^wDnBiHgeQ*(Lk9El?m(?@FDHcP=?b{9s`F8Msr=obtR=?o`VK<~}2g zo~=`gFW_syi zU4&zL>KryPA5r84m;RIu#$J7s&s89Lv?Yt`zAKjSQe_~>(u+W|4P+6RH02DYnW4UF zS$IciWl3n|wKkH&NZ}Y&`aZOyi83MT*4;I#CS)Dr%d6ODqSsyoq5TaiVlAaciBA<)~Fr zf)!n72vEaf=A1GF_yVS(&Jdt;1v}+Zh5%ofk~RcbfT@}@1gQ9R2b>xLoSeWgNErhB zzzQ_%fCZRIIYWRcxZ%r683KF(i&oAMV6PEBnK1+klW(VdD+Sh*123KQ_vAMW>+Q(lZ+EetZ>J?9qB?Y{ zQP|LQ?HF_3%exMI8Rz+Gca`&eMJ*w1gq$}9=Roev;g7);tsG~_aBj;&u-ndo^nEKm zUXa`CbJ^X8I|p(h*E+^3@*bwvhhd^)<2Kgb5MNLKiXKWt_lnqA$br4r-pqf^gNbjg)&5t0%I9HPSkqo-i0y5~P z1sV-HNOagyrz4Gv#c@(T>I_*PKe5KRa7Z&Z>K~L_$06xPQsXVnhmn>Tc8~$q6jFAn zBjPdwI6EN72!Pg1dQDC&eVI%O!_mUo@&AyGUu=VL%!DOCC}R4F`6nl!dOW~hdt>jB2*`KuLlMdSN8LTxe}wHvI3Hj- zb|3*i4WwrM5{6BNJ-*zkgsj~rH3J55K&pFljXL=ckTJpd`AI#nXhh3D?aAh!A}5TD zOEMroNyMqGjWR!_4&0yek?z++vPVUVLkq!)oA@>Al%*E#0mbowQYJ3j^g&H69l1K- zvmAj{lYFwPWdTy#oiSY?bs|R{C<-ak0u#hCxH#|rpuhzp%N>C!Zc)IsC3`gK!Ek45 znIdh_H<7Hjp5nW5FVF zLF^B$7>GF7aow1K_*_#E&j^hhh1ExtM5Mf$*S#fdr@_})(e!&wd zMcS(H<4%r&Yxc-V(M!T-79pw8T4sA;!bQP}Ri0#9<^XWi?AGw8TJvjFmxgM8sJ+2L z|G=FPn@Ame@J5};LFA!-J(Zk`^|J7-IeNGhAjaLNpoDar4U|wWAH{4!rU9EXQ^ws) zuIVEU20AQnlp$erXwi^B1uh0e3W38SK{pJAA-O74Ye+z>LW@YaI(%zL;A(~-fyaaB z{+uyI!gZlVLxRqdMo0;&%mWgx57inHI$K7fT$`(!cA?!f~=p=WSBX1hfE?Y zqPL6`e5~(O5J}Sil$!w{aF}UIGDM<}`9NtrKyypz(ZeCY2@{;6yF?>-S27l@Sza5= z$|mZhOoPQicnzjji=7!~3$hFp#Mv=6wMqtVbK#>HvE()7NHwJNcYtDH-PiS?a;GK~ z@gZX~B_~c7P)r&ihG!&wH@zS8c4oyPPhjgICri_l`lBqy5ve^L@&Nf{@K?_J%67>c zV4R|>rK7O~mMqdsvc;iyFKX|U5LMD*)j7K&vn0H3M1t3Kw5N-(_Q?X2-WQ{_vt!IKW+^hi4JeMy-Ch#_f23|qQD44tEj9h2og z?5M@;Jr&TcK27EeX-qb~IkJ&dt2-Roq=~}6X$k~3QdU}V;48*}T+@-TY*NR(EUM-i zs@7#uHIMUADHAi_Ps6dJHP*?!HXsBy2PD`oE>u}tmh?;Q97n_+BCnBnUKz5+oX0Wv zo}YGL+(~<#__nLYeT>wBq|=$I$L8V>=I2ar1gbk&JHs!b=Wuvlih(lJ>VmqUunM`X zm)AYoUKqD;8{!7oro?KyGand92WOvy7qMnSIMvvDKDmFxIVI$oFcjnzI5)F5fz-+M zcvXUswTB4En%DsYF}r+!!677jt*%WH$U+gh!5Id2khn}+0TRK-?F`|nKsajy28>@R znVj)g;MczJdP=iN&15lribyU+(Hu?>C5co`mo^~qc9d{ewTpxSw(qKT3SsbVDu<40 zm*gf%KFd8Zbkw&`l&$z&j+3ed7IhWmHP^b(QFHPIhut-!U9^C>e~;&4moOQzpFZ^u zI@Un`ugWnpc|JrXlT={hZA?BzbBxY;{Fc~krwQB*#MZ`yXGYj-NgwR8fQMvj;XL1k zb>DWsB%GYg096c=TaXaXeKL5L)e~rAarp8Q{Zf7JGtqjz-X{>TJ6wzm-&J2ywR$hPJXYK*G}{dA!i$vQ)V2?^98Cq&A`j#U}Dgk=rkVuq+N zy47To z7s23R3BZU|o`Guv#`LW3)-ZNt0b>jtF2mT-4KXGQvt?oCEi+$heLc3&SK2sbeLcQm zUz?@bQ_+|9mHJR7wjHn{pjvnOttYcs4JH#bE*} zR90YN;ci_nkbnxc86ht-;fPa9!x8t5NKwj(IZ?3CBoS)ARHc*vFs^9FN&l}(pD-pmvDA%BYZK_C10CwP4Kr$6&Mvv6+r=RZHY zmi(@r+5HE9$P>H&7-Obp2bcZ}Ta?%3$n{|IcU@1v7CWjB2hd=^G2S%2{sdASMAvJX z_WF=%51Ow7(_}pSGU)aP`*l~6zBBiuF<;T6Yv|SZl76=ip`?o}bc|E6KZ0Hrmpc?6 zA{n?Z`413o!8tox!P~KWo2Ky`Y8LfhM?84 z_2SpiJI1c;P}RsTEm;^feaXVk6p8R-SgRE!ghE$p@D=+OW8 zX^xJ}@9;>Clo{$1sel#yypf~gnnZt+=F3dTN9S0~{JwfnAv(+RFgw}e2BN_k^X>-e zbZz-bwHs!&z7qkyvqJSYaGxq*S!xUe$FuYdnB>h9(pYx0VZ$=MOJUhfB#7m_4m&&a z!m#|w6qb$Q84`kH6Up8+CaC*(Lu`9E({_tGye_-hb(kZs`@LmC>hU){g-Z;d(>&e@ zwITHNJ4zAS5v2(DE8Lkg-57P)_bwX)yZkY9-<`{dC)9$EQ1Tr_?x&38Db_OtM$QN- zwOjb~KmpW^tB|U@fq~l+$6p*eZ5*$aVx&B+N}VAcVS1QP_RCmgCdY0g9_C9zFKn1U zk{V_*6Itn#0QtjtRwBV2N?ON|u*aDGlZpDv87t8DWueKdb+itUCIjHCc^)j7067^n zFETF=_1IoohPwDjA+aAnRau9SG>qEk0fB~caQ1551)Cznm?tx4)wNb2k9eap0m`#z zT(YGxstO28`j;XJS4P+(L!py0=HmZ=fCp5d`_SJBd^?i1YweGx8B-U)Nwz-Wj4lDl zaM%c-!uMV(%GWBg8=!;fY8}Q9rsKW1I0%<+T=K*`nNi9C?wU{)_(gg}K04GO;6UTH z--#v?w2gvi_ZtFcE>{9#3RM^vQqv)lS=~mTNrF8^NI)HA9Y>!oajjPcl7Z&ixG}V0 zamSil6(WkCqk6BK1vJ7A$nsclpO|bP z_LO6Sqo=}{+irhO%V!_wG=!2?RR!WPGe*LWC0$l%RNCMu8l^%Q1%o zurVDnWj|CH02RK~y3&M-^@3^E1b$ZSCqJ8tZkJ3t2SdMYHvIOH%!bvW9n{CYp*mZm z%w~IozDnDy_l4KZ*M>#wN^dPY!hrJPlLpd(hgOn5zLuoD@N@2)OTPlP9q0j@H zbkldIx`&8X05z$*r%%dT$2aBD+P?}?c5iy|wKcS9ejx0)8wp!I7Ah#oedf&9!!Y8- z1HT>*-x{H&69H3mVeLjV*E1Rnr?@?=m2^!{gt~2C9uHFJptb=U;TTv^G21zyTvMo2 zku)4$OBv=TSqk??dP*x9jIbyO8v*~d%WY(dosQbo)FdZ61)koO>(f7!(aOTQ|HgO) z3-GObj`DNBMWMQzbizhiQ`Yd}@TL)|X3V4u+f$mmF%vi6+LBO*OW4_X2n^7VYB&u9zEwGj5 zlk6p-6`N#hVzQYz`MxZ?XY$?NgLalaWnw;IBSGRe0sV-h9VK!ynm0C{>C97)IFuBpl&B97s(G5BZ2)V+N8g z&5kWdCxuoFB(AbH012^J!+^A`DM+V;#tbC2+{-y!5&FJ;Q>u)GMko zUOFQ*W*}*N=GcOCc4);wqCHtUO0>_18>JOZL0TUgGmvz@+Sr10UTDQYV&3%zAWa_@ zq&Ln^3-SCOp9?}`29lb_V++znp%nv(fi|TeeJ-9cEJ!b$mIf)m_u%5tn1Q4g_t=7T zS!l&T;!0=(kUlXiNQ=%%gOneoD?(!iQaZ43tgMWyLMsLmmsWFjLr+l81z~avyt_ShqK@*LRE%nZLq(U%7?53M(>wr)&hgT4{LP+7QZ6RrvTgegzBG0Qql zAmAss$G~-Amb0Sn!8Lx;NZ!`?sT%!uT#s_=`zu40w!WWs+^No$*qwS<-wzCtytK|K z^kKa?j^H746a5_kTNQd?EJ`z@i5F*N1O3vxs*f_|qH#p<+ zZ3S%}v_RIQzBtro9vAQ#7o29U2cJ+*2zSA|7KBo`fwHi~*yyP(p4iji8{9z-)AvC2 ziEMNhC6TyY%gt7(_$Asl(a4FKTTLXn>F+>p%K|t9iX3&%n;*x}0KK1I=&nPgY)qJw z1ED^HZ9dkgfd1alg84;N^MOme=3_OfNSuBmz%hx?H?ZYmq}{!&@X!O_=aSl@M)nCW z4+;1`TF4Akr{z$-+FC zhFQXh+H457@kPB!j`H3tRFw}R0v1!F?)=Cc^}LU0W$2#?8I_*F4p0xV)Bf1SA{vi^ zLH6_M>8ai|&XsdNU=m1Rj<%hp$$7ZVPI7XntN`K40WdFR4@oZ z?UDu}H@(s+)jU`})fmG!gTTu{w5nCZLYZ?>3wqH*Rgkq(3^U4jh6o9Q?XY67cr4Q1 z!gDW%3~L^XM4Rb$Z;u@pz>DQ=#jzh#X9y@)DbgS*!{Sv(8t{-Y7AvAHE`%-7ajjb%iU zyAd@;TS(Z-jh;LWYK(G=)QtDQccW2bs4ykanyWDnP7^g&B3Vof$&8Nt;fT+8!=FKI zyy1DtM2hiJ(5Jm&lcXt&;!$xshBAo3^13{dQzmk>B*sTJqb9WAgM0rv99SUN^nA!`pTh$1Dhh?Vb&Or48UbH6^~nJ ztf}T^G!>!qO$u}%K&Pn$KuUZivr-r{n#x$hJ5fCM88>?FGj8;ntXxxhk+6NFnhHRo z--3vssRUMsYJt_^diasdYN}yq!ZcMGzEo2^KOS2{;uf}sV4^jpjh-}}X6fR(bD}X7 zKtVBGmQzfWUbSsbF<~Q2V6t$NQ3rm|U;Vd_9dX<#7o zOo=)WHmjqjSy^pI{RY9cC^V2V@NMF_F<}iUF-@uMnRJJ#O(&+^J-7sTOo>)pwF%j5l32lQH09_K=GC(N-J)oPi^-)$^ zTYRaY9hVkr(=`-}k)do)2E2D=OQ@~+#0Th35k@nCzASXW1iG%P1c5H|9J;&g2q`xO z5^J_K#@$vb%+unVIGV$;a#9>Z99%zF=N=;!gN~BSCNXjA$pvS=IcBg~PP?1sI7uy} z<~Gr^GRwiqX|7Jw9e%BXn?Mj>teUUd9x{%xjAGL(Y>G|0fru%tAE>aqcWi_mw!RjG z-DU@ats0218w|ou=+T)M?nZ>2_~t?3{tR#>-RIp-1R-6(i}yg8qp^KaVTz`k3p)=- z6Jb|EZt&`O!H_c@$i3TKqo!>=tVU-A0~W`7IfR<+t0oX7TvncL)vAM-!MR=T)083T z#SCjmi7l~gohIIfXY8({Wp|Isf2lmh^PD`zQDCldlcy@SpUh2jLd{>PBj)YWu9V zKQ_lESB8BE{JJQcnr5y5B0Es9R<7aND1&q{at(59Y3SQII_Xe%Iz%Y4$*Fy&{nUx0 z!7KVwc)wmBkgju3g!|nbLz!2WtPm_uxu8==EGO^=uj6~exQwPtFfl~==xU)L^&hGj zl`50|#W^oJK9kx4Y|8>{CMMOjksUMc#5t(#kM+Q3zibGks}Haq6A5%WVvmm=+YB_K zpzb&y=#fD(SWvsZZ}-4tWt1gnyA$S3out zMH0-fVB^zqiKHZ^52z!N?7{rmscm`3l}l4*`0_R+@Ws0QtgMQAhiYKN69cedR1!vf zO~9n>R8r|aKrQ9$BAPn>W-xuTHQcZZ%0@Q1haxa?4b80$%{`++K|_C7srP`fZQh7I zt~YZ2p;U+`(|7`+d0HIRr{?G8Pj?vDM1k%UTt*0P({|wF$*%wPg-)8|6rC*1Z*r8q zSte7Qk6`TJblnAnN%g! z2B}IQaA|O0`2v5Zf`ns;x@qKcFLlV$PFj&Z^E>Mon$SZ()~nQHOj2!H5kUg!$-^Zo zB=mrNa+@Bn;ntX)rYy_@R9gfr&{^Ql5#Kjbfi+KjeF`f=-b5BK>5`nDtiB@dqUm>u z%i95dRnGupUJ-0+@Vjg%6>0U6539l%g26n-ltu$VEHkZ!ehw*?G%^4f_1pn&$8XzN zCqkv#9ZU2EcGB1`pNYwiXEmiHg3TCm_6tHQOHu`g_?AH_9%kvGz z2*eLWnuIC%VK?zIO(FG?3U5u%>y}jkwnvrqbv{WI<%LT<$dl6Jo7K3wrW1VN_NY`q z39VhAm-m5Q;40%;EP5D=>_tIT0&||>Ko%NL4dTzX(Y|e~%R> zt1z0$nx;X?3+ui$ixX^|!ML=MKvIiBRknSUX^PXSdNQdxO>ubT4Ce7bko9ntAH(rtq@;bT4y4Re<}10JqKJ)Qto| zC%Q=k3Gtjpnygat=Hb`v(Sx029xY*Y!tg@Ju^tM6rUxD zlrVA-TeEX^?2@|g;)Cgh0UJDs!Sv>KFMaSh`H7E1C!0Exizb#cC}>_OD~AzV8XB}y zZ&bKVPYLcBMmbGMrUXQld0UyS)ukzGUFOBJ(-$P*J}Lom7L}ev#R=xynX?tAP;p~f z1L-%I8*%jy8Nzkco7j`@o@uldMrwxH_@r9g&P+`K@?i=kqcbRJ z?a63>IkEtZuDuvA2$Fj@8li-)4=HH`T=E!oT1xh0G|eAVXkM3WQ@CU+GKC{ye1Pdz zsbJh`bjkPHkReAi!ZB4Q)&Yp(R;YsnNCGlXO08NnVBIS^RLI36=}*hvRL*X4L?8II z)A$vgYrvWhsx}e>pB=5{#IcA~QRz9+x~T5kdrn2G&fv;Lt6GsxazX++$ys9f zqt||Bv?R1rI019TxKUYuX*n2v1H&HxhWXDep^D>8Pv>)TahSvTw&q4a4(FR*I>nk% zI>i$9uo2h~1jz&ZoK)4h$qcnRpzff0Xs+;+nO;cXEFAZN=O`yzP1LH6)IhqtsO_zL z5KPoEFH1($a>Ib+Vgap~sHI6q8BbBWFMe~YFrSL3l@i_7TVmJZ*B2rcQO>ZM0VZYM?RQpZK6?UzAGMauL zSLnCyqs&P#*^@$yLWmfSDQK-{Y1yhh>qgH~Qg<{xJEhPw^{l0O##SUklsyyKT1AOT z+iF_2k|=2ZIYf6%r1>u+q&A*P#_44;G{}OpLzfD&;Mfkxf(b3>um`te$3pxdG9?uL7b9%{? z#5rfSrj6@uyfIt0>=^O!>@bw;`06-GJHkCw9Quyx`1#!vSS)rvd5q&ffwm0FyYN_k zqNqCYE8JbeNq=xQz5R7OWJaWa0>KJ0}*;}?h|^usg*$=Rn_mT{!Cr#2xNI|-4jM3A$$MZ zM?{uE9qsxrkoXtPWFUDX9taXawp}2pJG2`AA=ic({5(-Hm85n5{SP?c!yh^DqcbE& zt7i$=E(M3$wj5V5g=4MXEv$d2GT;uR<^HHoV&uUbn<865`cP#vR2avWQ$!?KtXkf# z4GOGw}sTRzS^@eH}8ltaJ-lh8b2oXw;+&ugNpUdQRu@*1|&!NITkMfO+EQimZ52;q|w6l5fvqOGjG&QQs z_m^u3zQgp%JBid^>OL1Vs@Js#nD~&OvF{$mBTJ?W9@`a<+uH<@b-|_LbsUh(TSzbd znE(W0cXPcP5i^~{bZ1l@R~^3qs0ZdJq%lv;_d&rtl6Z1K2m`|>f9{;_E*2irjb3w9=3`XGt%tyG#)ybnxAGxwL=ut0eFe$LbkJZY-ur;`2dRFE471H^6}tq zEb_eKBu@DlomUtmJ@9dQ(c^=0$@0pfI!1@-81+R!4togqMkfv-=mD#X8NlqV??$h2 ze+W?Y+qiw##F}K6oJNp4<*gf;^a~!3YNt&gK7o7K)$X&8;Z~2vam-Hv;cSB((Ecc- za-c6R0Ii8 zed$8MIy3OczsTnYg5@3{wZSwmXS=Mll1$nqVKS{Tp7dbU-Ud?PvuYDG8J2AP-3!B{XoZ(Ney0 zV=}x9^x`rMWx&(*0Z(R_h_&AIn;Qz>h_576dQ*5|X{Rg$$l{TwBX-0LNk56dC4AGT zCozO0YaZOi!>2H5=RY;&v7TcI#?n4bW)tIduz^{>J!imhu8LibGHWLp9hSWLW@V9T z@WYa+%OtgO^5**%aUC?-*E^87)JJxcl-x81gxRop%ZHiD^iv~-Suvv4U_QtuMloO9 zqIn-xAD+*X=cNZ$RKX{++P;WCz%^73)UFCT>F;}%VF9xvIWYM!PCeU)GN#%wtL^u} zU8oe25Y$M+;~nTMN)A!!GY`UNFO+gtBgGA@2-abbXh<{{j>pzLcFoMv_?;3tkrR#w zwf#Oi9;0s+9-#zz2=)YC00@xg#S_UbEw^1zCb~u-updTHOevO+9XUSq?Im?!>D=37 zm8=bzkt5<{PBLCp3tfsfA)kY@;gkQE-vdGraY5xp@qj@!2m#eWZC}J8big^+$RGmv zl*^mG-x6i$j58U070~4)-^tXtTr}B;S}9mK=_X@WD8GQGYNyP(dZ5MW@1&Q4bF%QV za5V5MbFMDFLwklX&=r}K!s4demJ1ig$~y6}UU{}YJ0P&Y*7b>)_>AOCIZRjfP&Q7l zNT3VKwFnUSayB@lULVRauIvwA=Vl%p{(eWDBoo~G$pf_=?l-yTq~yo1n3kfJ56bT# z_ZEicexlT(zM+03?{@#bjnfh+C;aG(-DEU`Ug(xKoFDLGu(U6iX8)yd%Gn8RRf*-Kq0 z0k71->Kl{W+5mo=0q<^PiQnB!#q0W_y#<6OYkl%WptF!caB)D`&s9q+dr6faNe&=m ze0}{sv)Y8Y4pYogJ^|=nOsG&y>XUm|YE>I@y40Mt1$$=`}-3WooyadYig}8Kjs7$)A4xO>l zqSfg+Gbi0W^|M6>F(sty1rp5 zMLyy%(5wU=69Ykc)Yg?ujdeBY$payQ$F=Mcjc5P5UC;>gs1fi_19i$4stbOr{o%Tz z=L-L3%z*nUd&ZESF!aUWpTqNozWm33a`2yi<1efgM32`i$V=& zX$^!TRRgD04AV17irH4IQydYETjeQR5l2e>%#M13{~f-drz7cmk4pk)nqvc9Ae|^b zoNf@AtU+gWB(vOmrce5zRgzhUcSCtp;U^uG+N?mN`QFfgNshlj z16j#oVl2a`tXLKKApL>p6NI`JY>kqMVj$AM{&N^w?Mc`C9+RuU;j+|JgD0YT!xhP&8U@%eqX9XB$sDlC{?8P$R5tl2a5ovD+djoYOy+Z2)(mTwW zQ+Ph=jPz(}x58+x4IQ!3`co|QtvF6XqjgRNLewK?f50j8!I*8^bFqJbI(K5FtZ#_N zxWb9L3lxF{L>H{!moCviAui=)35)@sVEKhhj9(^D0D?qG;CAw_ycnSI`j+UHkL?)= z$DzL*y+s0f!!{D48I%0$K1!7-@BQ?I#tle`Ia6jNMZ&JwMGMx z>ZB4ZSBKb}6rV`1(Bc5O8;sTZK%5>rVgvDc);)@W@YBq)fjA>HV*~Lyfph2wgb3#XKAU-q7f$;PHvVmA1nz4cS^vDNde+C> zL&t0&xTabvG5gkR(Ab?mG1>gI+vkw_4S#aALdWc5e2Xj1Oi)Z`uM~U$Hu8XdXD2z{$rs2=n2{_}OO_^DI8=vl{Pj@gl!H&QkfW29}oe!}dTO=Gu7$x?GP0J*~T}c4JmVgu+ z9X2qm2+Jt*l&L;IvMw6E$?Z*Nig$!g*vK#*Q)UEG7tCHk5-`$Pdx}{2En)#s4+$=S z$G6e9AMkj$zT|3gUw72xv@x#x^5q@QE~9noCJkjce480h<%ZEcq5Foz%))XbeLPYe zu6rbHoobhYbvhV2VK`*$J(FR$Z5sAlCTE#BgF+svx;IqyGxebBkuoq5ZN~>^B2~n_ z$g~;=V=>q6!vNgR0pJ?96mgO*vzE@99Bjr#K2BA3l3Xy1+xS=BNLi_k2Bdrt9tfSb zLD0a`VT>Z_GiGyG{1w-)baWf&jXlJ)L1uO6iL;>x*i)N}r7YIWyi2(;;Pau-H5(c| zmIY)BcdxO(23Kt*+HARx)b7w%dz25{ieH9qoAJJ*?{btq68dE*%dGjyJkN|>p<$EK zKnIVK0+`!6_df*2@8kd!5Pq5>*3RjS5-{V7B0>}@3GpOLNg2$neM0>ITRmS@- zkQ7b$?DPZ!F4K7QLIzx@A~TIoey}0UjoPI!Qv%Li1dh;%q z1W@kCIhVPIrIreyM6e*$Id+@K@^b~WEu$#eHt9$mpd%HJ$@5Z(1zaY%kT4ryV;zKx z*U+ad(3pupc>SiT2&=E;okcpSUc`FJ9&W`ygm#Q0kI0a z=72QdH{Q1ap5px$ts}6)($LGFsy5Ljlz}#{PIN;i2?fOALC({BUQI0v6&uY_qc)~F zW-Rc%mk>s)u`Fs)mu61j#+6pi$p8^?V|!{til?N)YWT}JGNR;k$6^qJ>!RdcG%344 z84{x)Mf=Lm5udw*FZ#I}FqN!0-mQ>gFq3^nM210FT=%VhRMs%4nFUpDFB@w{;4!ot zYMz@?!?<Uh_-qsxvLBjCfyYN9UNq%W$Y3SE4lsL##-qk34;s`|q z2ZP4d+Q3`==@HE&X4#Zlc`HABf?dlX@RY0fHmHffcjXY+8#<~8R4ED+5P=viZmnTt z#%{%5rqjl7=GF~ky&`n=WyPuP_i}g?q%y|d7%p&MJ5gUms&f|#QjKRCBXzgYj%Gp% zaIOk)8to|m1210ZIGD$hc2qRnx+H>ZnED&MY#Y!1@9WnU1JEb0#8fD$(>UZH4&C{^ z7yfbgcYaYlwH4%(pPKpU&-~7;&wlRnsipKk#J}uv`d|Ll|M-9Y`ft9De{<)~{l+)G z@y&03^Kbw5@BZ$8{yqNv!$17Pym|Bf*FXN_KmF4`|L_0z{~Y@N{R{v7>%ac%|NXar z`?r7p_y72h!}#w%|MNfp>s#OY*8KSk799TVdUQmzFj^EXj+R7Aqh(QVv^-i7t&CPh ztD`m1+Ndu&GCC?cIyxpgHaadkK3W%@5Sz;Vn^NVw zmF_+Get$(L*#|7&zkD=+$ibd7K39}X5t4>CM9-yltE8YO_vDu`L_Xus+ z$@?joPx5{$qDA-@Ar`&-y9clWkQsroneVw+0U}+eTLHnn0l{Y~g3ly4&fX1q&kcR7 z7bqP>y=iwIQMwat`*a$e{0-ZTDDTofY+)`X*fiV%c!odk8J8XgJ};448bYMCN&6sPhlQpGmH4Or{!FOlyEjW|$a!$)Tgx_f}= z=ScxWs{@8?sw=H{=+OfYsbIh?1tFGgmIJR2LSxr3WCI)`G`X37F;wf=MFC?=dP%@f z(#aY+rwx5t8~S99fRhzpgSLMT1SsBxEf#h-V0d0^26{NfqmGaQeCUy&$ z+hE=7L-#O;ixHbj2Q(vCPTRUs-+{P$ zlH^`EPKF32{SNIIl7a<)Yyi-Lo8&u>bRj=rhUA6zyc+;*InqV@;sKe&<~JGqeFlFX zPa7DbiT8*v>E_ZqYW|bL=3U@TPQrrFr$L1ACbFf`cSJWsZgu& z)hX5S5@OXe#RpdPOlCOMR1i*e>VodK$qIa*cCB9Np3E+9ja5GNR=UT_^RR-;1~ax6U6f~B&PP!o{C zVtJNzq{ne3X398<UpEqXID%zCP#BBLnU6l3(1uen(aFB*Q} ziLG`Dem;)!U$Q)lpQ6{U75rRMz|Sw(w_))kteIz7C)!4XC*o}r^fU3*sra((yi*o* z10_m{3%aM)xOVv(I;qOYjHVB@*nqGA%rjGI>Tb`gx2pm|Y}NUd3_?Wu8xo|#G#?Gd ziHL~LVu*ewluINfRf+|cy&THkQ@LqUG~@V2m)h zQbIc(RWeP(-@p{nuLBNBW-gBgEEuUi(hv(UK|CEmykb>HW(Zzr6U8!PLDyu)0>znL zsm2$*>7EMAIdAvlp+7cjd04SCCKyMH17_uKu4sHHXFDo6;^`2)u~D$WLE;oG;!eAT3moR#M}kqyW+~KDfa^ zTAV&zBy-e=d*VP^%FhPUAU(h~uTzkYXFVRIJNe|=a*!~El4rw$bUk0ZMnGDmAU(}4 zprl1?qn(4|GjQy0(tr2e!0u%+&2`yIZ3E+5>V+2OX!wZqD3Ph@k; zDXidfsQ`z0x1|XAh4hVk0um6f-HH6{GJGZ!4I8a((j|(t*ZG+r{)_nJVhn%XZMq5+ zeStmm4;xYRIehUVRzErzH?p(%9u;g%PEIo`mxVp&x+f0C^Z40?4#v~ii3=3Qi!xk$ z9G{$D4&%}GY*-jq^2KvmeJk26L(lp7&?N%rbBrlHuLnF+l4U}?*Ats4U`ekM z@3kyCheb$vBktX+S#mZ@a(=R__~0x)$l@n$^C=!$aRhA+7&05^OdZ%X$Cu1dM6rzp zhEk5QDujRS8iLo4K0p$*2qKqb8j7^<1OQE>oz@V*-8%s}h3&RP(rI||Bz;{09;x>& zAnB7v1y6oo!$1KZsrM~_=LEnrC0VTrKfgyZL1 zEIH17CJrpo&&RT;wZYd=Q+3BFPuIMDzO8_)V~WK5E78wKwLJKGl98j^*fN@7)14K+aJeEo)nKhkELRJb`25NXr!WvC{ z@IFm+^P>g)9Pt+6=i9AHXU$z!zF6{j0UTEQ76`Ki!$O0k%uH~F^|f&eu(4{KlLe^R{96F^w@A=^?Oy{yAHgZaw}irvl7cr#;r}HC#|p{sV8MS% z!EsWsodt)Xz|BDaePS}HI$r$bKjgE2=QC``cV6Nl7XBLwvueGODsUz_oa7}A;%5UA zO%?p#R*)!~U}XN`L0izRbe^ zHAW=)(*UyJeqI6hCAw=gBzaX+-2W_e#Bl%j4RK$4ohbObEJ?nqW%wvF`x+gm?hL&# zwEXSvLd!Kx(ehg8h@s^h4bdVGb_+@V4TbKJYBRh^JpWCB{0b(6+6UG2rrW&b^veL8 zSx$f53YKMMW=!C8THt@6*$maR0!@C-USF7ZtFqd+Kt&?6*_33B=(}Z9k$;K7nv$&5 z;akFzLs}j_#Kbmqx-2dL%+z36fEz6-jp^|Hd8@;hh9*CJOAFAj+AK6Bl5p&ak*UL) z6XQs%@jRHl1u!$I%6@ge|33v$Vj3|O+HVipx4SXf!TjKEEq*6&93R#@aATlsXfJLq zO%N|6!Hq|fyqS`$GpTqZZY>M{SZE$mc-sJ@Z-pzWjZ}o|Nx3n%CLq#OL?!`QBSd=5 zNqcJ>0;xILfQ*q^!!7!w^TLc%VO{2(EPbInrYQahHIGqvN!BzJ5d2y{GmKepbXTvU zv*z7dM}?lP(RAd0AVcBM&LL39!Z*i;Z)_(p6Ov&$Q3m-$j_2=jEvAYkbeYg#Ed!7J z88osz0nGb`9ks68aPKe4Um>$tPYxJrzv>I$c=GC6w?7<$%$C?gFV}@$p03H+zW`+T zxDG^p>hVCfH=-C8?W7>BSPm8z2ob!`@NbRk?j1oaYE4#D5|UF2vx%NPANqW9=<`uJ z8VN^3)`_Z9$PIQz1IEEh4im5s8FMZRBWhkn_J&q8x@F2hs}*g21NeukZ8MO%$u)?xVl z@R5|TJHs)FAIfQjE2YVbN3fh5nm2CN>{K8Ej$R{fmYpf<+#xzPid%DBjUF`%E6sJZ1g5F7(Sr90``Z;=Psi@d%)_;=P%L%%>zQyMrw2lqzY; z(HHbtnpM3vDObEVg?<>Ten8MOy*aC96z`54i=rnjvS>l^-V(ZFEV>`M^DAJ{9yH@o z70?-k$8Di!rg(c~C>+}POgJ&OYdXCum@{z}EMMJ{w!(3{SE(F-XNb!7E;5nVDdU_aS1O z8JLW%C#d3`V2XEwQ@r=_y}c*a9_3%;Olrq=EGl0KN7|Epb84onZ;yq(*{JjEl(h22 z#yU%BL?HXAbW!0@o})*ne7_f(H;(4n62nftMEUmTl5G34wBmensVvSLf>rE z!?{k+?u|Satslr5&)$6(vL4K4(t}ES`e+%ZJb34xdfa^r2@ik^+xkAexbyvu+|G9< z4z6u*C(-zY7oBKmA{)%9a0sO2X``ueD8)-KJA%$!Sof7%HYTPEMwWjZTb}fA`5ZT! z?8GzVLl&z7=gMK%IwH8RnUx1?a&N7wMid@@V&5TAP zKq$zHS?M^+2ZIX7*FKC6ekkA$=b83!`JZP@eTXPY9&Z!yxmlV9dl#cWa8#u2Kz%QY z)np(4x%f+{Slw>w+j0IlvX0vjgvs?Vn-5M7Fqc{E;=nPbfL-+29T-_&`$YUD&rEr(9P+|r}0M^s{YVz8!DRI!Ur5G zq4{|Y5@;SObligubpypp_mUytP$XR7iJb4_n4wd3awbeFW{uPLf=2cnOLU`-Lz}uV z&J5i(EVB)7MK!`QP=U>Ex!jp`P#`;q@rI~mKkDosP}(nl`OUnP?cjB4nM^%9bj<81 zTI)QUNl=Kkq!0b*gX|uHDJ?WvVM2M?3-BQzOswS$F*g{l%L9mpXf`)2q5<7OZNCf4hMP*!AY=n%fhRfivJK=%G^AjkvM9jLBW0CunI?jV zumVPf&FPOkT&?Sp%>|&S{X9_UvG>2Hb%_BLOJ)lgAYB+l&Kx_sW05&RR*r7jI{vRW26g>XTFJGxsrP6a4d&Xd?Q{k;a$fKlKot2korQJ(Nw2OV@DsiW z@iqrpjF^puiHBtLt$eD%#<8hdyhU_~cwsI`8vsR-`N8NT#G0o2e6StDGZx`lOd%c5j%Pz~ zPHBVOl$4F;z`&v6K>5_9?Q4)}JUvbl>|*b!DE)((D;jFQr()@q_y&AN_EE%-CsmLM2%(@1DQnF*n9arIgO5%TwOxAEJ#VmU0D3Zu! zhmBZaO8N01{v2(MlPHQ>8v_uezN)|>UlCla^EyIhb%-Ud#tV|qFH2zJSk-LF=}a`^ ziG$79O|3yQST=?cL37DBczB}*<54!~P==|R`?(vi2g+K}0kYE5m&?hDq?NxwYVT47 z-Orzm*k21k@5tCM`tq({S%x1vbg><&plMHnmkuE^#xR+=Aa3W~tyk)*)GtBO%D zV!$cT7zUE~gem9-l5QO)2#hBRrlX0V#noM)#g1X@!!#{|4)=h>%eiYof9iiNBtBo2 zvlY2ilTLg-PxGEv&@a#&JW{dHpTs$VrstaMfB}{?Pu9J-?witN-72Y|UohDsR$>vA zmS8=J&=Avi13hSFUa~K-LmwziQ0WC9ivK^?i{?4kSLA!4HetROWJCyJ=5iQ{?n1U4R zjWzFj!{$@H$t!JTrqHvsp=Yn9j{*R*dDjMfpg~ci%X|Ro1^db#2>UyAE|WIegI*ZW zQuGo)OhGrt5s17 z`t^2{)=`Q@2mUbD-uMRs|;T#k8{VV+s$nP;BYadI6m`Q}5mdFGpU+2&72 z#(7?6$fcR*HShfTc!R&rjn9qG!*#w~7sMOm3*(F8P4UI?CGn;4W%1?yx+3OvrCgh1 zURU9|8rL=Pcj9YtT^C>PuYs7?4RYNW-xS{*-xA+y*KP4_@fKXS$9Kec;<`(&yW@M} z@8TMa?~U(^?~fnA^`Ko3#Sg^~$UiGTyMm` zh<_QsiK|{Y!mfptg_T9P7FU*3mfE$f!mAh8a$GAaD=VvTt*)%8tVP1^zRHo6qwG4m za&+YwT*p?9s~nGOom?kWPN!ixbl~Zt?S~;!KUpXDu8Mw}@oQ3P`$~m~!Bah&Q z%DI*EGS~T)3o0Asy0CH)a&uo?xukMw<+94Q|xubGt<*v%zm3uPRcadlQ-pYNI`zsGr9;`f6 zc^J{!kI2AJc9i(AN@9>E|BmZ z|LIu*-!7gdfOn8#xEubP?mh4y>~dO}1B}?P-`iwf-H&?l42B;gL9y)N?{~sj&9*N~ z1_F_shlqNxX4Ap%5yQ`=)XBPZvK8kXR3|WRIIUEPFol-}^-ZKR4G|NJ^Phwjx;?tF z8rLnU(|co0vOj>Z5ukvvA6wBu#ib{e!Ui89=m!a3Rxu zFaKhlVSweZVYl!v_T$wFC+z91yq`R)?d$l1aEv|{V@Yo-KSMW>ty<6l?Cauxej>2A z?g!1zGT5pvJM(Sgd%u=1s6oFg+$?}%OfonpkZAy>Bm9kUL&1rjJMarSEgt4%7jI*R zf;W2LUXW$=*ZJ%rc}Bd}*-^mf(L%V;*?yu2=#ywgz`KR_!1_-0CMZz2->k-dnBgo7 zfbG;7&VvLD<0WA9$Jlg&DLVexJtpp-U$%&M4&WZ_oX|1GAXV&)O#>R!9ipFPB@PDy z-=$r};z9?L=$*$fq6Y**TYb^3756L90B$FNM8`Lv7QUkS;yV&crgj`%1^4mojzp8g zzrehF_iD*|WW)QuC>Yd&y~S_D_=)do3qU7Q?N_Q@@+Ko??%{(@@p(R|0VFKF+m%Mi z1EKUTR~jcbh0;4&+LbIwJCZ7kz`6cV-tkyw95-KAuCc2^0z3yJ@CHD{-WY`I%Lxa< zCtD-U$6v45c_G3#2eo~jK}jTgvh_i2e}jmalNfGyJBN^X_w)?X!0#~ZM~7j5U58!1 z5%S}lo36BdP}3H|fuU2n)sugRBB9JzNtw6Fa~{-662Zulh2JO)&xPfR8s!t%)73qsM~+T zI>w;q)s9CZNQpG2!D(y~sY7@os$ z;qLFs1%loGNMm<=8oNd@2^JY97~v>>&-eJ19QO>|L6O7nZwblpP=fPV*p+k%eiA8D@^Y|MJfmrmK zb@+VzXPD@aC7O15eLP<2N=}j2`J0i(Vi30{2T-ibkrO8ZIjH0#!k}`1#0i2f&KD~B z%JFIQ1gk$?qcaaPRuk|)AlTnr!MFk79UZimXe9!4+gao+rZOu??UrLPm>r0+Cha}N zu||QDIa8Mmxb< zub=+N3XrYHh}DnDk?z*O$p~gAk8~oC8fjXYZdCo;R&3>9&)SxIj<$|!pNy)W*u0(A zC<>@F;y=UqJ@ae|qh~)O2+Op@QmP9Ama=aHn%ElN z6ZaEA749dJ1_04cwnNVQC4CYX$WSIyfINJ(Z9WR#_{Cw_cZ`-=NHHu!m^ zfFCscn}DAqgzgr{42oJomO=r^4$0k7vX~`xEm^7=vxV&5#CdT^e;_;iNwTw_V}sT= z3uyf%^bE*ucv1t84o73H`Y&3gwKw9BV;!_sclqWk?&sJbWyulV$!ENXhJS65@*4Z* zWeeqxI(c-nA4UoDa-1!&QMOG4fwM9IX$GfMvHiETQHZg%lOKv`XFZbTh*z0Tsg5uyW^rEi|)@5*u*%7%T z5MLs?sM&|HZ$x8Kvpet5PtnH?WRewE$6bU3B`jL0T4X(oexgMn`QJgV>FLs#&_e8F>}fP|B>!M(Dg;!?s{UL>3|3WPI6ki0PtSEM5%^aH<3hqP7c zF=1@9)DO_b4&*x*<3vu~KnX3Ic3L(U5OdE2gdUkt{*0a^8uUl|@raNFl6R8;#1cXYAaA7K5^jP`FKFBn2FKLe zRt~S1PH%%3;BAK>Lv$-rD!K2Ny$CTC2d42IiLeMf2E5Zbn=LK0I$_&tD>f+>NvkK0 z5f>Z^s^}rXi{^lq)3i}QiKa=QpCQ>is3ph(P24@gq6b*S*&9plWy$?0+07E{UUao9 z0V9OaX)pqO-r^wf%U$D>8+0{8a?|4@)pk*GcdB@h#k!)EU{_~tD`B_?4U9)rrNH^H zmE^vb;=2i~WFn9yBmMeL7$|A~gDjWXqLQ#!exlS0%PH~RE`x-u+n#t)5(eOLc6AH; zlx~0QXS%nxIsi{83gtu)eB@C0VygHS7N-W_X~J-m48RV3?fX`e`&x=`B(SLgkgo@J z-vC^Pj)8?nGlB-B5rQ+@bX>1xwT&bY8-y`;RC~d~{y{+$Nkz^$3Kq5*NMbCd^|Hkj zz}YCu;U!}FJ2D`_LzGbx=*q}EMzsDIGLdEinvTfVfz0_d--6Nz%HnE_AiSfp`YY+W zQ6PwSQjncWI#WhFs%eFd)EsTpq2#rb_F|W4rWQ^4(7ny*9-O*jwJ+x~I0|eFLU#oL z1nRSr#Q9h9NyU6ty?ply_ios+q#ubD2$LQssTs5&vkDP}h!)Y)m;{ZhT|pcFQXv@N zb^~6Junhi%`=<}MmZbvNUHr5^ZGGe3whabbYWW7|aqYopaAUVa=2Bk1?sI8Cc9)CBBml+Tv?YnZ-Maryr0Hnx^ zl>{VLyN(#V&~tJF6mJ~vg$wXP2U0={8ORZBC>frQkwZE^Q(hIuz)Xts*?7vNm{fh+ zSAXM7igO9XFjB3rh>c?k*pP}mHYge8l(r-MWnLooMfEjgnbXDrq%O@TFKrgOE(#3%1_O_m3CNA^jE9Tx^8`4l03PqqBAi z3y)P0VeoazlBTQ=NF7IqCn&6h2S*hjz$jsz9mxw=o)m|aBnLba9poY45J#PYn*lc2 zhf?C0wbmrJ=Ni_iuZ6WEzZ(W#lEU=k#=sqeyb~asv%I4T68fhfaZfoPyME-Lce~NUoYh2 zPW>Kl>GuoZ+>`8=b>OZY3KmM$1i=<{O-gpXHzRy2Hr$q2f}f=Hmnh8;zvR#S1xh{f zZzE){M!)dG{`!dA8ok)9?fP6O?Ai>_xu&W0ZO_`zcF)G-5LQQ5Ym6GpS=t$ZSWb+sN#t zQZjprWcH$rb}5<7Q!?99PG&EMR*cM^ZQSM`ryE$ZTF9Grrpr znN^L*s{0<^gB?_ITs zp!ZHme2=7r0+z%}F{R|<84M>;8R94IG==au-+Y{JR;WdwDC8a3Sf&!iwuc-NuR!m9pX^#L9!j3dX5K z;?Gr994KeSlS3=Uiubq5il-81_esNK#dS?salo-6ju0s|caS2$NqoNB5-YylSn<)< zkP~QknmfSjHcW?lBw@yCqWims?g5zWoHRT@RNP~QTOzXu?_=rRC=C(m7zAafU{7aO z9i2Y}ZZNaJ#MQxXwgSh{_p&U^`(AgCKp5U{a`!WF4;2Pljw<) zXle4k-lYEKE!RH5d~%>#>AW-kxqeSzUEGjO2DZ4YPDBjC9gf<3)4Ibok4yk^V*s*W zfxKOTGzX)=2&bak*l{(xwT0b69|V#xDhU^{a!9-=)W1aQzm4?+^_@xmuH&LVH6IA^ z!>I!L>Hax{pjvq!X8Jyum?(O#WIt|YKVUs)(IXv`W07=34c~@$G$Pq@D~r%m^yL3% z?@hq%Dyp>MyZ4=M0!Hn|hyo{Jx{>LkqES%q*=if-*iNx+yJL^BZEd>09{9Q$PUb)u z!WCz8XxNyXM-@)#g^D!qa3bM9g&elG8n3NQc=xo`DtK4 z|HM?YJv@r4*%g^)^Vb~FdpMh6?X#FlW1YjFYu|}4DuvZVGSg+GFVKM(gE+T_%_)fn^D0oSr!*^uK3O?lXyk(`Rq+e z@tr^r-$f8RE56?k3VMvhJ7#aIX`(bWC#R`##kba`=Kn**2XvI>ZuM08ngp^ZUOme| zHX%qdjcfwV8QF{`=A~Z_8E)}$5w23MS`<}1cxvi#ou!{WGh;r|7)0#W=T`VBLjVSa z4`tUjn!0f-=xoyK8K76l2PNESp3jogf_(688M%Zb-~_cAiFQr`$>oFEhy$O%9-ee7 z=-kw{%ZF1d@?qTo?cps1eGQq<uoZ-Kn%Wgzhmq5QYa!58NZ2-2>9;OH;G;Xa zEHEar_G2yz7e?M^qWB9_+djIJDx=#bYyS?8?nI5QgD?N$)QWp{RvUz%GOh|8|C@1u zvHOErOout7-t)%EkcS z3bVTg06!S>k!^$Y=f)U2;m70T0oucnes|i|Seu&>dwbaa0_;)Mevl> zrZ#p8D_xt~c4AvnAvR;BPZ9LRBDNGq5TdU-xE*mW{JZ@kM$CU)j%`7;E ztQbygPyhxSv6D>sXad#|!Rk}N!=y}iQ)=4ra5U!4UIcP=Eyq6wvl6 zNEn7&tjFj(@Z>G26X(hQEBK8iC)!)SmHi&Yerd~W>6@{=+t%_L@uN}uW`II=<1kjC zd?tTDD0cM0URB~#HWDhXLxmPIlw$X%8CzK8kEsc5Qw#;q=>f zb=AKSP0eWA-Cq0P|FnPb+1dyH-2TDmYajem`v+gBeejO<5ALpg@b>l({=4?U+xS7* z%({B1iR_oNRToqyf_!FOsOyj8uH%b#*{>X`7omSI`1=kQZJ>UuvT9b&plvbbvItfDLiRcu2rl*!^HZ1A@v`M{$>dmJ^{HTGQdzt_HSJiL-;NcN#a9vLR~uHKffPGOEchr| z95u}Jtu(Rgfj-BlPFxnhQt(eMi&wMXSBQWi8aGZLi?@L(hJv^($>Oajmn`1cMHa6r z$znDVWbp$i53+cDNfx(CvY3rOrm~nxKDN2y+e*b3R5;c7@g1&Y5|NOWH(>}8Rd7Tx z+ns)oqSnpvhLJHmRfX8eY3lsmh?m-8XKtHmd$$%lVVUTwovm%FoijL<^GXupTo(KZ zDQHI|#90X-=LI$~6<(NBLY$qNc3yaKJ1>}o*g&{nWV~><$Gjno34@kHq$&~Y@+qX0 zgG9g=Tg}t=ZZ=Ysq{1aE7~+dUs?NrH-wfxxTf|2uLUiAaDD9qUI|)0PmLi@7*kD@=+GL?`dWlP&x$C!2;-}% zI+;N;ola@f&6P7Hb_(DS`2{Wb5ovkozrLA7bTGig{;)Qyad(VP<0|2Z&SBihPY&Wx zsn$24&q{t5OsHfj`3MuO-}E6Fe6Qr?+(JhA71noC)i=z+gP$MO2UzI73_n8@`-a5 z?#-_lku-=fR8Mfj`*0Abt@pDORJ9uC#N{p<##(=*`8l@Vz?JT}^9BdFanUUfQwP9M zJ{|eK_-GRjdCki~(a>OHn8)b9#DYBu4UnU~bDYRlBX)bx7QWvD?}r(R{}nzx6;FMa zk$k?&N8X%?<`s^pg54q2)3G}Nxs@N{ipt@}pr-jAd&Y1Z!^~lcp@e)sJhg~vqN#|e zGR(}{i86I6`>n$BcjdRnK5fSmJSza-mRZDDLRZ(9@5-yXSHE4Gb>3u&B$y-{Q22H* z4#SZ98(yA;qAF>Cwh^yT8 z0V_prL(9?GYsYm{ils8%+2)QNdup3ad66XmVF;E4U_MK3IUc;SndP_){&v2uc|d=j zaOHfhO9eRt5@nPJRjPO()$uhZuH-_0K@_?SsrB`%RL^f-)Wuxobx=)g{wCFFyWugI zFW%QxCVG>+`faLLyXEn|>9{qdZwGGi$;WrjU)*(Ycu!CJZ9u#3id(5>;8rSJ;Xc_# z2S9R{dxOrXB=~+7K5fp7>AgoG|G;5PL3|j*la#=y;;MO7l{ERB-Uj&-`){69m{L{LaI1Yxa0Z`YtQJZS`4BU0iLK zA~ATJ@GjS=KX2?#{;ah4;%mNBEgA2kbabd@$oR1ydr zdc{7tpa!koj}5a(TOdRdk{kv(S%$dLYnc@~PM1w?SOalwcOea1i$wcI<_@ zU8$e@8vRuE`{0q<`N<6gEt|H#={OmD(p3$-elou9FYL$x^9IkQNTvA&ie-QknJ@p8bFYynk-T_@%$-7raCzF8hM$FnF1(mYRZn3R!b9DUQCreqCocGHp8UGu&0z8A@-=eDdzQKjo>I-YyzqZAC-u ziBFqjQA3O)>e?haoSc< zR>H35c~SNuNl9}T|MlxmIatbllcC&7MkF^$6~PgM|k~& z3E$#&b3iJqc29gv4#m*MnU7m1EPUnG=vxYFA9??=#zD&*pPligP9d`*nE)m7lkf;u z#V4jKc>OaivIhQvGi9`*If5UVOVFwoS=)*eZ*g60OAaE1brH;lotq!!rS*2Yn0fe} zk0+T~B%!s_u2dq(a=|mZ6hjIcg#?>qV)KGk9Xw zkM9m<9ej+eLNN5)x+Un>lNvwI#GfaFrT5r#ug0v|d+)RFe*2HkdD;O79&|8funUu) zS7GuoeA;YT&S4Q1fhhi3<#`>J|B zGjf9bB(+>-%MuhnFx%=NK+*0;8I$EgIV7WH)C?K0d81bvn|845&o(Lzsv_~Cn5_tq zVI5htwpCYDD-t{x%a6Is0fHxX+7UJe-}NME#d^HDl%3jU>rI0 z673jrX!XlTo(e#dAm@Yxk0WRQM;AFbttcw$gq#x-FpeCv%3`QcH{$q61u&fYcT7$qAS2RKWVbC+4vxImSZab(fDsK3Sk9eWItDX)2|pErjW zk{2-G%-x$CMEkkV6xI z#@>{sZxRMRH^Jk`c}k5&16^`r1ENYax?{+hHvw|aOTajCo?He-F7yCEiOS$IIkaaZ z(u>RU%atUThM=rfnMa@dkysqbA<>s~U|i+Th)WLXgy>_VoVlpAkAO~!_o4*o4^2ls zX-a?!s`-ion*%Uu{W4Vq*dMw=nu`ltn7dPha+0~dEJ5jW%iGnXU$iSaY3sV?`ijXP z9FOCL!vS%d`4D8{7C!iDt(A3NV9Zal$mP>G6!!)SJV(er}N~9APtSvX%X>3O%8WSKXY&J4x9P}9;(uvGl5st;KqK*!-D$&z)hH- z8OA50t&-vZiEz@9BgVKQOhqT{du;;NnU^6bJ7${DNr7wO(QDa<94L*G9w2}fImx77 zpWt!o$3!ONX@_8^N;V)C$_yITmQ7~e8oWtzd@w=fSmG&-c2abxfMV$xD<*|L}Vfogv9(qb#4-F0t4Gj-t0V*GdTpWPE%aUhZWy!-mEnE}fjt!zK z+{8}aCiYx8aHjFdcpjM^m~B4C1rq3w&vAhSRnBK$AeoOUlg>_n481=%OW@MReyVMSj^H)@hgbm>|8+D4 z6y4taM{7$OU(#1Zhs?;a=AERoMZ2-R88YG8y_4)0du~vW#kv*KD+=$Vggg%hF<%Ad z4djWC-C|#h@hUEOA2QEq(s)liXC;_J>-{;bZ?5v^`TqSzJQsI=Z6ALuQ9Ed+PSczY zbrG0A?Fadw#v$zliCPX`NVXgNVV&CTjDXW?2;d#1rD&L9Pe;IA-$724#|8mW9g=;j zlIE-gvHMeOM=wazPIcDS>d47DVL#{A>LkC-Ndu5Ly%YFtAX|o`Y#9PZyGW9YE0TnI zFi4VO(>?AQ1Pd2ie-;Rc0|fa65#ur?h!__sQN&QBR8hF375lx+93q_bLwm+A15?v6 zDX$vI0G#iWK2fhp7%eNcY)%DJmVhcQRRIxyL$Va-e>l(-nlGO0T~+j<&r<4SdFtes zCh_1!j6#f=XJv`fS)yr%mDdyd!~xF4C>x43<%hN92k~HFJMo|^qE5`k?tNS`KSxXb zjoELhI`$oPJ^PL%$iAa>z`mnXk$q3Z*zDW;Q{Ud7B)6;FN3CyDz&Gb$hpY=bfE5M< zD|Bas^%X`S&&18-;wt9^5lAA0C9PQP3?l@iHV_aftjM&*GXOG>?G=QYl*Xa)oo%;t z>0x>5;WX=kVJO0Pn37JLf^}*LJlNrD!{OQ8aR>|!I0m~T@QMloiHV3Q_&Sj*iklh? zkry`NyJBf8*1g7f)(lFQB&J`QL!C5LYGiq>5!!#41^#aac43G$w5WyaL;QoyS!i{n zv+_x;w{M8KzHb8J%Ey765kro)sk$TRstSTA@|s(M(N=6a6}}^>H;N)N(9-ahv|{xy z_w3z+%$Fq4urVIo(s285xMm2X%1cw_#U^fzOwo}GMN-FHt89LRRC!sd+_K6h>`Il< z<=hhN!5{z^6q{}fLY25rW29CR=8gct_w1R;ptysY^zzW!>fWR4&3x^uXj1?4*RfO5{RNbkB6Rie( zayg-a8yyOuJ$8C^d6ppfo#S94+lrx4=P;8)#z%&Fzc{b|T$IaV^s%fw#03t6x&)Et0!r&ym$M9?MdVlgbP= z74=Q529tolVG+RVtmPAR_Y9k_g^3yMWo@P-%-=I%LV*ie)MxM9QPVrnl&FLK?17ifif|6Bd5&b2CHJsrYrp) z6Zg~}c!Du=m^S|D?;jW#92^=R8A0gAF6J9ddLvq_8Y*uz4ZtYT6N8WGkyngB`zs`W z^WpBAb;r8O;EBiC2;o^l;G33DfV6a{4=s9zrt7EKGBzCYWg0W8B2+?rSMg ziZOds{bX>1?6o1Ye*73Sc)`@B4^y{$$Ekx;3R4Hd2*xWZbP5y4@iWl4!h`J-M=x*Z zi8FWX6eo^>xYhhQHgRU=v`w65hc2SF+2Nc#j#1BXdb|YjIw)l7J*);$>k-UPy!oI! zKb!j_d)4iPT=KBf|1n?tn}{T%^@Gm_^+!HLFdP4X;U;k-ZVtlpGp4!aMvNBe1_Zx~ znIq$+73)`+^605#cz@o+zr#wMleNj`M|@XWa<0SsnRk%%U!Iv+bhJp8$M0T ztBHu2yM+~E27Q-_nZD}E7o=}Zz!Zr&g6G7H=s8S5Am+zC3}U9*>rBihuO}yF(h;>D zhT55!BhXIFL_>|3$qrRwCV^LpnFLN^hJMq(%t$8U#+D!1N~?`v+;*nu2#-^=twbBH zm`UBPGQw(KdSA3op611Xk&Swr`=e8ld@pn^0-zC%dE#liQJ|3dBjM9V3=H9h^#kM% z*xRtokQ9}Uv)~bze+}5gn+bU3eEM2~`!<)9heYoO7r=PJd~_l4Efo?6@L4mg2RX`7 z2Z`9jqpk3S6h7J-JxPcqt=QlyTZpi4#G}ooW26)jlb0f5WUDD62KIFfgpp;+9XjYq z;$#yMWN5HJ*@&$z5-f(G4hzDbY0Yff2WYh9kI0>OR|QqFZ8ryJOWA)Ge`_H%%4M4t zQn7p{_ybr8yD7pgU)mU=yJATz_IYAj2tsxPPYp%MGL~4bFD;^r2DXxnwqlb&drza+ zHkW)VLC}uKG;zyPSC^I7+*orOdtnBgDMY(ej!{=oEQA&}cV6+8n6PM6hPfj3?GdPH zIey=hFmFR$=FQ0b|1bXsyI!6dzlIem7C8`w)9ueLl{ob$BT}7lt$Qf4b=K_J2yWen z;jR1cKZ*#~rzytukVD1}efra%@r-9Y^RUAXd)Bk(KIgfIAAZF1p7;D0j5nLb3t#x6 z7yrpiUNY~cFMZj|U-8OUzVcPCdiDI*{ON07_xd-yalwK&z3EMV_Gf?g<~P6j&)@PF zfAN=px$v!j_1Ay%H-GcDfA{x)zvyjm`-ivx<2$+wmAfmP@=p{hqtVGU1`jE$U(h85 zic%HvT=!G3OWHc)dtbHS8U~BM6XKmhreYB-ZN&~;iM-RkyR7&L{6c#nK`AW8C!m3M zpn=|Eo1LNLy6zvn#mkBx;LANBq_LugvY>hS5Bzr1vgc_#nWv)u!9Onc;8OmUHM_}N z<8uFPeACF;mlRzC{{-0$&f~X<*J^>GCnWeiCBPyycWBREwp4FGuSj$3;eh>Z7~S^; z^MJw3-Cy8_@q~(kA8P)#2cZ3R_;?KC3v!bio>U*BS|{K~T9S7{@RDsfWt)s9asf}ls|}f!_rpk`!|J( z4ADY59jk~-e^l{jthhiGaeS#bn6(Z-(Hroc9eXn2`eT0gdVJSg9MJ-v0k8BC7I2mV zmr+Hp!~1@Mg|kp=6bikYV1Pfmw$N^b@(GX<+!_t=vGLDtc2rR0$*R`*Z0gPT+?xS4 zK#FJy^Fk7Iq~68unWBT!jfoksi5YNeW?XNtQaJLv=S^#VoBtvYhh`=m+tM8DlYG>)p>^M1QVA1xCI-HoBL{Y4z2c6 zgYCPuI)_yIsm=5KwK@k?>(owW|FBl)fJtHdQLWCLYCkpDewym|>1rHp1+GhYEB2~b zOTS2UoNo73o${7PwazbVb@oObU0c)F7^c4IY4k}{FV8?EjOLcu83yePyR5eDp2d8R z%nuOOL(L_8KuokrYuLl~&96vk40@Ja3@HrO^JAWK1EVC-*VM-d9k!~g_>mnRg~Whh zm&CY)rHm6E;ITCm*sEEF1-X(a^tn0w9u{KlO#uyxKb?>CE8)hq=DYat1RFJkwH?1a z+X~rokZ1Uf%MZn;^rE-%is|^oE9WeZmWa;Waz_C-mQm!Vg>+2Im%Gp1taaU(EVz~Cgt2V zXOwJGnV#VkhW1Qgl$t@RnStoD#gK37^ezR-z+`Q#C>kqg^<&qOwku9ZQ}Z!E!}kyv zCji6t{xdE*8apseTA^^JFrs<`lt@lp0^+mUM^jeg4hmQr@DcMDm(Lc@Yg-vdqgU&4 zndE}Kbz_ra*7ac&v#VNhtH}Y&0ii8 zPIH(P2Et`(1RB!ZzksU1Hxen_?vU5fMGT*@W(8--NMKJSoxHM7Vyk|19UsKelofnFWG{T8C^SHR7 z*seN9`_|B{#g8 zTcZeoYZTj^kZYp|P*q0}3@VNyjEJK!Jj<8oqe}+CWoZ;E%7GZbEk{AsFbBhssx-PT zQLY(!9SIzWAQP0>Y4VS?vhV(xiLjqf1UMG}i3T1z;DI;Nx>qDZpDX7)&t#1UtOIoq1i)`zJl1_VGmld-` zw|tBTqD0Z915wTz@jz74<+8ow(K(2NTHi}k-@mn3ZnJ4N0oieS=IVDmM<2AJrU;6O z--$m0k#Ox{PIxY3X!dCNxDfw9o8xqQROB2=*plNgf@;JNBG@35h|I+J%M;*!;*Z@( zsYZAlHj$N$f#in32jl7^>71i~RCybOXx@2h>B8y#*RrJIV_cQ`b=NkGqCVhYCfhcB zjvooo6THG@%^CkbtEbu1=s_gm-aRo|8YqZ}1`7Ba0DDZU5zqa+?iD0sYu0{nw9$ot)b9V_`raV6p-DO%4kXvR938 zrc$=GJ^DLp#`i_z{{12i28RK;P_;;BE3)%m5e=pD9vcdt_lj>OI7!y&bR;3xDVAWh zvE@jEI!P9Yu(PVJh&`QpHooeXm&=Sio`mk<6A3?_ICwRTat=u=Y z^9bM&W)Z^DWgP!Na?fi&ogll?cy=Mg#|$DCU5uM_oo{ZQc@(nNG1@~gxCf_%1(C3A zYrKxwHoiKA3EV<(O1rrfY)^613~>`JCWaqMhj(S92P%xjWkGX$V5F#W>iT_t zVT;;z*h0-R1VPeaRy5g3$~foLK_v-P(n27}P9iiqTOL8Lk- zIp-K-B?4X2iY-nkQkSOh9z&5zEBJR#q~7y5%;2<#>3dE>cdEZY7q1F*VJj?4EWvpjSv{>xN#gl!@?uIMZu6>Qj8_1Xwtu{sUQyi3cS8_HhI zhd+BDxTYEQ(a-%H>_5VL27p7NA6gOn3RpO@V@Re<5M0DEz^DSo!mu_YM}RaHpsgld z?t2TcwHd+`iX$4fCB_31%$A%|)&LNtI717pkDwt89zYB_#u)X3t!Q9uunGk3Lje#& z1_Wv|2m?T<0Btp&imJ@a%4PN}`1g)z3~K7=$7fPjBv(t=01&(`V2JhYCIJ93FgUDBi<`c7>$XipM;B{)8Pd^*uGaJ-pWH}zfedZ~#nnF> zIu>uI75DbEP%xrjZC_1C%hQT0&d)(i1C8lLzRJJLR~!?YV)xUE>!<0Pk>dL~Aj;6% z0PEz%F4~I!6!-R(u9=IjdBxTXP9?|XD~`VGnK>?!0L;C-IAWkNf@)b~n*6%YL?!G7 z;pM$Ojzau8w$aB01EZ+4NsqCGml&lVOJh~U$``P3V5kd!EMlzu09_hXJw&nPtQ=w( zF=zMKqd}X(C#FPM_~MSre6-a1!P@s;K!+OU3(Ui@z(|&@=!?muoUU(0dE_22o*D_Z zdrZy17%wf%q7y@0iQd5KsXGKUD2F_wytG~mwm`$qZ9Es{TCb%+Ib5dh6I>sv!DT`E zutw#P5am_7hvYZ{J#Z(8rapana5(!WHrze{^|l-CW16#+sspwN@v9RnIJU%1>vmrx z<{2=yxmWc7tSSOp4*-8g24QH8g>7z;$897k#`1^VFv`%5+rjcE28$>(%WPTh!wvQk zUq!c!J%roJ=`RQ^Y~n*Oqc-!w8t7;_flNX@ST(gPzCN9%qZ|-XIgGreb{P4NRIhdz z`3}07yG5;Q#pJGLnrr6y1TMN5ZObZJl{DZH5aOVjh`7Y2yJfHDwmxSBGe0vO%A)4e z7Tn}#tyZ;Se||hgaq3#6$T5weqj1=&y4pD@)pauubjk$|eQW$zhg!vfK4G>SXVcSt zzkcz^gy_u2C;tmOXfN17a{18D%q=iK6!%9kfp&Y+lV(!ncbS4!l__BU#?qEpO1%en ze^5|#6o5s=D0B)T^L_)C2SZPG*BJm7GGvNJDvss1^K~GR#mcQn6k*|BY;QjvcUA3p z-11h0&!_B3(~7I^KZm<)!Z=TjS+*_eSEdQ~w_@rUMK82K8`n9*G&^iVf#ix!XPPrK z$+Qy^2)@9x#9v@IZm9E*6WnybShxK@g6)$9?E2_Hi_^gO%< zBSoLv9b9%!BWZD&&lTbbR`h*Xln&3DrZOztu*BCw_F#O%{WW+USbsK|WC$#08{Y@w zt>Okbd2m_uui!dSjt+dH=^xa;Luj4PGqC0*zj5Z7!gD4*N7J&zc(zEvz<56|9@=NA zE%d;3Eto@%X|}nJ^~fST;Wno?;-3+wF3lQ9i343GVjA};AYQ{RDE+Eo9m9=f-;s%$ zWPQT-yNpdtyMGevBnGAdXHNq>(#ePRywR9p5yk?ZXl0Ng_;&&C%Y?MTi1E*nKq-e{ zF@^5J7Ig;~HW(_bZP}28vY<08Ao1XMi~Wm=F$tT*AbEK4Aq zZy?MO2&hi=!L4idH)=#z2FyDH88bHllp`%e`X;zB5dojw&vxJjKTsNzEJ^Da?>FU! zl~n;to4sI>%gQZ$4nq2Fe|c5-dMgU**2^}Q@{lEa_%0tj1Nqv#(;|(iSqKcGm%FK` zClc+)CrtTd?K8n-h4^-uAH?AtjGLA`wEwelzpYIgFR+d}vR!xf6PfgQaAUI`w49b<{W+O>T=Hvvu&vX0rlMV^BxKz56owT^mG`5g9(=r*> zOzVQqE^G)9{Td$5ULB|?B1%3w zz50s7$i$Z4@Fdr$!$<{e+krZ?HHQo5G;CZeuB*0X z`!JBW+0z{T%{0;3TG$NnaYE}DSC$5;ae;9gGY`d#_H`?Zfh2KGw$e7i*Wg0*jYP71 zAT0csFTK>JV-$$w){OX)4^)oScRj!~sEb9^jtsMeCWIKlK$TB~11;GrRU7ABwL#$U zB_Igqp+*q^7rr_IPOMb`w{v6r12Ae~rp5-Ge5B3=)8LMFMl;83I|<0JVu^M!u3HV5 z_AqjW?g@7;TFLvcyaNMjD+vl;orJC~>JR%?y6(yF1bkrgCG4(g2al`DKHI_T4==dz zwH-X}?%j(WJRT(HFWnpE8-QHJqtJHna4eQPc=las2aj8J`iy&c+=rIL+N1+SK^{uS z7&#>37$b^t?Rhmr@P!FG?>0I#GbUO4#Li~QDO6vO@JxJ(+#~&Y7x0#W9Fx3xPpt=w zU$!3XV8`Z67v6$i=CH3`oQlNI=JamDjudX!;&MVSV4mR>L=glY{|8acfq!nX1SF5QVo& zuo7ii-0#)O%C%WsL_p3&lV55q_+O;PxHn(kIdt?=RAEKh`oj4eeFxKDP;B{{WGYI{ zfw9{oOi*$KDrq5L!ootpFkeMCV7dS*c+5931$Z!`v`I>g?ijKHeG5BXfPGj9iYj8W zv_c6%@y*WCBtGQW?jL%LsCWeWxjh!Y>SDhl3830~V>|D+pW5-0e0<0LVwJI9PmgUQ zR+i4YVF$5%T`5FQm!^H;F)JH5GJ5SD6RI{s9|BJac;Q19v`-rAGVbrXn_R%+i5EVSr^j6ma9x< zpck@D_{g>u_6A*r9$t%$?# z4es58LmhU*AIw@tv$PxAz*IsA@rLW&8P3GLrpGNUp0AY)gU*=b0;*n{v$Rub#PVc{ zS-jl)GRqYP6^-ToW3cX#-6&fC1A=SOqHYGg6pR-dPPkBLG(rM7ng6<8Z%Wd0*2Dyi~ea@jL zR+^1xc^@AgwstCt=!ii(bXs|`LeXnnS2X(C=`|p4GJ5Ux0WrKz;ku9EfC7w@h`;XK zW?|W%p@(buQQw{2F$wj`?!vJ{nZ59t$XxjBXV0BG_c=&kcm$FcB70%+ z!WZ$6@)yo~>C0aB@|V8?DGZsx5Gf3i!w^Xf!A7PzksYkIn|xkHc`m@$&Gl(Fd1FTP z$tc@5k{=lW=lb&i33}?!H`tqv7I_@xE!M?cD6@t##9*}oA2l>+F2C37=odcdH5(98 zL6;8|#_P)McvZ9(SJ`j?Q}_O<;MnNlzE@>r{j32C`w(;_Zwg&OuYorOo0HVo_z!Lg zxWws7c{M)|>Id4B+T~Sv3yT|z?WoFai!T_w$() zTq7K&*JUbOi!v2U!ngs2)!?B$heSh%^R^C{<-ds9)!LE=O^abHx_J?wL@84=?E#Qq z0+4+qSe=g?%e(r3)b#*dvXz?+f6`?>UWCz-#3-p>gmy4fQ69grOP!`LDlrb=dZsr~ z5BrQ1qqHO}%`1Q=nlb%=UsL~r)H=PiFX+1?#?@PL_h;bS=d?kAaBEQF7Z?coY@c}U zcfwaW*XA9O10vt~_;3*a4K*1l`z&ruVEl4Gl6tZ3=9ar%z=TyTi-L1_3m*d6h=yGr zcckH+$PR<>IgBV}pGRzL;W(c`{4sSU?c3pYes~_13{l-Y{Ai6K*ji)=I6xvp!1oauV!jD71oDd^78pM;=P1~t<@>^m7+^n) z*!MQ}P)zT^7=n)s+w9ICgT>*EL6JIRpbzRs1_v<1A?QjG=Levn5RtD#A3RBsq+E%5 za3*4~F(4LMP8Q*o1dlhE`x2BBxJ2Rf#wAX8`=vgV>k;dw&VB5Y%8|1a%q2$oCMSvB zdxjJs06p-^R+iI2Ut$)O%_3-oYXWWo0+a$$fifiCd6;#GJ7*3WnjmjPI0de_kG<`g z05laa*!&jD_dxmYKD!t??iMahr9Uv7i@_!H-XQ8$pS3EI#jz-DVv7|dT1Te!XJNgi_=de;s|yF~=TzTq|p3i}7~}{w~GeW%#>1TYFK`{t?;q=29-_`c)Tr5&}2j|l4I`Hdz$UB_qOLJAUXAkNN< zPgxR*X?O=9^lq(1lt2;5JB4Em8P-d%?rdvCn`dkjrXpHpFwaWWqz3^Z-qe9D_zJYT z>2H3B%)2}zld`ZkzPOezmSG@yafboHypt%{Q6RWTqdRgbs+M};(y6bh+}DeVE`mqh z4DcSHHdb&VnRLspOM()>G3{bU9uW=bX{*Gca{Pe7e~>EU`Sy27;RZSpMS+jlbgXodGI zH2e?f+Kkpiv}eGj;M)wGRdfNYo9o^I%7*}C+Eyk7#}$gU6a&p@$IKUBt2$Az%wqVm zL6I&eASKGt235cD#zb)*xbpYH%BbjF$mDwQ?+kj-Y=_9HxCDX`WLIiOujK>-3}dRr zA%&Qtjsx7O{4PeVFlIA4m~Tv|aYN*1ZSS+DZ_bNytZ3EuSxx*GCEDG(D?vXN?B{tSL2D{u06%UbkwNqRVb5O-w3JB zH7H@i7LxBnVGg+i#UM}f*nESays`}xdSUwP(vg=t6^z^DZ+Bg>5MP+3uO-0CG`SU9 z;t{Ah+=76}ey+cLHnn1y$I$|KxmAYR^_;G+pwmuA$A_Eub5t)T@UY$)BSMRQU6q7` z|A?BdYUO{oM#5|^k}$lBQL13^#prnji)?oi9=8P-e7f>9Zo&G5U#){{g?ewOUGHgi z2;U&ewHu06qbt6F0x?6$Iz+ye!{QD(Gn(6B&|D9%rTf_)@VnS=J$ER zv6SBilJxUX6CrQD<4E^~Y`F?K>pq&pQy*Fl!)u7PJM{6KR9+(If57675j)6n_1T1eO_f1I-gy{&Y?A z&Ld{y-V@pMp#;!1eh{D1_(9b?K=mKiku7>PwLoMfJnt@`O>oFg25&$v%o49%LP+7f zOT1QbVV=eh4#WrIwGjkIE%e~tklHcJ% z7T`=@i5*JS5NH9hCYHOLAJT!?k>zwp2YiTdQJ5A{uZ`5tds!X+!_NK4RhWm$32X*J zM3*vs6*e=;thgf0hMN^SRX1UsD{FP=;A=Nus+Qd~wK|HPkh1##herQeV3!cWD|S&! zxF19e!6PY;(i+R`r%w|WMap)upKjm>bd~klD(jx2Agml|>PH?{ueU@5n6MUFEHIy2Pz9uYug26jZb3mK#zYj+f?~+5?=N9@2@=Ti2Vryr#sj>^%OHTn3VnW- zO$~Gd6$Vtlt0kZ%!NLqFaS=m4sM6=>(&qbOgQnVMUXwWr^h15knz~FCHh{w zQgU&-9d0XTq~ISU<-&&hUX5AUY~Ke$$sIy9XVAqJXON=G!bK^;m_gPXOe;5~u}LB$ z5s%!;W=I**0cnezv1dH942q2Lym>KvbWEFtq*;mp!C5EhZW=zw>`>%ydY6PPtL^kz8Z{Q5SY}$3a;|cS<=6+@V~St4c9=Ga9kjmopV&D9$!SBM8_3%FA!>-9 zgco9j<~*}aFcePM()5rQH4?rsIrB5B6ttkF6`%_lhJ%)>O3ADSJ((4^tQGdfXg>tu zDVY^w>v5D11%49;7Z{v(P!U^+P$F?bgvD&H5hiY|_n0)Zj5R-82&*|YGKcQO9))SBODM=ytr%ROW z`ieZ<2cI?{2zh3?4PH$-pSbf;VxQ1pS&6q{ zZAYAx7eQ5XV{L-R@bSb7KDePk;m6^bz1IaFW-G4a@)6&TJ1W-GvFonc2RbFMZ6_lc zO58rc$)GCv?1N&;xGMQDK$GHaBJyEyEe%GI&piAC@>#@xc9487tfC7Wzis5RH#%aV zY*%#61NjgdN>WcxfNvL(jHZe*uNNchgkwKb*b&DXbr1U^IaGa4m!>hf$gb}aSL>{= z)k)&_j$L4-KI}{YPjM?08M|?XS>-STaOV4tGwa)qS5zdcQUR>B5X@rRZ;*Gapyn#& zYJ%Cx?W|r*2doBV^$A=^L0Gw*fLVt9qvDfiGyh4kWt*~@(E)XL_(_Ra(p-@f!KcM< zPY-ER!0$zM3B0Tohj6uJg12Z37XmV-Momsk)JYJB>>~U|6SX+^<*B<()}8UbccJdg z1e28SHl~mKxICuEI}xW2Wdlb*&|nRa6$y|V3=kM!AXc;TDRiO{sh!=f=zZ_|%b?h~ zxFq_IPu<*X-B>0zfOYDIw*$u&mw6xTbh* zh22YFo6q6AC=ebA1n74DOTC_+dUbSDhC{pYe@9~4aRC@iFsWZ3x>j<|3XE8#&|roN z33^h9cC#@&subgs)Zdw@KOZIh5mO%Jn#w3cngWv5)_3ny; zKqio>BIh=Z)t78E-oybd&Md|UGp|F6!?meJ&$7sRVIE6Y!9Yb5$@5Fu3Cq&h5KDtY z=PfvjRoRRmmM@60Nw;Qb=P6;}cFJ~{fiu|rDljpv0shwa#RC%lL{QOska|ErRV_>x za&64c_UWP3s~^oCtjKz%HM42Uxtf^lvWa}W`(LaaklrS^R+2`uH0Ou|q6yk%wQyBM zr|phUn_I(bq1d#2SEqm>&_jq)ruebni3*prVpD!A1@nr^@D;BW8=06>)rw7}pP$C1 zc!%XZoMv?nqY{~@nq$l>XU4B<7OW@SQk@vpOTd3Ip-+7yjx1UUZ2 z)dDB3*j1}yGMHJq=xY?kj2EZggM`8VJE!}MgLFbPjRxenKp_mwwdum712L~oi1Ic} z8Ce@lTq&Juus2GSOmZ6&Y00%>KN}_bme^n>4f+U#!TIeN1Ybb+h;GNs9vl+8$fLr> z2|Y->L%PkAYfzgGNl>>Ze&aB@q}w#W$I@_W={D*9p(9sgsN4cGuYC-oP6gO%$M<0j zquzKKrukmR6A}6YG;38!RD^V!lnt=sOGvdPiO>b&Fnf;v6f^cgD&y@q9&d+lp~E*$ zPlv%rjcVNBG(*y4eq7I0%Sa#y{z&J507u1;@UIM&7HlcuA6=J20b_I9Ark%Dtj{$m zrdgj0K4CSui^%bH>13P$iDgzjNJG-=?Iy;Ga}q_At@^SS_1{TIoL8%ptonB?gcyAE zGkxacfB5?c4D5UiKnZWlgBDIYST~JSkH{kkch1u+2KP`qEvVpI92B&$TLj&{^kpx{ z@j#sqd<{+qzTRSO8EX5N2)0F}E#hqde$m?yV*3sR*#0xaYeRG`V`~{#%a~e5)H0s- z`0Rvib#`KQQg(87O136DH9IXkJv$>iGdn9gJ6oHblbxHrD?2YcKf54%ceXCOFndpS zQFd{5Np@*=S++iVZ+3b1zU+!@L-zjc%IvD_>g<~A+U&aQ`s@SQ2eXaYhq4c6AIWaW zZp=QK-IQ(0K9=2_-I9GgyEXenc3ZYN`(*a1?9clPD%E7^Z%U(LRjeLed|wl(`^_O0xm?B49#*>|%0vTfOSv;WDym))OzKl?%U z!)$x@qwL4oPqLq8Kg)ie{UUoH`(^g4?AO_EvIn!@W)Eepd~v=cUz#t=m**?;mHDdt z`22)?b$()gQhsuNO1>sPH9svsJwGEqGe0XoJ71fhlb@TvD?cwkKffS>e zQGRiLNq%X5S-w7hZ+?0HzWj=OL;n8!%KWPQYW=+?zZQS5!{6)m_XGI{@(<$g#{5J1 zhx3o%?+y8l`1{fPrhHTWvHa%zmi*)St@$VN+w#r%C-YC`pU!X3@5n!se>UHee=h%g zerJAH{)POD`Io58x|nR&RZO-o^V@I-D|L)-n}+-d^ggh?KJ6LNOK*Potr=c?F_+fB z5~IOwA|3*gAwIVeGMqg_#u5Y1zQAt>ii1@^FaBLta3BMpnV z6AHT;+{s}cgwLT6Zn!}?IX?@)@J?|9-^uY71q9JfMBU4h&#*)eHP{Tk#*<1amc1t| zdufqYJ+UXXBBspqcn1*`T(PFt{UAxhJg;*(dY(}SL~sooDiIHK86aOzY<=3sGaSdm zovBZS@zAroxip?{5qcD)@oZ(uZC%In=_||Qsk#@=sE+3ok7PWTay%cm@$}nxxawq9 zfLmA^Cgtk{`R4KB}2KVIK+s z%|!(A1{U@e0|`j_^FPAU0OVH)(ueh(Q_kHi`A}%C$AM(UjiE3B$>I-&;s7KIKM)Fg zi{}b*7G56;2_%Qk!s|j|zd?R6A-|S|*iK836RK-i8X*57ORm;;4*6XyxhgalAZOu~ zp)m7~S@`}?NVoyaCG2=ZKCQ`@SCATug9W8O6QGQn!X^Y*`aU(`*5@58xtt~308~&S z=MpV{fN$Q*H-p7N0h8sAR+SgaHNY+)%{xp_j6tugKN8zT>{rbvm9s< z4DaKY7uc7Eh2rTPvZ4vk_aUEWLuUDv1Ov~)`nyzqhXpErkCBTgAubN12>b*;J=Y3w z+yoZ@D>Ud%es>OwYXq}aAG?rzHz7M)-#JRoXUSPCv6lFFCLhV3S@BIfO~TSMLTO(3 z?W`<4U5!yl15bodfyk$!RGTGt5U@2E65dKozl)Vn07x5yDmjNGr?4c7X$WI1!rG+u z&o3-Xx2m+hy(-;KMwb&xYd`Kc3Q3)t;D+Mks4;|(5y>YKB1SP|&-)ndhr{)XleI5c ziT!OX^DSphf6>bs+{7BIS;O*Dz8lvtJ(Mjio=hs^_)fs=>Z9X*dgIjbEed_+;4u<$ zvvd_pQ6Max$&!`&t}&#N(^;~DC28iC^HDR0GuA(}xliQl|*%B6`L_M9#o)+uF#x#|j!jcwC2Eu_OReLByQS4bozhzPEQ$-K5h*0(-_(9@D z#lH!~eSz#${OeHMU;MI%$i9Wh{uN6#Jp-Jc5gu^FMPiyB1Y-0yaHk!i)AW3tHGat& z(WEhbQNI%Jjw|kdA^e&@(Mgf~o_LAbBe}GaM zOgeIUKP&mP9?x!2Kvp!1X(da($CAj3<`p-KY4wB_)6c6s_&?}tLLQvRVp1sFHXBj0 zn0`gtyf2JMA=lq7jc7UHM?o6VQkLA?bwqbfXfr)n9nn3HWJI6g42FNid?IG9)&9la-c6 zbPrqksI_hfR*LUSs(qa=ZuI7FFcwqdEciO*KxCe&7$%~lfqTeLO68mv|E0SQJ?Sry z1wCNrGr|cv9UyQA=_h(+!B+98EUr@y^Q{Xx4u!u|raf1VTb zAxPQ>Mtd^_U|Ml#Dpm?>Kz#TajX8<-rA@qj=)#L7C8Qe>F1_p3UqQdsp5jE&EMjL&WiXPd^B*mJaz|ispv;6K6bu7UeSiikjPt9VTruq(eAV- zIjP!vQjk3uNJWZrfw_Z*#X#{)u^vv}!96pzsXOH{r^{1!a*sjiuO`8sHMLQnnP8AE z4qVcvlcy?zCl@y}OVj*V*pG^Lc?|8x-Am)EknzK?kApSxGm`PCQ=8DI1_*Yd{rD61 zf6CPQe{$@ArL1K2$aaI{2@zDWC?DxSIPHTvYI7au~F@- z7BUUd#{|DBR&wUrR=E-hu{43RXQbz<4g-mnIn@j%G87RPN+Kks=ghaQ(Th~TQ#xi{7E*dAtE znz+t)QXTK-KUJsXeysJgE!FXUj#3>nraH$R{ZFmVzfaoF{i%+_hO|kQ@l>~4e^9H# z97-8)w$vPT!rS&#$FsB}e^RBN>iqmT)o~oWbJ99LO?7-c|2S!#pV#UzU6P`2<9Mp4 zFdnGYSu|-sze;r+2TEcTy+6cTwV&UlIzFDinY5qZraIowUrjom){-hOES$8TC8>`0 z^B0r$vn@Y@#%@Fj`#DrN&7iD z)p5H1)7p5<>`$_4O{(MlFf)*DnvFDC<)7119UsrDYW*N9De9+w&Pa8a2aEpYaACWdZWh#9fR}v4DvhLPe#O!e;z%*oN ziG==VYjrI7%|rs?bE%HQW@oA=s&i+pj*dr9XfS-CR!7(FOlZ`8Db;bIQonYm%1~cU zb$mQ_wqm03{CBG3{V?~!#D><_QXTJy2azW>xWAF=ct3U~K}!};YbQhNo2icXV@J#; z8qYncj`w4Up(pC++o_KCV@G}`>gT>x$NNc#1J(>a?8Gz(%-$Vw+4z(9_99_&B{mya z?hKjszvI+ko9D zCUVJFF@p>fryv~)Q@F4KugPSE>!-1yd<9nb{g*w3(YW>=_ha()_j9~1w-Mgs9!<)e zzT#u=`S95{VYd(Gmk#Y|_$9pzOU3D9RP05{7SN&22{GRRd4>(vGMO-oF^@)ZR3YsQ z#^)&lSQV^;YY|M&Gg~rG@LNJVC3wME{k%Aw(w^s$X7D8rmGX3}-N-o_&kgEE;UcVp zaYnGv&M@egX9SDG&2sB>F*jP|cGg}FAcDNOv*p=Mc!&mPbUcYl$ZmoNw?4Umo`Bcn zmH`}=XDXawYA?%+!o1KtepAVdf-{V!-x&3F47y^-u#O)40Z0ub3SkT+3NQ{NsL)OW zsW%hX{=`Rc3QXEe>>Qk5%YkxsE7G%TfEq{E>YP)nlQ{B+c^8fZzx9LP@?OkNH`cnL z!dg0mG}BKOB{O|VD}H#L4r%VfbD#0l6fc|K@(G+DWC=K>X#H^ULx?o$FJ`U60bA_t zJ~L;E5AYkA&Jx-1gdtCV;_DyWcEf!<5?E}y=S*uvXL1{utzejuP6KV0&brR*urtwL z?75;bxJ)L5&Yc~%tlYGyg-wU%DlFjC((KT*9TU9~670CWae_P_4}XE`fgZ}XoQKQ0 zh_Ou-Tyt6?isO%BX)AvCA;UG>Oz)Sc_t)5a9J>_uH6yUNe2rB{jZV34-W&8X?f3Mm zuz>J~_b;aD(@ffrc`_A*yc5jWKRhyR`YyZdy6fYR{%pqM@y9ZtG0_kH@WQdD?!gRb z_`@7%`|P{#e*5E3x^N6vj*aoYF2{BgL5fBue{{B_9a?a1VB2aR;nC=y%q?w)#@jE`3c z?mtLJcW2Js8xTwd@njiW=JamQiYM|KVxB~VA1@;@ZOgzomeaLQ3HARKEg->l`9j+@ z<%hN92c|gX*;6j~@9uEu8e$xAy-*xTMGK{jgu&dcwq#UzhYPX5A-zSPa#c}#(d}pV z1L*C5^1Gu6MNkalgMY>cfKTIM$AH}uDE!m3;*`%IO|ib@QIUV@@FnVU$k?Emm1hlH zK<`8ESEitUWCQ`>RnB+@yR^Z}MDsjE5351&GJDV4BfNS$2zYVVqQgsNC%<1AUgT5M z^&guo?v8{lENj%$x%-&cm0`baOjMb!5h_b^Xc_|SOn_$2Z&-C;3 z@hQFN^h-V)EH{*jgLP6T(CbRRuiL2Qju7#hYC&2DkPVudLdhL_Ij0&O} z#7MVM%|P=7sPXy$ye@eI@aNv3 zd4^=YX3p$s5oD!Le{mhl!%bx~e<4907Rdfw0~uzl(-&e*b*$tE?6t`@ITUO~_F*Am zC${uT{yTp)Sbl-r+Of_E zL-x*V`@-+TO240p#&@1#${L7#2^SJ<$%>7^EcGEkquHuHcx`a%FMxH?Ao32ieM7{6W_3RZPtm+SdcZ zafb-B9^fyS!TDW}+mWdWeoV~Dr#T0?>@kfD)z-Zo5Ae;QMosv7fM5TdW%6e7YY7MF zo2V`On!n};2k+boG05Z4ISghE)X?o=hAjhWo5Z2hHi?Tu+9q)&DBHx7)ja~+#H98^ z9Pk0aQdi?d_X|9Ycx;z}ea)q$@KK6wGfw=u{v}F;Z}=kG^i03yrr&qR%#+pZmY!Gx zxr2SOf?w=i2f5#}+s~p5?3WBww)*J#W(bxy(ZPHq&*LU^H7 zPGu|bCwv4LaqF~=x2!!jEZstCj|&q}o@F1e}rE&&n{$k`(Ac0_gTp_G^?_ zS7?O&vWu1do&Mv#ojgMGsqL)w(KHHIKne3kYYK%y!&}zii9CsEUTy_lJ3VVmw=J0u zbMDOh3>6kGNzkPU&@t;od0TlwHP&P?FlAH1vnPEe9dSms(i;;L7zs5T>)?!8bf}K; zM~O>?S5;;=r{>q&G+G)qgJx|e8$kyLRdH#YG(W%a-YITz5@6us-avom#&3rulg;!)& zk2^)oEpHAHxI;=wQ-GK*eyz z${1W6D0xO-Ib>=fLv)eIpD8P_iDg9#MKxR*&t%aoOK`lK+FnE%1v>wkc^;2UjRg^B*qRHstMV9H zt}q472WS-4c6&_i$y;HHklT}&wME`u!v~|)t|8&|mV?t=?S_XPYPZ|D?s+Crg=HH8WW2B4aSjqzTq_74+8Px(a%0DW7mt1$eWIY`VQ7n`nzQ!<`gJ_ZCGH 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 z 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%0Aa3gxK61IPIcexx$` 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 z

    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 -r>a^2NJN@+27rk0OuX*iX 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

    IkQj*{LVdeuFFN!2#7 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

    kDPKZp9 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

    Fx<9I3qEuK%GGD*o2;A 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

    rL0JgO7g0le!2@%lGSR? zI2*b~oi5W~MlV7_`4~Qo7S7I>yp7YYFg?cVc{pssqilCkTr5Hn%Co{yX)L6YgvD7D z%`@|K36mEka*)ZCN%QbR`SwW2+!m(_=qh{ET zW>bEcF9rXd%DtO>wO~K^AIMis?#GP1lQKe#x9Im)_c0n~d>|mq7{C^z{bS}ASwTmE zg^5!L{P>DstLp@k;K0~KL*F7>YcKf&Eff@)I>}2^vLWwH?RSI5EcQ?%MWSp3?WyE3 zbA7%%->Bs2!`g~1zW!wXlZRorj5P2sbGrp>>0xJFUa~V3p0vyC3^0T2SlP`En`xS~ zk#I>T7H=_nrlc*53zRb+L?PD6C*(^N@jFJdh1QJDxSS%8^q@Jv>pL-rBNB5^ zde)K6-cabJd&N^O8K8`vQLNLv-FsOo&uh0J zR!AJBL*46=DKTK&?cgrg9&oAJgG>|ll&DOGTCxH-i!BI~Ke)r$2LPJI z#Q%YO?~pW=4}jd@DFACtK6mAHz8)XGA}T+89fkE@C)I`+VXQ>6+&!kispz+Wk_3Q` zFfyIk)H&jW2G%S|N^m5rm%{9rkE3oi-NX(vWi5bP(tJZfS^ zkod%tC^=Dv9Ib(|z(Z?n;8mQxJ+MV1ypBB)ynb~(VY>7|Mui_tAIyb(lNb5pqacb@P^ndeDVT?7!1Q-2M7K}q#L$$zk1+-PyG@r zd0%ZzU4jYRP&kqz#9$A|F5>XOo*rbl0!y+u1*#ThQP&pHBSVW~F#l9B4bN&?JksV{ z4rngs2?u<9Hjy;&Pnd9dCvxxYgAzBE5vQ2aAlF1`rQhpD-CVr^{XbXw);35Q~+k?9O|DX3$pY3;3yFFqW;Droa#q|G|gzc?bMV@!K% z_Lh=n^VVVaof4=xNtY&bT7}>hETfyXMq2dp1T*fmXhAI$2TyTh31Z2osiwF^mY9V460K%4WhYII( zjNu?e6AWM=N?V;q81+EB`Oq0^2h?jRFKet+_T%4Z85xA&`ovd|~!+(rM53y-H z27gGPj{AT$g~nhhIT+G#0p!4{icAK^bkkQpux!9Y0Vg-H$2js5)rShG9tK;&`cS?a z!8`CWaxg$VviN4-`7*&gGx0fn;1GukJPYQ6*uMDr>w|?3A;>rFK2|c2`u&ZGdov>f z;GvOx&)gf#tO3O5Gg}uI05o7PWvC!hv|^}qrPAM&O1~ph=?1ALNw&>`n^ZL`W@s%Z zgVFtJ#@akmHcwy8D?&At-jFDD`KLkCd#pQTDKZS*&uQy{?rQ=*9_jcPE@=vOPJ35> zHQ4pdB}8O=eS6oy%a>)#F#x7MU*Cx-?-^FFbh#+ZAmW_N;)e(|Tu6i;^GSWP1KnXn zvzoZW=@4Yby|1$a1VcTH&+2rb=ucC+D%Fo2dR_?*qzQDV4M%)^ET zY*GgY0Rm)jq`Ss5E)t^GtFs@Iyz{c`BKCQ6vdNuWStAQ_&QgY5)zJ|C9CdwGVeQ7z zDB=M|yC3@QB3AqB_(M~k6Lf{Q16A*M@St=oN-a;(=%<}_`s2sXIP(d9X5v#k1Rd*A z;EGKt+A~>I)ov`Q+SAGOnWn26S+~vYs5p6B--((2;}~fj7jU>P3Hi6(&(t(5)=(Wd z8Ielx_z&NOj!9^%ssE(|lz0}MIp~VWT&{aVs@qRcil>VB=&s}Bpz$z{5NC!uDf4qE zoZ8jFXK7Dep*A0^6TV!UYP;98<29SO$ zdlIlb1rC|v4h6$t$<<-S4+eO5y;I!YIYhePSmJ=a%qPX1N-?M}Oo~~GmZu86t)9Sj z-lbviszj8>(mlCA6xZ%F0CEu5I#yxoPKcz{0YTXkc)p7d!jIkj0nUIU5WuR|r^XN< zLyH0KT_a@vgSQ8dAFwZ9uJR1~LPdlGuP4g%HK}1UHbdlUTi~`;IKD6s-)mD*?%~5K zUF--es+JRZa`}lDMsE*Z04JOIz6*Rv+3Dvr%=v*j9nSvg?7%voPZP-aS@#j_LS!ar zA{Vf;E@KzW@-t`(Mvo4EC+)9jWUcsAJ@GvB#Naub!DYz~3>OJXrpf9xVTA9xUthN>hALG$9ECCxs-eF`$l$ z2kQ-~vF^coyc$b$%8{txh$Hn~E;{ap4y#36;5%I{2mcG<*l0I*Fh(7c)K5eqG)Fh< zIv792n-bkVap$V51U=BhrNmQ7k8Mxn=UPrS+p}Eld8}US${3Lkyypt97W*Ho7Jz0- zRO~B9Iqtv=dy=WK>_6=WQXQ_NK*87*Zk4Y~>YHCbeT@G?-&FR{yd|~kKh6Bds;;#w zc1Kd+u4x%)77DXY6Ol9m%%o!7njTZJAi;~Jc&;(!;{T_!3-g_?R>U_8V^Di!h8u3& z*jXBckTHUyH+^52?)Z#kx;#L`Ze!vi5_;Nlv z1rs2dg_Kq1wId=;4lut|;S2%5!gjY=ZaYEEOhlDndRQ2C0xZGdVCdGwP`8D-pdQ4w zvUIR5CHFBO$uWOGKMnimXrbk5BDbVy)m@<0>~89udf1w}NpnZ%?IuhKf|+fJ)F+T?5uX5oe~p^ z^3o|Xv4aJ5`X0!$!zVKzNUU&~;cYTKW#*=o++_yIeGcSuL;AMidqsAhh-T{|vO3wB z7Kj}{b}UgrcIM0u;NBQBC_QjN>n2<_E8=86{f)3y4G@(dpP-o}$G!DHM*iL;VJ^(o zKa!g678WarLIYWdg2DkJfHDV#GAMsE73CHd7ej)nd$=sD!`SwZCxX507NhFM%fYn$ z6R9X~yR8_aOX4{9;H}GEwz~BM3>(_&P}!cgy893romBKC(=(>tQ+SCO3*{k`qIoUVaEc~GX|1W!A0%uoM8xc zH7Y{hRW$B#)FGoYW5(HVoN<`VVMdfk5|V%{VQ)5R5KIuFaV738YmhA{V%#H&#yu)( z#*Od)|5u%J?z{KBULef)eZMd72mS7S_nuRys!mm%I#qSxmCR7|MpbVh9J_2PUmIHY zssePiHyiH!IlMlazn(@u^ECHZfiGXLy&6O8!4ToEOojo>niah@{L3_RICZ$6%QM>hW3@gW(!LwdsN8c;9#YAFC>HX#c{tBz zAO2I?z>`ojgh>PR&*DfM{yX5nr#$7LgASsXw&12!osgrB!ofCh)IMMTkVC+uZFshg z9dCp4ZCh-Rp3~4gcYo8=iCXhQIo&zt%q-ck_40 zzVVH3{QJNE`!~JmP5WY=WZW*g$?z1jP+jrhD@ zpATdo%sv!9AI?6KU5C%6?4#Mo+CCr8K9PMApHJ!Y>1?9y^O@}W>;`;p)aRz`W_)hJ zXLEKdKA+8Q!{_$w4t(y+?!sqFb~iqs%RZ0KJ=quVxi|YFK3lUd;q&F}E7@1GuVr74 zpKoN_vTy2hU&hb3vTtYi$Io}N?`GTa`Cj(@><9S#F#A#b{5bnbwgaD^>hrVg=h*}C z^NZ}4*{|@~nf-V6YkYo#&u_Ee;q&|KL3~>ElkizyUxClc`pNjLs;|apP5l&nPOZNK zpVR86<8wy+OnlbX&%)>I`Z@TVTR#t<^XnJjGgiM4pNr}jQ~vtK!J3}x#=*vt>bR88 zH`nyK^1zlSY{aOWX&S_f@XHWYYPgsO9YR&P*33# zK>d7Z0E)k1I}nOY>0Lix9i?(dyI97ux^ zhtiuB}`w`Krz84WCiZff{Oq#rju)Jd0?^CK#U4F z_#+RI^=y)%Ks!*t-C&7kA5W0^99y0+IQ=>H8SWFDRHn?YNtqTXb3K24FpE>_Va_sn zuYaFOe1i#FKF!v1nuTc>QUge|hc?Y_NvLt6{mw=(lWDfzr&-IVS(sJ;Nz)BLc;==TocB)4#A*+l3055YyPE zeFwdvgu@5aZ9#GTiah=EY_R!dV((|E;fKl7+t}PsZIGDXn_OkAC2#LKp8iHcjq~&l z8^KI?8e7j&9jE{&)e(3(@b*LC>2D^uoTqLF*wY-!o{9ZRr4Ft78)1>rsHbS!-^q zq0%pUX%9&hv@W9A6FSH9x{9&aT!n z_mdl-pYV z8&*u>VOe9N!%U)EHfEM?#+Zp0${{kv4m>x-%%aUicEJ=So!VTJzbTBvLVdqvOp*5d zgY~cdb()FJtp-LNi$vSeUY=nPTQvw%8a-TXJV2%KMJSCG{P|vMoZ5&G;VGeK)$m~Sj{wvdXcGTUH%-Iuwm4W^@wF? zp4!~cm9hL&V)<@hS>=MZbis0HbJ}RVfSuj7tI&FG1+91f52CdJw1Tx*UY*w41)OrX z+t6@xN06!H8aXjJx)sH3+5cm*$Sq)ztN8QHso}PXm{ z01>xgc5+4roKr9bLEU-X|DJ>ypOH7Vu}(jMb$wNuojNuEvkYdC8*e&*PpU)E0itbG z6~Tt-fm0(<6;uO5h)m@Sg(Vp^|EIKRG4gCB^GqRfKb|n@1pauHz#T-cfUAmJ0|>eQCUJ>Vo(%9(O5T2K zveS8>af(pl$=-GOfe;asp!XKyZ&Mk)+lk)mfL_Fz*5-a>SD{zu-F|piq4%~5dO!3( zkKX4}u_^5p^r+4K00xIysO8GNyzzeA5a)lHSMMW$QE5|j1aSe;(Lp3{O+$2%tQLY( zG`W+-3@!@5AMhrv!z}qe``nO-OB+kms}IwwPe6W?k6fD`vFUX`>3 z?P3g-lI5Po?Z!lkfWo=FfTL{?2c}X~A-%_+O4?bu7{x z=9#=4Txzqd0(Yd$5;>i3pIab)A1#qz^X@qy{u%so_6&*NeF~q;=FT$WgX0mPPQ9Us z+g&%K&q)+;5xREzyl|}9Aq-z81*!yabjr#u*QZF>FSkX7A3- zffnu2A&xRBGnlcBp0^G6$}hxNs&|r3?{KbQA8}-Ky9Z&_$?YCXyIjF0PEixhDAg`c zIJm!G&X_f&C*GBw_>MiXici3qf!Hf3ITluXsT|!q+TlKSLT;9Ug{)xz!Xl)FTVyCdhH)CnRAOA7@w$7g^TRd=-2C+Oe zG8+}Q3+z4sW^xeGjyxnGtkxMV<0QSl2z?Xii93b~BQGV3ktjRE<9|`4p?~FD1MOQF160Ye~gpO7zFE9)uB{v9OY9~a;kRiN zeoFmogr*`dmREQWrgyv^KToEby07Ic;!?-^dgZjz-f^6~Xj*-pmELolyl`6Yom+YDXuQ{3GPkbdWXkbF!OR?C9lwkCLlZyD z%D-BZEp#65EW({&YTU;gN3l^m3xcM`tPZ9|Kj!v8GBpOIq%P;ns`qWCMn6rBZ}8@G z2b)*$uN|gDG3i3tObrUYF{s{PW$-Yccri4BV|q?N33c2F0(DLUW(ZA=tJ$iZtrXNa z);!CMZfh`=qM1SY3Nu97fbun%8JP3Y57v3HzCK~ymDsb3b6&QP%U6NzN(=yF*Vavr zWwg7sK4Z!fJD14;fVR=(faxKV1BO&LlfztNiTB=*HSD zJb1AAY5uh$1d|X%qjxK1GT-G*Y)#b*DF4K&&<9JwsTg>R(<)3K63ST9!bXA#!)X=N zYUgQnV}(#pDH2Lk$q6N}eOhTAEwy!3YuCFyZcb47w6Y2ayKGwBPSmOxz6nX$KcDB# z{Rf+O@b8nulxr7~GoDs=voX~k*ag#SOTvp!tNBH0?c!-g$G$m^hSAHE_RJR&aIQ~> zIZdW~Z)@efC-J>DonN+tzLMT?ov(_LQ}*@s^q#}G&$M9tX5~GWk!*+2CSB4E-%js1 zj7oW*62|YQ_Z-H@P7B8GSKd=G$0_^!QRO`zi#0Xfc2wSD0p6+K`+4O(RZN}|&Rpn-}~>%do0R0HJrb#yr**TQ}*{@Fupp-1y1(qX|=*4ZJc!ElkG@pRmJRbr^k2y(kJoJJZkB8=|(7gzDJ5e%9Cuo(04RdY*& zJ~K7@-b{nGVE_aTdR=}HV;*6&-0`(g+>3RV@~vO9^&!k_Tn2C#RAba-3G$5)%vdOl z+wAasXE@KRz-d|h3C@PYd0*?H!P&Xriz@vx;8Z;1_<6GTd)J2^TEDvnKjRfRS!JvU z=c66YiBm%87&SGlpi=zs2mT;-2sHT*-avIJGA6Dj$m)MTV3&)a+N zy&sR1WIxJGrY2SGu)BUg@Ti1br(WZ*H};QcMr7MYjc0oid7R({PQ|ao)Nj$OK3w_dh24 zVr46~?!+@2Iz1}}E3KosJQq_GV#hBo{g8{#edStoV!xuASdDU83wIPMAbLt?8| zm;z;3x$<8G_KuX4gwuhF7cCqF7RCG;o(dMwvX&RdDqyG%O2Wz~job4`rtpZUjUJ?o zOcwzN?<}GiLaoai81}&}E*Z8=8jcQdk~nlu*4%khxoGv;guJtj;QyrI89SO@zn&eu zSsg_BOroRDPEDR-gtlEWC#=}fxm|qZi&HIwMs3Tf=y%69ANBfk0fX(20f8YMiH4y^u02>c^>an)#|xmnp#ZEnxCqv}(&JtL?G1zF`fg0o z{!5VzJhiEm4l^NuY^H81ro(Ik4KOPOr9HGOhPN)kd$XCQuP+SGXd%3Uae7oT@y~P# z*#SI@pTrRu2@y_Oi!<62zY0QvFKrFij`YptT51~-RL&u<6I7VLf$t9k5?@Os#?^q5 zRFJNY4#qMa(zyW7V3#R}d}}@p-;crL%4G>wGPxFyyF@HzS0x5`e}d%@F)Le<9swxu zwTmd=QC1bzUQIPM$H`^wPiOoeN_{%hy}E6rkXS{g`*3>PnGTN|r;Gu$m5eObanKeK zr|HHL0~#{y?TtkSgx9&QBb;8@WtsEw1conjUMZ-7Wz1<5?989&=JEAE4Ce6+^ju*z zBu!^b)LGL>pKD%|#AOHlrxKuUhP)!s6o3{_Ieoct7=#6WAn)bR(F#);;M%=%k$MA_ z*h>cUwLdw}4`c{mmBxiL%NXti+HVO0hf19{yl5fL#F|{O+k0JxYfxwqEuq))BFlsS)`_e-KLR*G)3Yrpo-JYCuWR$ z`&@$aWV6^}V?mnV#4fnG2^u6rjxB8y>^1@8k_A0h@itM!8)sU$b}che)-v}bxLnFw z1^O_^5*K|TJ?>nD$4yQ$=cgiNw{lFXUe9rq#jItYbrG|nT|Lwka%^LBdQya9C1OKM z1l(8?&>`W88=I$)D4P`1fc#~zrEWnnXocCg*v$-lQoK-LSNKJ8CR{+yNc;sT$S4G} zOq8!CEPEwM+dOp+0Oh^wmS;O790`yR#h4sya#OjMST<42fSVp_CHQw`R=D}DN~TMYp-{@A*V3sjaF!l zXcTZ9w-xeu3Q>r0z)S4hOMKy_jo~GNzyaA@GVY#S?foL~m1xuO9|K|15Rn z{LGU5ZCpD>_B+6MvcTr7P^wjeQE5}A*qBv(SlhmnYO!CWZe5G*uWo^q*!&%T+*h4(lCW|7eW;UY1zQ~{Pok|piB#d? z;ZLIFCq*};Pa^IXM`q~f_cU>e6ADXkpF~?rlL(VXlPF9cIBIM%O@9)tOknvWdXm5j zlPJ!aFp1)<>M)5=kA8ByXLaiBRI_{dN@4+}cJqd_ki?*~5ap}I7oS0T>4bS>4Mioq zhd1{bY@W%#kB_Z->t)u^+zawG)pIM#SJiVnkFD7rHe`j64J2=)oQ2xk;*zVhtg=;Y zkQ)F$`hhyj*K-qAoHgbN{wd@ufRH@J+=9>4J(pWjO`bN^05r}TUS6ge#A|vysps<( zSk4-I39N_28a&Gxak^OYGRZ>r+ha@`ITdUb5D3r%4{=-8%#|dBHtMO^))Mg`$QW=? zm75a*^)9lfGgBXzUawqS#xESbII>2WuE@wnNoYde{}?;`Blz9sBsv)4`mnZoSV zLxwi&zlKu>*R$c>iN-{=bqP361JdSfdf@8xfM)?sFFxSf^q$9COfNp*eUK`Kb?7uKz)&Yum!hI4gatMhcep?76^NAL#zz^ zSP-I1)$LD|wzwWgnr*2mN`SnKK`m{!JC^w+csSoSUiFnrokp()L`7~!TtdRiR_ygO z+i9@*Yg#5(-T;e(Dr_by9Evt@>0-BjgLwc++-3_v3bw7hPf4BmmKbMzSi0J_22T^! z6pr#8t>*)BOmf=^XRTvt)hmx0PD_xdE&s)LK77hYe!TTV->dyGBJ}B`pa9`1-xklH zz(Ss9#(7|ega4w&SYF;E>+@cgKM?OBCPDY=`FG+y&Hz5wlRq`Q%A*B%t2bXL0NJA$ zenY;!25bk1Df}bpVy7+?WeMtb*lz-z7sEJen7PHTqguiTiA9Dk)A9U-T34F=Laj+B zcM9=vcbzEt@W6|d0UHG35kPB|j3HgeK}UAbp#3=0&VzoqFg59czH*Y8Hf&w9l$sCeZpIcvRj#NFHnYLY zd8%rsqX|s(IMk}~?~#y@4vXuGT_9Io7-;6z_EGH(RY zL=4sM_o<<6Lmq`XfDXYxI3HPC!2`G@nJ){s*#89i$e0QbBOu9mjS(Vx4B~-y08W*P zK}uMl1=eeJI39o~hk%RIlRdZ4pcpX5E{sz#Lyfplh)Qw&>k;hAvJaS6$w9 z^bDSokbOq4JTpmi{r*v4k^cXsLk}=zj^UIks=eKJM|2!jAOE2!KC0qBZr(hEpdbQ; z|NiKSD2v}{3=a=mY5e*7?e}B`qaYFmW${y8{O+8*xx~rzd^KB{&qHh#sEiePPQm~1 z>1EuL0B4R+kh941GsyjLi6zRE#8LP~&be>_=Nwx%IlTt!E@>um^5JNXKduRm0H-8P zzc!V4aw|gbfqi^6Y|fdz>+2jzSmhre10s89KRtS=SA?it>;CM$s2j$YPpqF zrA%ll&IUFWFW6MPU{isMJ2ur@%Hp{pxS^0Ip>(z{@CL*Gnbu>6ha-Pni9L)fIG8jc zu!~cA4;AcFai49E^xL7bjQ&7mKYZ@}I@=O%4g8`WKF=NwR69Tiqy3SaeKh*(m#Yr> zlAzKgCzRAn^81`bEl-a=pksP8d4c3#Y}wIEEjjw=lpIZ_5wQCU?vN;b0KlcgL&FPb z+QLE5$w4%+CF4`D!N@FZr1oQ#Np@y}biX_^j8o8Qe0s1ki%fn88`*cT`6T=qiM;M@ zfhXfFIu_-iBa@?$If*F01NAFe54lT?eqonY(T9ax5NQdJi_!ou#GjD+Or8%u5w5a= zV-btpDH1@hOnCOiZbJY%_sd;w7OKsV1qPbnq@@x0oj^N0?K73sSwiX@T6-bGc6i!7 zOI>N`vRnlDEX*TD?o)fg3o$F-jk@dzUGZ{GxO7j0A*~x>ctV|G zkqQrwFwaIm^Nj0{sJ&p9P~^G_MYuYNo~d0#5zUuFYcH54MQrsz(HEssMP5Yq06BRvm10a= za3D_ys$DfeNDIjaRYq4xcv=VElIZIm0VN=$2X0LdxJN)PgDE5NZ%^;JM__uMgu5#5 zX<_Bc%N$cq&1e^WF1_QYddZ@ULWlyX{LVdCae2s6pzhF4{o>&-%YkR6v5liH;4K*P})Zl=+g> zY+$H#3xUMQ&!OIDd?Yl{~ZWm6Ow(qvI$ zK&W(9qwI>W1#cyLP3p~-F_U%`mH#6@s{gmTGRN1AdqQLV z;T)3)4ftwkKvR88w42Q|J0#le21kOq(3!zv-UDW^zJ8a}ZnyJW%h@ryX|q z)0x7;{FNh*!UXD~F}IX7W)qJF$GiC0CfqVC@Vz!CmS~M0RXAhTot2m9(W2;cHQZpy z2$+CcWaj(HHB9#dqnc<1!hK!G<#TwYYMVWcS;s)2&_B!44}1ozTWe6uzh|pKTeXh# z=Sxl)8BqG(09IT1YzBF775pqb)t_I6a|Ixw@kC$vVWEEbwEckF^p3ML`a@6}UVz_8 z!0896qd0~9BeT$tdZFoSz3hc&p3awIFa6dFe_*`Jti0L_qg-&NFW0WUIigf-^ayW( zO-yGVFa^8VJ$MM7>v7a_-{DZm*B(VuS^R#SfD<*d`myquRMlSGiq!SMD2q!e>UOo2 z0;A}x^EUI3T|6%tOZmP@w^AD8J-<<2(w5ykmn0}I8Is5DV99gWF|sfgn7)aQ^f**5 zN8?4?@>YV@#AWBLgg)91R0432z|-MjJJ`$4vsFs8;W%MV6zyDTK_7ooNSCD%_;Dsr z(Fl^s0{LzlX<77oP&MMe{wD1ND?6YSc@XznXa{j``y!6eg0|{BGQ>7%{#{SDWf%%> zh>vw_-~ME|z{dk#CvSp}(!GMCqcMT}c`d-{Ug<-r67l^2=htj;{v1>?G0x}Oolcd3 z$oaE7*#*4$6gekdJ=61DE3*90udgq&YoC-XO7@O zNa~=$b0nH$o_>O7j>E%4$>@$4$O+G!CZ9yCLm3{r*d8C?v8Uz{9{BBN=e?^Mb5_FD z6NJ#sL>&$LI$dXt0d7ph@I> z9ancZBo16RTXU#tG$-qD%FU>-H#a4xLHH#RP=V^E1eLEjZ4-a8cW$Y?qs4Zcc}MH-N#D7x@{ZQt(Gf?Cm;1S+@{X;$gO7vnlqqvp<(=xfyZp}Gm3OM^?(#dI zue_7i-QU~$e`((X_R33Wuh?oGrvm$iKk5RQy@Fj2ZhP2iz&r?;rvTGf!9It!Ik3xd z@FDm|gXJ)~|2+*B=Jm_kBl26VdrGDXgJGN7!(IpH(zcA^{1)j9?Iv!>*P=XCoMz#I ziW4?@D@-{O7S|r{oEUF;>T{(np)3w|w6Ol?iw)b9aJ`CEQe29|!k`-Bv6l*oCC|0c zIr)%_B$)VX;P1%s4*RDi#61+44G>55CU^ZA3tNUZUmYWi(WyrmC%8{ZaN7#X;%T9; z;tHze)l1>7SKo_yVpDw``riY6a%VySnO18dzOKpW1O||n;)!e$+3NP@Se=?ifr)_x z)!GEr&6$Ll#iN?w!s>s3sA9PUX>8)7)IFm%OWgy?R@i7FDkcZvoCJagGO@|9Ud`)dhl8oX-;G(o zc$v;dgremYhnw&^mY`g2Txwya$vg=Iw6J`@$8=P}b)2zQIbO(P7*iJ)r7qlQv!C$h z9PdtwF|-;v-$%Y|nmt^cdT?9SN)omAz_@neWMd$?&s_8BC3r8Xv}VDup*1v;PyFh_ zLMsJlE*@eZZGp_mLI$^XFc70`x?oV8&3z^|GFIq<*XFQFfL>k!)S_MkplAi;n(nZ# zsI+E#N1-(id)uxX_Eo7nA2wrS^BuQdYNJlWT$i4_#1QmE@y`~zUs|oLlI&!jt-KK% zz+REuCkQ*w!g52>-J)r*3enGnz2@jncJ*`G$jlGq8iW+!RpOrX_5RkIs%QHU8<;_#FeHq}4JCdX&<0a)DA( z8W0LTF*+%Y>r;0wJuPgpjf2OE=4+c_+l_;7OwBq6quGuee6v4Ude7n3(YOy zlv2+J2m<8eTdX8&BG={w%WAXudX-t4p13VN@lFfpVpL$qz7+-dsSHb<%(ocpi}=AJ zWQtftQ!mZh&>gmRR;;2;c`P?zzC#SaEyyV{bb=Xf*yF$#+`;$;2lrK+lS%Lr(=2!8 zh1TC``a%O3sLEWy|FI(cJ%ZoI&|9P97lZHOsQqeb^@G5TFfj_%B5Wkh9!yH0I^VJF zLeDL?nNe%EL+JCc9!K{W{6i5Z1koXe?(wYSgcW6jCX=rl*Jjmq8YPG%{?W9&w+ppn;J>`9CC^V7)F5bq#nzd#t(+SIVop0MV z-yd$#hzcXnKGJ&U1*lW&m^w)dLrZ>IP_R3QoA|aa-0oOguQC$Rr~cJ-5(8@!UVgTh z@M88MgiNry=xS7PPJ^F;;X)1f&}3kt>4hHYNpZn9E0H%m*7c~r- z9omiKE47<%>rkXei>(OBCh<|q)`a3M=;xV*7F-k)>9UuhFLyY7x#{{!w zllwJsy~ND>$(L|?yoCCzQ~z$>TP738GP1i?8AD61{|n^v)G#lZf@4)=ryxvJ<& zkcyY{{RxbF%wUai0b#DOGZ=NgF6n7L6W8#KgGv!dUQn*UjG|Y8l4}F_3*=*jpeKR^ zxheF73mM~WvUUwb2u5Bp#y^@MbyEh`UPn{r&o-g8OL^bjoXhZk%1?KbQqQTpM;V3`{8`>qf@g zJZZPGb<^l#-I#2l`r*+YmPAT7q`9RfQcCk^mFpsO`wLTKzymNnuZn0h9`0pq*sd>7 z2_!vBI0^;?lFnp4DDjL1YH2wPq59*an1JTH=jMkVp&{UQ!_E%==ItfBfiAD+&Z570 zht%0oRP?56DGpjemAZI{RWznH4q}gP9GD9XvI(;znFic&LqBdBa2){C;D^yP*p3^K zhj;J-Qx#9S&?2d$q)*%)DYmz0q7T#<@pEp}dN z>U7g$<|MMF;10^D$A}g86M^&;aLm{n;CZo%s(Lzpr>jVLe3k={OKI~(>3%v{80iKi zFNOw&%LZ;F#nv{trE0;56ON3|dV{;qiiZv;e8_s^ooUdnH_QozK?i!VGZ+<7Z_LNF zg%d^~#f%;G1`_~W?S~n~hsnX6l*79dIIbMvNb0B@*87uH%PYWSRm!&iNq< zo0a&O181DyPyR`q-#@7BGODpQT-mxRVc|mwINyC%e&?j`e5CSDS$%&rJyBHOodnyi zQQs!G|HsvL>~?zU`&&KJTKhvC&y~Rva=$^uE@sP)l6IvL>Sf{c@iWht+hPR!j^Scp zxJPacE6ljv#&IKErivdvC{9Q7~2#>Q7A#ebhX51)o~8wueJIYf6>`JMIbCX+RgwE&vYP z>Km;(i*|+~+-W@vW9x&_mtb7cicfkm**V3kt;U<$_K~jd1NJSL1Y}>pgjh2ZKCFm97V?kt-&Aj?Vp(Mb{=gcuPA0KwfyI6!^&J?WJH)gl>nXJmgdeLlr{_9 z&zg|Eq7@&!z(m*XQ%xO<_X0^5v`?J{BoA=3@jjDDK6Msw>gb-Pjxt@x$9MOcLBk7W zW#yEh*=64oe5WM%JlvB)py(VleS%Pw+x9H+$EoRE=MVFnpil5e;BUzNRM{5Y50zPj z9$<)zc5nTt`hvzw9H3iTpAYxI>h4wD53nvX?&_;-hj(xl0#QG5&EAMseDJ}Z75M;8 zTE$;k?Rjk_HT%MW%t^on8d$lVC=J4i z0d8t13cb)>DB11y6Rd}-XRmwS-S1!-x584>y zxol=g)SW@1LJs8_oc5G<)909#t=Nroj7c@fo&wdmE!lx(PEId7%Wy;mkrHblcjA=U zMw*6f9BjX~NfQfUF<~(dJm|of^^q)+C*xUSCq19*0jH7wG4TqZMuQt6O&r_l2os88 ze~;3x$2-ypFR}^GeXi!luEOdhs`i-{asXdEp@x6Z_T-9CdWf4xmOT;qq{1XCOH9Hw ztJ|VgMtEoN3=jo=k%Y&}R&2~!A;vcpSYfmaC&YK16U;en!UGyY-HC|ow<0xY`o=O^ zjhPD%nx?Fth45wwkCA?)W>Fg8FQfu96(}Ys6evGN`T&ih&M5>ap!={}q#IoJ!F`Me z7eEB%1BiHLR39W^U*58Jr~_%G_u>YhneESDdiLdG_6!e5;wll(yq(YV`!kpxz4>}< zN2qCD5FVUxKg82bd9u?01KL+%Nq}gD+N<{gsCr^RVsM~M0uI|vJb}c%Bo_x(p{4*5 zOd5SF5p2@Wp+XMYWNR`xgAQ3M*JA9@$*RVr4Ey8MITc>HIPr?FU{g%*S$km${NZFK zwTs|zg(>$kn{a8qwdX0hr5zM7ARL?rW9S4)vHBQ9E=WN?9|{_)N$%4a!{dFlmjCASq1` zlzwLR+JFK9&?P7t*aMkt)+K|$n7n5AR+ojb58>BmdIvy1JL-j}9fXjBEhMrzdi#am zAiWQ-Bf|!-kP@I2*$4+M+7vTyS; z9PbRt8IOI2#zp`2RVAbQ;#L$4UWoH)XxL^F|L&N>RpjCIZ_lv+!tHa&M~8zoz(n|c z=NwD`Tt8u02ms#V;3ApmtXCarO$#RzI2gfxB+3w`BrwE6DrBzyzzoLK`{U(*GI&U;D};P zI*!fzHi2aq-2P|o)`6r5!te%5VUbrR47+Ow9Wa%QG6}flD^m8@rNAuhf&A)Kfa@s6 zV>SaMBW5tA^T>d+2tEGDR)d~4<{!`u1v0tjcrt!`@}LH@pRAx8ob@)Lbho@f#=c$C$R$@h)b0Zk$kj0{x#!7mV-1U>wSk|@lArA@#+ zg5g00<=Xz$#zAl?1dyQJ#EamHn7~EuE5_Dfb@4;)_xH&4_F6J6H&#Zey|H#5NWSHs z`6cXpAid|?5{jc~vrWnv{ZM+xF{+^EN#FTMgH z_Vk|fYBGuM?1xD_d&cEuV5ByJk*e5$P*28IhL)%X3Daet;@$x18mz`D&Te;hHe z)Wje{)ZvHe!+*1yJ&+9ClgwdYQU1Ca=lc{~-7w6Z8x)YFvS%3lSI2$w87;FKM5YPo z@C$b%p@ZKB)6I?%WWh6IF|g%4NDy!elA5_<+Y5g%C$QGU?p#TruW7|`xj=`rjty&H z1RT-eTgUSTR3n0XARBwMqOxL>Q1ls9^a8Ap(Ym%zTH*TuliCW-B6&TzD8zPXyQ|3k zch-jTqSV_0W(Hfk=;L@SmN&25uOJ!u6QhqxOm{{a)Q=x4rsKXS>w{>gNby^~QF&Ol zm)VjH5bDtY4U1DexsZf1qhJ)6@WczyR%9ViAbkhHt&@R(B40Mo_GNPqm(8f)OZv~^ zJ{4_Nu>thYEGZu8_( znWKg6oc4vS-Bd2Oo-&6Y7Phmou!SMEk_|NmsKdBA*XC(a9#%3pE=}llonY}n1-V<< zMY}A$QzKIss5F?0K2f>DvRM57I1Xx>=0Q-{-wj~L0 zY-w&SZ^bu!Zt)GwArN*RqU2Q6h}&_@$Hx}NWktvIWhUuuU&Swy32<_1+PzD(jf$>m zc9ZixOc|;cXQBuNl!zlts5EiAHB9xRW3V;|H%0yd% z?XkkcXy{6!K{MM|GCbarVK-dzaIrp!B`D`3{uUNO+J{AHfPT$3tgISyv;rK(+l;;8 zefp2IQmtVg>jexOYhjI%_9+8vX6JP+!C6k5wo5No@7VWiG8Trqf>Q!v9~7304d06( zma&*Zb$)#THpeT{k_$UnHSLsHLV0K2TvCPwRV6OH3=%L(xY;37$nvo^nc2@+?vlW~ zFtL*hOgbw?wsvW&p225afPttMCt^{qxWpz`%}jXwdU$;e9q5=M(O9`Sbu(uE-xzf3 zKGEWCU)wexIj8^%aHXCIM=(LS!52&zc%KPh0C%(<+y!=N;3n`cN#I>*;34OWGrWVK zH@2|N73c>EbC4LD1{C$ZfQqc{I)l-^P%wiu4d|*gAQ#k@paqr__Gq*jCeu6X(mQUjnQ;hR9^WxTKD~2w zddK@Q-?VHTiyXMS z4z1H|Z>hcrZ45-cfu_3Xgt3xNkZBOgpR-gqI&Vmz&;v*>Hg3Q?!%q}Sum|uJc3OC< z7f%U!s;mR@&=`pCER;V6cV6ASNV?72g#~i4aUZ{1tNF>T2zZ+cCtQ=ixw`UZqQS3; z((bXn(?sbdj}%HB@j@a3(P(91>e9UhWn)&CIYg0MOYz#PDJ+L3pR+Ad{53akvqORU zY2rSPaK^YVznO49WB%XBz17JB0YI?n)zQDQL^85@JOrR^7SP;LRMw=kfOCanM_%cX z9>_(yhRu4=Q?#9g!>CJ%ofYe=vh?v59UV?mlhK013^*` z@rxL-4n|af4;FG_RZ06HeTB2s?4}S82P49H*qJXWD}U5;5(`=kAw5?Ruuf_W!1Zd~ zGYHiM4S?kac8J*2K*#J4Dj6KUp*1=ImpYD?-T-ZsvJx%Yb}L#N17rQVrZsm$-Y2IM zGzxeh1%;b2fdfH$TCOp9qpRxuQ0UJiI%Fl8>Mf6WUe^(09TsD;WE_EuWscQl{x%x6 z1x=?#5L@`UX8VQ>sc>!iA(n33mUj=o}Jc;!*=dA zQ!DCti_j>)c1GnjkvExeXQc-!ALqQ~^($O{D zG-m7LFLpjz*24@1{GG~Bn4HiNK{F$C`Lzn6;{z2!|KZ4zPXy+uz<36a|C!uuDTwFC zMTr7|f{ZYgQe_?0?qX#kbnRkA!HW-7tk4<2#U7?-C$aJ<{45{8{oGxw(6^yT8ZzBT zP#G{=3yf-(EIfB{h6uP zD}{-_R}KGYOu+AJ^$3*+I?24>Tq3#Vy`|5>6v)RfE_*#zw&E)urN{hj`t0jSSc2z| zYaK8S1Lo*GZ1m6_)=O6r-9dTFa-(Q5aDMjKj*)!uvpa;?QUsVQ2FiV?-61IV2Eqa- zVo0a_fyh}$L%bK?)pD^hHr`8IbMPx>)n@J3Gp+y^P)jV61kFUD# zM{hqFgcWAx)4`SQC9@GT`mD$;j> zdpN*g%5zOdxVT;7V^+-K!p80jlBJGTuvu0m}u zrPPhn!aV!dO|rvQrgpC}A0#5aY^8wYIJ%4E)1tc+VqinQw{~;5G7gJf$?pyMXOIQb z==F=uyl@X(hpeAQ7GX+gNHDERFjbCP`#KA!@7h{0VHS7)3qCkH@IgxQW`?(Nyi
    ~h7F-$)?cXru?)n-Ctq3M6aS#dWxs}m_y8u5t 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¨zbF0VCLe^I=sX$Up^puz&;jgYv}i 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

    %KsZ|IvP=OvS-~j%M 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 Mq<%iZ`S%1Za;b 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 kO7eomfJ0ZFAmMG2z`M$TYG8aM^S4X#fTe(^#( private = 3; } -// Permissions contains a list of grants and access control rules for +// Permissions contains a list of grants and access control rules for // a Service. message Permissions { repeated DIDNamespace grants = 1; @@ -54,9 +62,7 @@ message Profile { string id = 1; string subject = 2; string controller = 3; - repeated Credential credentials = 4; - repeated VerificationMethod attestations = 5; - Metadata metadata = 6; + Metadata metadata = 4; } // Property defines a Zero-Knowledge accumulator which can be used to @@ -68,17 +74,42 @@ message Property { // PubKey defines a public key for a did message PubKey { - DIDNamespace namespace = 1; - bytes key = 2; - KeyType kind = 3; - string multibase = 5; - map jwks = 6; + KeyRole role = 1; + KeyAlgorithm algorithm = 2; + KeyEncoding encoding = 3; + bytes raw = 4; + string hex = 5; + string multibase = 6; + map jwk = 7; +} + +// Service defines a Decentralized Service on the Sonr Blockchain +message Service { + string id = 1; + string controller = 2; + string origin = 3; + Permissions permissions = 4; + OpenIDConfig openid = 5; + Metadata metadata = 6; +} + +// Token defines a macron token +message Token { + string id = 1; + string controller = 2; + bytes macron = 3; } // VerificationMethod defines a verification method message VerificationMethod { string id = 1; string controller = 2; - PubKey public_key = 3; + DIDNamespace method = 3; + PubKey public_key = 4; + Service service = 7; } +// Witness defines a BLS witness +message Witness { + bytes witness = 1; +} diff --git a/proto/did/v1/query.proto b/proto/did/v1/query.proto index 0716e576c..38038d8ec 100644 --- a/proto/did/v1/query.proto +++ b/proto/did/v1/query.proto @@ -1,47 +1,52 @@ syntax = "proto3"; package did.v1; -import "google/api/annotations.proto"; import "did/v1/genesis.proto"; import "did/v1/models.proto"; +import "google/api/annotations.proto"; -option go_package = "github.com/onsonr/hway/x/did/types"; +option go_package = "github.com/onsonr/sonr/x/did/types"; // Query provides defines the gRPC querier service. service Query { - // Params queries all parameters of the module. - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/did/params"; - } + // Params queries all parameters of the module. + rpc Params(QueryRequest) returns (QueryParamsResponse) { + option (google.api.http).get = "/did/params"; + } - // Accounts returns associated wallet accounts with the DID. - rpc Accounts(QueryAccountsRequest) returns (QueryAccountsResponse) { - option (google.api.http).get = "/did/{did}/accounts"; - } + // Accounts returns associated wallet accounts with the DID. + rpc Accounts(QueryRequest) returns (QueryAccountsResponse) { + option (google.api.http).get = "/did/{did}/accounts"; + } - // Credentials returns associated credentials with the DID and Service Origin. - rpc Credentials(QueryCredentialsRequest) returns (QueryCredentialsResponse) { - option (google.api.http).get = "/did/{did}/{origin}/credentials"; - } + // Credentials returns associated credentials with the DID and Service Origin. + rpc Credentials(QueryRequest) returns (QueryCredentialsResponse) { + option (google.api.http).get = "/service/{origin}/{subject}/credentials"; + } - // Identities returns associated identity with the DID. - rpc Identities(QueryIdentitiesRequest) returns (QueryIdentitiesResponse) { - option (google.api.http).get = "/did/{did}/identities"; - } + // Resolve queries the DID document by its id. + rpc Resolve(QueryRequest) returns (QueryResolveResponse) { + option (google.api.http).get = "/did/{did}"; + } - // Resolve queries the DID document by its id. - rpc Resolve(QueryResolveRequest) returns (QueryResolveResponse) { - option (google.api.http).get = "/did/resolve/{did}"; - } + // Service returns associated ServiceInfo for a given Origin + rpc Service(QueryRequest) returns (QueryServiceResponse) { + option (google.api.http).get = "/service/{origin}"; + } - // Service returns associated ServiceInfo for a given Origin - rpc Service(QueryServiceRequest) returns (QueryServiceResponse) { - option (google.api.http).get = "/did/service/{origin}"; - } + // Token returns the current authentication token for the client. + rpc Token(QueryRequest) returns (QueryTokenResponse) { + option (google.api.http).post = "/token"; + } } -// QueryParamsRequest is the request type for the Query/Params RPC method. -message QueryParamsRequest {} +// Queryequest is the request type for the Query/Params RPC method. +message QueryRequest { + string did = 1; + string origin = 2; + string subject = 3; + repeated Credential credentials = 4; +} // QueryParamsResponse is the response type for the Query/Params RPC method. message QueryParamsResponse { @@ -49,57 +54,34 @@ message QueryParamsResponse { Params params = 1; } -// QueryAccountsRequest is the request type for the Query/Exists RPC method. -message QueryAccountsRequest { - string did = 1; -} - // QueryAccountsResponse is the response type for the Query/Exists RPC method. message QueryAccountsResponse { - bool exists = 1; -} - -// QueryCredentialsRequest is the request type for the Query/Exists RPC method. -message QueryCredentialsRequest { - string did = 1; - string origin = 2; + bool exists = 1; } // QueryCredentialsResponse is the response type for the Query/Exists RPC method. message QueryCredentialsResponse { - map credentials = 1; -} - -// QueryIdentitiesRequest is the request type for the Query/Exists RPC method. -message QueryIdentitiesRequest { - string did = 1; -} - -// QueryIdentitiesResponse is the response type for the Query/Exists RPC method. -message QueryIdentitiesResponse { - bool exists = 1; - repeated VerificationMethod verificationMethod = 2; -} - -// QueryResolveRequest is the request type for the Query/Resolve RPC method. -message QueryResolveRequest { - string did = 1; + bool success = 1; + string subject = 2; + string origin = 3; + repeated Credential credentials = 4; + string error = 5; } // QueryResolveResponse is the response type for the Query/Resolve RPC method. message QueryResolveResponse { - // document is the DID document - Document document = 1; -} - -// QueryServiceRequest is the request type for the Query/LoginOptions RPC method. -message QueryServiceRequest { - string origin = 1; + // document is the DID document + Document document = 1; } // QueryLoginOptionsResponse is the response type for the Query/LoginOptions RPC method. message QueryServiceResponse { - // options is the PublicKeyCredentialAttestationOptions - string options = 1; + Service service = 1; } +// QueryTokenResponse is the response type for the Query/LoginOptions RPC method. +message QueryTokenResponse { + bool success = 1; + Token token = 2; + string error = 3; +} diff --git a/proto/did/v1/state.proto b/proto/did/v1/state.proto index 2ab347b73..6a00cb6cb 100644 --- a/proto/did/v1/state.proto +++ b/proto/did/v1/state.proto @@ -2,17 +2,32 @@ syntax = "proto3"; package did.v1; -option go_package = "github.com/onsonr/hway/x/did/types"; - import "cosmos/orm/v1/orm.proto"; import "did/v1/genesis.proto"; import "did/v1/models.proto"; +option go_package = "github.com/onsonr/sonr/x/did/types"; + // Assertion represents strongly created credentials (e.g., Passkeys, SSH, GPG, Native Secure Enclaave) message Assertion { option (cosmos.orm.v1.table) = { - id: 1 + id: 1 primary_key: {fields: "id"} + index: { + id: 1 + fields: "subject,origin" + unique: true + } + index: { + id: 2 + fields: "controller,origin" + unique: true + } + index: { + id: 3 + fields: "controller,credential_label" + unique: true + } }; // The unique identifier of the attestation @@ -27,8 +42,17 @@ message Assertion { // The value of the linked identifier bytes credential_id = 4; + // The display label of the attestation + string credential_label = 5; + + // The origin of the attestation + string origin = 6; + + // The subject of the attestation + string subject = 7; + // Metadata is optional additional information about the assertion - Metadata metadata = 5; + Metadata metadata = 8; } // Attestation represents linked identifiers (e.g., Crypto Accounts, Github, Email, Phone) @@ -36,7 +60,16 @@ message Attestation { option (cosmos.orm.v1.table) = { id: 2 primary_key: {fields: "id"} - index: { id: 1, fields: "subject,origin", unique: true } + index: { + id: 1 + fields: "subject,origin" + unique: true + } + index: { + id: 2 + fields: "controller,origin" + unique: true + } }; // The unique identifier of the attestation @@ -58,12 +91,21 @@ message Attestation { Metadata metadata = 6; } - // Controller represents a Sonr DWN Vault message Controller { option (cosmos.orm.v1.table) = { id: 3 primary_key: {fields: "id"} + index: { + id: 1 + fields: "address" + unique: true + } + index: { + id: 2 + fields: "vault_cid" + unique: true + } }; // The unique identifier of the controller @@ -72,8 +114,11 @@ message Controller { // The DID of the controller string address = 2; + // Aliases of the controller + repeated string aliases = 3; + // PubKey is the verification method - PubKey public_key = 4; + PubKey public_key = 4; // The vault address or identifier string vault_cid = 5; @@ -84,6 +129,20 @@ message Delegation { option (cosmos.orm.v1.table) = { id: 4 primary_key: {fields: "id"} + index: { + id: 1 + fields: "account_address,chain_id" + unique: true + } + index: { + id: 2 + fields: "controller,account_label" + unique: true + } + index: { + id: 3 + fields: "controller,chain_id" + } }; // The unique identifier of the delegation @@ -93,17 +152,36 @@ message Delegation { string controller = 2; // Resolved from module parameters - string chain_info_id = 3; + string chain_index = 3; // The delegation proof or verification method - PubKey public_key = 4; + PubKey public_key = 4; + + // The Account Address + string account_address = 5; + + // The Account label + string account_label = 6; + + // The Chain ID + string chain_id = 7; } -// Service represents a service in a DID Document -message Service { +// ServiceRecord represents a decentralized service in a DID Document +message ServiceRecord { option (cosmos.orm.v1.table) = { id: 5 primary_key: {fields: "id"} + index: { + id: 1 + fields: "origin_uri" + unique: true + } + index: { + id: 2 + fields: "controller,origin_uri" + unique: true + } }; // The ID of the service @@ -113,14 +191,20 @@ message Service { string service_type = 2; // The controller DID of the service - string controller_did = 3; + string controller = 3; // The domain name of the service string origin_uri = 4; + // The description of the service + string description = 5; + // The service endpoint - map service_endpoints = 5; + map service_endpoints = 6; // Scopes is the Authorization Grants of the service - Permissions permissions = 6; + Permissions permissions = 7; + + // Metadata is optional additional information about the service + Metadata metadata = 8; } diff --git a/proto/did/v1/tx.proto b/proto/did/v1/tx.proto index ee65f158a..c69f20c3c 100644 --- a/proto/did/v1/tx.proto +++ b/proto/did/v1/tx.proto @@ -3,34 +3,37 @@ syntax = "proto3"; package did.v1; import "cosmos/msg/v1/msg.proto"; -import "did/v1/models.proto"; -import "did/v1/genesis.proto"; -import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; -option go_package = "github.com/onsonr/hway/x/did/types"; +import "did/v1/constants.proto"; +import "did/v1/genesis.proto"; +import "did/v1/models.proto"; +import "gogoproto/gogo.proto"; + +option go_package = "github.com/onsonr/sonr/x/did/types"; // Msg defines the Msg service. service Msg { - option (cosmos.msg.v1.service) = true; - // UpdateParams defines a governance operation for updating the parameters. - // - // Since: cosmos-sdk 0.47 - rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); + option (cosmos.msg.v1.service) = true; + // UpdateParams defines a governance operation for updating the parameters. + // + // Since: cosmos-sdk 0.47 + rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); - // Authenticate asserts the given controller is the owner of the given address. - rpc Authenticate(MsgAuthenticate) returns (MsgAuthenticateResponse); + // Authorize asserts the given controller is the owner of the given address. + rpc Authorize(MsgAuthorize) returns (MsgAuthorizeResponse); - // ProveWitness is an operation to prove the controller has a valid property using ZK Accumulators. - rpc ProveWitness(MsgProveWitness) returns (MsgProveWitnessResponse); + // AllocateVault assembles a sqlite3 database in a local directory and returns the CID of the database. + // this operation is called by services initiating a controller registration. + rpc AllocateVault(MsgAllocateVault) returns (MsgAllocateVaultResponse); - // SyncVault synchronizes the controller with the Vault Motr DWN WASM Wallet. - rpc SyncVault(MsgSyncVault) returns (MsgSyncVaultResponse); + // SyncVault synchronizes the controller with the Vault Motr DWN WASM Wallet. + rpc SyncVault(MsgSyncVault) returns (MsgSyncVaultResponse); - // RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias. - rpc RegisterController(MsgRegisterController) returns (MsgRegisterControllerResponse); + // RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias. + rpc RegisterController(MsgRegisterController) returns (MsgRegisterControllerResponse); - // RegisterService initializes a Service with a given permission scope and URI. The domain must have a valid TXT record containing the public key. - rpc RegisterService(MsgRegisterService) returns (MsgRegisterServiceResponse); + // RegisterService initializes a Service with a given permission scope and URI. The domain must have a valid TXT record containing the public key. + rpc RegisterService(MsgRegisterService) returns (MsgRegisterServiceResponse); } // MsgUpdateParams is the Msg/UpdateParams request type. @@ -43,9 +46,10 @@ message MsgUpdateParams { string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // params defines the parameters to update. - // - // NOTE: All parameters must be supplied. Params params = 2 [(gogoproto.nullable) = false]; + + // token is the macron token to authenticate the operation. + Token token = 3; } // MsgUpdateParamsResponse defines the response structure for executing a @@ -54,25 +58,28 @@ message MsgUpdateParams { // Since: cosmos-sdk 0.47 message MsgUpdateParamsResponse {} -// MsgAuthenticate is the message type for the Authenticate RPC. -message MsgAuthenticate { - option (cosmos.msg.v1.signer) = "authority"; +// MsgAllocateVault is the message type for the AllocateVault RPC. +message MsgAllocateVault { + option (cosmos.msg.v1.signer) = "authority"; - // authority is the address of the governance account. - string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // authority is the address of the service account. + string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; - // Controller is the address of the controller to authenticate. - string controller = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // subject is a unique human-defined identifier to associate with the vault. + string subject = 2; - // Address is the address to authenticate. - string address = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"]; - - // Origin is the origin of the request in wildcard form. - string origin = 4; + // token is the macron token to authenticate the operation. + Token token = 3; } -// MsgAuthenticateResponse is the response type for the Authenticate RPC. -message MsgAuthenticateResponse {} +// MsgAllocateVaultResponse is the response type for the AllocateVault RPC. +message MsgAllocateVaultResponse { + // CID is the content identifier of the vault. + string cid = 1; + + // ExpiryBlock is the block number at which the vault will expire. + int64 expiry_block = 2; +} // MsgProveWitness is the message type for the ProveWitness RPC. message MsgProveWitness { @@ -86,6 +93,9 @@ message MsgProveWitness { // Witness Value is the bytes of the witness. bytes witness = 3; + + // token is the macron token to authenticate the operation. + Token token = 4; } // MsgProveWitnessResponse is the response type for the ProveWitness RPC. @@ -100,12 +110,9 @@ message MsgSyncVault { // controller is the address of the controller to sync. string controller = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; - - // cid is the IPFS content identifier. - string cid = 2; - // Macroon is the public token to authenticate the operation. - bytes macron = 3; + // Token is the public token to authenticate the operation. + Token token = 3; } // MsgSyncVaultResponse is the response type for the SyncVault RPC. @@ -115,45 +122,90 @@ message MsgSyncVaultResponse { // MsgRegisterController is the message type for the InitializeController RPC. message MsgRegisterController { - option (cosmos.msg.v1.signer) = "authority"; - - // authority is the address of the governance account. - string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; - - // Assertions is the list of assertions to initialize the controller with. - string cid = 2; - - // Keyshares is the list of keyshares to initialize the controller with. - repeated bytes keyshares = 3; - - // Verifications is the list of verifications to initialize the controller with. - repeated bytes verifications = 4; -} - -// MsgRegisterControllerResponse is the response type for the InitializeController RPC. -message MsgRegisterControllerResponse { - // Controller is the address of the initialized controller. - string controller = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; - - // Accounts are a Address Map and Supported coin Denoms for the controller - map accounts = 2; -} - -// MsgRegisterService is the message type for the RegisterService RPC. -message MsgRegisterService { option (cosmos.msg.v1.signer) = "authority"; // authority is the address of the governance account. string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // Assertions is the list of assertions to initialize the controller with. + string cid = 2; + + // Origin is the origin of the request in wildcard form. + string origin = 3; + + // Credential is the list of keyshares to initialize the controller with. + repeated Credential authentication = 4; + + // token is the macron token to authenticate the operation. + Token token = 5; +} + +// MsgRegisterControllerResponse is the response type for the InitializeController RPC. +message MsgRegisterControllerResponse { + // Success returns true if the specified cid is valid and not already encrypted. + bool success = 1; + + // Controller is the address of the initialized controller. + string controller = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // Accounts are a Address Map and Supported coin Denoms for the controller + map accounts = 3; +} + +// MsgAuthorize is the message type for the Authorize RPC. +message MsgAuthorize { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address of the governance account. + string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // Controller is the address of the controller to authenticate. + string controller = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // Address is the address to authenticate. + string address = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // Origin is the origin of the request in wildcard form. + string origin = 4; + + // token is the macron token to authenticate the operation. + Token token = 5; +} + +// MsgAuthorizeResponse is the response type for the Authorize RPC. +message MsgAuthorizeResponse { + bool success = 1; + Token token = 2; +} + +// MsgRegisterService is the message type for the RegisterService RPC. +message MsgRegisterService { + option (cosmos.msg.v1.signer) = "controller"; + + // authority is the address of the governance account. + string controller = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // origin is the origin of the request in wildcard form. string origin_uri = 2; - // PermissionScope is the scope of the service. - repeated PermissionScope scopes = 3; + // Permissions is the scope of the service. + Permissions scopes = 3; + + // Description is the description of the service + string description = 4; + + // service_endpoints is the endpoints of the service + map service_endpoints = 5; + + // Metadata is optional additional information about the service + Metadata metadata = 6; + + // token is the macron token to authenticate the operation. + Token token = 7; } // MsgRegisterServiceResponse is the response type for the RegisterService RPC. message MsgRegisterServiceResponse { bool success = 1; + string did = 2; } diff --git a/proto/oracle/module/v1/module.proto b/proto/oracle/module/v1/module.proto index cbcb8bba3..5b4e261e4 100644 --- a/proto/oracle/module/v1/module.proto +++ b/proto/oracle/module/v1/module.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package onsonr.hway.oracle.module.v1; +package onsonr.sonr.oracle.module.v1; import "cosmos/app/v1alpha1/module.proto"; @@ -8,6 +8,6 @@ import "cosmos/app/v1alpha1/module.proto"; // Learn more: https://docs.cosmos.network/main/building-modules/depinject message Module { option (cosmos.app.v1alpha1.module) = { - go_import : "github.com/onsonr/hway" + go_import : "github.com/onsonr/sonr" }; } diff --git a/proto/oracle/v1/genesis.proto b/proto/oracle/v1/genesis.proto index 435cfa50e..80f75910c 100644 --- a/proto/oracle/v1/genesis.proto +++ b/proto/oracle/v1/genesis.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package oracle.v1; -option go_package = "github.com/onsonr/hway/x/oracle/types"; +option go_package = "github.com/onsonr/sonr/x/oracle/types"; import "gogoproto/gogo.proto"; diff --git a/proto/oracle/v1/query.proto b/proto/oracle/v1/query.proto index e1c61b044..c4a8fecdc 100644 --- a/proto/oracle/v1/query.proto +++ b/proto/oracle/v1/query.proto @@ -2,6 +2,6 @@ syntax = "proto3"; package oracle.v1; -option go_package = "github.com/onsonr/hway/x/oracle/types"; +option go_package = "github.com/onsonr/sonr/x/oracle/types"; -import "gogoproto/gogo.proto"; \ No newline at end of file +import "gogoproto/gogo.proto"; diff --git a/proto/oracle/v1/tx.proto b/proto/oracle/v1/tx.proto index e1c61b044..c4a8fecdc 100644 --- a/proto/oracle/v1/tx.proto +++ b/proto/oracle/v1/tx.proto @@ -2,6 +2,6 @@ syntax = "proto3"; package oracle.v1; -option go_package = "github.com/onsonr/hway/x/oracle/types"; +option go_package = "github.com/onsonr/sonr/x/oracle/types"; -import "gogoproto/gogo.proto"; \ No newline at end of file +import "gogoproto/gogo.proto"; diff --git a/scripts/protocgen.sh b/scripts/protocgen.sh index bb57f7139..aeac42056 100644 --- a/scripts/protocgen.sh +++ b/scripts/protocgen.sh @@ -2,7 +2,7 @@ set -e -GO_MOD_PACKAGE="github.com/onsonr/hway" +GO_MOD_PACKAGE="github.com/onsonr/sonr" echo "Generating gogo proto code" cd proto diff --git a/scripts/test_ics_node.sh b/scripts/test_ics_node.sh new file mode 100644 index 000000000..98f1589e0 --- /dev/null +++ b/scripts/test_ics_node.sh @@ -0,0 +1,152 @@ +#!/bin/bash +# Run this script to quickly install, setup, and run the current version of the network. +# +# Examples: +# CHAIN_ID="localchain-1" HOME_DIR="~/.simapp" BLOCK_TIME="1000ms" CLEAN=true sh scripts/test_ics_node.sh +# CHAIN_ID="localchain-2" HOME_DIR="~/.simapp" CLEAN=true RPC=36657 REST=2317 PROFF=6061 P2P=36656 GRPC=8090 GRPC_WEB=8091 ROSETTA=8081 BLOCK_TIME="500ms" sh scripts/test_ics_node.sh + +set -eu + +export KEY="acc0" +export KEY2="acc1" + +export CHAIN_ID=${CHAIN_ID:-"localchain-1"} +export MONIKER="localvalidator" +export KEYALGO="secp256k1" +export KEYRING=${KEYRING:-"test"} +export HOME_DIR=$(eval echo "${HOME_DIR:-"~/.simapp"}") +export BINARY=${BINARY:-wasmd} +export DENOM=${DENOM:-token} + +export CLEAN=${CLEAN:-"false"} +export RPC=${RPC:-"26657"} +export REST=${REST:-"1317"} +export PROFF=${PROFF:-"6060"} +export P2P=${P2P:-"26656"} +export GRPC=${GRPC:-"9090"} +export GRPC_WEB=${GRPC_WEB:-"9091"} +export ROSETTA=${ROSETTA:-"8080"} +export BLOCK_TIME=${BLOCK_TIME:-"5s"} + +config_toml="${HOME_DIR}/config/config.toml" +client_toml="${HOME_DIR}/config/client.toml" +app_toml="${HOME_DIR}/config/app.toml" +genesis_json="${HOME_DIR}/config/genesis.json" + +# if which binary does not exist, install it +if [ -z $(which $BINARY) ]; then + make install + + if [ -z $(which $BINARY) ]; then + echo "Ensure $BINARY is installed and in your PATH" + exit 1 + fi +fi + +command -v $BINARY >/dev/null 2>&1 || { + echo >&2 "$BINARY command not found. Ensure this is setup / properly installed in your GOPATH (make install)." + exit 1 +} +command -v jq >/dev/null 2>&1 || { + echo >&2 "jq not installed. More info: https://stedolan.github.io/jq/download/" + exit 1 +} + +set_config() { + $BINARY config set client chain-id $CHAIN_ID + $BINARY config set client keyring-backend $KEYRING +} +set_config + +from_scratch() { + # Fresh install on current branch + make install + + # remove existing daemon files. + if [ ${#HOME_DIR} -le 2 ]; then + echo "HOME_DIR must be more than 2 characters long" + return + fi + rm -rf $HOME_DIR && echo "Removed $HOME_DIR" + + # reset values if not set already after whipe + set_config + + add_key() { + key=$1 + mnemonic=$2 + echo $mnemonic | $BINARY keys add $key --home $HOME_DIR --keyring-backend $KEYRING --algo $KEYALGO --recover + } + + # cosmos1efd63aw40lxf3n4mhf7dzhjkr453axur6cpk92 + add_key $KEY "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" + # cosmos1hj5fveer5cjtn4wd6wstzugjfdxzl0xpxvjjvr + add_key $KEY2 "wealth flavor believe regret funny network recall kiss grape useless pepper cram hint member few certain unveil rather brick bargain curious require crowd raise" + + $BINARY init $CHAIN_ID --chain-id $CHAIN_ID --overwrite --default-denom $DENOM --home $HOME_DIR + + update_test_genesis() { + cat $HOME_DIR/config/genesis.json | jq "$1" >$HOME_DIR/config/tmp_genesis.json && mv $HOME_DIR/config/tmp_genesis.json $HOME_DIR/config/genesis.json + } + + # === CORE MODULES === + # block + update_test_genesis '.consensus_params["block"]["max_gas"]="100000000"' + # crisis + update_test_genesis $(printf '.app_state["crisis"]["constant_fee"]={"denom":"%s","amount":"1000"}' $DENOM) + + # === CUSTOM MODULES === + # tokenfactory + update_test_genesis '.app_state["tokenfactory"]["params"]["denom_creation_fee"]=[]' + update_test_genesis '.app_state["tokenfactory"]["params"]["denom_creation_gas_consume"]=100000' + + $BINARY keys list --keyring-backend $KEYRING --home $HOME_DIR + + # Allocate genesis accounts + $BINARY genesis add-genesis-account $KEY 10000000$DENOM,900test --keyring-backend $KEYRING --home $HOME_DIR --append + $BINARY genesis add-genesis-account $KEY2 10000000$DENOM,800test --keyring-backend $KEYRING --home $HOME_DIR --append + + # ICS provider genesis hack + HACK_DIR=icshack-1 && echo $HACK_DIR + rm -rf $HACK_DIR + cp -r ${HOME_DIR} $HACK_DIR + + $BINARY add-consumer-section provider --home $HACK_DIR + ccvjson=$(jq '.app_state["ccvconsumer"]' $HACK_DIR/config/genesis.json) + echo $ccvjson + jq '.app_state["ccvconsumer"] = '"$ccvjson" ${HACK_DIR}/config/genesis.json >json.tmp && mv json.tmp $genesis_json + rm -rf $HACK_DIR + + update_test_genesis $(printf '.app_state["ccvconsumer"]["params"]["unbonding_period"]="%s"' "240s") +} + +# check if CLEAN is not set to false +if [ "$CLEAN" != "false" ]; then + echo "Starting from a clean state" + from_scratch +fi + +# Opens the RPC endpoint to outside connections +sed -i -e 's/laddr = "tcp:\/\/127.0.0.1:26657"/c\laddr = "tcp:\/\/0.0.0.0:'$RPC'"/g' $HOME_DIR/config/config.toml +sed -i -e 's/cors_allowed_origins = \[\]/cors_allowed_origins = \["\*"\]/g' $HOME_DIR/config/config.toml + +# REST endpoint +sed -i -e 's/address = "tcp:\/\/localhost:1317"/address = "tcp:\/\/0.0.0.0:'$REST'"/g' $HOME_DIR/config/app.toml +sed -i -e 's/enable = false/enable = true/g' $HOME_DIR/config/app.toml + +# peer exchange +sed -i -e 's/pprof_laddr = "localhost:6060"/pprof_laddr = "localhost:'$PROFF'"/g' $HOME_DIR/config/config.toml +sed -i -e 's/laddr = "tcp:\/\/0.0.0.0:26656"/laddr = "tcp:\/\/0.0.0.0:'$P2P'"/g' $HOME_DIR/config/config.toml + +# GRPC +sed -i -e 's/address = "localhost:9090"/address = "0.0.0.0:'$GRPC'"/g' $HOME_DIR/config/app.toml +sed -i -e 's/address = "localhost:9091"/address = "0.0.0.0:'$GRPC_WEB'"/g' $HOME_DIR/config/app.toml + +# Rosetta Api +sed -i -e 's/address = ":8080"/address = "0.0.0.0:'$ROSETTA'"/g' $HOME_DIR/config/app.toml + +# Faster blocks +sed -i -e 's/timeout_commit = "5s"/timeout_commit = "'$BLOCK_TIME'"/g' $HOME_DIR/config/config.toml + +# Start the daemon in the background +$BINARY start --pruning=nothing --minimum-gas-prices=0$DENOM --rpc.laddr="tcp://0.0.0.0:$RPC" --home $HOME_DIR diff --git a/scripts/test_node.sh b/scripts/test_node.sh index e17d0a923..45ad8f58c 100644 --- a/scripts/test_node.sh +++ b/scripts/test_node.sh @@ -8,15 +8,15 @@ export KEY="user1" export KEY2="user2" -export CHAIN_ID=${CHAIN_ID:-"local-1"} -export MONIKER="localvalidator" +export CHAIN_ID=${CHAIN_ID:-"sonr-testnet-1"} +export MONIKER="florence" export KEYALGO="secp256k1" export KEYRING=${KEYRING:-"test"} -export HOME_DIR=$(eval echo "${HOME_DIR:-"~/.core"}") +export HOME_DIR=$(eval echo "${HOME_DIR:-"~/.sonr"}") export BINARY=${BINARY:-sonrd} export DENOM=${DENOM:-usnr} -export CLEAN=${CLEAN:-"false"} +export CLEAN=${CLEAN:-"true"} export RPC=${RPC:-"26657"} export REST=${REST:-"1317"} export PROFF=${PROFF:-"6060"} @@ -106,8 +106,8 @@ from_scratch () { update_test_genesis '.app_state["poa"]["params"]["admins"]=["idx10d07y265gmmuvt4z0w9aw880jnsr700j9kqcfa"]' # Allocate genesis accounts - BINARY genesis add-genesis-account $KEY 10000000$DENOM,900test --keyring-backend $KEYRING - BINARY genesis add-genesis-account $KEY2 10000000$DENOM,800test --keyring-backend $KEYRING + BINARY genesis add-genesis-account $KEY 10000000$DENOM,900snr --keyring-backend $KEYRING + BINARY genesis add-genesis-account $KEY2 10000000$DENOM,800snr --keyring-backend $KEYRING # Sign genesis transaction BINARY genesis gentx $KEY 1000000$DENOM --keyring-backend $KEYRING --chain-id $CHAIN_ID @@ -153,4 +153,4 @@ sed -i 's/address = ":8080"/address = "0.0.0.0:'$ROSETTA'"/g' $HOME_DIR/config/a sed -i 's/timeout_commit = "5s"/timeout_commit = "'$BLOCK_TIME'"/g' $HOME_DIR/config/config.toml # Start the node with 0 gas fees -BINARY start --pruning=nothing --minimum-gas-prices=0$DENOM --rpc.laddr="tcp://0.0.0.0:$RPC" \ No newline at end of file +BINARY start --pruning=nothing --minimum-gas-prices=0$DENOM --rpc.laddr="tcp://0.0.0.0:$RPC" diff --git a/x/did/autocli.go b/x/did/autocli.go index bc41bbd28..c5fe6ab80 100644 --- a/x/did/autocli.go +++ b/x/did/autocli.go @@ -3,7 +3,7 @@ package module import ( autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" - modulev1 "github.com/onsonr/hway/api/did/v1" + modulev1 "github.com/onsonr/sonr/api/did/v1" ) // AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. diff --git a/x/did/depinject.go b/x/did/depinject.go index 49c633393..c4f05d78a 100644 --- a/x/did/depinject.go +++ b/x/did/depinject.go @@ -17,8 +17,8 @@ import ( "cosmossdk.io/depinject" "cosmossdk.io/log" - modulev1 "github.com/onsonr/hway/api/did/module/v1" - "github.com/onsonr/hway/x/did/keeper" + modulev1 "github.com/onsonr/sonr/api/did/module/v1" + "github.com/onsonr/sonr/x/did/keeper" ) var _ appmodule.AppModule = AppModule{} diff --git a/x/did/keeper/genesis.go b/x/did/keeper/genesis.go index 4259878eb..85e5dbfc6 100644 --- a/x/did/keeper/genesis.go +++ b/x/did/keeper/genesis.go @@ -4,7 +4,7 @@ import ( "context" "cosmossdk.io/log" - "github.com/onsonr/hway/x/did/types" + "github.com/onsonr/sonr/x/did/types" ) // Logger returns the logger diff --git a/x/did/keeper/genesis_test.go b/x/did/keeper/genesis_test.go index 806c86474..e92aaf280 100644 --- a/x/did/keeper/genesis_test.go +++ b/x/did/keeper/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/onsonr/hway/x/did/types" + "github.com/onsonr/sonr/x/did/types" ) func TestGenesis(t *testing.T) { @@ -20,7 +20,6 @@ func TestGenesis(t *testing.T) { err := f.k.InitGenesis(f.ctx, genesisState) require.NoError(t, err) - got := f.k.ExportGenesis(f.ctx) require.NotNil(t, got) diff --git a/x/did/keeper/keeper.go b/x/did/keeper/keeper.go index 96989763d..3578eddd4 100644 --- a/x/did/keeper/keeper.go +++ b/x/did/keeper/keeper.go @@ -10,8 +10,8 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - apiv1 "github.com/onsonr/hway/api/did/v1" - "github.com/onsonr/hway/x/did/types" + apiv1 "github.com/onsonr/sonr/api/did/v1" + "github.com/onsonr/sonr/x/did/types" ) // Keeper defines the middleware keeper. diff --git a/x/did/keeper/keeper_test.go b/x/did/keeper/keeper_test.go index 60f152f6c..b474f6cdd 100644 --- a/x/did/keeper/keeper_test.go +++ b/x/did/keeper/keeper_test.go @@ -26,9 +26,9 @@ import ( "cosmossdk.io/core/store" - module "github.com/onsonr/hway/x/did" - "github.com/onsonr/hway/x/did/keeper" - "github.com/onsonr/hway/x/did/types" + module "github.com/onsonr/sonr/x/did" + "github.com/onsonr/sonr/x/did/keeper" + "github.com/onsonr/sonr/x/did/types" "github.com/strangelove-ventures/poa" ) diff --git a/x/did/keeper/querier.go b/x/did/keeper/querier.go index 9833169ce..0131f5a91 100644 --- a/x/did/keeper/querier.go +++ b/x/did/keeper/querier.go @@ -5,8 +5,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - // "github.com/onsonr/hway/internal/local" - "github.com/onsonr/hway/x/did/types" + // "github.com/onsonr/sonr/internal/local" + "github.com/onsonr/sonr/x/did/types" ) var _ types.QueryServer = Querier{} @@ -20,7 +20,7 @@ func NewQuerier(keeper Keeper) Querier { } // Params returns the total set of did parameters. -func (k Querier) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { +func (k Querier) Params(c context.Context, req *types.QueryRequest) (*types.QueryParamsResponse, error) { ctx := sdk.UnwrapSDKContext(c) p, err := k.Keeper.Params.Get(ctx) @@ -32,31 +32,31 @@ func (k Querier) Params(c context.Context, req *types.QueryParamsRequest) (*type } // Accounts implements types.QueryServer. -func (k Querier) Accounts(goCtx context.Context, req *types.QueryAccountsRequest) (*types.QueryAccountsResponse, error) { +func (k Querier) Accounts(goCtx context.Context, req *types.QueryRequest) (*types.QueryAccountsResponse, error) { // ctx := sdk.UnwrapSDKContext(goCtx) return &types.QueryAccountsResponse{}, nil } // Credentials implements types.QueryServer. -func (k Querier) Credentials(goCtx context.Context, req *types.QueryCredentialsRequest) (*types.QueryCredentialsResponse, error) { +func (k Querier) Credentials(goCtx context.Context, req *types.QueryRequest) (*types.QueryCredentialsResponse, error) { // ctx := sdk.UnwrapSDKContext(goCtx) return &types.QueryCredentialsResponse{}, nil } -// Identities implements types.QueryServer. -func (k Querier) Identities(goCtx context.Context, req *types.QueryIdentitiesRequest) (*types.QueryIdentitiesResponse, error) { - // ctx := sdk.UnwrapSDKContext(goCtx) - return &types.QueryIdentitiesResponse{}, nil -} - // Resolve implements types.QueryServer. -func (k Querier) Resolve(goCtx context.Context, req *types.QueryResolveRequest) (*types.QueryResolveResponse, error) { +func (k Querier) Resolve(goCtx context.Context, req *types.QueryRequest) (*types.QueryResolveResponse, error) { // ctx := sdk.UnwrapSDKContext(goCtx) return &types.QueryResolveResponse{}, nil } // Service implements types.QueryServer. -func (k Querier) Service(goCtx context.Context, req *types.QueryServiceRequest) (*types.QueryServiceResponse, error) { +func (k Querier) Service(goCtx context.Context, req *types.QueryRequest) (*types.QueryServiceResponse, error) { // ctx := sdk.UnwrapSDKContext(goCtx) return &types.QueryServiceResponse{}, nil } + +// Token implements types.QueryServer. +func (k Querier) Token(goCtx context.Context, req *types.QueryRequest) (*types.QueryTokenResponse, error) { + // ctx := sdk.UnwrapSDKContext(goCtx) + return &types.QueryTokenResponse{}, nil +} diff --git a/x/did/keeper/server.go b/x/did/keeper/server.go index b0d9c84de..03176b242 100644 --- a/x/did/keeper/server.go +++ b/x/did/keeper/server.go @@ -7,8 +7,9 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "cosmossdk.io/errors" - didv1 "github.com/onsonr/hway/api/did/v1" - "github.com/onsonr/hway/x/did/types" + didv1 "github.com/onsonr/sonr/api/did/v1" + "github.com/onsonr/sonr/internal/files" + "github.com/onsonr/sonr/x/did/types" ) type msgServer struct { @@ -31,13 +32,23 @@ func (ms msgServer) UpdateParams(ctx context.Context, msg *types.MsgUpdateParams return nil, ms.k.Params.Set(ctx, msg.Params) } -// Authenticate implements types.MsgServer. -func (ms msgServer) Authenticate(ctx context.Context, msg *types.MsgAuthenticate) (*types.MsgAuthenticateResponse, error) { +// Authorize implements types.MsgServer. +func (ms msgServer) Authorize(ctx context.Context, msg *types.MsgAuthorize) (*types.MsgAuthorizeResponse, error) { if ms.k.authority != msg.Authority { return nil, errors.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", ms.k.authority, msg.Authority) } // ctx := sdk.UnwrapSDKContext(goCtx) - return &types.MsgAuthenticateResponse{}, nil + return &types.MsgAuthorizeResponse{}, nil +} + +// AllocateVault implements types.MsgServer. +func (ms msgServer) AllocateVault(goCtx context.Context, msg *types.MsgAllocateVault) (*types.MsgAllocateVaultResponse, error) { + // ctx := sdk.UnwrapSDKContext(goCtx) + err := files.Assemble("/tmp/sonr-testnet-1/vaults/0") + if err != nil { + return nil, err + } + return &types.MsgAllocateVaultResponse{}, nil } // RegisterController implements types.MsgServer. @@ -46,26 +57,25 @@ func (ms msgServer) RegisterController(goCtx context.Context, msg *types.MsgRegi return nil, errors.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", ms.k.authority, msg.Authority) } ctx := sdk.UnwrapSDKContext(goCtx) - svc := didv1.Service{ - ControllerDid: msg.Authority, + svc := didv1.ServiceRecord{ + Controller: msg.Authority, } - ms.k.OrmDB.ServiceTable().Insert(ctx, &svc) + ms.k.OrmDB.ServiceRecordTable().Insert(ctx, &svc) return &types.MsgRegisterControllerResponse{}, nil } // RegisterService implements types.MsgServer. func (ms msgServer) RegisterService(ctx context.Context, msg *types.MsgRegisterService) (*types.MsgRegisterServiceResponse, error) { - if ms.k.authority != msg.Authority { - return nil, errors.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", ms.k.authority, msg.Authority) + if ms.k.authority != msg.Controller { + return nil, errors.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", ms.k.authority, msg.Controller) } - // ctx := sdk.UnwrapSDKContext(goCtx) - return &types.MsgRegisterServiceResponse{}, nil -} -// ProveWitness implements types.MsgServer. -func (ms msgServer) ProveWitness(ctx context.Context, msg *types.MsgProveWitness) (*types.MsgProveWitnessResponse, error) { // ctx := sdk.UnwrapSDKContext(goCtx) - return &types.MsgProveWitnessResponse{}, nil + svc := didv1.ServiceRecord{ + Controller: msg.Controller, + } + ms.k.OrmDB.ServiceRecordTable().Insert(ctx, &svc) + return &types.MsgRegisterServiceResponse{}, nil } // SyncVault implements types.MsgServer. diff --git a/x/did/keeper/server_test.go b/x/did/keeper/server_test.go deleted file mode 100644 index f403f0cb5..000000000 --- a/x/did/keeper/server_test.go +++ /dev/null @@ -1,55 +0,0 @@ -package keeper_test - -import ( - "testing" - - "github.com/stretchr/testify/require" - - "github.com/onsonr/hway/x/did/types" -) - -func TestParams(t *testing.T) { - f := SetupTest(t) - require := require.New(t) - - testCases := []struct { - name string - request *types.MsgUpdateParams - err bool - }{ - { - name: "fail; invalid authority", - request: &types.MsgUpdateParams{ - Authority: f.addrs[0].String(), - Params: types.DefaultParams(), - }, - err: true, - }, - { - name: "success", - request: &types.MsgUpdateParams{ - Authority: f.govModAddr, - Params: types.DefaultParams(), - }, - err: false, - }, - } - - for _, tc := range testCases { - tc := tc - t.Run(tc.name, func(t *testing.T) { - _, err := f.msgServer.UpdateParams(f.ctx, tc.request) - - if tc.err { - require.Error(err) - } else { - require.NoError(err) - - r, err := f.queryServer.Params(f.ctx, &types.QueryParamsRequest{}) - require.NoError(err) - - require.EqualValues(&tc.request.Params, r.Params) - } - }) - } -} diff --git a/x/did/keeper/state.go b/x/did/keeper/state.go index b64f6c9e5..947d1e4a0 100644 --- a/x/did/keeper/state.go +++ b/x/did/keeper/state.go @@ -1,9 +1,13 @@ package keeper -func (k Keeper) insertAliasFromDisplayName() { -} +import ( + didv1 "github.com/onsonr/sonr/api/did/v1" + "github.com/onsonr/sonr/x/did/types" -func (k Keeper) insertAssertionFromIdentity() { + sdk "github.com/cosmos/cosmos-sdk/types" +) + +func (k Keeper) convertProfileToVerification() { } func (k Keeper) insertAuthenticationFromCredential() { @@ -12,5 +16,22 @@ func (k Keeper) insertAuthenticationFromCredential() { func (k Keeper) insertControllerFromMotrVault() { } -func (k Keeper) insertDelegationFromAccount() { +func (k Keeper) insertDelegationFromAccount(ctx sdk.Context, address string, label string) (*didv1.Delegation, error) { + del, err := k.OrmDB.DelegationTable().GetByControllerAccountLabel(ctx, address, label) + if err != nil { + return nil, err + } + return del, nil +} + +func (k Keeper) insertServiceRecord(ctx sdk.Context, msg *types.MsgRegisterService) error { + record, err := msg.ExtractServiceRecord() + if err != nil { + return err + } + err = k.OrmDB.ServiceRecordTable().Insert(ctx, record) + if err != nil { + return err + } + return nil } diff --git a/x/did/keeper/validate.go b/x/did/keeper/validate.go new file mode 100644 index 000000000..ce070b372 --- /dev/null +++ b/x/did/keeper/validate.go @@ -0,0 +1,14 @@ +package keeper + +import sdk "github.com/cosmos/cosmos-sdk/types" + +func (k Keeper) ValidServiceOrigin(ctx sdk.Context, origin string) bool { + rec, err := k.OrmDB.ServiceRecordTable().GetByOriginUri(ctx, origin) + if err != nil { + return false + } + if rec == nil { + return false + } + return true +} diff --git a/x/did/module.go b/x/did/module.go index fbde2aad2..9f61da1f2 100644 --- a/x/did/module.go +++ b/x/did/module.go @@ -18,8 +18,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/onsonr/hway/x/did/keeper" - "github.com/onsonr/hway/x/did/types" + "github.com/onsonr/sonr/x/did/keeper" + "github.com/onsonr/sonr/x/did/types" // this line is used by starport scaffolding # 1 ) diff --git a/x/did/types/accounts.pb.go b/x/did/types/accounts.pb.go index c9102852a..b35007bdb 100644 --- a/x/did/types/accounts.pb.go +++ b/x/did/types/accounts.pb.go @@ -176,7 +176,7 @@ func init() { func init() { proto.RegisterFile("did/v1/accounts.proto", fileDescriptor_2125a09fb14c3bc3) } var fileDescriptor_2125a09fb14c3bc3 = []byte{ - // 148 bytes of a gzipped FileDescriptorProto + // 145 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4d, 0xc9, 0x4c, 0xd1, 0x2f, 0x33, 0xd4, 0x4f, 0x4c, 0x4e, 0xce, 0x2f, 0xcd, 0x2b, 0x29, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x4b, 0xc9, 0x4c, 0xd1, 0x2b, 0x33, 0x54, 0xe2, 0xe1, 0xe2, 0x72, 0x2a, 0x49, @@ -184,9 +184,9 @@ var fileDescriptor_2125a09fb14c3bc3 = []byte{ 0x5e, 0x11, 0x94, 0xe7, 0x64, 0x73, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x4a, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0xf9, 0x79, 0xc5, 0xf9, - 0x79, 0x45, 0xfa, 0x19, 0xe5, 0x89, 0x95, 0xfa, 0x15, 0xfa, 0x20, 0x97, 0x94, 0x54, 0x16, 0xa4, - 0x16, 0x27, 0xb1, 0x81, 0x1d, 0x61, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x96, 0xc2, 0x4c, 0x7c, - 0x9d, 0x00, 0x00, 0x00, + 0x79, 0x45, 0xfa, 0x60, 0xa2, 0x42, 0x1f, 0xe4, 0x92, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, + 0xb0, 0x23, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x82, 0x7e, 0x89, 0x0a, 0x9d, 0x00, 0x00, + 0x00, } func (m *BtcAccount) Marshal() (dAtA []byte, err error) { diff --git a/x/did/types/codec.go b/x/did/types/codec.go index 4e875afeb..2cb3dbf04 100644 --- a/x/did/types/codec.go +++ b/x/did/types/codec.go @@ -4,6 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/msgservice" // this line is used by starport scaffolding # 1 @@ -26,16 +27,17 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { } func RegisterInterfaces(registry types.InterfaceRegistry) { - //registry.RegisterImplementations( - //(*cryptotypes.PubKey)(nil), - // &PublicKey{}, - //) + registry.RegisterImplementations( + (*cryptotypes.PubKey)(nil), + &PubKey{}, + ) registry.RegisterImplementations( (*sdk.Msg)(nil), &MsgUpdateParams{}, &MsgRegisterController{}, &MsgRegisterService{}, + &MsgAllocateVault{}, ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } diff --git a/x/did/types/coins.go b/x/did/types/constants.go similarity index 100% rename from x/did/types/coins.go rename to x/did/types/constants.go diff --git a/x/did/types/constants.pb.go b/x/did/types/constants.pb.go new file mode 100644 index 000000000..99f16378e --- /dev/null +++ b/x/did/types/constants.pb.go @@ -0,0 +1,445 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: did/v1/constants.proto + +package types + +import ( + fmt "fmt" + proto "github.com/cosmos/gogoproto/proto" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// AssetType defines the type of asset: native, wrapped, staking, pool, or unspecified +type AssetType int32 + +const ( + AssetType_ASSET_TYPE_UNSPECIFIED AssetType = 0 + AssetType_ASSET_TYPE_NATIVE AssetType = 1 + AssetType_ASSET_TYPE_WRAPPED AssetType = 2 + AssetType_ASSET_TYPE_STAKING AssetType = 3 + AssetType_ASSET_TYPE_POOL AssetType = 4 + AssetType_ASSET_TYPE_IBC AssetType = 5 + AssetType_ASSET_TYPE_CW20 AssetType = 6 +) + +var AssetType_name = map[int32]string{ + 0: "ASSET_TYPE_UNSPECIFIED", + 1: "ASSET_TYPE_NATIVE", + 2: "ASSET_TYPE_WRAPPED", + 3: "ASSET_TYPE_STAKING", + 4: "ASSET_TYPE_POOL", + 5: "ASSET_TYPE_IBC", + 6: "ASSET_TYPE_CW20", +} + +var AssetType_value = map[string]int32{ + "ASSET_TYPE_UNSPECIFIED": 0, + "ASSET_TYPE_NATIVE": 1, + "ASSET_TYPE_WRAPPED": 2, + "ASSET_TYPE_STAKING": 3, + "ASSET_TYPE_POOL": 4, + "ASSET_TYPE_IBC": 5, + "ASSET_TYPE_CW20": 6, +} + +func (x AssetType) String() string { + return proto.EnumName(AssetType_name, int32(x)) +} + +func (AssetType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_7cc61ab03a01b9c8, []int{0} +} + +// DIDNamespace define the different namespaces of DID +type DIDNamespace int32 + +const ( + DIDNamespace_DID_NAMESPACE_UNSPECIFIED DIDNamespace = 0 + DIDNamespace_DID_NAMESPACE_IPFS DIDNamespace = 1 + DIDNamespace_DID_NAMESPACE_SONR DIDNamespace = 2 + DIDNamespace_DID_NAMESPACE_BITCOIN DIDNamespace = 3 + DIDNamespace_DID_NAMESPACE_ETHEREUM DIDNamespace = 4 + DIDNamespace_DID_NAMESPACE_IBC DIDNamespace = 5 + DIDNamespace_DID_NAMESPACE_WEBAUTHN DIDNamespace = 6 + DIDNamespace_DID_NAMESPACE_DWN DIDNamespace = 7 + DIDNamespace_DID_NAMESPACE_SERVICE DIDNamespace = 8 +) + +var DIDNamespace_name = map[int32]string{ + 0: "DID_NAMESPACE_UNSPECIFIED", + 1: "DID_NAMESPACE_IPFS", + 2: "DID_NAMESPACE_SONR", + 3: "DID_NAMESPACE_BITCOIN", + 4: "DID_NAMESPACE_ETHEREUM", + 5: "DID_NAMESPACE_IBC", + 6: "DID_NAMESPACE_WEBAUTHN", + 7: "DID_NAMESPACE_DWN", + 8: "DID_NAMESPACE_SERVICE", +} + +var DIDNamespace_value = map[string]int32{ + "DID_NAMESPACE_UNSPECIFIED": 0, + "DID_NAMESPACE_IPFS": 1, + "DID_NAMESPACE_SONR": 2, + "DID_NAMESPACE_BITCOIN": 3, + "DID_NAMESPACE_ETHEREUM": 4, + "DID_NAMESPACE_IBC": 5, + "DID_NAMESPACE_WEBAUTHN": 6, + "DID_NAMESPACE_DWN": 7, + "DID_NAMESPACE_SERVICE": 8, +} + +func (x DIDNamespace) String() string { + return proto.EnumName(DIDNamespace_name, int32(x)) +} + +func (DIDNamespace) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_7cc61ab03a01b9c8, []int{1} +} + +// KeyAlgorithm defines the key algorithm +type KeyAlgorithm int32 + +const ( + KeyAlgorithm_KEY_ALGORITHM_UNSPECIFIED KeyAlgorithm = 0 + KeyAlgorithm_KEY_ALGORITHM_ES256 KeyAlgorithm = 1 + KeyAlgorithm_KEY_ALGORITHM_ES384 KeyAlgorithm = 2 + KeyAlgorithm_KEY_ALGORITHM_ES512 KeyAlgorithm = 3 + KeyAlgorithm_KEY_ALGORITHM_EDDSA KeyAlgorithm = 4 + KeyAlgorithm_KEY_ALGORITHM_ES256K KeyAlgorithm = 5 + KeyAlgorithm_KEY_ALGORITHM_BLS12377 KeyAlgorithm = 6 + KeyAlgorithm_KEY_ALGORITHM_KECCAK256 KeyAlgorithm = 7 +) + +var KeyAlgorithm_name = map[int32]string{ + 0: "KEY_ALGORITHM_UNSPECIFIED", + 1: "KEY_ALGORITHM_ES256", + 2: "KEY_ALGORITHM_ES384", + 3: "KEY_ALGORITHM_ES512", + 4: "KEY_ALGORITHM_EDDSA", + 5: "KEY_ALGORITHM_ES256K", + 6: "KEY_ALGORITHM_BLS12377", + 7: "KEY_ALGORITHM_KECCAK256", +} + +var KeyAlgorithm_value = map[string]int32{ + "KEY_ALGORITHM_UNSPECIFIED": 0, + "KEY_ALGORITHM_ES256": 1, + "KEY_ALGORITHM_ES384": 2, + "KEY_ALGORITHM_ES512": 3, + "KEY_ALGORITHM_EDDSA": 4, + "KEY_ALGORITHM_ES256K": 5, + "KEY_ALGORITHM_BLS12377": 6, + "KEY_ALGORITHM_KECCAK256": 7, +} + +func (x KeyAlgorithm) String() string { + return proto.EnumName(KeyAlgorithm_name, int32(x)) +} + +func (KeyAlgorithm) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_7cc61ab03a01b9c8, []int{2} +} + +// KeyCurve defines the key curve +type KeyCurve int32 + +const ( + KeyCurve_KEY_CURVE_UNSPECIFIED KeyCurve = 0 + KeyCurve_KEY_CURVE_P256 KeyCurve = 1 + KeyCurve_KEY_CURVE_P384 KeyCurve = 2 + KeyCurve_KEY_CURVE_P521 KeyCurve = 3 + KeyCurve_KEY_CURVE_X25519 KeyCurve = 4 + KeyCurve_KEY_CURVE_X448 KeyCurve = 5 + KeyCurve_KEY_CURVE_ED25519 KeyCurve = 6 + KeyCurve_KEY_CURVE_ED448 KeyCurve = 7 + KeyCurve_KEY_CURVE_SECP256K1 KeyCurve = 8 +) + +var KeyCurve_name = map[int32]string{ + 0: "KEY_CURVE_UNSPECIFIED", + 1: "KEY_CURVE_P256", + 2: "KEY_CURVE_P384", + 3: "KEY_CURVE_P521", + 4: "KEY_CURVE_X25519", + 5: "KEY_CURVE_X448", + 6: "KEY_CURVE_ED25519", + 7: "KEY_CURVE_ED448", + 8: "KEY_CURVE_SECP256K1", +} + +var KeyCurve_value = map[string]int32{ + "KEY_CURVE_UNSPECIFIED": 0, + "KEY_CURVE_P256": 1, + "KEY_CURVE_P384": 2, + "KEY_CURVE_P521": 3, + "KEY_CURVE_X25519": 4, + "KEY_CURVE_X448": 5, + "KEY_CURVE_ED25519": 6, + "KEY_CURVE_ED448": 7, + "KEY_CURVE_SECP256K1": 8, +} + +func (x KeyCurve) String() string { + return proto.EnumName(KeyCurve_name, int32(x)) +} + +func (KeyCurve) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_7cc61ab03a01b9c8, []int{3} +} + +// KeyEncoding defines the key encoding +type KeyEncoding int32 + +const ( + KeyEncoding_KEY_ENCODING_UNSPECIFIED KeyEncoding = 0 + KeyEncoding_KEY_ENCODING_RAW KeyEncoding = 1 + KeyEncoding_KEY_ENCODING_HEX KeyEncoding = 2 + KeyEncoding_KEY_ENCODING_MULTIBASE KeyEncoding = 3 + KeyEncoding_KEY_ENCODING_JWK KeyEncoding = 4 +) + +var KeyEncoding_name = map[int32]string{ + 0: "KEY_ENCODING_UNSPECIFIED", + 1: "KEY_ENCODING_RAW", + 2: "KEY_ENCODING_HEX", + 3: "KEY_ENCODING_MULTIBASE", + 4: "KEY_ENCODING_JWK", +} + +var KeyEncoding_value = map[string]int32{ + "KEY_ENCODING_UNSPECIFIED": 0, + "KEY_ENCODING_RAW": 1, + "KEY_ENCODING_HEX": 2, + "KEY_ENCODING_MULTIBASE": 3, + "KEY_ENCODING_JWK": 4, +} + +func (x KeyEncoding) String() string { + return proto.EnumName(KeyEncoding_name, int32(x)) +} + +func (KeyEncoding) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_7cc61ab03a01b9c8, []int{4} +} + +// KeyRole defines the kind of key +type KeyRole int32 + +const ( + KeyRole_KEY_ROLE_UNSPECIFIED KeyRole = 0 + // Blockchain key types + KeyRole_KEY_ROLE_AUTHENTICATION KeyRole = 1 + KeyRole_KEY_ROLE_ASSERTION KeyRole = 2 + KeyRole_KEY_ROLE_DELEGATION KeyRole = 3 + KeyRole_KEY_ROLE_INVOCATION KeyRole = 4 +) + +var KeyRole_name = map[int32]string{ + 0: "KEY_ROLE_UNSPECIFIED", + 1: "KEY_ROLE_AUTHENTICATION", + 2: "KEY_ROLE_ASSERTION", + 3: "KEY_ROLE_DELEGATION", + 4: "KEY_ROLE_INVOCATION", +} + +var KeyRole_value = map[string]int32{ + "KEY_ROLE_UNSPECIFIED": 0, + "KEY_ROLE_AUTHENTICATION": 1, + "KEY_ROLE_ASSERTION": 2, + "KEY_ROLE_DELEGATION": 3, + "KEY_ROLE_INVOCATION": 4, +} + +func (x KeyRole) String() string { + return proto.EnumName(KeyRole_name, int32(x)) +} + +func (KeyRole) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_7cc61ab03a01b9c8, []int{5} +} + +// KeyType defines the key type +type KeyType int32 + +const ( + KeyType_KEY_TYPE_UNSPECIFIED KeyType = 0 + KeyType_KEY_TYPE_OCTET KeyType = 1 + KeyType_KEY_TYPE_ELLIPTIC KeyType = 2 + KeyType_KEY_TYPE_RSA KeyType = 3 + KeyType_KEY_TYPE_SYMMETRIC KeyType = 4 + KeyType_KEY_TYPE_HMAC KeyType = 5 +) + +var KeyType_name = map[int32]string{ + 0: "KEY_TYPE_UNSPECIFIED", + 1: "KEY_TYPE_OCTET", + 2: "KEY_TYPE_ELLIPTIC", + 3: "KEY_TYPE_RSA", + 4: "KEY_TYPE_SYMMETRIC", + 5: "KEY_TYPE_HMAC", +} + +var KeyType_value = map[string]int32{ + "KEY_TYPE_UNSPECIFIED": 0, + "KEY_TYPE_OCTET": 1, + "KEY_TYPE_ELLIPTIC": 2, + "KEY_TYPE_RSA": 3, + "KEY_TYPE_SYMMETRIC": 4, + "KEY_TYPE_HMAC": 5, +} + +func (x KeyType) String() string { + return proto.EnumName(KeyType_name, int32(x)) +} + +func (KeyType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_7cc61ab03a01b9c8, []int{6} +} + +// PermissionScope define the Capabilities Controllers can grant for Services +type PermissionScope int32 + +const ( + PermissionScope_PERMISSION_SCOPE_UNSPECIFIED PermissionScope = 0 + PermissionScope_PERMISSION_SCOPE_BASIC_INFO PermissionScope = 1 + PermissionScope_PERMISSION_SCOPE_RECORDS_READ PermissionScope = 2 + PermissionScope_PERMISSION_SCOPE_RECORDS_WRITE PermissionScope = 3 + PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_READ PermissionScope = 4 + PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_WRITE PermissionScope = 5 + PermissionScope_PERMISSION_SCOPE_WALLETS_READ PermissionScope = 6 + PermissionScope_PERMISSION_SCOPE_WALLETS_CREATE PermissionScope = 7 + PermissionScope_PERMISSION_SCOPE_WALLETS_SUBSCRIBE PermissionScope = 8 + PermissionScope_PERMISSION_SCOPE_WALLETS_UPDATE PermissionScope = 9 + PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_VERIFY PermissionScope = 10 + PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_BROADCAST PermissionScope = 11 + PermissionScope_PERMISSION_SCOPE_ADMIN_USER PermissionScope = 12 + PermissionScope_PERMISSION_SCOPE_ADMIN_VALIDATOR PermissionScope = 13 +) + +var PermissionScope_name = map[int32]string{ + 0: "PERMISSION_SCOPE_UNSPECIFIED", + 1: "PERMISSION_SCOPE_BASIC_INFO", + 2: "PERMISSION_SCOPE_RECORDS_READ", + 3: "PERMISSION_SCOPE_RECORDS_WRITE", + 4: "PERMISSION_SCOPE_TRANSACTIONS_READ", + 5: "PERMISSION_SCOPE_TRANSACTIONS_WRITE", + 6: "PERMISSION_SCOPE_WALLETS_READ", + 7: "PERMISSION_SCOPE_WALLETS_CREATE", + 8: "PERMISSION_SCOPE_WALLETS_SUBSCRIBE", + 9: "PERMISSION_SCOPE_WALLETS_UPDATE", + 10: "PERMISSION_SCOPE_TRANSACTIONS_VERIFY", + 11: "PERMISSION_SCOPE_TRANSACTIONS_BROADCAST", + 12: "PERMISSION_SCOPE_ADMIN_USER", + 13: "PERMISSION_SCOPE_ADMIN_VALIDATOR", +} + +var PermissionScope_value = map[string]int32{ + "PERMISSION_SCOPE_UNSPECIFIED": 0, + "PERMISSION_SCOPE_BASIC_INFO": 1, + "PERMISSION_SCOPE_RECORDS_READ": 2, + "PERMISSION_SCOPE_RECORDS_WRITE": 3, + "PERMISSION_SCOPE_TRANSACTIONS_READ": 4, + "PERMISSION_SCOPE_TRANSACTIONS_WRITE": 5, + "PERMISSION_SCOPE_WALLETS_READ": 6, + "PERMISSION_SCOPE_WALLETS_CREATE": 7, + "PERMISSION_SCOPE_WALLETS_SUBSCRIBE": 8, + "PERMISSION_SCOPE_WALLETS_UPDATE": 9, + "PERMISSION_SCOPE_TRANSACTIONS_VERIFY": 10, + "PERMISSION_SCOPE_TRANSACTIONS_BROADCAST": 11, + "PERMISSION_SCOPE_ADMIN_USER": 12, + "PERMISSION_SCOPE_ADMIN_VALIDATOR": 13, +} + +func (x PermissionScope) String() string { + return proto.EnumName(PermissionScope_name, int32(x)) +} + +func (PermissionScope) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_7cc61ab03a01b9c8, []int{7} +} + +func init() { + proto.RegisterEnum("did.v1.AssetType", AssetType_name, AssetType_value) + proto.RegisterEnum("did.v1.DIDNamespace", DIDNamespace_name, DIDNamespace_value) + proto.RegisterEnum("did.v1.KeyAlgorithm", KeyAlgorithm_name, KeyAlgorithm_value) + proto.RegisterEnum("did.v1.KeyCurve", KeyCurve_name, KeyCurve_value) + proto.RegisterEnum("did.v1.KeyEncoding", KeyEncoding_name, KeyEncoding_value) + proto.RegisterEnum("did.v1.KeyRole", KeyRole_name, KeyRole_value) + proto.RegisterEnum("did.v1.KeyType", KeyType_name, KeyType_value) + proto.RegisterEnum("did.v1.PermissionScope", PermissionScope_name, PermissionScope_value) +} + +func init() { proto.RegisterFile("did/v1/constants.proto", fileDescriptor_7cc61ab03a01b9c8) } + +var fileDescriptor_7cc61ab03a01b9c8 = []byte{ + // 902 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x95, 0xdf, 0x72, 0xda, 0x46, + 0x14, 0xc6, 0x2d, 0x83, 0xb1, 0xb3, 0x71, 0x92, 0x93, 0x4d, 0xe2, 0x24, 0x4d, 0x42, 0xd2, 0x24, + 0xd3, 0x74, 0xe8, 0x8c, 0x29, 0xd8, 0x34, 0xe9, 0x4c, 0x6f, 0x56, 0xab, 0x63, 0xb3, 0x95, 0x90, + 0x34, 0xbb, 0x0b, 0xc4, 0xbd, 0x61, 0x1c, 0xd0, 0x38, 0xcc, 0xc4, 0x88, 0x01, 0xe2, 0x29, 0x8f, + 0xd0, 0xf6, 0xa6, 0x6f, 0xd0, 0x17, 0xe8, 0x83, 0xf4, 0xd2, 0x97, 0xbd, 0xec, 0xd8, 0x7d, 0x89, + 0xde, 0x75, 0x84, 0xf8, 0x27, 0xc0, 0xbe, 0xe1, 0xe2, 0xf7, 0x7d, 0x3a, 0xfa, 0xce, 0x39, 0xcb, + 0x8a, 0xec, 0xb4, 0xda, 0xad, 0xfc, 0x59, 0x21, 0xdf, 0x0c, 0x3b, 0xfd, 0xc1, 0x71, 0x67, 0xd0, + 0xdf, 0xed, 0xf6, 0xc2, 0x41, 0x48, 0x33, 0xad, 0x76, 0x6b, 0xf7, 0xac, 0x90, 0xfb, 0xd3, 0x20, + 0x37, 0x58, 0xbf, 0x1f, 0x0c, 0xf4, 0xb0, 0x1b, 0xd0, 0x2f, 0xc8, 0x0e, 0x53, 0x0a, 0x75, 0x43, + 0x1f, 0xf9, 0xd8, 0xa8, 0xba, 0xca, 0x47, 0x2e, 0x0e, 0x04, 0x5a, 0xb0, 0x46, 0x1f, 0x90, 0xbb, + 0x73, 0x9a, 0xcb, 0xb4, 0xa8, 0x21, 0x18, 0x74, 0x87, 0xd0, 0x39, 0x5c, 0x97, 0xcc, 0xf7, 0xd1, + 0x82, 0xf5, 0x05, 0xae, 0x34, 0xb3, 0x85, 0x7b, 0x08, 0x29, 0x7a, 0x8f, 0xdc, 0x99, 0xe3, 0xbe, + 0xe7, 0x39, 0x90, 0xa6, 0x94, 0xdc, 0x9e, 0x83, 0xc2, 0xe4, 0xb0, 0xb1, 0x60, 0xe4, 0xf5, 0xe2, + 0xb7, 0x90, 0xc9, 0xfd, 0x67, 0x90, 0x6d, 0x4b, 0x58, 0xee, 0xf1, 0x69, 0xd0, 0xef, 0x1e, 0x37, + 0x03, 0xfa, 0x8c, 0x3c, 0xb6, 0x84, 0xd5, 0x70, 0x59, 0x05, 0x95, 0xcf, 0xf8, 0x62, 0xe8, 0x1d, + 0x42, 0x93, 0xb2, 0xf0, 0x0f, 0x54, 0x9c, 0x3a, 0xc9, 0x95, 0xe7, 0x4a, 0x58, 0xa7, 0x8f, 0xc9, + 0x83, 0x24, 0x37, 0x85, 0xe6, 0x9e, 0x70, 0x21, 0x15, 0xcd, 0x26, 0x29, 0xa1, 0x2e, 0xa3, 0xc4, + 0x6a, 0x05, 0xd2, 0xd1, 0x6c, 0x16, 0x5e, 0x33, 0x6a, 0x61, 0xe9, 0x91, 0x3a, 0x9a, 0xac, 0xaa, + 0xcb, 0x2e, 0x64, 0x96, 0x1f, 0xb1, 0xea, 0x2e, 0x6c, 0x2e, 0x07, 0x50, 0x28, 0x6b, 0x82, 0x23, + 0x6c, 0xe5, 0xfe, 0x35, 0xc8, 0xb6, 0x1d, 0x0c, 0xd9, 0xa7, 0x93, 0xb0, 0xd7, 0x1e, 0x7c, 0x3c, + 0x8d, 0x7a, 0xb7, 0xf1, 0xa8, 0xc1, 0x9c, 0x43, 0x4f, 0x0a, 0x5d, 0xae, 0x2c, 0xf4, 0xfe, 0x90, + 0xdc, 0x4b, 0xca, 0xa8, 0x8a, 0xa5, 0xef, 0xc0, 0x58, 0x25, 0xec, 0xbd, 0xdb, 0x87, 0xf5, 0x55, + 0x42, 0xa9, 0x50, 0x84, 0xd4, 0x0a, 0xc1, 0xb2, 0x14, 0x83, 0x34, 0x7d, 0x44, 0xee, 0xaf, 0x78, + 0x87, 0x1d, 0xf7, 0x9e, 0x54, 0x4c, 0x47, 0x15, 0x8a, 0x7b, 0x6f, 0xdf, 0x42, 0x86, 0x3e, 0x21, + 0x0f, 0x93, 0x9a, 0x8d, 0x9c, 0x33, 0x3b, 0x4a, 0xb7, 0x99, 0x3b, 0x37, 0xc8, 0x96, 0x1d, 0x0c, + 0xf9, 0xe7, 0xde, 0x59, 0x10, 0x8d, 0x23, 0x72, 0xf2, 0xaa, 0xac, 0x2d, 0xae, 0x96, 0x92, 0xdb, + 0x33, 0xc9, 0x8f, 0x3b, 0x4b, 0xb2, 0xb8, 0xa9, 0x24, 0x2b, 0x15, 0x0b, 0x90, 0xa2, 0xf7, 0x09, + 0xcc, 0xd8, 0xfb, 0x62, 0xa9, 0x54, 0xf8, 0x3e, 0x3e, 0x85, 0x73, 0x74, 0x7f, 0xff, 0x1d, 0x6c, + 0x44, 0x6b, 0x9a, 0x31, 0xb4, 0x62, 0x6b, 0x26, 0x3a, 0x9c, 0xf3, 0x38, 0xf2, 0x6e, 0x4e, 0xa6, + 0x14, 0x43, 0x85, 0x3c, 0x0a, 0x65, 0x17, 0x60, 0x2b, 0xf7, 0x8b, 0x41, 0x6e, 0xda, 0xc1, 0x10, + 0x3b, 0xcd, 0xb0, 0xd5, 0xee, 0x9c, 0xd0, 0xa7, 0xe4, 0x51, 0x64, 0x44, 0x97, 0x7b, 0x96, 0x70, + 0x0f, 0x17, 0x1a, 0x1b, 0x87, 0x9b, 0xaa, 0x92, 0xd5, 0xc1, 0x58, 0xa2, 0x65, 0x7c, 0x0f, 0xeb, + 0x93, 0x29, 0x4f, 0x69, 0xa5, 0xea, 0x68, 0x61, 0x32, 0x85, 0xb3, 0x26, 0xa7, 0xda, 0x8f, 0x75, + 0x1b, 0xd2, 0xb9, 0x5f, 0x0d, 0xb2, 0x69, 0x07, 0x43, 0x19, 0x7e, 0x0a, 0x26, 0xdb, 0x93, 0x9e, + 0xb3, 0x38, 0xdc, 0xf1, 0x86, 0x46, 0x4a, 0x74, 0x62, 0xd1, 0xd5, 0x82, 0x33, 0x2d, 0x3c, 0x37, + 0xfe, 0xf3, 0xcc, 0x44, 0xa5, 0x50, 0x8e, 0xf8, 0xf4, 0xf8, 0x8c, 0xb8, 0x85, 0x0e, 0x1e, 0xc6, + 0x0f, 0xa4, 0x12, 0x82, 0x70, 0x6b, 0xde, 0xb8, 0x52, 0x3a, 0xf7, 0x5b, 0x1c, 0x66, 0x74, 0xf7, + 0x8c, 0xc3, 0xac, 0xb8, 0x79, 0xc6, 0x7b, 0x19, 0x29, 0x1e, 0xd7, 0xa8, 0xc1, 0x98, 0xec, 0x65, + 0xc4, 0xd0, 0x71, 0x84, 0xaf, 0x05, 0x87, 0x75, 0x0a, 0x64, 0x7b, 0x8a, 0xa5, 0x62, 0x90, 0x9a, + 0x84, 0x8d, 0x6f, 0xa1, 0xa3, 0x4a, 0x05, 0xb5, 0x14, 0x1c, 0xd2, 0xf4, 0x2e, 0xb9, 0x35, 0xe5, + 0xe5, 0x0a, 0xe3, 0xb0, 0x91, 0xfb, 0x23, 0x4d, 0xee, 0xf8, 0x41, 0xef, 0xb4, 0xdd, 0xef, 0xb7, + 0xc3, 0x8e, 0x6a, 0x86, 0xdd, 0x80, 0xbe, 0x20, 0x4f, 0x7d, 0x94, 0x15, 0xa1, 0x94, 0xf0, 0xdc, + 0x86, 0xe2, 0xde, 0x52, 0xba, 0xe7, 0xe4, 0xc9, 0x92, 0xc3, 0x64, 0x4a, 0xf0, 0x86, 0x70, 0x0f, + 0x3c, 0x30, 0xe8, 0x97, 0xe4, 0xd9, 0x92, 0x41, 0x22, 0xf7, 0xa4, 0xa5, 0x1a, 0x12, 0x59, 0x74, + 0x59, 0xbe, 0x24, 0xd9, 0x2b, 0x2d, 0x75, 0x29, 0x74, 0xb4, 0xce, 0xaf, 0xc8, 0xcb, 0x25, 0x8f, + 0x96, 0xcc, 0x55, 0x8c, 0x47, 0xd3, 0x1c, 0xd7, 0x4a, 0xd3, 0x37, 0xe4, 0xd5, 0xf5, 0xbe, 0xb8, + 0xe0, 0xc6, 0xca, 0x5c, 0x75, 0xe6, 0x38, 0xa8, 0xc7, 0xb5, 0x32, 0xf4, 0x15, 0x79, 0x7e, 0xa5, + 0x85, 0x4b, 0x64, 0x1a, 0x61, 0x73, 0x65, 0xb0, 0x89, 0x49, 0x55, 0x4d, 0xc5, 0xa5, 0x30, 0x11, + 0xb6, 0xae, 0x2d, 0x56, 0xf5, 0xad, 0xa8, 0xd8, 0x0d, 0xfa, 0x35, 0x79, 0x7d, 0x7d, 0xfa, 0x1a, + 0x4a, 0x71, 0x70, 0x04, 0x84, 0x7e, 0x43, 0xde, 0x5c, 0xef, 0x34, 0xa5, 0xc7, 0x2c, 0xce, 0x94, + 0x86, 0x9b, 0x2b, 0x97, 0xc4, 0xac, 0x8a, 0x70, 0x1b, 0x55, 0x85, 0x12, 0xb6, 0xe9, 0x6b, 0xf2, + 0xe2, 0x0a, 0x43, 0x8d, 0x39, 0xc2, 0x62, 0xda, 0x93, 0x70, 0xcb, 0xfc, 0xe1, 0xaf, 0x8b, 0xac, + 0x71, 0x7e, 0x91, 0x35, 0xfe, 0xb9, 0xc8, 0x1a, 0xbf, 0x5f, 0x66, 0xd7, 0xce, 0x2f, 0xb3, 0x6b, + 0x7f, 0x5f, 0x66, 0xd7, 0x7e, 0x7a, 0x79, 0xd2, 0x1e, 0x7c, 0xfc, 0xfc, 0x61, 0xb7, 0x19, 0x9e, + 0xe6, 0xc3, 0x4e, 0x3f, 0xec, 0xf4, 0xf2, 0xa3, 0x9f, 0x9f, 0xf3, 0xd1, 0x07, 0x78, 0x30, 0xec, + 0x06, 0xfd, 0x0f, 0x99, 0xd1, 0xa7, 0x77, 0xef, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x40, 0x58, + 0x91, 0x1e, 0x94, 0x07, 0x00, 0x00, +} diff --git a/x/did/types/defaults.go b/x/did/types/defaults.go new file mode 100644 index 000000000..d1fa53027 --- /dev/null +++ b/x/did/types/defaults.go @@ -0,0 +1,109 @@ +package types + +// DefaultAssets returns the default asset infos: BTC, ETH, SNR, and USDC +func DefaultAssets() []*AssetInfo { + return []*AssetInfo{ + { + Name: "Bitcoin", + Symbol: "BTC", + Hrp: "bc", + Index: 0, + AssetType: AssetType_ASSET_TYPE_NATIVE, + IconUrl: "https://cdn.sonr.land/BTC.svg", + }, + { + Name: "Ethereum", + Symbol: "ETH", + Hrp: "eth", + Index: 64, + AssetType: AssetType_ASSET_TYPE_NATIVE, + IconUrl: "https://cdn.sonr.land/ETH.svg", + }, + { + Name: "Sonr", + Symbol: "SNR", + Hrp: "idx", + Index: 703, + AssetType: AssetType_ASSET_TYPE_NATIVE, + IconUrl: "https://cdn.sonr.land/SNR.svg", + }, + } +} + +// DefaultChains returns the default chain infos: Bitcoin, Ethereum, and Sonr. +func DefaultChains() []*ChainInfo { + return []*ChainInfo{} +} + +// DefaultKeyInfos returns the default key infos: secp256k1, ed25519, keccak256, and bls12377. +func DefaultKeyInfos() []*KeyInfo { + return []*KeyInfo{ + // + // Identity Key Info + // + // Sonr Controller Key Info + { + Role: KeyRole_KEY_ROLE_INVOCATION, + Algorithm: KeyAlgorithm_KEY_ALGORITHM_ES256K, + Encoding: KeyEncoding_KEY_ENCODING_HEX, + }, + { + Role: KeyRole_KEY_ROLE_ASSERTION, + Algorithm: KeyAlgorithm_KEY_ALGORITHM_BLS12377, + Encoding: KeyEncoding_KEY_ENCODING_MULTIBASE, + }, + + // + // Blockchain Key Info + // + // Ethereum Key Info + { + Role: KeyRole_KEY_ROLE_DELEGATION, + Algorithm: KeyAlgorithm_KEY_ALGORITHM_KECCAK256, + Encoding: KeyEncoding_KEY_ENCODING_HEX, + }, + // Bitcoin Key Info + { + Role: KeyRole_KEY_ROLE_DELEGATION, + Algorithm: KeyAlgorithm_KEY_ALGORITHM_ES256K, + Encoding: KeyEncoding_KEY_ENCODING_HEX, + }, + + // + // Authentication Key Info + // + // Browser based WebAuthn + { + Role: KeyRole_KEY_ROLE_AUTHENTICATION, + Algorithm: KeyAlgorithm_KEY_ALGORITHM_ES256, + Encoding: KeyEncoding_KEY_ENCODING_RAW, + }, + // FIDO U2F + { + Role: KeyRole_KEY_ROLE_AUTHENTICATION, + Algorithm: KeyAlgorithm_KEY_ALGORITHM_ES256K, + Encoding: KeyEncoding_KEY_ENCODING_RAW, + }, + // Cross-Platform Passkeys + { + Role: KeyRole_KEY_ROLE_AUTHENTICATION, + Algorithm: KeyAlgorithm_KEY_ALGORITHM_EDDSA, + Encoding: KeyEncoding_KEY_ENCODING_RAW, + }, + } +} + +func DefaultOpenIDConfig() *OpenIDConfig { + return &OpenIDConfig{ + Issuer: "https://sonr.id", + AuthorizationEndpoint: "https://api.sonr.id/auth", + TokenEndpoint: "https://api.sonr.id/token", + UserinfoEndpoint: "https://api.sonr.id/userinfo", + ScopesSupported: []string{"openid", "profile", "email", "web3", "sonr"}, + ResponseTypesSupported: []string{"code"}, + ResponseModesSupported: []string{"query", "form_post"}, + GrantTypesSupported: []string{"authorization_code", "refresh_token"}, + AcrValuesSupported: []string{"passkey"}, + SubjectTypesSupported: []string{"public"}, + } +} diff --git a/x/did/types/pub_key.go b/x/did/types/ec_point.go similarity index 91% rename from x/did/types/pub_key.go rename to x/did/types/ec_point.go index 1ed57f2ce..8ede36958 100644 --- a/x/did/types/pub_key.go +++ b/x/did/types/ec_point.go @@ -11,7 +11,7 @@ import ( // VerifySignature verifies the signature of a message func VerifySignature(key []byte, msg []byte, sig []byte) bool { - pp, err := BuildEcPoint(key) + pp, err := buildEcPoint(key) if err != nil { return false } @@ -29,7 +29,7 @@ func VerifySignature(key []byte, msg []byte, sig []byte) bool { } // BuildEcPoint builds an elliptic curve point from a compressed byte slice -func BuildEcPoint(pubKey []byte) (*curves.EcPoint, error) { +func buildEcPoint(pubKey []byte) (*curves.EcPoint, error) { crv := curves.K256() x := new(big.Int).SetBytes(pubKey[1:33]) y := new(big.Int).SetBytes(pubKey[33:]) diff --git a/x/did/types/enums.pb.go b/x/did/types/enums.pb.go deleted file mode 100644 index 5d96c7ec0..000000000 --- a/x/did/types/enums.pb.go +++ /dev/null @@ -1,120 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: did/v1/enums.proto - -package types - -import ( - fmt "fmt" - _ "github.com/cosmos/cosmos-sdk/types/tx/amino" - _ "github.com/cosmos/gogoproto/gogoproto" - proto "github.com/cosmos/gogoproto/proto" - math "math" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -// PermissionScope define the Capabilities Controllers can grant for Services -type PermissionScope int32 - -const ( - PermissionScope_PERMISSION_SCOPE_UNSPECIFIED PermissionScope = 0 - PermissionScope_PERMISSION_SCOPE_PROFILE_NAME PermissionScope = 1 - PermissionScope_PERMISSION_SCOPE_IDENTIFIERS_EMAIL PermissionScope = 2 - PermissionScope_PERMISSION_SCOPE_IDENTIFIERS_PHONE PermissionScope = 3 - PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_READ PermissionScope = 4 - PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_WRITE PermissionScope = 5 - PermissionScope_PERMISSION_SCOPE_WALLETS_READ PermissionScope = 6 - PermissionScope_PERMISSION_SCOPE_WALLETS_CREATE PermissionScope = 7 - PermissionScope_PERMISSION_SCOPE_WALLETS_SUBSCRIBE PermissionScope = 8 - PermissionScope_PERMISSION_SCOPE_WALLETS_UPDATE PermissionScope = 9 - PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_VERIFY PermissionScope = 10 - PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_BROADCAST PermissionScope = 11 - PermissionScope_PERMISSION_SCOPE_ADMIN_USER PermissionScope = 12 - PermissionScope_PERMISSION_SCOPE_ADMIN_VALIDATOR PermissionScope = 13 -) - -var PermissionScope_name = map[int32]string{ - 0: "PERMISSION_SCOPE_UNSPECIFIED", - 1: "PERMISSION_SCOPE_PROFILE_NAME", - 2: "PERMISSION_SCOPE_IDENTIFIERS_EMAIL", - 3: "PERMISSION_SCOPE_IDENTIFIERS_PHONE", - 4: "PERMISSION_SCOPE_TRANSACTIONS_READ", - 5: "PERMISSION_SCOPE_TRANSACTIONS_WRITE", - 6: "PERMISSION_SCOPE_WALLETS_READ", - 7: "PERMISSION_SCOPE_WALLETS_CREATE", - 8: "PERMISSION_SCOPE_WALLETS_SUBSCRIBE", - 9: "PERMISSION_SCOPE_WALLETS_UPDATE", - 10: "PERMISSION_SCOPE_TRANSACTIONS_VERIFY", - 11: "PERMISSION_SCOPE_TRANSACTIONS_BROADCAST", - 12: "PERMISSION_SCOPE_ADMIN_USER", - 13: "PERMISSION_SCOPE_ADMIN_VALIDATOR", -} - -var PermissionScope_value = map[string]int32{ - "PERMISSION_SCOPE_UNSPECIFIED": 0, - "PERMISSION_SCOPE_PROFILE_NAME": 1, - "PERMISSION_SCOPE_IDENTIFIERS_EMAIL": 2, - "PERMISSION_SCOPE_IDENTIFIERS_PHONE": 3, - "PERMISSION_SCOPE_TRANSACTIONS_READ": 4, - "PERMISSION_SCOPE_TRANSACTIONS_WRITE": 5, - "PERMISSION_SCOPE_WALLETS_READ": 6, - "PERMISSION_SCOPE_WALLETS_CREATE": 7, - "PERMISSION_SCOPE_WALLETS_SUBSCRIBE": 8, - "PERMISSION_SCOPE_WALLETS_UPDATE": 9, - "PERMISSION_SCOPE_TRANSACTIONS_VERIFY": 10, - "PERMISSION_SCOPE_TRANSACTIONS_BROADCAST": 11, - "PERMISSION_SCOPE_ADMIN_USER": 12, - "PERMISSION_SCOPE_ADMIN_VALIDATOR": 13, -} - -func (x PermissionScope) String() string { - return proto.EnumName(PermissionScope_name, int32(x)) -} - -func (PermissionScope) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_001c58538597e328, []int{0} -} - -func init() { - proto.RegisterEnum("did.v1.PermissionScope", PermissionScope_name, PermissionScope_value) -} - -func init() { proto.RegisterFile("did/v1/enums.proto", fileDescriptor_001c58538597e328) } - -var fileDescriptor_001c58538597e328 = []byte{ - // 388 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0xd2, 0xc1, 0x6e, 0xd3, 0x30, - 0x18, 0x07, 0xf0, 0x04, 0x46, 0x01, 0x03, 0xc2, 0x58, 0x9c, 0x06, 0x64, 0x63, 0x9b, 0x18, 0x02, - 0xa9, 0xd6, 0xc4, 0x95, 0x8b, 0x93, 0x7c, 0x15, 0x96, 0x12, 0x27, 0xb2, 0x9d, 0x4d, 0x70, 0x89, - 0xd6, 0x26, 0x6a, 0x73, 0x48, 0x5c, 0x35, 0x6d, 0xa1, 0x6f, 0xc1, 0x73, 0xf0, 0x24, 0x1c, 0x7b, - 0xe4, 0x88, 0xda, 0x17, 0x41, 0x69, 0xe1, 0xd4, 0x36, 0x5c, 0x2c, 0xeb, 0xf3, 0x4f, 0x7f, 0x7d, - 0x96, 0xfe, 0x88, 0x64, 0x45, 0x46, 0xe7, 0x57, 0x34, 0xaf, 0x66, 0x65, 0xdd, 0x1d, 0x4f, 0xcc, - 0xd4, 0x90, 0x4e, 0x56, 0x64, 0xdd, 0xf9, 0xd5, 0xf1, 0xf3, 0xa1, 0x19, 0x9a, 0xcd, 0x88, 0x36, - 0xb7, 0xed, 0xeb, 0xf1, 0xb3, 0xdb, 0xb2, 0xa8, 0x0c, 0xdd, 0x9c, 0xdb, 0xd1, 0xbb, 0x1f, 0x47, - 0xe8, 0x69, 0x9c, 0x4f, 0xca, 0xa2, 0xae, 0x0b, 0x53, 0xa9, 0x81, 0x19, 0xe7, 0xe4, 0x14, 0xbd, - 0x8c, 0x41, 0x86, 0x5c, 0x29, 0x1e, 0x89, 0x54, 0x79, 0x51, 0x0c, 0x69, 0x22, 0x54, 0x0c, 0x1e, - 0xef, 0x71, 0xf0, 0xb1, 0x45, 0x5e, 0xa3, 0x57, 0x3b, 0x22, 0x96, 0x51, 0x8f, 0x07, 0x90, 0x0a, - 0x16, 0x02, 0xb6, 0xc9, 0x1b, 0x74, 0xb6, 0x43, 0xb8, 0x0f, 0x42, 0x37, 0x19, 0x52, 0xa5, 0x10, - 0x32, 0x1e, 0xe0, 0x3b, 0xff, 0x75, 0xf1, 0xa7, 0x48, 0x00, 0xbe, 0xbb, 0xd7, 0x69, 0xc9, 0x84, - 0x62, 0x9e, 0xe6, 0x91, 0x50, 0xa9, 0x04, 0xe6, 0xe3, 0x23, 0x72, 0x89, 0xce, 0xdb, 0xdd, 0x8d, - 0xe4, 0x1a, 0xf0, 0xbd, 0xbd, 0x7f, 0xb8, 0x61, 0x41, 0x00, 0xfa, 0x6f, 0x56, 0x87, 0x9c, 0xa3, - 0x93, 0x83, 0xc4, 0x93, 0xc0, 0x34, 0xe0, 0xfb, 0x7b, 0x17, 0xfb, 0x87, 0x54, 0xe2, 0x2a, 0x4f, - 0x72, 0x17, 0xf0, 0x83, 0xd6, 0xb0, 0x24, 0xf6, 0x9b, 0xb0, 0x87, 0xe4, 0x2d, 0xba, 0x68, 0xdf, - 0xfe, 0x1a, 0x24, 0xef, 0x7d, 0xc6, 0x88, 0xbc, 0x47, 0x97, 0xed, 0xd2, 0x95, 0x11, 0xf3, 0x3d, - 0xa6, 0x34, 0x7e, 0x44, 0x4e, 0xd0, 0x8b, 0x1d, 0xcc, 0xfc, 0x90, 0x8b, 0x34, 0x51, 0x20, 0xf1, - 0x63, 0x72, 0x81, 0x4e, 0x0f, 0x80, 0x6b, 0x16, 0x70, 0x9f, 0xe9, 0x48, 0xe2, 0x27, 0xee, 0xc7, - 0x9f, 0x2b, 0xc7, 0x5e, 0xae, 0x1c, 0xfb, 0xf7, 0xca, 0xb1, 0xbf, 0xaf, 0x1d, 0x6b, 0xb9, 0x76, - 0xac, 0x5f, 0x6b, 0xc7, 0xfa, 0x72, 0x36, 0x2c, 0xa6, 0xa3, 0x59, 0xbf, 0x3b, 0x30, 0x25, 0x35, - 0x55, 0x6d, 0xaa, 0x09, 0x1d, 0x7d, 0xbd, 0x5d, 0xd0, 0x6f, 0xb4, 0x29, 0xe9, 0x74, 0x31, 0xce, - 0xeb, 0x7e, 0x67, 0xd3, 0xb8, 0x0f, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x9e, 0x1a, 0xa8, 0xd9, - 0xb8, 0x02, 0x00, 0x00, -} diff --git a/x/did/types/errors.go b/x/did/types/errors.go index 9a8789fce..e6ebdfcbb 100644 --- a/x/did/types/errors.go +++ b/x/did/types/errors.go @@ -12,4 +12,5 @@ var ( ErrMinimumAssertions = sdkerrors.Register(ModuleName, 300, "at least one assertion is required for account initialization") ErrInvalidControllers = sdkerrors.Register(ModuleName, 301, "no more than one controller can be used for account initialization") ErrMaximumAuthenticators = sdkerrors.Register(ModuleName, 302, "more authenticators provided than the total accepted count") + ErrUnsupportedKeyEncoding = sdkerrors.Register(ModuleName, 400, "unsupported key encoding") ) diff --git a/x/did/types/extractor.go b/x/did/types/extractor.go new file mode 100644 index 000000000..1f49d4fda --- /dev/null +++ b/x/did/types/extractor.go @@ -0,0 +1,18 @@ +package types + +import didv1 "github.com/onsonr/sonr/api/did/v1" + +func (m *MsgRegisterService) ExtractServiceRecord() (*didv1.ServiceRecord, error) { + return &didv1.ServiceRecord{ + Controller: m.Controller, + OriginUri: m.OriginUri, + Description: m.Description, + }, nil +} + +func convertPermissions(permissions *Permissions) *didv1.Permissions { + if permissions == nil { + return nil + } + return &didv1.Permissions{} +} diff --git a/x/did/types/genesis.go b/x/did/types/genesis.go index 27328baac..1541cd439 100644 --- a/x/did/types/genesis.go +++ b/x/did/types/genesis.go @@ -25,7 +25,12 @@ func (gs GenesisState) Validate() error { // DefaultParams returns default module parameters. func DefaultParams() Params { - return Params{} + return Params{ + WhitelistedAssets: DefaultAssets(), + WhitelistedChains: DefaultChains(), + AllowedPublicKeys: DefaultKeyInfos(), + OpenidConfig: DefaultOpenIDConfig(), + } } // Stringer method for Params. diff --git a/x/did/types/genesis.pb.go b/x/did/types/genesis.pb.go index 2eec3f876..a903a9f70 100644 --- a/x/did/types/genesis.pb.go +++ b/x/did/types/genesis.pb.go @@ -25,155 +25,6 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// DIDNamespace define the different namespaces of DID -type DIDNamespace int32 - -const ( - DIDNamespace_DID_NAMESPACE_UNSPECIFIED DIDNamespace = 0 - DIDNamespace_DID_NAMESPACE_IPFS DIDNamespace = 1 - DIDNamespace_DID_NAMESPACE_SONR DIDNamespace = 2 - DIDNamespace_DID_NAMESPACE_BITCOIN DIDNamespace = 3 - DIDNamespace_DID_NAMESPACE_ETHEREUM DIDNamespace = 4 - DIDNamespace_DID_NAMESPACE_IBC DIDNamespace = 5 -) - -var DIDNamespace_name = map[int32]string{ - 0: "DID_NAMESPACE_UNSPECIFIED", - 1: "DID_NAMESPACE_IPFS", - 2: "DID_NAMESPACE_SONR", - 3: "DID_NAMESPACE_BITCOIN", - 4: "DID_NAMESPACE_ETHEREUM", - 5: "DID_NAMESPACE_IBC", -} - -var DIDNamespace_value = map[string]int32{ - "DID_NAMESPACE_UNSPECIFIED": 0, - "DID_NAMESPACE_IPFS": 1, - "DID_NAMESPACE_SONR": 2, - "DID_NAMESPACE_BITCOIN": 3, - "DID_NAMESPACE_ETHEREUM": 4, - "DID_NAMESPACE_IBC": 5, -} - -func (x DIDNamespace) String() string { - return proto.EnumName(DIDNamespace_name, int32(x)) -} - -func (DIDNamespace) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_fda181cae44f7c00, []int{0} -} - -// KeyKTind defines the kind of key -type KeyType int32 - -const ( - KeyType_KEY_TYPE_UNSPECIFIED KeyType = 0 - // Blockchain key types - KeyType_KEY_TYPE_SECP256K1 KeyType = 1 - KeyType_KEY_TYPE_ED25519 KeyType = 2 - KeyType_KEY_TYPE_KECCAK KeyType = 3 - KeyType_KEY_TYPE_BLS12381 KeyType = 4 - KeyType_KEY_TYPE_X25519 KeyType = 5 - KeyType_KEY_TYPE_SCHNORR KeyType = 6 - // Webauthn and FIDO key types - KeyType_KEY_TYPE_WEBAUTHN KeyType = 7 - KeyType_KEY_TYPE_FIDO KeyType = 8 -) - -var KeyType_name = map[int32]string{ - 0: "KEY_TYPE_UNSPECIFIED", - 1: "KEY_TYPE_SECP256K1", - 2: "KEY_TYPE_ED25519", - 3: "KEY_TYPE_KECCAK", - 4: "KEY_TYPE_BLS12381", - 5: "KEY_TYPE_X25519", - 6: "KEY_TYPE_SCHNORR", - 7: "KEY_TYPE_WEBAUTHN", - 8: "KEY_TYPE_FIDO", -} - -var KeyType_value = map[string]int32{ - "KEY_TYPE_UNSPECIFIED": 0, - "KEY_TYPE_SECP256K1": 1, - "KEY_TYPE_ED25519": 2, - "KEY_TYPE_KECCAK": 3, - "KEY_TYPE_BLS12381": 4, - "KEY_TYPE_X25519": 5, - "KEY_TYPE_SCHNORR": 6, - "KEY_TYPE_WEBAUTHN": 7, - "KEY_TYPE_FIDO": 8, -} - -func (x KeyType) String() string { - return proto.EnumName(KeyType_name, int32(x)) -} - -func (KeyType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_fda181cae44f7c00, []int{1} -} - -// PermissionScope define the Capabilities Controllers can grant for Services -type PermissionScope int32 - -const ( - PermissionScope_PERMISSION_SCOPE_UNSPECIFIED PermissionScope = 0 - PermissionScope_PERMISSION_SCOPE_BASIC_INFO PermissionScope = 1 - PermissionScope_PERMISSION_SCOPE_RECORDS_READ PermissionScope = 2 - PermissionScope_PERMISSION_SCOPE_RECORDS_WRITE PermissionScope = 3 - PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_READ PermissionScope = 4 - PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_WRITE PermissionScope = 5 - PermissionScope_PERMISSION_SCOPE_WALLETS_READ PermissionScope = 6 - PermissionScope_PERMISSION_SCOPE_WALLETS_CREATE PermissionScope = 7 - PermissionScope_PERMISSION_SCOPE_WALLETS_SUBSCRIBE PermissionScope = 8 - PermissionScope_PERMISSION_SCOPE_WALLETS_UPDATE PermissionScope = 9 - PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_VERIFY PermissionScope = 10 - PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_BROADCAST PermissionScope = 11 - PermissionScope_PERMISSION_SCOPE_ADMIN_USER PermissionScope = 12 - PermissionScope_PERMISSION_SCOPE_ADMIN_VALIDATOR PermissionScope = 13 -) - -var PermissionScope_name = map[int32]string{ - 0: "PERMISSION_SCOPE_UNSPECIFIED", - 1: "PERMISSION_SCOPE_BASIC_INFO", - 2: "PERMISSION_SCOPE_RECORDS_READ", - 3: "PERMISSION_SCOPE_RECORDS_WRITE", - 4: "PERMISSION_SCOPE_TRANSACTIONS_READ", - 5: "PERMISSION_SCOPE_TRANSACTIONS_WRITE", - 6: "PERMISSION_SCOPE_WALLETS_READ", - 7: "PERMISSION_SCOPE_WALLETS_CREATE", - 8: "PERMISSION_SCOPE_WALLETS_SUBSCRIBE", - 9: "PERMISSION_SCOPE_WALLETS_UPDATE", - 10: "PERMISSION_SCOPE_TRANSACTIONS_VERIFY", - 11: "PERMISSION_SCOPE_TRANSACTIONS_BROADCAST", - 12: "PERMISSION_SCOPE_ADMIN_USER", - 13: "PERMISSION_SCOPE_ADMIN_VALIDATOR", -} - -var PermissionScope_value = map[string]int32{ - "PERMISSION_SCOPE_UNSPECIFIED": 0, - "PERMISSION_SCOPE_BASIC_INFO": 1, - "PERMISSION_SCOPE_RECORDS_READ": 2, - "PERMISSION_SCOPE_RECORDS_WRITE": 3, - "PERMISSION_SCOPE_TRANSACTIONS_READ": 4, - "PERMISSION_SCOPE_TRANSACTIONS_WRITE": 5, - "PERMISSION_SCOPE_WALLETS_READ": 6, - "PERMISSION_SCOPE_WALLETS_CREATE": 7, - "PERMISSION_SCOPE_WALLETS_SUBSCRIBE": 8, - "PERMISSION_SCOPE_WALLETS_UPDATE": 9, - "PERMISSION_SCOPE_TRANSACTIONS_VERIFY": 10, - "PERMISSION_SCOPE_TRANSACTIONS_BROADCAST": 11, - "PERMISSION_SCOPE_ADMIN_USER": 12, - "PERMISSION_SCOPE_ADMIN_VALIDATOR": 13, -} - -func (x PermissionScope) String() string { - return proto.EnumName(PermissionScope_name, int32(x)) -} - -func (PermissionScope) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_fda181cae44f7c00, []int{2} -} - // GenesisState defines the module genesis state type GenesisState struct { // Params defines all the parameters of the module. @@ -228,6 +79,8 @@ type Params struct { WhitelistedChains []*ChainInfo `protobuf:"bytes,2,rep,name=whitelisted_chains,json=whitelistedChains,proto3" json:"whitelisted_chains,omitempty"` // Whitelisted Key Types AllowedPublicKeys []*KeyInfo `protobuf:"bytes,3,rep,name=allowed_public_keys,json=allowedPublicKeys,proto3" json:"allowed_public_keys,omitempty"` + // OpenIDConfig defines the base openid configuration across all did services + OpenidConfig *OpenIDConfig `protobuf:"bytes,4,opt,name=openid_config,json=openidConfig,proto3" json:"openid_config,omitempty"` } func (m *Params) Reset() { *m = Params{} } @@ -283,22 +136,29 @@ func (m *Params) GetAllowedPublicKeys() []*KeyInfo { return nil } +func (m *Params) GetOpenidConfig() *OpenIDConfig { + if m != nil { + return m.OpenidConfig + } + return nil +} + // AssetInfo defines the asset info type AssetInfo struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` - AssetType string `protobuf:"bytes,4,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` - OriginChain string `protobuf:"bytes,5,opt,name=origin_chain,json=originChain,proto3" json:"origin_chain,omitempty"` - OriginDenom string `protobuf:"bytes,6,opt,name=origin_denom,json=originDenom,proto3" json:"origin_denom,omitempty"` - Decimals int32 `protobuf:"varint,7,opt,name=decimals,proto3" json:"decimals,omitempty"` - Description string `protobuf:"bytes,8,opt,name=description,proto3" json:"description,omitempty"` - ImageUrl string `protobuf:"bytes,9,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"` - CoingeckoId string `protobuf:"bytes,10,opt,name=coingecko_id,json=coingeckoId,proto3" json:"coingecko_id,omitempty"` - IsEnabled bool `protobuf:"varint,11,opt,name=is_enabled,json=isEnabled,proto3" json:"is_enabled,omitempty"` - IbcPath string `protobuf:"bytes,12,opt,name=ibc_path,json=ibcPath,proto3" json:"ibc_path,omitempty"` - IbcChannel string `protobuf:"bytes,13,opt,name=ibc_channel,json=ibcChannel,proto3" json:"ibc_channel,omitempty"` - IbcPort string `protobuf:"bytes,14,opt,name=ibc_port,json=ibcPort,proto3" json:"ibc_port,omitempty"` + // The coin type index for bip44 path + Index int64 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` + // The hrp for bech32 address + Hrp string `protobuf:"bytes,2,opt,name=hrp,proto3" json:"hrp,omitempty"` + // The coin symbol + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + // The coin name + AssetType AssetType `protobuf:"varint,4,opt,name=asset_type,json=assetType,proto3,enum=did.v1.AssetType" json:"asset_type,omitempty"` + // The name of the asset + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + // The Method of the did namespace + Method string `protobuf:"bytes,6,opt,name=method,proto3" json:"method,omitempty"` + // The icon url + IconUrl string `protobuf:"bytes,7,opt,name=icon_url,json=iconUrl,proto3" json:"icon_url,omitempty"` } func (m *AssetInfo) Reset() { *m = AssetInfo{} } @@ -334,16 +194,16 @@ func (m *AssetInfo) XXX_DiscardUnknown() { var xxx_messageInfo_AssetInfo proto.InternalMessageInfo -func (m *AssetInfo) GetId() string { +func (m *AssetInfo) GetIndex() int64 { if m != nil { - return m.Id + return m.Index } - return "" + return 0 } -func (m *AssetInfo) GetDenom() string { +func (m *AssetInfo) GetHrp() string { if m != nil { - return m.Denom + return m.Hrp } return "" } @@ -355,95 +215,41 @@ func (m *AssetInfo) GetSymbol() string { return "" } -func (m *AssetInfo) GetAssetType() string { +func (m *AssetInfo) GetAssetType() AssetType { if m != nil { return m.AssetType } - return "" + return AssetType_ASSET_TYPE_UNSPECIFIED } -func (m *AssetInfo) GetOriginChain() string { +func (m *AssetInfo) GetName() string { if m != nil { - return m.OriginChain + return m.Name } return "" } -func (m *AssetInfo) GetOriginDenom() string { +func (m *AssetInfo) GetMethod() string { if m != nil { - return m.OriginDenom + return m.Method } return "" } -func (m *AssetInfo) GetDecimals() int32 { +func (m *AssetInfo) GetIconUrl() string { if m != nil { - return m.Decimals - } - return 0 -} - -func (m *AssetInfo) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *AssetInfo) GetImageUrl() string { - if m != nil { - return m.ImageUrl - } - return "" -} - -func (m *AssetInfo) GetCoingeckoId() string { - if m != nil { - return m.CoingeckoId - } - return "" -} - -func (m *AssetInfo) GetIsEnabled() bool { - if m != nil { - return m.IsEnabled - } - return false -} - -func (m *AssetInfo) GetIbcPath() string { - if m != nil { - return m.IbcPath - } - return "" -} - -func (m *AssetInfo) GetIbcChannel() string { - if m != nil { - return m.IbcChannel - } - return "" -} - -func (m *AssetInfo) GetIbcPort() string { - if m != nil { - return m.IbcPort + return m.IconUrl } return "" } // ChainInfo defines the chain info type ChainInfo struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Symbol string `protobuf:"bytes,4,opt,name=symbol,proto3" json:"symbol,omitempty"` - Bech32Prefix string `protobuf:"bytes,5,opt,name=bech32_prefix,json=bech32Prefix,proto3" json:"bech32_prefix,omitempty"` - GenesisTime string `protobuf:"bytes,6,opt,name=genesis_time,json=genesisTime,proto3" json:"genesis_time,omitempty"` - GrpcEndpoints []*ChainInfo_Endpoint `protobuf:"bytes,7,rep,name=grpc_endpoints,json=grpcEndpoints,proto3" json:"grpc_endpoints,omitempty"` - RestEndpoints []*ChainInfo_Endpoint `protobuf:"bytes,8,rep,name=rest_endpoints,json=restEndpoints,proto3" json:"rest_endpoints,omitempty"` - Explorer *ChainInfo_ExplorerInfo `protobuf:"bytes,9,opt,name=explorer,proto3" json:"explorer,omitempty"` - FeeInfo *ChainInfo_FeeInfo `protobuf:"bytes,10,opt,name=fee_info,json=feeInfo,proto3" json:"fee_info,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Symbol string `protobuf:"bytes,4,opt,name=symbol,proto3" json:"symbol,omitempty"` + Validators []*ValidatorInfo `protobuf:"bytes,5,rep,name=validators,proto3" json:"validators,omitempty"` } func (m *ChainInfo) Reset() { *m = ChainInfo{} } @@ -507,237 +313,20 @@ func (m *ChainInfo) GetSymbol() string { return "" } -func (m *ChainInfo) GetBech32Prefix() string { +func (m *ChainInfo) GetValidators() []*ValidatorInfo { if m != nil { - return m.Bech32Prefix - } - return "" -} - -func (m *ChainInfo) GetGenesisTime() string { - if m != nil { - return m.GenesisTime - } - return "" -} - -func (m *ChainInfo) GetGrpcEndpoints() []*ChainInfo_Endpoint { - if m != nil { - return m.GrpcEndpoints + return m.Validators } return nil } -func (m *ChainInfo) GetRestEndpoints() []*ChainInfo_Endpoint { - if m != nil { - return m.RestEndpoints - } - return nil -} - -func (m *ChainInfo) GetExplorer() *ChainInfo_ExplorerInfo { - if m != nil { - return m.Explorer - } - return nil -} - -func (m *ChainInfo) GetFeeInfo() *ChainInfo_FeeInfo { - if m != nil { - return m.FeeInfo - } - return nil -} - -// Endpoint defines an endpoint -type ChainInfo_Endpoint struct { - Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` - IsPrimary bool `protobuf:"varint,2,opt,name=is_primary,json=isPrimary,proto3" json:"is_primary,omitempty"` -} - -func (m *ChainInfo_Endpoint) Reset() { *m = ChainInfo_Endpoint{} } -func (m *ChainInfo_Endpoint) String() string { return proto.CompactTextString(m) } -func (*ChainInfo_Endpoint) ProtoMessage() {} -func (*ChainInfo_Endpoint) Descriptor() ([]byte, []int) { - return fileDescriptor_fda181cae44f7c00, []int{3, 0} -} -func (m *ChainInfo_Endpoint) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ChainInfo_Endpoint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ChainInfo_Endpoint.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ChainInfo_Endpoint) XXX_Merge(src proto.Message) { - xxx_messageInfo_ChainInfo_Endpoint.Merge(m, src) -} -func (m *ChainInfo_Endpoint) XXX_Size() int { - return m.Size() -} -func (m *ChainInfo_Endpoint) XXX_DiscardUnknown() { - xxx_messageInfo_ChainInfo_Endpoint.DiscardUnknown(m) -} - -var xxx_messageInfo_ChainInfo_Endpoint proto.InternalMessageInfo - -func (m *ChainInfo_Endpoint) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -func (m *ChainInfo_Endpoint) GetIsPrimary() bool { - if m != nil { - return m.IsPrimary - } - return false -} - -// ExplorerInfo defines the explorer info -type ChainInfo_ExplorerInfo struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` -} - -func (m *ChainInfo_ExplorerInfo) Reset() { *m = ChainInfo_ExplorerInfo{} } -func (m *ChainInfo_ExplorerInfo) String() string { return proto.CompactTextString(m) } -func (*ChainInfo_ExplorerInfo) ProtoMessage() {} -func (*ChainInfo_ExplorerInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_fda181cae44f7c00, []int{3, 1} -} -func (m *ChainInfo_ExplorerInfo) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ChainInfo_ExplorerInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ChainInfo_ExplorerInfo.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ChainInfo_ExplorerInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_ChainInfo_ExplorerInfo.Merge(m, src) -} -func (m *ChainInfo_ExplorerInfo) XXX_Size() int { - return m.Size() -} -func (m *ChainInfo_ExplorerInfo) XXX_DiscardUnknown() { - xxx_messageInfo_ChainInfo_ExplorerInfo.DiscardUnknown(m) -} - -var xxx_messageInfo_ChainInfo_ExplorerInfo proto.InternalMessageInfo - -func (m *ChainInfo_ExplorerInfo) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ChainInfo_ExplorerInfo) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -// FeeInfo defines a fee info -type ChainInfo_FeeInfo struct { - BaseDenom string `protobuf:"bytes,1,opt,name=base_denom,json=baseDenom,proto3" json:"base_denom,omitempty"` - FeeRates []string `protobuf:"bytes,2,rep,name=fee_rates,json=feeRates,proto3" json:"fee_rates,omitempty"` - InitGasLimit int32 `protobuf:"varint,3,opt,name=init_gas_limit,json=initGasLimit,proto3" json:"init_gas_limit,omitempty"` - IsSimulable bool `protobuf:"varint,4,opt,name=is_simulable,json=isSimulable,proto3" json:"is_simulable,omitempty"` - GasMultiply float64 `protobuf:"fixed64,5,opt,name=gas_multiply,json=gasMultiply,proto3" json:"gas_multiply,omitempty"` -} - -func (m *ChainInfo_FeeInfo) Reset() { *m = ChainInfo_FeeInfo{} } -func (m *ChainInfo_FeeInfo) String() string { return proto.CompactTextString(m) } -func (*ChainInfo_FeeInfo) ProtoMessage() {} -func (*ChainInfo_FeeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_fda181cae44f7c00, []int{3, 2} -} -func (m *ChainInfo_FeeInfo) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ChainInfo_FeeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ChainInfo_FeeInfo.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ChainInfo_FeeInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_ChainInfo_FeeInfo.Merge(m, src) -} -func (m *ChainInfo_FeeInfo) XXX_Size() int { - return m.Size() -} -func (m *ChainInfo_FeeInfo) XXX_DiscardUnknown() { - xxx_messageInfo_ChainInfo_FeeInfo.DiscardUnknown(m) -} - -var xxx_messageInfo_ChainInfo_FeeInfo proto.InternalMessageInfo - -func (m *ChainInfo_FeeInfo) GetBaseDenom() string { - if m != nil { - return m.BaseDenom - } - return "" -} - -func (m *ChainInfo_FeeInfo) GetFeeRates() []string { - if m != nil { - return m.FeeRates - } - return nil -} - -func (m *ChainInfo_FeeInfo) GetInitGasLimit() int32 { - if m != nil { - return m.InitGasLimit - } - return 0 -} - -func (m *ChainInfo_FeeInfo) GetIsSimulable() bool { - if m != nil { - return m.IsSimulable - } - return false -} - -func (m *ChainInfo_FeeInfo) GetGasMultiply() float64 { - if m != nil { - return m.GasMultiply - } - return 0 -} - // KeyInfo defines information for accepted PubKey types type KeyInfo struct { - Kind KeyType `protobuf:"varint,1,opt,name=kind,proto3,enum=did.v1.KeyType" json:"kind,omitempty"` - Algorithm string `protobuf:"bytes,2,opt,name=algorithm,proto3" json:"algorithm,omitempty"` - Curve string `protobuf:"bytes,3,opt,name=curve,proto3" json:"curve,omitempty"` - Encoding string `protobuf:"bytes,4,opt,name=encoding,proto3" json:"encoding,omitempty"` + Role KeyRole `protobuf:"varint,1,opt,name=role,proto3,enum=did.v1.KeyRole" json:"role,omitempty"` + Algorithm KeyAlgorithm `protobuf:"varint,2,opt,name=algorithm,proto3,enum=did.v1.KeyAlgorithm" json:"algorithm,omitempty"` + Encoding KeyEncoding `protobuf:"varint,3,opt,name=encoding,proto3,enum=did.v1.KeyEncoding" json:"encoding,omitempty"` + Curve KeyCurve `protobuf:"varint,4,opt,name=curve,proto3,enum=did.v1.KeyCurve" json:"curve,omitempty"` + Type KeyType `protobuf:"varint,5,opt,name=type,proto3,enum=did.v1.KeyType" json:"type,omitempty"` } func (m *KeyInfo) Reset() { *m = KeyInfo{} } @@ -773,136 +362,568 @@ func (m *KeyInfo) XXX_DiscardUnknown() { var xxx_messageInfo_KeyInfo proto.InternalMessageInfo -func (m *KeyInfo) GetKind() KeyType { +func (m *KeyInfo) GetRole() KeyRole { if m != nil { - return m.Kind + return m.Role + } + return KeyRole_KEY_ROLE_UNSPECIFIED +} + +func (m *KeyInfo) GetAlgorithm() KeyAlgorithm { + if m != nil { + return m.Algorithm + } + return KeyAlgorithm_KEY_ALGORITHM_UNSPECIFIED +} + +func (m *KeyInfo) GetEncoding() KeyEncoding { + if m != nil { + return m.Encoding + } + return KeyEncoding_KEY_ENCODING_UNSPECIFIED +} + +func (m *KeyInfo) GetCurve() KeyCurve { + if m != nil { + return m.Curve + } + return KeyCurve_KEY_CURVE_UNSPECIFIED +} + +func (m *KeyInfo) GetType() KeyType { + if m != nil { + return m.Type } return KeyType_KEY_TYPE_UNSPECIFIED } -func (m *KeyInfo) GetAlgorithm() string { +// OpenIDConfig defines the base openid configuration across all did services +type OpenIDConfig struct { + Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"` + AuthorizationEndpoint string `protobuf:"bytes,2,opt,name=authorization_endpoint,json=authorizationEndpoint,proto3" json:"authorization_endpoint,omitempty"` + TokenEndpoint string `protobuf:"bytes,3,opt,name=token_endpoint,json=tokenEndpoint,proto3" json:"token_endpoint,omitempty"` + UserinfoEndpoint string `protobuf:"bytes,4,opt,name=userinfo_endpoint,json=userinfoEndpoint,proto3" json:"userinfo_endpoint,omitempty"` + ScopesSupported []string `protobuf:"bytes,5,rep,name=scopes_supported,json=scopesSupported,proto3" json:"scopes_supported,omitempty"` + ResponseTypesSupported []string `protobuf:"bytes,6,rep,name=response_types_supported,json=responseTypesSupported,proto3" json:"response_types_supported,omitempty"` + ResponseModesSupported []string `protobuf:"bytes,7,rep,name=response_modes_supported,json=responseModesSupported,proto3" json:"response_modes_supported,omitempty"` + GrantTypesSupported []string `protobuf:"bytes,8,rep,name=grant_types_supported,json=grantTypesSupported,proto3" json:"grant_types_supported,omitempty"` + AcrValuesSupported []string `protobuf:"bytes,9,rep,name=acr_values_supported,json=acrValuesSupported,proto3" json:"acr_values_supported,omitempty"` + SubjectTypesSupported []string `protobuf:"bytes,10,rep,name=subject_types_supported,json=subjectTypesSupported,proto3" json:"subject_types_supported,omitempty"` +} + +func (m *OpenIDConfig) Reset() { *m = OpenIDConfig{} } +func (m *OpenIDConfig) String() string { return proto.CompactTextString(m) } +func (*OpenIDConfig) ProtoMessage() {} +func (*OpenIDConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_fda181cae44f7c00, []int{5} +} +func (m *OpenIDConfig) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *OpenIDConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_OpenIDConfig.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *OpenIDConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_OpenIDConfig.Merge(m, src) +} +func (m *OpenIDConfig) XXX_Size() int { + return m.Size() +} +func (m *OpenIDConfig) XXX_DiscardUnknown() { + xxx_messageInfo_OpenIDConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_OpenIDConfig proto.InternalMessageInfo + +func (m *OpenIDConfig) GetIssuer() string { if m != nil { - return m.Algorithm + return m.Issuer } return "" } -func (m *KeyInfo) GetCurve() string { +func (m *OpenIDConfig) GetAuthorizationEndpoint() string { if m != nil { - return m.Curve + return m.AuthorizationEndpoint } return "" } -func (m *KeyInfo) GetEncoding() string { +func (m *OpenIDConfig) GetTokenEndpoint() string { if m != nil { - return m.Encoding + return m.TokenEndpoint + } + return "" +} + +func (m *OpenIDConfig) GetUserinfoEndpoint() string { + if m != nil { + return m.UserinfoEndpoint + } + return "" +} + +func (m *OpenIDConfig) GetScopesSupported() []string { + if m != nil { + return m.ScopesSupported + } + return nil +} + +func (m *OpenIDConfig) GetResponseTypesSupported() []string { + if m != nil { + return m.ResponseTypesSupported + } + return nil +} + +func (m *OpenIDConfig) GetResponseModesSupported() []string { + if m != nil { + return m.ResponseModesSupported + } + return nil +} + +func (m *OpenIDConfig) GetGrantTypesSupported() []string { + if m != nil { + return m.GrantTypesSupported + } + return nil +} + +func (m *OpenIDConfig) GetAcrValuesSupported() []string { + if m != nil { + return m.AcrValuesSupported + } + return nil +} + +func (m *OpenIDConfig) GetSubjectTypesSupported() []string { + if m != nil { + return m.SubjectTypesSupported + } + return nil +} + +// ValidatorInfo defines information for accepted Validator nodes +type ValidatorInfo struct { + Moniker string `protobuf:"bytes,1,opt,name=moniker,proto3" json:"moniker,omitempty"` + GrpcEndpoints []*ValidatorInfo_Endpoint `protobuf:"bytes,2,rep,name=grpc_endpoints,json=grpcEndpoints,proto3" json:"grpc_endpoints,omitempty"` + RestEndpoints []*ValidatorInfo_Endpoint `protobuf:"bytes,3,rep,name=rest_endpoints,json=restEndpoints,proto3" json:"rest_endpoints,omitempty"` + Explorer *ValidatorInfo_ExplorerInfo `protobuf:"bytes,4,opt,name=explorer,proto3" json:"explorer,omitempty"` + FeeInfo *ValidatorInfo_FeeInfo `protobuf:"bytes,5,opt,name=fee_info,json=feeInfo,proto3" json:"fee_info,omitempty"` + IbcChannel *ValidatorInfo_IBCChannel `protobuf:"bytes,6,opt,name=ibc_channel,json=ibcChannel,proto3" json:"ibc_channel,omitempty"` +} + +func (m *ValidatorInfo) Reset() { *m = ValidatorInfo{} } +func (m *ValidatorInfo) String() string { return proto.CompactTextString(m) } +func (*ValidatorInfo) ProtoMessage() {} +func (*ValidatorInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_fda181cae44f7c00, []int{6} +} +func (m *ValidatorInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ValidatorInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ValidatorInfo.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ValidatorInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_ValidatorInfo.Merge(m, src) +} +func (m *ValidatorInfo) XXX_Size() int { + return m.Size() +} +func (m *ValidatorInfo) XXX_DiscardUnknown() { + xxx_messageInfo_ValidatorInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_ValidatorInfo proto.InternalMessageInfo + +func (m *ValidatorInfo) GetMoniker() string { + if m != nil { + return m.Moniker + } + return "" +} + +func (m *ValidatorInfo) GetGrpcEndpoints() []*ValidatorInfo_Endpoint { + if m != nil { + return m.GrpcEndpoints + } + return nil +} + +func (m *ValidatorInfo) GetRestEndpoints() []*ValidatorInfo_Endpoint { + if m != nil { + return m.RestEndpoints + } + return nil +} + +func (m *ValidatorInfo) GetExplorer() *ValidatorInfo_ExplorerInfo { + if m != nil { + return m.Explorer + } + return nil +} + +func (m *ValidatorInfo) GetFeeInfo() *ValidatorInfo_FeeInfo { + if m != nil { + return m.FeeInfo + } + return nil +} + +func (m *ValidatorInfo) GetIbcChannel() *ValidatorInfo_IBCChannel { + if m != nil { + return m.IbcChannel + } + return nil +} + +// Endpoint defines an endpoint +type ValidatorInfo_Endpoint struct { + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + IsPrimary bool `protobuf:"varint,2,opt,name=is_primary,json=isPrimary,proto3" json:"is_primary,omitempty"` +} + +func (m *ValidatorInfo_Endpoint) Reset() { *m = ValidatorInfo_Endpoint{} } +func (m *ValidatorInfo_Endpoint) String() string { return proto.CompactTextString(m) } +func (*ValidatorInfo_Endpoint) ProtoMessage() {} +func (*ValidatorInfo_Endpoint) Descriptor() ([]byte, []int) { + return fileDescriptor_fda181cae44f7c00, []int{6, 0} +} +func (m *ValidatorInfo_Endpoint) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ValidatorInfo_Endpoint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ValidatorInfo_Endpoint.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ValidatorInfo_Endpoint) XXX_Merge(src proto.Message) { + xxx_messageInfo_ValidatorInfo_Endpoint.Merge(m, src) +} +func (m *ValidatorInfo_Endpoint) XXX_Size() int { + return m.Size() +} +func (m *ValidatorInfo_Endpoint) XXX_DiscardUnknown() { + xxx_messageInfo_ValidatorInfo_Endpoint.DiscardUnknown(m) +} + +var xxx_messageInfo_ValidatorInfo_Endpoint proto.InternalMessageInfo + +func (m *ValidatorInfo_Endpoint) GetUrl() string { + if m != nil { + return m.Url + } + return "" +} + +func (m *ValidatorInfo_Endpoint) GetIsPrimary() bool { + if m != nil { + return m.IsPrimary + } + return false +} + +// ExplorerInfo defines the explorer info +type ValidatorInfo_ExplorerInfo struct { + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` +} + +func (m *ValidatorInfo_ExplorerInfo) Reset() { *m = ValidatorInfo_ExplorerInfo{} } +func (m *ValidatorInfo_ExplorerInfo) String() string { return proto.CompactTextString(m) } +func (*ValidatorInfo_ExplorerInfo) ProtoMessage() {} +func (*ValidatorInfo_ExplorerInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_fda181cae44f7c00, []int{6, 1} +} +func (m *ValidatorInfo_ExplorerInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ValidatorInfo_ExplorerInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ValidatorInfo_ExplorerInfo.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ValidatorInfo_ExplorerInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_ValidatorInfo_ExplorerInfo.Merge(m, src) +} +func (m *ValidatorInfo_ExplorerInfo) XXX_Size() int { + return m.Size() +} +func (m *ValidatorInfo_ExplorerInfo) XXX_DiscardUnknown() { + xxx_messageInfo_ValidatorInfo_ExplorerInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_ValidatorInfo_ExplorerInfo proto.InternalMessageInfo + +func (m *ValidatorInfo_ExplorerInfo) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *ValidatorInfo_ExplorerInfo) GetUrl() string { + if m != nil { + return m.Url + } + return "" +} + +// FeeInfo defines a fee info +type ValidatorInfo_FeeInfo struct { + BaseDenom string `protobuf:"bytes,1,opt,name=base_denom,json=baseDenom,proto3" json:"base_denom,omitempty"` + FeeRates []string `protobuf:"bytes,2,rep,name=fee_rates,json=feeRates,proto3" json:"fee_rates,omitempty"` + InitGasLimit int32 `protobuf:"varint,3,opt,name=init_gas_limit,json=initGasLimit,proto3" json:"init_gas_limit,omitempty"` + IsSimulable bool `protobuf:"varint,4,opt,name=is_simulable,json=isSimulable,proto3" json:"is_simulable,omitempty"` + GasMultiply float64 `protobuf:"fixed64,5,opt,name=gas_multiply,json=gasMultiply,proto3" json:"gas_multiply,omitempty"` +} + +func (m *ValidatorInfo_FeeInfo) Reset() { *m = ValidatorInfo_FeeInfo{} } +func (m *ValidatorInfo_FeeInfo) String() string { return proto.CompactTextString(m) } +func (*ValidatorInfo_FeeInfo) ProtoMessage() {} +func (*ValidatorInfo_FeeInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_fda181cae44f7c00, []int{6, 2} +} +func (m *ValidatorInfo_FeeInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ValidatorInfo_FeeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ValidatorInfo_FeeInfo.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ValidatorInfo_FeeInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_ValidatorInfo_FeeInfo.Merge(m, src) +} +func (m *ValidatorInfo_FeeInfo) XXX_Size() int { + return m.Size() +} +func (m *ValidatorInfo_FeeInfo) XXX_DiscardUnknown() { + xxx_messageInfo_ValidatorInfo_FeeInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_ValidatorInfo_FeeInfo proto.InternalMessageInfo + +func (m *ValidatorInfo_FeeInfo) GetBaseDenom() string { + if m != nil { + return m.BaseDenom + } + return "" +} + +func (m *ValidatorInfo_FeeInfo) GetFeeRates() []string { + if m != nil { + return m.FeeRates + } + return nil +} + +func (m *ValidatorInfo_FeeInfo) GetInitGasLimit() int32 { + if m != nil { + return m.InitGasLimit + } + return 0 +} + +func (m *ValidatorInfo_FeeInfo) GetIsSimulable() bool { + if m != nil { + return m.IsSimulable + } + return false +} + +func (m *ValidatorInfo_FeeInfo) GetGasMultiply() float64 { + if m != nil { + return m.GasMultiply + } + return 0 +} + +// IBCChannel defines the IBC channel info +type ValidatorInfo_IBCChannel struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Port string `protobuf:"bytes,2,opt,name=port,proto3" json:"port,omitempty"` +} + +func (m *ValidatorInfo_IBCChannel) Reset() { *m = ValidatorInfo_IBCChannel{} } +func (m *ValidatorInfo_IBCChannel) String() string { return proto.CompactTextString(m) } +func (*ValidatorInfo_IBCChannel) ProtoMessage() {} +func (*ValidatorInfo_IBCChannel) Descriptor() ([]byte, []int) { + return fileDescriptor_fda181cae44f7c00, []int{6, 3} +} +func (m *ValidatorInfo_IBCChannel) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ValidatorInfo_IBCChannel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ValidatorInfo_IBCChannel.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ValidatorInfo_IBCChannel) XXX_Merge(src proto.Message) { + xxx_messageInfo_ValidatorInfo_IBCChannel.Merge(m, src) +} +func (m *ValidatorInfo_IBCChannel) XXX_Size() int { + return m.Size() +} +func (m *ValidatorInfo_IBCChannel) XXX_DiscardUnknown() { + xxx_messageInfo_ValidatorInfo_IBCChannel.DiscardUnknown(m) +} + +var xxx_messageInfo_ValidatorInfo_IBCChannel proto.InternalMessageInfo + +func (m *ValidatorInfo_IBCChannel) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *ValidatorInfo_IBCChannel) GetPort() string { + if m != nil { + return m.Port } return "" } func init() { - proto.RegisterEnum("did.v1.DIDNamespace", DIDNamespace_name, DIDNamespace_value) - proto.RegisterEnum("did.v1.KeyType", KeyType_name, KeyType_value) - proto.RegisterEnum("did.v1.PermissionScope", PermissionScope_name, PermissionScope_value) proto.RegisterType((*GenesisState)(nil), "did.v1.GenesisState") proto.RegisterType((*Params)(nil), "did.v1.Params") proto.RegisterType((*AssetInfo)(nil), "did.v1.AssetInfo") proto.RegisterType((*ChainInfo)(nil), "did.v1.ChainInfo") - proto.RegisterType((*ChainInfo_Endpoint)(nil), "did.v1.ChainInfo.Endpoint") - proto.RegisterType((*ChainInfo_ExplorerInfo)(nil), "did.v1.ChainInfo.ExplorerInfo") - proto.RegisterType((*ChainInfo_FeeInfo)(nil), "did.v1.ChainInfo.FeeInfo") proto.RegisterType((*KeyInfo)(nil), "did.v1.KeyInfo") + proto.RegisterType((*OpenIDConfig)(nil), "did.v1.OpenIDConfig") + proto.RegisterType((*ValidatorInfo)(nil), "did.v1.ValidatorInfo") + proto.RegisterType((*ValidatorInfo_Endpoint)(nil), "did.v1.ValidatorInfo.Endpoint") + proto.RegisterType((*ValidatorInfo_ExplorerInfo)(nil), "did.v1.ValidatorInfo.ExplorerInfo") + proto.RegisterType((*ValidatorInfo_FeeInfo)(nil), "did.v1.ValidatorInfo.FeeInfo") + proto.RegisterType((*ValidatorInfo_IBCChannel)(nil), "did.v1.ValidatorInfo.IBCChannel") } func init() { proto.RegisterFile("did/v1/genesis.proto", fileDescriptor_fda181cae44f7c00) } var fileDescriptor_fda181cae44f7c00 = []byte{ - // 1336 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x96, 0xcd, 0x6e, 0xdb, 0xc6, - 0x16, 0xc7, 0x4d, 0x7d, 0xeb, 0x48, 0x76, 0xe8, 0x89, 0x93, 0x4b, 0x2b, 0x89, 0xec, 0xd8, 0xc1, - 0x8d, 0xe1, 0x7b, 0x61, 0xc1, 0x4a, 0x52, 0xb4, 0x69, 0x80, 0x96, 0xa2, 0xe8, 0x84, 0xb0, 0x2d, - 0x09, 0xa4, 0x9c, 0x34, 0xdd, 0x10, 0x14, 0x39, 0x96, 0x06, 0xe1, 0x17, 0x38, 0x74, 0x12, 0x6d, - 0xfa, 0x00, 0x5d, 0x75, 0xd9, 0x5d, 0x83, 0x6e, 0xbb, 0x69, 0xdf, 0x22, 0xdd, 0x05, 0x5d, 0x75, - 0x55, 0x14, 0x09, 0xd0, 0xf6, 0x31, 0x8a, 0x19, 0x52, 0x8a, 0x54, 0x39, 0xee, 0x46, 0xe0, 0xfc, - 0xce, 0xff, 0xfc, 0xe7, 0xe3, 0x9c, 0x19, 0x08, 0xd6, 0x1c, 0xe2, 0x34, 0x9e, 0xef, 0x37, 0x86, - 0xd8, 0xc7, 0x94, 0xd0, 0xbd, 0x30, 0x0a, 0xe2, 0x00, 0x15, 0x1c, 0xe2, 0xec, 0x3d, 0xdf, 0xaf, - 0xad, 0x0d, 0x83, 0x61, 0xc0, 0x51, 0x83, 0x7d, 0x25, 0xd1, 0xda, 0xaa, 0xe5, 0x11, 0x3f, 0x68, - 0xf0, 0xdf, 0x04, 0x6d, 0x3d, 0x80, 0xea, 0xc3, 0xc4, 0xc1, 0x88, 0xad, 0x18, 0xa3, 0xff, 0x43, - 0x21, 0xb4, 0x22, 0xcb, 0xa3, 0x92, 0xb0, 0x29, 0xec, 0x54, 0x9a, 0x2b, 0x7b, 0x89, 0xe3, 0x5e, - 0x8f, 0xd3, 0x56, 0xee, 0xf5, 0x6f, 0x1b, 0x4b, 0x7a, 0xaa, 0xd9, 0xfa, 0x43, 0x80, 0x42, 0x12, - 0x40, 0x9f, 0x03, 0x7a, 0x31, 0x22, 0x31, 0x76, 0x09, 0x8d, 0xb1, 0x63, 0x5a, 0x94, 0xe2, 0x98, - 0x99, 0x64, 0x77, 0x2a, 0xcd, 0xd5, 0x89, 0x89, 0xcc, 0xa8, 0xe6, 0x9f, 0x06, 0xfa, 0xea, 0x8c, - 0x98, 0xd3, 0x05, 0x07, 0x7b, 0x64, 0x11, 0x9f, 0x4a, 0x99, 0x79, 0x07, 0x85, 0xd1, 0x05, 0x07, - 0x4e, 0x29, 0xfa, 0x0c, 0x2e, 0x5b, 0xae, 0x1b, 0xbc, 0xc0, 0x8e, 0x19, 0x9e, 0x0d, 0x5c, 0x62, - 0x9b, 0xcf, 0xf0, 0x98, 0x4a, 0x59, 0x6e, 0x71, 0x69, 0x62, 0x71, 0x88, 0xc7, 0x89, 0x41, 0xaa, - 0xed, 0x71, 0xe9, 0x21, 0x1e, 0xd3, 0xfb, 0xff, 0xf9, 0xf6, 0xd5, 0xc6, 0xd2, 0x5f, 0xaf, 0x36, - 0x84, 0xaf, 0xff, 0xfc, 0x71, 0x17, 0xd8, 0x09, 0xa7, 0x1b, 0xfd, 0x3e, 0x0b, 0xe5, 0xe9, 0xe2, - 0xd1, 0x0a, 0x64, 0x88, 0xc3, 0x0f, 0xa8, 0xac, 0x67, 0x88, 0x83, 0xd6, 0x20, 0xef, 0x60, 0x3f, - 0xf0, 0xa4, 0x0c, 0x47, 0xc9, 0x00, 0x5d, 0x85, 0x02, 0x1d, 0x7b, 0x83, 0xc0, 0x95, 0xb2, 0x1c, - 0xa7, 0x23, 0x74, 0x03, 0x80, 0x9f, 0x8e, 0x19, 0x8f, 0x43, 0x2c, 0xe5, 0x78, 0xac, 0xcc, 0x49, - 0x7f, 0x1c, 0x62, 0x74, 0x13, 0xaa, 0x41, 0x44, 0x86, 0xc4, 0x4f, 0x4e, 0x40, 0xca, 0x73, 0x41, - 0x25, 0x61, 0x7c, 0xa3, 0x33, 0x92, 0x64, 0xda, 0xc2, 0xac, 0xa4, 0xcd, 0x27, 0xaf, 0x41, 0xc9, - 0xc1, 0x36, 0xf1, 0x2c, 0x97, 0x4a, 0xc5, 0x4d, 0x61, 0x27, 0xaf, 0x4f, 0xc7, 0x68, 0x13, 0x2a, - 0x0e, 0xa6, 0x76, 0x44, 0xc2, 0x98, 0x04, 0xbe, 0x54, 0x4a, 0xb2, 0x67, 0x10, 0xba, 0x06, 0x65, - 0xe2, 0x59, 0x43, 0x6c, 0x9e, 0x45, 0xae, 0x54, 0xe6, 0xf1, 0x12, 0x07, 0x27, 0x91, 0xcb, 0x66, - 0xb7, 0x03, 0xe2, 0x0f, 0xb1, 0xfd, 0x2c, 0x30, 0x89, 0x23, 0x41, 0x92, 0x3f, 0x65, 0x9a, 0xc3, - 0xb6, 0x48, 0xa8, 0x89, 0x7d, 0x6b, 0xe0, 0x62, 0x47, 0xaa, 0x6c, 0x0a, 0x3b, 0x25, 0xbd, 0x4c, - 0xa8, 0x9a, 0x00, 0xb4, 0x0e, 0x25, 0x32, 0xb0, 0xcd, 0xd0, 0x8a, 0x47, 0x52, 0x95, 0x67, 0x17, - 0xc9, 0xc0, 0xee, 0x59, 0xf1, 0x08, 0x6d, 0x40, 0x85, 0x85, 0xec, 0x91, 0xe5, 0xfb, 0xd8, 0x95, - 0x96, 0x79, 0x14, 0xc8, 0xc0, 0x56, 0x12, 0x32, 0xcd, 0x0d, 0xa2, 0x58, 0x5a, 0x79, 0x9f, 0x1b, - 0x44, 0xf1, 0xd6, 0xcf, 0x79, 0x28, 0x4f, 0xfb, 0x63, 0xa1, 0x48, 0xeb, 0x50, 0xe2, 0x07, 0xca, - 0x96, 0x9c, 0xd4, 0xa9, 0xc8, 0xc7, 0x9a, 0x83, 0x10, 0xe4, 0x7c, 0xcb, 0xc3, 0x69, 0x9d, 0xf8, - 0xf7, 0x4c, 0xf5, 0x72, 0x73, 0xd5, 0xdb, 0x86, 0xe5, 0x01, 0xb6, 0x47, 0x77, 0x9a, 0x66, 0x18, - 0xe1, 0x53, 0xf2, 0x32, 0xad, 0x4f, 0x35, 0x81, 0x3d, 0xce, 0xd8, 0x11, 0xa5, 0xf7, 0xd2, 0x8c, - 0x89, 0x87, 0x27, 0x05, 0x4a, 0x59, 0x9f, 0x78, 0x18, 0xc9, 0xb0, 0x32, 0x8c, 0x42, 0xdb, 0xc4, - 0xbe, 0x13, 0x06, 0xc4, 0x8f, 0x59, 0x99, 0x58, 0x9b, 0xd6, 0x16, 0x3a, 0x7d, 0x4f, 0x4d, 0x25, - 0xfa, 0x32, 0xcb, 0x98, 0x8c, 0x28, 0xb3, 0x88, 0x30, 0x8d, 0x67, 0x2c, 0x4a, 0xff, 0x6e, 0xc1, - 0x32, 0xde, 0x5b, 0xdc, 0x87, 0x12, 0x7e, 0x19, 0xba, 0x41, 0x84, 0x23, 0x5e, 0xe7, 0x4a, 0xb3, - 0x7e, 0x4e, 0x72, 0xaa, 0xe0, 0xb7, 0x66, 0xaa, 0x47, 0x77, 0xa1, 0x74, 0x8a, 0xb1, 0x49, 0xfc, - 0xd3, 0x80, 0xf7, 0x40, 0xa5, 0xb9, 0xbe, 0x98, 0x7b, 0x80, 0x31, 0x4f, 0x2b, 0x9e, 0x26, 0x1f, - 0xb5, 0x4f, 0xa1, 0x34, 0x99, 0x1e, 0x89, 0x90, 0x65, 0x0d, 0x96, 0xd4, 0x88, 0x7d, 0xa6, 0x8d, - 0x13, 0x46, 0xc4, 0xb3, 0xa2, 0x31, 0x2f, 0x13, 0x6f, 0x9c, 0x5e, 0x02, 0x6a, 0x77, 0xa1, 0x3a, - 0xbb, 0x98, 0x69, 0xe1, 0x84, 0x99, 0xc2, 0xa5, 0xa6, 0x99, 0xa9, 0x69, 0xed, 0x27, 0x01, 0x8a, - 0xe9, 0x3a, 0xd8, 0x04, 0x03, 0x8b, 0xe2, 0xf4, 0xe2, 0x24, 0x79, 0x65, 0x46, 0x92, 0x6b, 0x73, - 0x0d, 0xca, 0x6c, 0x4f, 0x91, 0x15, 0xe3, 0xe4, 0xe9, 0x29, 0xeb, 0x6c, 0x93, 0x3a, 0x1b, 0xa3, - 0x5b, 0xb0, 0x42, 0x7c, 0x12, 0x9b, 0x43, 0x8b, 0x9a, 0x2e, 0xf1, 0x48, 0xcc, 0x1b, 0x26, 0xaf, - 0x57, 0x19, 0x7d, 0x68, 0xd1, 0x23, 0xc6, 0x58, 0xed, 0x09, 0x35, 0x29, 0xf1, 0xce, 0x5c, 0xd6, - 0xed, 0xbc, 0x7d, 0x4a, 0x7a, 0x85, 0x50, 0x63, 0x82, 0x78, 0x7b, 0x58, 0xd4, 0xf4, 0xce, 0xdc, - 0x98, 0x84, 0xee, 0x98, 0xb7, 0x90, 0xa0, 0x57, 0x86, 0x16, 0x3d, 0x4e, 0xd1, 0xd6, 0x57, 0x50, - 0x4c, 0xdf, 0x29, 0xb4, 0x0d, 0xb9, 0x67, 0xc4, 0x4f, 0x5a, 0x79, 0x65, 0xee, 0x19, 0x63, 0xef, - 0x85, 0xce, 0x83, 0xe8, 0x3a, 0x94, 0x2d, 0x77, 0x18, 0x44, 0x24, 0x1e, 0x4d, 0x9e, 0xa1, 0xf7, - 0x80, 0x3d, 0x50, 0xf6, 0x59, 0xf4, 0x7c, 0xd2, 0xe1, 0xc9, 0x80, 0xbd, 0x11, 0xd8, 0xb7, 0x03, - 0x87, 0xf8, 0xc3, 0xb4, 0xc9, 0xa7, 0xe3, 0xdd, 0x1f, 0x04, 0xa8, 0xb6, 0xb5, 0x76, 0xc7, 0xf2, - 0x30, 0x0d, 0x2d, 0x1b, 0xa3, 0x1b, 0xb0, 0xde, 0xd6, 0xda, 0x66, 0x47, 0x3e, 0x56, 0x8d, 0x9e, - 0xac, 0xa8, 0xe6, 0x49, 0xc7, 0xe8, 0xa9, 0x8a, 0x76, 0xa0, 0xa9, 0x6d, 0x71, 0x09, 0x5d, 0x05, - 0x34, 0x1f, 0xd6, 0x7a, 0x07, 0x86, 0x28, 0x2c, 0x72, 0xa3, 0xdb, 0xd1, 0xc5, 0x0c, 0x5a, 0x87, - 0x2b, 0xf3, 0xbc, 0xa5, 0xf5, 0x95, 0xae, 0xd6, 0x11, 0xb3, 0xa8, 0x06, 0x57, 0xe7, 0x43, 0x6a, - 0xff, 0x91, 0xaa, 0xab, 0x27, 0xc7, 0x62, 0x0e, 0x5d, 0x81, 0xd5, 0x7f, 0x4c, 0xd3, 0x52, 0xc4, - 0xfc, 0xee, 0x2f, 0x02, 0x3f, 0x2e, 0xfe, 0x7e, 0x4a, 0xb0, 0x76, 0xa8, 0x3e, 0x35, 0xfb, 0x4f, - 0x7b, 0xe7, 0xac, 0x71, 0x1a, 0x31, 0x54, 0xa5, 0xd7, 0xbc, 0xf7, 0xd1, 0xe1, 0xbe, 0x28, 0xa0, - 0x35, 0x10, 0xa7, 0x5c, 0x6d, 0x37, 0xef, 0xdd, 0xdb, 0xff, 0x44, 0xcc, 0xa0, 0xcb, 0x70, 0x69, - 0x4a, 0x0f, 0x55, 0x45, 0x91, 0x0f, 0xc5, 0x2c, 0x9b, 0x7f, 0x0a, 0x5b, 0x47, 0xc6, 0x7e, 0xf3, - 0xce, 0xc7, 0xfb, 0x62, 0x6e, 0x4e, 0xfb, 0x45, 0x62, 0x90, 0x9f, 0xb3, 0x35, 0x94, 0x47, 0x9d, - 0xae, 0xae, 0x8b, 0x85, 0x39, 0x87, 0x27, 0x6a, 0x4b, 0x3e, 0xe9, 0x3f, 0xea, 0x88, 0x45, 0xb4, - 0x0a, 0xcb, 0x53, 0x7c, 0xa0, 0xb5, 0xbb, 0x62, 0x69, 0xf7, 0xbb, 0x1c, 0x5c, 0xea, 0xe1, 0xc8, - 0x23, 0x94, 0x92, 0xc0, 0x37, 0xec, 0x20, 0xc4, 0x68, 0x13, 0xae, 0xf7, 0x54, 0xfd, 0x58, 0x33, - 0x0c, 0xad, 0xdb, 0x31, 0x0d, 0xa5, 0xbb, 0xb0, 0xc9, 0x0d, 0xb8, 0xb6, 0xa0, 0x68, 0xc9, 0x86, - 0xa6, 0x98, 0x5a, 0xe7, 0xa0, 0x2b, 0x0a, 0xe8, 0x26, 0xdc, 0x58, 0x10, 0xe8, 0xaa, 0xd2, 0xd5, - 0xdb, 0x86, 0xa9, 0xab, 0x72, 0x5b, 0xcc, 0xa0, 0x2d, 0xa8, 0x7f, 0x50, 0xf2, 0x44, 0xd7, 0xfa, - 0xaa, 0x98, 0x45, 0xff, 0x85, 0xad, 0x05, 0x4d, 0x5f, 0x97, 0x3b, 0x86, 0xac, 0xf4, 0xb5, 0x6e, - 0x27, 0xf5, 0xca, 0xa1, 0xdb, 0xb0, 0x7d, 0xb1, 0x2e, 0x31, 0xcc, 0x9f, 0xbb, 0xae, 0x27, 0xf2, - 0xd1, 0x91, 0xda, 0x4f, 0xbd, 0x0a, 0x68, 0x1b, 0x36, 0x3e, 0x28, 0x51, 0x74, 0x55, 0xee, 0xab, - 0x62, 0xf1, 0xdc, 0x85, 0x4d, 0x44, 0xc6, 0x49, 0xcb, 0x50, 0x74, 0xad, 0xa5, 0x8a, 0xa5, 0x0b, - 0xcd, 0x4e, 0x7a, 0x6d, 0x66, 0x56, 0x46, 0x3b, 0x70, 0xeb, 0xe2, 0xd5, 0x3f, 0x56, 0x75, 0xed, - 0xe0, 0xa9, 0x08, 0xe8, 0x7f, 0x70, 0xfb, 0x62, 0x65, 0x4b, 0xef, 0xca, 0x6d, 0x45, 0x36, 0xfa, - 0x62, 0xe5, 0xdc, 0x22, 0xc9, 0xed, 0x63, 0xad, 0x63, 0x9e, 0x18, 0xaa, 0x2e, 0x56, 0xd1, 0x2d, - 0xd8, 0xfc, 0x80, 0xe0, 0xb1, 0x7c, 0xa4, 0xb5, 0xe5, 0x7e, 0x57, 0x17, 0x97, 0x5b, 0x0f, 0x5e, - 0xbf, 0xad, 0x0b, 0x6f, 0xde, 0xd6, 0x85, 0xdf, 0xdf, 0xd6, 0x85, 0x6f, 0xde, 0xd5, 0x97, 0xde, - 0xbc, 0xab, 0x2f, 0xfd, 0xfa, 0xae, 0xbe, 0xf4, 0xe5, 0xd6, 0x90, 0xc4, 0xa3, 0xb3, 0xc1, 0x9e, - 0x1d, 0x78, 0x8d, 0xc0, 0xa7, 0x81, 0x1f, 0x35, 0x46, 0x2f, 0xac, 0x71, 0xe3, 0x65, 0x83, 0xfd, - 0xa9, 0x61, 0x7f, 0x3c, 0xe8, 0xa0, 0xc0, 0xff, 0x01, 0xde, 0xf9, 0x3b, 0x00, 0x00, 0xff, 0xff, - 0x56, 0xab, 0x9f, 0xc0, 0x4a, 0x0a, 0x00, 0x00, + // 1122 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0xcb, 0x8e, 0x1b, 0x45, + 0x14, 0x9d, 0xf6, 0xbb, 0xaf, 0x3d, 0xce, 0x4c, 0x65, 0x66, 0xd2, 0x18, 0xc5, 0x09, 0xe6, 0xa1, + 0xf0, 0x90, 0x9d, 0x18, 0x82, 0x02, 0x44, 0x40, 0x32, 0x09, 0xd1, 0x28, 0x44, 0x44, 0x1d, 0xc8, + 0x82, 0x4d, 0xab, 0xdc, 0x5d, 0x63, 0x17, 0xe9, 0xae, 0x6a, 0x55, 0x75, 0x4f, 0x62, 0x3e, 0x81, + 0x15, 0x4b, 0xd8, 0x85, 0x3f, 0x80, 0x7f, 0x60, 0x91, 0x0d, 0x52, 0x96, 0xac, 0x50, 0x94, 0x59, + 0xc0, 0x8a, 0x6f, 0x40, 0x75, 0xfb, 0x61, 0x3b, 0x9e, 0x48, 0x6c, 0xac, 0xfb, 0x3a, 0xa7, 0xea, + 0xde, 0x53, 0x55, 0x6d, 0xd8, 0x09, 0x78, 0x30, 0x3a, 0xba, 0x34, 0x9a, 0x32, 0xc1, 0x34, 0xd7, + 0xc3, 0x58, 0xc9, 0x44, 0x92, 0x46, 0xc0, 0x83, 0xe1, 0xd1, 0xa5, 0xde, 0x36, 0x8d, 0xb8, 0x90, + 0x23, 0xfc, 0xcd, 0x52, 0xbd, 0xbd, 0x1c, 0xe0, 0x4b, 0xa1, 0x13, 0x2a, 0x92, 0x1c, 0xd2, 0xdb, + 0x99, 0xca, 0xa9, 0x44, 0x73, 0x64, 0xac, 0x2c, 0x3a, 0xb8, 0x0a, 0x9d, 0x5b, 0x19, 0xf3, 0xbd, + 0x84, 0x26, 0x8c, 0xbc, 0x07, 0x8d, 0x98, 0x2a, 0x1a, 0x69, 0xc7, 0x3a, 0x6f, 0x5d, 0x68, 0x8f, + 0xbb, 0xc3, 0x6c, 0xa5, 0xe1, 0x5d, 0x8c, 0x5e, 0xaf, 0x3d, 0xf9, 0xeb, 0xdc, 0x86, 0x9b, 0xd7, + 0x0c, 0x7e, 0xa9, 0x40, 0x23, 0x4b, 0x90, 0xcf, 0x81, 0x3c, 0x9c, 0xf1, 0x84, 0x85, 0x5c, 0x27, + 0x2c, 0xf0, 0xa8, 0xd6, 0x2c, 0x31, 0x24, 0xd5, 0x0b, 0xed, 0xf1, 0x76, 0x41, 0x72, 0xcd, 0x44, + 0x0f, 0xc4, 0xa1, 0x74, 0xb7, 0x97, 0x8a, 0x31, 0xba, 0xc6, 0xe0, 0xcf, 0x28, 0x17, 0xda, 0xa9, + 0xac, 0x32, 0xec, 0x9b, 0xe8, 0x1a, 0x03, 0x46, 0x35, 0xf9, 0x0c, 0x4e, 0xd3, 0x30, 0x94, 0x0f, + 0x59, 0xe0, 0xc5, 0xe9, 0x24, 0xe4, 0xbe, 0xf7, 0x80, 0xcd, 0xb5, 0x53, 0x45, 0x8a, 0x53, 0x05, + 0xc5, 0x6d, 0x36, 0xcf, 0x08, 0xf2, 0xda, 0xbb, 0x58, 0x7a, 0x9b, 0xcd, 0x35, 0xf9, 0x08, 0x36, + 0x65, 0xcc, 0x04, 0x0f, 0x3c, 0x5f, 0x8a, 0x43, 0x3e, 0x75, 0x6a, 0x38, 0x84, 0x9d, 0x02, 0xfa, + 0x55, 0xcc, 0xc4, 0xc1, 0x8d, 0x7d, 0xcc, 0xb9, 0x9d, 0xac, 0x34, 0xf3, 0x3e, 0x3e, 0xf3, 0xd3, + 0xe3, 0x73, 0x1b, 0xff, 0x3c, 0x3e, 0x67, 0xfd, 0xf0, 0xf7, 0xaf, 0xef, 0x80, 0xd1, 0x20, 0x9f, + 0xd1, 0xef, 0x16, 0xd8, 0x65, 0xdf, 0x64, 0x07, 0xea, 0x5c, 0x04, 0xec, 0x11, 0x8e, 0xb7, 0xea, + 0x66, 0x0e, 0xd9, 0x82, 0xea, 0x4c, 0xc5, 0x4e, 0xe5, 0xbc, 0x75, 0xc1, 0x76, 0x8d, 0x49, 0xf6, + 0xa0, 0xa1, 0xe7, 0xd1, 0x44, 0x86, 0x4e, 0x15, 0x83, 0xb9, 0x47, 0x2e, 0x02, 0xe0, 0x68, 0xbd, + 0x64, 0x1e, 0x33, 0xdc, 0x5e, 0xf7, 0x85, 0xf1, 0x7e, 0x3d, 0x8f, 0x99, 0x6b, 0xd3, 0xc2, 0x24, + 0x04, 0x6a, 0x82, 0x46, 0xcc, 0xa9, 0x23, 0x0f, 0xda, 0x86, 0x3d, 0x62, 0xc9, 0x4c, 0x06, 0x4e, + 0x23, 0x63, 0xcf, 0x3c, 0xf2, 0x0a, 0xb4, 0xb8, 0x2f, 0x85, 0x97, 0xaa, 0xd0, 0x69, 0x62, 0xa6, + 0x69, 0xfc, 0x6f, 0x54, 0x38, 0xf8, 0xd9, 0x02, 0xbb, 0x1c, 0x3e, 0xe9, 0x42, 0x85, 0x07, 0xd8, + 0x83, 0xed, 0x56, 0x38, 0x02, 0x51, 0x2f, 0x8f, 0x07, 0x79, 0x17, 0x4d, 0xf4, 0x0f, 0x82, 0x72, + 0xfd, 0xea, 0xea, 0xfa, 0x79, 0x77, 0xb5, 0x95, 0xee, 0x2e, 0x03, 0x1c, 0xd1, 0x90, 0x07, 0x34, + 0x91, 0x4a, 0x3b, 0x75, 0xd4, 0x6d, 0xb7, 0xe8, 0xee, 0x7e, 0x91, 0x41, 0xf5, 0x96, 0x0a, 0x07, + 0xcf, 0x2c, 0x68, 0xe6, 0xaa, 0x92, 0xd7, 0xa1, 0xa6, 0x64, 0xc8, 0x70, 0x6f, 0xdd, 0x15, 0xd1, + 0x5d, 0x19, 0x32, 0x17, 0x93, 0x64, 0x0c, 0x36, 0x0d, 0xa7, 0x52, 0xf1, 0x64, 0x16, 0xe1, 0x7e, + 0xbb, 0x0b, 0x8d, 0x6f, 0xb3, 0xf9, 0xb5, 0x22, 0xe7, 0x2e, 0xca, 0xc8, 0x08, 0x5a, 0x4c, 0xf8, + 0x32, 0xe0, 0x62, 0x8a, 0xbd, 0x74, 0xc7, 0xa7, 0x97, 0x20, 0x37, 0xf3, 0x94, 0x5b, 0x16, 0x91, + 0xb7, 0xa0, 0xee, 0xa7, 0xea, 0xa8, 0x50, 0x69, 0x6b, 0xa9, 0x7a, 0xdf, 0xc4, 0xdd, 0x2c, 0x6d, + 0x76, 0x8c, 0x62, 0xd6, 0xd7, 0x76, 0x8c, 0x52, 0x62, 0x72, 0xf0, 0x6f, 0x15, 0x3a, 0xcb, 0xa7, + 0xcf, 0x8c, 0x90, 0x6b, 0x9d, 0x32, 0x95, 0xab, 0x90, 0x7b, 0xe4, 0x32, 0xec, 0xd1, 0x34, 0x99, + 0x49, 0xc5, 0xbf, 0xa7, 0x09, 0x97, 0xc2, 0x63, 0x22, 0x88, 0x25, 0x17, 0x49, 0xae, 0xcb, 0xee, + 0x4a, 0xf6, 0x66, 0x9e, 0x24, 0x6f, 0x42, 0x37, 0x91, 0x0f, 0xd8, 0x52, 0x79, 0xa6, 0xd7, 0x26, + 0x46, 0xcb, 0xb2, 0x77, 0x61, 0x3b, 0xd5, 0x4c, 0x71, 0x71, 0x28, 0x17, 0x95, 0x99, 0x86, 0x5b, + 0x45, 0xa2, 0x2c, 0x7e, 0x1b, 0xb6, 0xb4, 0x2f, 0x63, 0xa6, 0x3d, 0x9d, 0xc6, 0xb1, 0x54, 0x09, + 0x0b, 0x50, 0x53, 0xdb, 0x3d, 0x95, 0xc5, 0xef, 0x15, 0x61, 0x72, 0x05, 0x1c, 0xc5, 0x74, 0x2c, + 0x85, 0x66, 0x78, 0xb2, 0x97, 0x21, 0x0d, 0x84, 0xec, 0x15, 0x79, 0x33, 0x94, 0x97, 0x20, 0x23, + 0x19, 0xac, 0x20, 0x9b, 0xab, 0xc8, 0x3b, 0x26, 0xbd, 0x40, 0x8e, 0x61, 0x77, 0xaa, 0xa8, 0x48, + 0xd6, 0x16, 0x6c, 0x21, 0xec, 0x34, 0x26, 0x5f, 0x58, 0xed, 0x22, 0xec, 0x50, 0x5f, 0x79, 0x47, + 0x34, 0x4c, 0x57, 0x20, 0x36, 0x42, 0x08, 0xf5, 0xd5, 0x7d, 0x4c, 0x2d, 0x10, 0x1f, 0xc2, 0x19, + 0x9d, 0x4e, 0xbe, 0x63, 0xfe, 0xfa, 0x3a, 0x80, 0xa0, 0xdd, 0x3c, 0xbd, 0xba, 0xd2, 0xe0, 0x8f, + 0x3a, 0x6c, 0xae, 0x9c, 0x78, 0xe2, 0x40, 0x33, 0x92, 0x82, 0x3f, 0x28, 0x25, 0x2f, 0x5c, 0x72, + 0x13, 0xba, 0x53, 0x15, 0xfb, 0xa5, 0x22, 0xc5, 0xab, 0xd9, 0x3f, 0xf1, 0xea, 0x0c, 0x0b, 0x81, + 0xdc, 0x4d, 0x83, 0x2a, 0x3c, 0x6d, 0x68, 0x14, 0xd3, 0xc9, 0x12, 0x4d, 0xf5, 0xff, 0xd1, 0x18, + 0xd4, 0x82, 0xe6, 0x53, 0x68, 0xb1, 0x47, 0x71, 0x28, 0x15, 0x53, 0xf9, 0xfb, 0x39, 0x78, 0x09, + 0x41, 0x5e, 0x85, 0xf7, 0xb9, 0xc4, 0x90, 0x2b, 0xd0, 0x3a, 0x64, 0xcc, 0x33, 0x47, 0x09, 0xef, + 0x44, 0x7b, 0x7c, 0xf6, 0x64, 0xfc, 0x17, 0x8c, 0x21, 0xb4, 0x79, 0x98, 0x19, 0xe4, 0x1a, 0xb4, + 0xf9, 0xc4, 0x37, 0x5f, 0x0e, 0x21, 0x58, 0x88, 0x6f, 0x5b, 0x7b, 0x7c, 0xfe, 0x64, 0xf0, 0xc1, + 0xf5, 0xfd, 0xfd, 0xac, 0xce, 0x05, 0x3e, 0xf1, 0x73, 0xbb, 0xf7, 0x09, 0xb4, 0xca, 0xf3, 0xbb, + 0x05, 0x55, 0xf3, 0x10, 0x66, 0xc3, 0x36, 0x26, 0x39, 0x0b, 0xc0, 0xb5, 0x17, 0x2b, 0x1e, 0x51, + 0x35, 0xc7, 0x0b, 0xd5, 0x72, 0x6d, 0xae, 0xef, 0x66, 0x81, 0xde, 0x07, 0xd0, 0x59, 0xee, 0xa9, + 0x7c, 0xfa, 0xac, 0xa5, 0xa7, 0x2f, 0x27, 0xad, 0x94, 0xa4, 0xbd, 0xdf, 0x2c, 0x68, 0xe6, 0xad, + 0x98, 0x05, 0x26, 0x54, 0x33, 0x2f, 0x60, 0x42, 0x46, 0x39, 0xce, 0x36, 0x91, 0x1b, 0x26, 0x40, + 0x5e, 0x05, 0xdb, 0x8c, 0x46, 0xd1, 0x84, 0x65, 0x1a, 0xdb, 0xae, 0x99, 0x95, 0x6b, 0x7c, 0xf2, + 0x06, 0x74, 0xb9, 0xe0, 0x89, 0x37, 0xa5, 0xda, 0x0b, 0x79, 0xc4, 0xb3, 0x2b, 0x5c, 0x77, 0x3b, + 0x26, 0x7a, 0x8b, 0xea, 0x2f, 0x4d, 0x8c, 0xbc, 0x06, 0x1d, 0xae, 0x3d, 0xcd, 0xa3, 0x34, 0xa4, + 0x93, 0x30, 0x7b, 0x9c, 0x5a, 0x6e, 0x9b, 0xeb, 0x7b, 0x45, 0xc8, 0x94, 0x18, 0x8e, 0x28, 0x0d, + 0x13, 0x1e, 0x87, 0x73, 0x14, 0xc1, 0x72, 0xdb, 0x53, 0xaa, 0xef, 0xe4, 0xa1, 0xde, 0x45, 0x80, + 0xc5, 0x00, 0xd7, 0xbe, 0x06, 0x04, 0x6a, 0xe6, 0x14, 0xe7, 0x4d, 0xa2, 0x7d, 0xfd, 0xea, 0x93, + 0xe7, 0x7d, 0xeb, 0xe9, 0xf3, 0xbe, 0xf5, 0xec, 0x79, 0xdf, 0xfa, 0xf1, 0xb8, 0xbf, 0xf1, 0xf4, + 0xb8, 0xbf, 0xf1, 0xe7, 0x71, 0x7f, 0xe3, 0xdb, 0xc1, 0x94, 0x27, 0xb3, 0x74, 0x32, 0xf4, 0x65, + 0x34, 0x92, 0x42, 0x4b, 0xa1, 0x46, 0xf8, 0xf3, 0x68, 0x64, 0xbe, 0xa2, 0x78, 0x69, 0x26, 0x0d, + 0xfc, 0xb7, 0xf2, 0xfe, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xa0, 0x10, 0x30, 0xf0, 0x0e, 0x09, + 0x00, 0x00, } func (this *Params) Equal(that interface{}) bool { @@ -948,6 +969,9 @@ func (this *Params) Equal(that interface{}) bool { return false } } + if !this.OpenidConfig.Equal(that1.OpenidConfig) { + return false + } return true } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -1003,6 +1027,18 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.OpenidConfig != nil { + { + size, err := m.OpenidConfig.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } if len(m.AllowedPublicKeys) > 0 { for iNdEx := len(m.AllowedPublicKeys) - 1; iNdEx >= 0; iNdEx-- { { @@ -1068,83 +1104,31 @@ func (m *AssetInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.IbcPort) > 0 { - i -= len(m.IbcPort) - copy(dAtA[i:], m.IbcPort) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.IbcPort))) + if len(m.IconUrl) > 0 { + i -= len(m.IconUrl) + copy(dAtA[i:], m.IconUrl) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.IconUrl))) i-- - dAtA[i] = 0x72 + dAtA[i] = 0x3a } - if len(m.IbcChannel) > 0 { - i -= len(m.IbcChannel) - copy(dAtA[i:], m.IbcChannel) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.IbcChannel))) - i-- - dAtA[i] = 0x6a - } - if len(m.IbcPath) > 0 { - i -= len(m.IbcPath) - copy(dAtA[i:], m.IbcPath) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.IbcPath))) - i-- - dAtA[i] = 0x62 - } - if m.IsEnabled { - i-- - if m.IsEnabled { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x58 - } - if len(m.CoingeckoId) > 0 { - i -= len(m.CoingeckoId) - copy(dAtA[i:], m.CoingeckoId) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.CoingeckoId))) - i-- - dAtA[i] = 0x52 - } - if len(m.ImageUrl) > 0 { - i -= len(m.ImageUrl) - copy(dAtA[i:], m.ImageUrl) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.ImageUrl))) - i-- - dAtA[i] = 0x4a - } - if len(m.Description) > 0 { - i -= len(m.Description) - copy(dAtA[i:], m.Description) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.Description))) - i-- - dAtA[i] = 0x42 - } - if m.Decimals != 0 { - i = encodeVarintGenesis(dAtA, i, uint64(m.Decimals)) - i-- - dAtA[i] = 0x38 - } - if len(m.OriginDenom) > 0 { - i -= len(m.OriginDenom) - copy(dAtA[i:], m.OriginDenom) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.OriginDenom))) + if len(m.Method) > 0 { + i -= len(m.Method) + copy(dAtA[i:], m.Method) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Method))) i-- dAtA[i] = 0x32 } - if len(m.OriginChain) > 0 { - i -= len(m.OriginChain) - copy(dAtA[i:], m.OriginChain) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.OriginChain))) + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Name))) i-- dAtA[i] = 0x2a } - if len(m.AssetType) > 0 { - i -= len(m.AssetType) - copy(dAtA[i:], m.AssetType) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.AssetType))) + if m.AssetType != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.AssetType)) i-- - dAtA[i] = 0x22 + dAtA[i] = 0x20 } if len(m.Symbol) > 0 { i -= len(m.Symbol) @@ -1153,19 +1137,17 @@ func (m *AssetInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - if len(m.Denom) > 0 { - i -= len(m.Denom) - copy(dAtA[i:], m.Denom) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.Denom))) + if len(m.Hrp) > 0 { + i -= len(m.Hrp) + copy(dAtA[i:], m.Hrp) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Hrp))) i-- dAtA[i] = 0x12 } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.Id))) + if m.Index != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.Index)) i-- - dAtA[i] = 0xa + dAtA[i] = 0x8 } return len(dAtA) - i, nil } @@ -1190,34 +1172,10 @@ func (m *ChainInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.FeeInfo != nil { - { - size, err := m.FeeInfo.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x52 - } - if m.Explorer != nil { - { - size, err := m.Explorer.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x4a - } - if len(m.RestEndpoints) > 0 { - for iNdEx := len(m.RestEndpoints) - 1; iNdEx >= 0; iNdEx-- { + if len(m.Validators) > 0 { + for iNdEx := len(m.Validators) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.RestEndpoints[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Validators[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -1225,37 +1183,9 @@ func (m *ChainInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenesis(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x42 + dAtA[i] = 0x2a } } - if len(m.GrpcEndpoints) > 0 { - for iNdEx := len(m.GrpcEndpoints) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.GrpcEndpoints[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x3a - } - } - if len(m.GenesisTime) > 0 { - i -= len(m.GenesisTime) - copy(dAtA[i:], m.GenesisTime) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.GenesisTime))) - i-- - dAtA[i] = 0x32 - } - if len(m.Bech32Prefix) > 0 { - i -= len(m.Bech32Prefix) - copy(dAtA[i:], m.Bech32Prefix) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.Bech32Prefix))) - i-- - dAtA[i] = 0x2a - } if len(m.Symbol) > 0 { i -= len(m.Symbol) copy(dAtA[i:], m.Symbol) @@ -1287,7 +1217,7 @@ func (m *ChainInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *ChainInfo_Endpoint) Marshal() (dAtA []byte, err error) { +func (m *KeyInfo) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1297,12 +1227,259 @@ func (m *ChainInfo_Endpoint) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ChainInfo_Endpoint) MarshalTo(dAtA []byte) (int, error) { +func (m *KeyInfo) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ChainInfo_Endpoint) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *KeyInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Type != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.Type)) + i-- + dAtA[i] = 0x28 + } + if m.Curve != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.Curve)) + i-- + dAtA[i] = 0x20 + } + if m.Encoding != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.Encoding)) + i-- + dAtA[i] = 0x18 + } + if m.Algorithm != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.Algorithm)) + i-- + dAtA[i] = 0x10 + } + if m.Role != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.Role)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *OpenIDConfig) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *OpenIDConfig) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *OpenIDConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.SubjectTypesSupported) > 0 { + for iNdEx := len(m.SubjectTypesSupported) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.SubjectTypesSupported[iNdEx]) + copy(dAtA[i:], m.SubjectTypesSupported[iNdEx]) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.SubjectTypesSupported[iNdEx]))) + i-- + dAtA[i] = 0x52 + } + } + if len(m.AcrValuesSupported) > 0 { + for iNdEx := len(m.AcrValuesSupported) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AcrValuesSupported[iNdEx]) + copy(dAtA[i:], m.AcrValuesSupported[iNdEx]) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.AcrValuesSupported[iNdEx]))) + i-- + dAtA[i] = 0x4a + } + } + if len(m.GrantTypesSupported) > 0 { + for iNdEx := len(m.GrantTypesSupported) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.GrantTypesSupported[iNdEx]) + copy(dAtA[i:], m.GrantTypesSupported[iNdEx]) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.GrantTypesSupported[iNdEx]))) + i-- + dAtA[i] = 0x42 + } + } + if len(m.ResponseModesSupported) > 0 { + for iNdEx := len(m.ResponseModesSupported) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ResponseModesSupported[iNdEx]) + copy(dAtA[i:], m.ResponseModesSupported[iNdEx]) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.ResponseModesSupported[iNdEx]))) + i-- + dAtA[i] = 0x3a + } + } + if len(m.ResponseTypesSupported) > 0 { + for iNdEx := len(m.ResponseTypesSupported) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ResponseTypesSupported[iNdEx]) + copy(dAtA[i:], m.ResponseTypesSupported[iNdEx]) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.ResponseTypesSupported[iNdEx]))) + i-- + dAtA[i] = 0x32 + } + } + if len(m.ScopesSupported) > 0 { + for iNdEx := len(m.ScopesSupported) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ScopesSupported[iNdEx]) + copy(dAtA[i:], m.ScopesSupported[iNdEx]) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.ScopesSupported[iNdEx]))) + i-- + dAtA[i] = 0x2a + } + } + if len(m.UserinfoEndpoint) > 0 { + i -= len(m.UserinfoEndpoint) + copy(dAtA[i:], m.UserinfoEndpoint) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.UserinfoEndpoint))) + i-- + dAtA[i] = 0x22 + } + if len(m.TokenEndpoint) > 0 { + i -= len(m.TokenEndpoint) + copy(dAtA[i:], m.TokenEndpoint) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.TokenEndpoint))) + i-- + dAtA[i] = 0x1a + } + if len(m.AuthorizationEndpoint) > 0 { + i -= len(m.AuthorizationEndpoint) + copy(dAtA[i:], m.AuthorizationEndpoint) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.AuthorizationEndpoint))) + i-- + dAtA[i] = 0x12 + } + if len(m.Issuer) > 0 { + i -= len(m.Issuer) + copy(dAtA[i:], m.Issuer) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Issuer))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ValidatorInfo) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ValidatorInfo) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ValidatorInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.IbcChannel != nil { + { + size, err := m.IbcChannel.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if m.FeeInfo != nil { + { + size, err := m.FeeInfo.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if m.Explorer != nil { + { + size, err := m.Explorer.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if len(m.RestEndpoints) > 0 { + for iNdEx := len(m.RestEndpoints) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.RestEndpoints[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.GrpcEndpoints) > 0 { + for iNdEx := len(m.GrpcEndpoints) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.GrpcEndpoints[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Moniker) > 0 { + i -= len(m.Moniker) + copy(dAtA[i:], m.Moniker) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Moniker))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ValidatorInfo_Endpoint) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ValidatorInfo_Endpoint) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ValidatorInfo_Endpoint) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1327,7 +1504,7 @@ func (m *ChainInfo_Endpoint) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *ChainInfo_ExplorerInfo) Marshal() (dAtA []byte, err error) { +func (m *ValidatorInfo_ExplorerInfo) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1337,12 +1514,12 @@ func (m *ChainInfo_ExplorerInfo) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ChainInfo_ExplorerInfo) MarshalTo(dAtA []byte) (int, error) { +func (m *ValidatorInfo_ExplorerInfo) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ChainInfo_ExplorerInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ValidatorInfo_ExplorerInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1364,7 +1541,7 @@ func (m *ChainInfo_ExplorerInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *ChainInfo_FeeInfo) Marshal() (dAtA []byte, err error) { +func (m *ValidatorInfo_FeeInfo) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1374,12 +1551,12 @@ func (m *ChainInfo_FeeInfo) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ChainInfo_FeeInfo) MarshalTo(dAtA []byte) (int, error) { +func (m *ValidatorInfo_FeeInfo) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ChainInfo_FeeInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ValidatorInfo_FeeInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1424,7 +1601,7 @@ func (m *ChainInfo_FeeInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *KeyInfo) Marshal() (dAtA []byte, err error) { +func (m *ValidatorInfo_IBCChannel) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1434,41 +1611,29 @@ func (m *KeyInfo) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *KeyInfo) MarshalTo(dAtA []byte) (int, error) { +func (m *ValidatorInfo_IBCChannel) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *KeyInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ValidatorInfo_IBCChannel) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Encoding) > 0 { - i -= len(m.Encoding) - copy(dAtA[i:], m.Encoding) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.Encoding))) - i-- - dAtA[i] = 0x22 - } - if len(m.Curve) > 0 { - i -= len(m.Curve) - copy(dAtA[i:], m.Curve) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.Curve))) - i-- - dAtA[i] = 0x1a - } - if len(m.Algorithm) > 0 { - i -= len(m.Algorithm) - copy(dAtA[i:], m.Algorithm) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.Algorithm))) + if len(m.Port) > 0 { + i -= len(m.Port) + copy(dAtA[i:], m.Port) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Port))) i-- dAtA[i] = 0x12 } - if m.Kind != 0 { - i = encodeVarintGenesis(dAtA, i, uint64(m.Kind)) + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Id))) i-- - dAtA[i] = 0x8 + dAtA[i] = 0xa } return len(dAtA) - i, nil } @@ -1519,6 +1684,10 @@ func (m *Params) Size() (n int) { n += 1 + l + sovGenesis(uint64(l)) } } + if m.OpenidConfig != nil { + l = m.OpenidConfig.Size() + n += 1 + l + sovGenesis(uint64(l)) + } return n } @@ -1528,11 +1697,10 @@ func (m *AssetInfo) Size() (n int) { } var l int _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) + if m.Index != 0 { + n += 1 + sovGenesis(uint64(m.Index)) } - l = len(m.Denom) + l = len(m.Hrp) if l > 0 { n += 1 + l + sovGenesis(uint64(l)) } @@ -1540,45 +1708,18 @@ func (m *AssetInfo) Size() (n int) { if l > 0 { n += 1 + l + sovGenesis(uint64(l)) } - l = len(m.AssetType) + if m.AssetType != 0 { + n += 1 + sovGenesis(uint64(m.AssetType)) + } + l = len(m.Name) if l > 0 { n += 1 + l + sovGenesis(uint64(l)) } - l = len(m.OriginChain) + l = len(m.Method) if l > 0 { n += 1 + l + sovGenesis(uint64(l)) } - l = len(m.OriginDenom) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - if m.Decimals != 0 { - n += 1 + sovGenesis(uint64(m.Decimals)) - } - l = len(m.Description) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - l = len(m.ImageUrl) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - l = len(m.CoingeckoId) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - if m.IsEnabled { - n += 2 - } - l = len(m.IbcPath) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - l = len(m.IbcChannel) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - l = len(m.IbcPort) + l = len(m.IconUrl) if l > 0 { n += 1 + l + sovGenesis(uint64(l)) } @@ -1607,11 +1748,107 @@ func (m *ChainInfo) Size() (n int) { if l > 0 { n += 1 + l + sovGenesis(uint64(l)) } - l = len(m.Bech32Prefix) + if len(m.Validators) > 0 { + for _, e := range m.Validators { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + return n +} + +func (m *KeyInfo) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Role != 0 { + n += 1 + sovGenesis(uint64(m.Role)) + } + if m.Algorithm != 0 { + n += 1 + sovGenesis(uint64(m.Algorithm)) + } + if m.Encoding != 0 { + n += 1 + sovGenesis(uint64(m.Encoding)) + } + if m.Curve != 0 { + n += 1 + sovGenesis(uint64(m.Curve)) + } + if m.Type != 0 { + n += 1 + sovGenesis(uint64(m.Type)) + } + return n +} + +func (m *OpenIDConfig) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Issuer) if l > 0 { n += 1 + l + sovGenesis(uint64(l)) } - l = len(m.GenesisTime) + l = len(m.AuthorizationEndpoint) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + l = len(m.TokenEndpoint) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + l = len(m.UserinfoEndpoint) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + if len(m.ScopesSupported) > 0 { + for _, s := range m.ScopesSupported { + l = len(s) + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.ResponseTypesSupported) > 0 { + for _, s := range m.ResponseTypesSupported { + l = len(s) + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.ResponseModesSupported) > 0 { + for _, s := range m.ResponseModesSupported { + l = len(s) + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.GrantTypesSupported) > 0 { + for _, s := range m.GrantTypesSupported { + l = len(s) + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.AcrValuesSupported) > 0 { + for _, s := range m.AcrValuesSupported { + l = len(s) + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.SubjectTypesSupported) > 0 { + for _, s := range m.SubjectTypesSupported { + l = len(s) + n += 1 + l + sovGenesis(uint64(l)) + } + } + return n +} + +func (m *ValidatorInfo) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Moniker) if l > 0 { n += 1 + l + sovGenesis(uint64(l)) } @@ -1635,10 +1872,14 @@ func (m *ChainInfo) Size() (n int) { l = m.FeeInfo.Size() n += 1 + l + sovGenesis(uint64(l)) } + if m.IbcChannel != nil { + l = m.IbcChannel.Size() + n += 1 + l + sovGenesis(uint64(l)) + } return n } -func (m *ChainInfo_Endpoint) Size() (n int) { +func (m *ValidatorInfo_Endpoint) Size() (n int) { if m == nil { return 0 } @@ -1654,7 +1895,7 @@ func (m *ChainInfo_Endpoint) Size() (n int) { return n } -func (m *ChainInfo_ExplorerInfo) Size() (n int) { +func (m *ValidatorInfo_ExplorerInfo) Size() (n int) { if m == nil { return 0 } @@ -1671,7 +1912,7 @@ func (m *ChainInfo_ExplorerInfo) Size() (n int) { return n } -func (m *ChainInfo_FeeInfo) Size() (n int) { +func (m *ValidatorInfo_FeeInfo) Size() (n int) { if m == nil { return 0 } @@ -1699,24 +1940,17 @@ func (m *ChainInfo_FeeInfo) Size() (n int) { return n } -func (m *KeyInfo) Size() (n int) { +func (m *ValidatorInfo_IBCChannel) Size() (n int) { if m == nil { return 0 } var l int _ = l - if m.Kind != 0 { - n += 1 + sovGenesis(uint64(m.Kind)) - } - l = len(m.Algorithm) + l = len(m.Id) if l > 0 { n += 1 + l + sovGenesis(uint64(l)) } - l = len(m.Curve) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - l = len(m.Encoding) + l = len(m.Port) if l > 0 { n += 1 + l + sovGenesis(uint64(l)) } @@ -1943,6 +2177,42 @@ func (m *Params) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OpenidConfig", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.OpenidConfig == nil { + m.OpenidConfig = &OpenIDConfig{} + } + if err := m.OpenidConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenesis(dAtA[iNdEx:]) @@ -1994,10 +2264,10 @@ func (m *AssetInfo) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Index", wireType) } - var stringLen uint64 + m.Index = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenesis @@ -2007,27 +2277,14 @@ func (m *AssetInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.Index |= int64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Hrp", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2055,7 +2312,7 @@ func (m *AssetInfo) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Denom = string(dAtA[iNdEx:postIndex]) + m.Hrp = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { @@ -2090,10 +2347,10 @@ func (m *AssetInfo) Unmarshal(dAtA []byte) error { m.Symbol = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: - if wireType != 2 { + if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field AssetType", wireType) } - var stringLen uint64 + m.AssetType = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenesis @@ -2103,27 +2360,14 @@ func (m *AssetInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.AssetType |= AssetType(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AssetType = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OriginChain", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2151,11 +2395,11 @@ func (m *AssetInfo) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.OriginChain = string(dAtA[iNdEx:postIndex]) + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OriginDenom", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Method", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2183,30 +2427,11 @@ func (m *AssetInfo) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.OriginDenom = string(dAtA[iNdEx:postIndex]) + m.Method = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Decimals", wireType) - } - m.Decimals = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Decimals |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 8: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IconUrl", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2234,187 +2459,7 @@ func (m *AssetInfo) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 9: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ImageUrl", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ImageUrl = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 10: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CoingeckoId", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.CoingeckoId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 11: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IsEnabled", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.IsEnabled = bool(v != 0) - case 12: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IbcPath", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.IbcPath = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 13: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IbcChannel", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.IbcChannel = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 14: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IbcPort", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.IbcPort = string(dAtA[iNdEx:postIndex]) + m.IconUrl = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -2596,7 +2641,236 @@ func (m *ChainInfo) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Bech32Prefix", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Validators", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Validators = append(m.Validators, &ValidatorInfo{}) + if err := m.Validators[len(m.Validators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *KeyInfo) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: KeyInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: KeyInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) + } + m.Role = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Role |= KeyRole(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Algorithm", wireType) + } + m.Algorithm = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Algorithm |= KeyAlgorithm(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Encoding", wireType) + } + m.Encoding = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Encoding |= KeyEncoding(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Curve", wireType) + } + m.Curve = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Curve |= KeyCurve(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + m.Type = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Type |= KeyType(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *OpenIDConfig) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: OpenIDConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: OpenIDConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Issuer", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2624,11 +2898,139 @@ func (m *ChainInfo) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Bech32Prefix = string(dAtA[iNdEx:postIndex]) + m.Issuer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AuthorizationEndpoint", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AuthorizationEndpoint = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenEndpoint", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenEndpoint = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserinfoEndpoint", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UserinfoEndpoint = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ScopesSupported", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ScopesSupported = append(m.ScopesSupported, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field GenesisTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ResponseTypesSupported", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2656,9 +3058,219 @@ func (m *ChainInfo) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.GenesisTime = string(dAtA[iNdEx:postIndex]) + m.ResponseTypesSupported = append(m.ResponseTypesSupported, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResponseModesSupported", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResponseModesSupported = append(m.ResponseModesSupported, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GrantTypesSupported", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GrantTypesSupported = append(m.GrantTypesSupported, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AcrValuesSupported", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AcrValuesSupported = append(m.AcrValuesSupported, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SubjectTypesSupported", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SubjectTypesSupported = append(m.SubjectTypesSupported, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ValidatorInfo) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ValidatorInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ValidatorInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Moniker", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Moniker = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field GrpcEndpoints", wireType) } @@ -2687,12 +3299,12 @@ func (m *ChainInfo) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.GrpcEndpoints = append(m.GrpcEndpoints, &ChainInfo_Endpoint{}) + m.GrpcEndpoints = append(m.GrpcEndpoints, &ValidatorInfo_Endpoint{}) if err := m.GrpcEndpoints[len(m.GrpcEndpoints)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 8: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field RestEndpoints", wireType) } @@ -2721,12 +3333,12 @@ func (m *ChainInfo) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.RestEndpoints = append(m.RestEndpoints, &ChainInfo_Endpoint{}) + m.RestEndpoints = append(m.RestEndpoints, &ValidatorInfo_Endpoint{}) if err := m.RestEndpoints[len(m.RestEndpoints)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 9: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Explorer", wireType) } @@ -2756,13 +3368,13 @@ func (m *ChainInfo) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Explorer == nil { - m.Explorer = &ChainInfo_ExplorerInfo{} + m.Explorer = &ValidatorInfo_ExplorerInfo{} } if err := m.Explorer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 10: + case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field FeeInfo", wireType) } @@ -2792,12 +3404,48 @@ func (m *ChainInfo) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.FeeInfo == nil { - m.FeeInfo = &ChainInfo_FeeInfo{} + m.FeeInfo = &ValidatorInfo_FeeInfo{} } if err := m.FeeInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IbcChannel", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.IbcChannel == nil { + m.IbcChannel = &ValidatorInfo_IBCChannel{} + } + if err := m.IbcChannel.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenesis(dAtA[iNdEx:]) @@ -2819,7 +3467,7 @@ func (m *ChainInfo) Unmarshal(dAtA []byte) error { } return nil } -func (m *ChainInfo_Endpoint) Unmarshal(dAtA []byte) error { +func (m *ValidatorInfo_Endpoint) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2921,7 +3569,7 @@ func (m *ChainInfo_Endpoint) Unmarshal(dAtA []byte) error { } return nil } -func (m *ChainInfo_ExplorerInfo) Unmarshal(dAtA []byte) error { +func (m *ValidatorInfo_ExplorerInfo) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3035,7 +3683,7 @@ func (m *ChainInfo_ExplorerInfo) Unmarshal(dAtA []byte) error { } return nil } -func (m *ChainInfo_FeeInfo) Unmarshal(dAtA []byte) error { +func (m *ValidatorInfo_FeeInfo) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3199,7 +3847,7 @@ func (m *ChainInfo_FeeInfo) Unmarshal(dAtA []byte) error { } return nil } -func (m *KeyInfo) Unmarshal(dAtA []byte) error { +func (m *ValidatorInfo_IBCChannel) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3222,17 +3870,17 @@ func (m *KeyInfo) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: KeyInfo: wiretype end group for non-group") + return fmt.Errorf("proto: IBCChannel: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: KeyInfo: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: IBCChannel: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } - m.Kind = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenesis @@ -3242,14 +3890,27 @@ func (m *KeyInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Kind |= KeyType(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Algorithm", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3277,71 +3938,7 @@ func (m *KeyInfo) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Algorithm = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Curve", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Curve = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Encoding", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Encoding = string(dAtA[iNdEx:postIndex]) + m.Port = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex diff --git a/x/did/types/genesis_test.go b/x/did/types/genesis_test.go index 998a9d4a3..01d5a476d 100644 --- a/x/did/types/genesis_test.go +++ b/x/did/types/genesis_test.go @@ -3,7 +3,7 @@ package types_test import ( "testing" - "github.com/onsonr/hway/x/did/types" + "github.com/onsonr/sonr/x/did/types" "github.com/stretchr/testify/require" ) @@ -19,14 +19,6 @@ func TestGenesisState_Validate(t *testing.T) { genState: types.DefaultGenesis(), valid: true, }, - { - desc: "valid genesis state", - genState: &types.GenesisState{ - - // this line is used by starport scaffolding # types/genesis/validField - }, - valid: true, - }, // this line is used by starport scaffolding # types/genesis/testcase } for _, tc := range tests { diff --git a/x/did/types/info.go b/x/did/types/info.go new file mode 100644 index 000000000..aaac70c52 --- /dev/null +++ b/x/did/types/info.go @@ -0,0 +1,89 @@ +package types + +import ( + "encoding/hex" + + "github.com/mr-tron/base58/base58" +) + +// +// # Genesis Structures +// + +// Equal returns true if two asset infos are equal +func (a *AssetInfo) Equal(b *AssetInfo) bool { + if a == nil && b == nil { + return true + } + return false +} + +// Equal returns true if two chain infos are equal +func (c *ChainInfo) Equal(b *ChainInfo) bool { + if c == nil && b == nil { + return true + } + return false +} + +// Equal returns true if two OpenID config infos are equal +func (o *OpenIDConfig) Equal(b *OpenIDConfig) bool { + if o == nil && b == nil { + return true + } + return false +} + +// Equal returns true if two key infos are equal +func (k *KeyInfo) Equal(b *KeyInfo) bool { + if k == nil && b == nil { + return true + } + return false +} + +// Equal returns true if two validator infos are equal +func (v *ValidatorInfo) Equal(b *ValidatorInfo) bool { + if v == nil && b == nil { + return true + } + return false +} + +// DecodePublicKey extracts the public key from the given data +func (k *KeyInfo) DecodePublicKey(data interface{}) ([]byte, error) { + var bz []byte + switch v := data.(type) { + case string: + bz = []byte(v) + case []byte: + bz = v + default: + return nil, ErrUnsupportedKeyEncoding + } + + if k.Encoding == KeyEncoding_KEY_ENCODING_RAW { + return bz, nil + } + if k.Encoding == KeyEncoding_KEY_ENCODING_HEX { + return hex.DecodeString(string(bz)) + } + if k.Encoding == KeyEncoding_KEY_ENCODING_MULTIBASE { + return base58.Decode(string(bz)) + } + return nil, ErrUnsupportedKeyEncoding +} + +// EncodePublicKey encodes the public key according to the KeyInfo's encoding +func (k *KeyInfo) EncodePublicKey(data []byte) (string, error) { + if k.Encoding == KeyEncoding_KEY_ENCODING_RAW { + return string(data), nil + } + if k.Encoding == KeyEncoding_KEY_ENCODING_HEX { + return hex.EncodeToString(data), nil + } + if k.Encoding == KeyEncoding_KEY_ENCODING_MULTIBASE { + return base58.Encode(data), nil + } + return "", ErrUnsupportedKeyEncoding +} diff --git a/x/did/types/models.pb.go b/x/did/types/models.pb.go index 464f9c0a9..e07b961f8 100644 --- a/x/did/types/models.pb.go +++ b/x/did/types/models.pb.go @@ -5,6 +5,7 @@ package types import ( fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" io "io" math "math" @@ -22,27 +23,23 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// DID defines a parsed DID string -type DID struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Method DIDNamespace `protobuf:"varint,2,opt,name=method,proto3,enum=did.v1.DIDNamespace" json:"method,omitempty"` - Network string `protobuf:"bytes,3,opt,name=network,proto3" json:"network,omitempty"` - Identifier string `protobuf:"bytes,4,opt,name=identifier,proto3" json:"identifier,omitempty"` - Paths []string `protobuf:"bytes,5,rep,name=paths,proto3" json:"paths,omitempty"` +// Accumulator defines a BLS accumulator +type Accumulator struct { + Accumulator []byte `protobuf:"bytes,1,opt,name=accumulator,proto3" json:"accumulator,omitempty"` } -func (m *DID) Reset() { *m = DID{} } -func (m *DID) String() string { return proto.CompactTextString(m) } -func (*DID) ProtoMessage() {} -func (*DID) Descriptor() ([]byte, []int) { +func (m *Accumulator) Reset() { *m = Accumulator{} } +func (m *Accumulator) String() string { return proto.CompactTextString(m) } +func (*Accumulator) ProtoMessage() {} +func (*Accumulator) Descriptor() ([]byte, []int) { return fileDescriptor_739bb5ab5cb60751, []int{0} } -func (m *DID) XXX_Unmarshal(b []byte) error { +func (m *Accumulator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *DID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *Accumulator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_DID.Marshal(b, m, deterministic) + return xxx_messageInfo_Accumulator.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -52,49 +49,21 @@ func (m *DID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return b[:n], nil } } -func (m *DID) XXX_Merge(src proto.Message) { - xxx_messageInfo_DID.Merge(m, src) +func (m *Accumulator) XXX_Merge(src proto.Message) { + xxx_messageInfo_Accumulator.Merge(m, src) } -func (m *DID) XXX_Size() int { +func (m *Accumulator) XXX_Size() int { return m.Size() } -func (m *DID) XXX_DiscardUnknown() { - xxx_messageInfo_DID.DiscardUnknown(m) +func (m *Accumulator) XXX_DiscardUnknown() { + xxx_messageInfo_Accumulator.DiscardUnknown(m) } -var xxx_messageInfo_DID proto.InternalMessageInfo +var xxx_messageInfo_Accumulator proto.InternalMessageInfo -func (m *DID) GetId() string { +func (m *Accumulator) GetAccumulator() []byte { if m != nil { - return m.Id - } - return "" -} - -func (m *DID) GetMethod() DIDNamespace { - if m != nil { - return m.Method - } - return DIDNamespace_DID_NAMESPACE_UNSPECIFIED -} - -func (m *DID) GetNetwork() string { - if m != nil { - return m.Network - } - return "" -} - -func (m *DID) GetIdentifier() string { - if m != nil { - return m.Identifier - } - return "" -} - -func (m *DID) GetPaths() []string { - if m != nil { - return m.Paths + return m.Accumulator } return nil } @@ -184,6 +153,83 @@ func (m *Credential) GetController() string { return "" } +// DID defines a parsed DID string +type DID struct { + Method DIDNamespace `protobuf:"varint,1,opt,name=method,proto3,enum=did.v1.DIDNamespace" json:"method,omitempty"` + Network string `protobuf:"bytes,2,opt,name=network,proto3" json:"network,omitempty"` + Subject string `protobuf:"bytes,3,opt,name=subject,proto3" json:"subject,omitempty"` + Identifier string `protobuf:"bytes,4,opt,name=identifier,proto3" json:"identifier,omitempty"` + Paths []string `protobuf:"bytes,5,rep,name=paths,proto3" json:"paths,omitempty"` +} + +func (m *DID) Reset() { *m = DID{} } +func (m *DID) String() string { return proto.CompactTextString(m) } +func (*DID) ProtoMessage() {} +func (*DID) Descriptor() ([]byte, []int) { + return fileDescriptor_739bb5ab5cb60751, []int{2} +} +func (m *DID) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DID.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *DID) XXX_Merge(src proto.Message) { + xxx_messageInfo_DID.Merge(m, src) +} +func (m *DID) XXX_Size() int { + return m.Size() +} +func (m *DID) XXX_DiscardUnknown() { + xxx_messageInfo_DID.DiscardUnknown(m) +} + +var xxx_messageInfo_DID proto.InternalMessageInfo + +func (m *DID) GetMethod() DIDNamespace { + if m != nil { + return m.Method + } + return DIDNamespace_DID_NAMESPACE_UNSPECIFIED +} + +func (m *DID) GetNetwork() string { + if m != nil { + return m.Network + } + return "" +} + +func (m *DID) GetSubject() string { + if m != nil { + return m.Subject + } + return "" +} + +func (m *DID) GetIdentifier() string { + if m != nil { + return m.Identifier + } + return "" +} + +func (m *DID) GetPaths() []string { + if m != nil { + return m.Paths + } + return nil +} + // Document defines a DID document type Document struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` @@ -192,13 +238,14 @@ type Document struct { AssertionMethod []string `protobuf:"bytes,5,rep,name=assertion_method,json=assertionMethod,proto3" json:"assertion_method,omitempty"` CapabilityDelegation []string `protobuf:"bytes,7,rep,name=capability_delegation,json=capabilityDelegation,proto3" json:"capability_delegation,omitempty"` CapabilityInvocation []string `protobuf:"bytes,8,rep,name=capability_invocation,json=capabilityInvocation,proto3" json:"capability_invocation,omitempty"` + Service []string `protobuf:"bytes,9,rep,name=service,proto3" json:"service,omitempty"` } func (m *Document) Reset() { *m = Document{} } func (m *Document) String() string { return proto.CompactTextString(m) } func (*Document) ProtoMessage() {} func (*Document) Descriptor() ([]byte, []int) { - return fileDescriptor_739bb5ab5cb60751, []int{2} + return fileDescriptor_739bb5ab5cb60751, []int{3} } func (m *Document) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -269,6 +316,13 @@ func (m *Document) GetCapabilityInvocation() []string { return nil } +func (m *Document) GetService() []string { + if m != nil { + return m.Service + } + return nil +} + // Metadata defines additional information provided to a did type Metadata struct { OriginUri string `protobuf:"bytes,1,opt,name=origin_uri,json=originUri,proto3" json:"origin_uri,omitempty"` @@ -280,7 +334,7 @@ func (m *Metadata) Reset() { *m = Metadata{} } func (m *Metadata) String() string { return proto.CompactTextString(m) } func (*Metadata) ProtoMessage() {} func (*Metadata) Descriptor() ([]byte, []int) { - return fileDescriptor_739bb5ab5cb60751, []int{3} + return fileDescriptor_739bb5ab5cb60751, []int{4} } func (m *Metadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -341,7 +395,7 @@ func (m *Permissions) Reset() { *m = Permissions{} } func (m *Permissions) String() string { return proto.CompactTextString(m) } func (*Permissions) ProtoMessage() {} func (*Permissions) Descriptor() ([]byte, []int) { - return fileDescriptor_739bb5ab5cb60751, []int{4} + return fileDescriptor_739bb5ab5cb60751, []int{5} } func (m *Permissions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -386,19 +440,17 @@ func (m *Permissions) GetScopes() []PermissionScope { // Profile defines an associated public identity for a did subject type Profile struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"` - Controller string `protobuf:"bytes,3,opt,name=controller,proto3" json:"controller,omitempty"` - Credentials []*Credential `protobuf:"bytes,4,rep,name=credentials,proto3" json:"credentials,omitempty"` - Attestations []*VerificationMethod `protobuf:"bytes,5,rep,name=attestations,proto3" json:"attestations,omitempty"` - Metadata *Metadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"` + Controller string `protobuf:"bytes,3,opt,name=controller,proto3" json:"controller,omitempty"` + Metadata *Metadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (m *Profile) Reset() { *m = Profile{} } func (m *Profile) String() string { return proto.CompactTextString(m) } func (*Profile) ProtoMessage() {} func (*Profile) Descriptor() ([]byte, []int) { - return fileDescriptor_739bb5ab5cb60751, []int{5} + return fileDescriptor_739bb5ab5cb60751, []int{6} } func (m *Profile) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -448,20 +500,6 @@ func (m *Profile) GetController() string { return "" } -func (m *Profile) GetCredentials() []*Credential { - if m != nil { - return m.Credentials - } - return nil -} - -func (m *Profile) GetAttestations() []*VerificationMethod { - if m != nil { - return m.Attestations - } - return nil -} - func (m *Profile) GetMetadata() *Metadata { if m != nil { return m.Metadata @@ -480,7 +518,7 @@ func (m *Property) Reset() { *m = Property{} } func (m *Property) String() string { return proto.CompactTextString(m) } func (*Property) ProtoMessage() {} func (*Property) Descriptor() ([]byte, []int) { - return fileDescriptor_739bb5ab5cb60751, []int{6} + return fileDescriptor_739bb5ab5cb60751, []int{7} } func (m *Property) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -525,18 +563,20 @@ func (m *Property) GetKey() []byte { // PubKey defines a public key for a did type PubKey struct { - Namespace DIDNamespace `protobuf:"varint,1,opt,name=namespace,proto3,enum=did.v1.DIDNamespace" json:"namespace,omitempty"` - Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - Kind KeyType `protobuf:"varint,3,opt,name=kind,proto3,enum=did.v1.KeyType" json:"kind,omitempty"` - Multibase string `protobuf:"bytes,5,opt,name=multibase,proto3" json:"multibase,omitempty"` - Jwks map[string]string `protobuf:"bytes,6,rep,name=jwks,proto3" json:"jwks,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Role KeyRole `protobuf:"varint,1,opt,name=role,proto3,enum=did.v1.KeyRole" json:"role,omitempty"` + Algorithm KeyAlgorithm `protobuf:"varint,2,opt,name=algorithm,proto3,enum=did.v1.KeyAlgorithm" json:"algorithm,omitempty"` + Encoding KeyEncoding `protobuf:"varint,3,opt,name=encoding,proto3,enum=did.v1.KeyEncoding" json:"encoding,omitempty"` + Raw []byte `protobuf:"bytes,4,opt,name=raw,proto3" json:"raw,omitempty"` + Hex string `protobuf:"bytes,5,opt,name=hex,proto3" json:"hex,omitempty"` + Multibase string `protobuf:"bytes,6,opt,name=multibase,proto3" json:"multibase,omitempty"` + Jwk map[string]string `protobuf:"bytes,7,rep,name=jwk,proto3" json:"jwk,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (m *PubKey) Reset() { *m = PubKey{} } func (m *PubKey) String() string { return proto.CompactTextString(m) } func (*PubKey) ProtoMessage() {} func (*PubKey) Descriptor() ([]byte, []int) { - return fileDescriptor_739bb5ab5cb60751, []int{7} + return fileDescriptor_739bb5ab5cb60751, []int{8} } func (m *PubKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -565,25 +605,39 @@ func (m *PubKey) XXX_DiscardUnknown() { var xxx_messageInfo_PubKey proto.InternalMessageInfo -func (m *PubKey) GetNamespace() DIDNamespace { +func (m *PubKey) GetRole() KeyRole { if m != nil { - return m.Namespace + return m.Role } - return DIDNamespace_DID_NAMESPACE_UNSPECIFIED + return KeyRole_KEY_ROLE_UNSPECIFIED } -func (m *PubKey) GetKey() []byte { +func (m *PubKey) GetAlgorithm() KeyAlgorithm { if m != nil { - return m.Key + return m.Algorithm + } + return KeyAlgorithm_KEY_ALGORITHM_UNSPECIFIED +} + +func (m *PubKey) GetEncoding() KeyEncoding { + if m != nil { + return m.Encoding + } + return KeyEncoding_KEY_ENCODING_UNSPECIFIED +} + +func (m *PubKey) GetRaw() []byte { + if m != nil { + return m.Raw } return nil } -func (m *PubKey) GetKind() KeyType { +func (m *PubKey) GetHex() string { if m != nil { - return m.Kind + return m.Hex } - return KeyType_KEY_TYPE_UNSPECIFIED + return "" } func (m *PubKey) GetMultibase() string { @@ -593,25 +647,173 @@ func (m *PubKey) GetMultibase() string { return "" } -func (m *PubKey) GetJwks() map[string]string { +func (m *PubKey) GetJwk() map[string]string { if m != nil { - return m.Jwks + return m.Jwk + } + return nil +} + +// Service defines a Decentralized Service on the Sonr Blockchain +type Service struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` + Origin string `protobuf:"bytes,3,opt,name=origin,proto3" json:"origin,omitempty"` + Permissions *Permissions `protobuf:"bytes,4,opt,name=permissions,proto3" json:"permissions,omitempty"` + Openid *OpenIDConfig `protobuf:"bytes,5,opt,name=openid,proto3" json:"openid,omitempty"` + Metadata *Metadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (m *Service) Reset() { *m = Service{} } +func (m *Service) String() string { return proto.CompactTextString(m) } +func (*Service) ProtoMessage() {} +func (*Service) Descriptor() ([]byte, []int) { + return fileDescriptor_739bb5ab5cb60751, []int{9} +} +func (m *Service) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Service) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Service.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Service) XXX_Merge(src proto.Message) { + xxx_messageInfo_Service.Merge(m, src) +} +func (m *Service) XXX_Size() int { + return m.Size() +} +func (m *Service) XXX_DiscardUnknown() { + xxx_messageInfo_Service.DiscardUnknown(m) +} + +var xxx_messageInfo_Service proto.InternalMessageInfo + +func (m *Service) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *Service) GetController() string { + if m != nil { + return m.Controller + } + return "" +} + +func (m *Service) GetOrigin() string { + if m != nil { + return m.Origin + } + return "" +} + +func (m *Service) GetPermissions() *Permissions { + if m != nil { + return m.Permissions + } + return nil +} + +func (m *Service) GetOpenid() *OpenIDConfig { + if m != nil { + return m.Openid + } + return nil +} + +func (m *Service) GetMetadata() *Metadata { + if m != nil { + return m.Metadata + } + return nil +} + +// Token defines a macron token +type Token struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` + Macron []byte `protobuf:"bytes,3,opt,name=macron,proto3" json:"macron,omitempty"` +} + +func (m *Token) Reset() { *m = Token{} } +func (m *Token) String() string { return proto.CompactTextString(m) } +func (*Token) ProtoMessage() {} +func (*Token) Descriptor() ([]byte, []int) { + return fileDescriptor_739bb5ab5cb60751, []int{10} +} +func (m *Token) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Token) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Token.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Token) XXX_Merge(src proto.Message) { + xxx_messageInfo_Token.Merge(m, src) +} +func (m *Token) XXX_Size() int { + return m.Size() +} +func (m *Token) XXX_DiscardUnknown() { + xxx_messageInfo_Token.DiscardUnknown(m) +} + +var xxx_messageInfo_Token proto.InternalMessageInfo + +func (m *Token) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *Token) GetController() string { + if m != nil { + return m.Controller + } + return "" +} + +func (m *Token) GetMacron() []byte { + if m != nil { + return m.Macron } return nil } // VerificationMethod defines a verification method type VerificationMethod struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` - PublicKey *PubKey `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` + Method DIDNamespace `protobuf:"varint,3,opt,name=method,proto3,enum=did.v1.DIDNamespace" json:"method,omitempty"` + PublicKey *PubKey `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + Service *Service `protobuf:"bytes,7,opt,name=service,proto3" json:"service,omitempty"` } func (m *VerificationMethod) Reset() { *m = VerificationMethod{} } func (m *VerificationMethod) String() string { return proto.CompactTextString(m) } func (*VerificationMethod) ProtoMessage() {} func (*VerificationMethod) Descriptor() ([]byte, []int) { - return fileDescriptor_739bb5ab5cb60751, []int{8} + return fileDescriptor_739bb5ab5cb60751, []int{11} } func (m *VerificationMethod) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -654,6 +856,13 @@ func (m *VerificationMethod) GetController() string { return "" } +func (m *VerificationMethod) GetMethod() DIDNamespace { + if m != nil { + return m.Method + } + return DIDNamespace_DID_NAMESPACE_UNSPECIFIED +} + func (m *VerificationMethod) GetPublicKey() *PubKey { if m != nil { return m.PublicKey @@ -661,9 +870,62 @@ func (m *VerificationMethod) GetPublicKey() *PubKey { return nil } +func (m *VerificationMethod) GetService() *Service { + if m != nil { + return m.Service + } + return nil +} + +// Witness defines a BLS witness +type Witness struct { + Witness []byte `protobuf:"bytes,1,opt,name=witness,proto3" json:"witness,omitempty"` +} + +func (m *Witness) Reset() { *m = Witness{} } +func (m *Witness) String() string { return proto.CompactTextString(m) } +func (*Witness) ProtoMessage() {} +func (*Witness) Descriptor() ([]byte, []int) { + return fileDescriptor_739bb5ab5cb60751, []int{12} +} +func (m *Witness) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Witness) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Witness.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Witness) XXX_Merge(src proto.Message) { + xxx_messageInfo_Witness.Merge(m, src) +} +func (m *Witness) XXX_Size() int { + return m.Size() +} +func (m *Witness) XXX_DiscardUnknown() { + xxx_messageInfo_Witness.DiscardUnknown(m) +} + +var xxx_messageInfo_Witness proto.InternalMessageInfo + +func (m *Witness) GetWitness() []byte { + if m != nil { + return m.Witness + } + return nil +} + func init() { - proto.RegisterType((*DID)(nil), "did.v1.DID") + proto.RegisterType((*Accumulator)(nil), "did.v1.Accumulator") proto.RegisterType((*Credential)(nil), "did.v1.Credential") + proto.RegisterType((*DID)(nil), "did.v1.DID") proto.RegisterType((*Document)(nil), "did.v1.Document") proto.RegisterType((*Metadata)(nil), "did.v1.Metadata") proto.RegisterMapType((map[string]*Property)(nil), "did.v1.Metadata.PrivateEntry") @@ -672,71 +934,85 @@ func init() { proto.RegisterType((*Profile)(nil), "did.v1.Profile") proto.RegisterType((*Property)(nil), "did.v1.Property") proto.RegisterType((*PubKey)(nil), "did.v1.PubKey") - proto.RegisterMapType((map[string]string)(nil), "did.v1.PubKey.JwksEntry") + proto.RegisterMapType((map[string]string)(nil), "did.v1.PubKey.JwkEntry") + proto.RegisterType((*Service)(nil), "did.v1.Service") + proto.RegisterType((*Token)(nil), "did.v1.Token") proto.RegisterType((*VerificationMethod)(nil), "did.v1.VerificationMethod") + proto.RegisterType((*Witness)(nil), "did.v1.Witness") } func init() { proto.RegisterFile("did/v1/models.proto", fileDescriptor_739bb5ab5cb60751) } var fileDescriptor_739bb5ab5cb60751 = []byte{ - // 861 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x55, 0x4d, 0x6f, 0xe3, 0x44, - 0x18, 0xae, 0xed, 0x36, 0x1f, 0x6f, 0x42, 0x5a, 0xcd, 0x06, 0x61, 0x45, 0xbb, 0x51, 0xe4, 0x95, - 0x96, 0x22, 0x95, 0x44, 0x9b, 0x5d, 0x69, 0x01, 0xa1, 0x3d, 0x40, 0x38, 0x94, 0x52, 0x14, 0x99, - 0x8f, 0x03, 0x97, 0x68, 0x62, 0x4f, 0x93, 0xd9, 0xd8, 0x1e, 0x6b, 0x66, 0x9c, 0xe2, 0x7f, 0x81, - 0xc4, 0x2f, 0xe0, 0xc2, 0x0f, 0xe1, 0xc4, 0x71, 0x8f, 0x1c, 0x51, 0xfb, 0x23, 0xe0, 0x88, 0x3c, - 0xe3, 0xaf, 0xd6, 0xec, 0x4a, 0x7b, 0xf3, 0x3c, 0xcf, 0xf3, 0xbe, 0x7e, 0x3f, 0x67, 0xe0, 0x81, - 0x4f, 0xfd, 0xd9, 0xfe, 0xe9, 0x2c, 0x64, 0x3e, 0x09, 0xc4, 0x34, 0xe6, 0x4c, 0x32, 0xd4, 0xf2, - 0xa9, 0x3f, 0xdd, 0x3f, 0x1d, 0x0d, 0x73, 0x72, 0x43, 0x22, 0x22, 0x68, 0xce, 0x3a, 0xbf, 0x1a, - 0x60, 0x2d, 0xce, 0x17, 0x68, 0x00, 0x26, 0xf5, 0x6d, 0x63, 0x62, 0x9c, 0x76, 0x5d, 0x93, 0xfa, - 0xe8, 0x0c, 0x5a, 0x21, 0x91, 0x5b, 0xe6, 0xdb, 0xe6, 0xc4, 0x38, 0x1d, 0xcc, 0x87, 0x53, 0xed, - 0x66, 0xba, 0x38, 0x5f, 0x7c, 0x8b, 0x43, 0x22, 0x62, 0xec, 0x11, 0x37, 0xd7, 0x20, 0x1b, 0xda, - 0x11, 0x91, 0xd7, 0x8c, 0xef, 0x6c, 0x4b, 0xb9, 0x28, 0x8e, 0x68, 0x0c, 0x40, 0x7d, 0x12, 0x49, - 0x7a, 0x45, 0x09, 0xb7, 0x0f, 0x15, 0x59, 0x43, 0xd0, 0x10, 0x8e, 0x62, 0x2c, 0xb7, 0xc2, 0x3e, - 0x9a, 0x58, 0xa7, 0x5d, 0x57, 0x1f, 0x9c, 0x3f, 0x0c, 0x80, 0x2f, 0x39, 0x51, 0x32, 0x1c, 0x34, - 0x82, 0xfb, 0x10, 0x8e, 0xbd, 0x92, 0x5d, 0xc9, 0x34, 0x26, 0x2a, 0xca, 0xae, 0x3b, 0xa8, 0xe0, - 0xef, 0xd3, 0x98, 0xa0, 0xc7, 0xf0, 0x5e, 0x4d, 0x48, 0x7d, 0x15, 0x5d, 0xdf, 0xed, 0x57, 0xe0, - 0xb9, 0x8f, 0x1e, 0x42, 0x57, 0x72, 0x1c, 0x89, 0x98, 0x71, 0x69, 0x1f, 0xaa, 0x30, 0x2a, 0x20, - 0x4b, 0x4d, 0x24, 0xeb, 0x57, 0xc4, 0x93, 0x76, 0x4b, 0xa7, 0x96, 0x1f, 0xb3, 0xd4, 0x3c, 0x16, - 0x49, 0xce, 0x82, 0x80, 0x70, 0xbb, 0xad, 0x53, 0xab, 0x10, 0xe7, 0x77, 0x13, 0x3a, 0x0b, 0xe6, - 0x25, 0x21, 0x89, 0x64, 0x23, 0x85, 0x4b, 0x18, 0xee, 0x09, 0xa7, 0x57, 0xd4, 0xc3, 0x92, 0xb2, - 0x68, 0xa5, 0x0b, 0x29, 0x6c, 0x73, 0x62, 0x9d, 0xf6, 0xe6, 0xa3, 0xa2, 0xda, 0x3f, 0xd6, 0x34, - 0x97, 0x4a, 0xe2, 0x3e, 0xd8, 0x37, 0x30, 0x81, 0x9e, 0xc0, 0x00, 0x27, 0x72, 0x9b, 0xe5, 0xa4, - 0x89, 0x3c, 0x91, 0x7b, 0x28, 0xfa, 0x08, 0x4e, 0xb0, 0x10, 0x84, 0xd7, 0xfe, 0x99, 0x57, 0xfe, - 0xb8, 0xc4, 0xb5, 0x4f, 0xf4, 0x0c, 0xde, 0xf7, 0x70, 0x8c, 0xd7, 0x34, 0xa0, 0x32, 0x5d, 0xf9, - 0x24, 0x20, 0x1b, 0xed, 0xb9, 0xad, 0xf4, 0xc3, 0x8a, 0x5c, 0x94, 0xdc, 0x3d, 0x23, 0x1a, 0xed, - 0x59, 0x1e, 0x4e, 0xe7, 0xbe, 0xd1, 0x79, 0xc9, 0x39, 0xbf, 0x99, 0xd0, 0xb9, 0x24, 0x12, 0xfb, - 0x58, 0x62, 0xf4, 0x08, 0x80, 0x71, 0xba, 0xa1, 0xd1, 0x2a, 0xe1, 0x34, 0x2f, 0x58, 0x57, 0x23, - 0x3f, 0x70, 0x8a, 0x9e, 0x43, 0x2b, 0x4e, 0xd6, 0x01, 0xf5, 0xf2, 0x4a, 0x3d, 0x2c, 0x2a, 0x55, - 0x38, 0x98, 0x2e, 0x15, 0xfd, 0x55, 0x24, 0x79, 0xea, 0xe6, 0x5a, 0xf4, 0x02, 0xda, 0x31, 0xa7, - 0x7b, 0x2c, 0x89, 0x6d, 0x29, 0xb3, 0x47, 0x4d, 0x33, 0xcd, 0x6b, 0xbb, 0x42, 0x3d, 0xfa, 0x14, - 0x7a, 0x35, 0x7f, 0xe8, 0x04, 0xac, 0x1d, 0x49, 0xf3, 0xa8, 0xb2, 0xcf, 0x6c, 0x7e, 0xf7, 0x38, - 0x48, 0x8a, 0x01, 0xd4, 0x87, 0xcf, 0xcc, 0x4f, 0x8c, 0xd1, 0x37, 0xd0, 0xaf, 0xfb, 0xfc, 0x1f, - 0xdb, 0x27, 0x75, 0xdb, 0xde, 0xfc, 0xa4, 0x88, 0x69, 0xc9, 0x59, 0x4c, 0xb8, 0x4c, 0x6b, 0xde, - 0x9c, 0x00, 0x7a, 0x4b, 0xc2, 0x43, 0x2a, 0x04, 0x65, 0x91, 0xc8, 0xd6, 0x73, 0xc3, 0x71, 0x24, - 0x85, 0x6d, 0x4c, 0xac, 0x37, 0xaf, 0xa7, 0xd6, 0xa0, 0x19, 0xb4, 0x84, 0xc7, 0x62, 0xa2, 0xc7, - 0x6b, 0x30, 0xff, 0xa0, 0xfc, 0x53, 0xe9, 0xf2, 0xbb, 0x8c, 0x77, 0x73, 0x99, 0xf3, 0x8f, 0x01, - 0xed, 0x25, 0x67, 0x57, 0x34, 0x20, 0x8d, 0xc9, 0xad, 0x2d, 0x84, 0xf9, 0xb6, 0x85, 0xb0, 0xee, - 0x2f, 0x04, 0x7a, 0x0e, 0xbd, 0x6a, 0xf1, 0x84, 0x9a, 0xd0, 0xde, 0x1c, 0x15, 0xb1, 0x54, 0xfb, - 0xee, 0xd6, 0x65, 0xe8, 0x25, 0xf4, 0xb1, 0x94, 0x44, 0x48, 0x35, 0x2c, 0xfa, 0xa2, 0x78, 0xfb, - 0x86, 0xdc, 0xd1, 0xa3, 0x33, 0xe8, 0x84, 0x79, 0x93, 0xd5, 0x06, 0xd7, 0x0a, 0x5d, 0x34, 0xdf, - 0x2d, 0x15, 0xce, 0x4b, 0xe8, 0x14, 0xe5, 0x47, 0x13, 0xe8, 0x61, 0xcf, 0x4b, 0xc2, 0x24, 0xc0, - 0x92, 0x71, 0x55, 0x82, 0xbe, 0x5b, 0x87, 0x8a, 0x9e, 0x9a, 0x8a, 0xc9, 0x3e, 0x9d, 0x7f, 0x0d, - 0x68, 0x2d, 0x93, 0xf5, 0x05, 0x49, 0xd1, 0x1c, 0xba, 0x51, 0xd1, 0x0a, 0x65, 0xfc, 0xa6, 0x36, - 0x55, 0xb2, 0xa6, 0x43, 0xf4, 0x18, 0x0e, 0x77, 0x34, 0xd2, 0x37, 0xd7, 0x60, 0x7e, 0x5c, 0x38, - 0xb8, 0x20, 0x69, 0x76, 0xc3, 0xb9, 0x8a, 0xcc, 0xae, 0xb0, 0x30, 0x09, 0x24, 0x5d, 0x63, 0x41, - 0xec, 0x23, 0xbd, 0x33, 0x25, 0x80, 0xce, 0xe0, 0xf0, 0xd5, 0xf5, 0x4e, 0xd8, 0x2d, 0x55, 0x39, - 0xbb, 0x6c, 0xbe, 0x0a, 0x73, 0xfa, 0xf5, 0xf5, 0x4e, 0xe8, 0xa9, 0x57, 0xaa, 0xd1, 0x0b, 0xe8, - 0x96, 0xd0, 0xbb, 0x0c, 0xbc, 0x23, 0x00, 0x35, 0x9b, 0xd1, 0x18, 0x9f, 0xbb, 0x43, 0x62, 0x36, - 0x86, 0xe4, 0x63, 0x00, 0xbd, 0xb4, 0xab, 0xec, 0xc7, 0x96, 0x6a, 0xd8, 0xe0, 0x6e, 0xc8, 0x6e, - 0x57, 0x2b, 0x2e, 0x48, 0xfa, 0xc5, 0xe7, 0x7f, 0xde, 0x8c, 0x8d, 0xd7, 0x37, 0x63, 0xe3, 0xef, - 0x9b, 0xb1, 0xf1, 0xcb, 0xed, 0xf8, 0xe0, 0xf5, 0xed, 0xf8, 0xe0, 0xaf, 0xdb, 0xf1, 0xc1, 0x4f, - 0xce, 0x86, 0xca, 0x6d, 0xb2, 0x9e, 0x7a, 0x2c, 0x9c, 0xb1, 0x48, 0xb0, 0x88, 0xcf, 0xb6, 0xd7, - 0x38, 0x9d, 0xfd, 0x3c, 0xcb, 0x1e, 0xc2, 0xec, 0xd1, 0x10, 0xeb, 0x96, 0x7a, 0x04, 0x9f, 0xfd, - 0x17, 0x00, 0x00, 0xff, 0xff, 0x25, 0x90, 0xfd, 0x6b, 0x39, 0x07, 0x00, 0x00, + // 1026 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xef, 0xee, 0x36, 0xfe, 0xf3, 0x1c, 0xdc, 0x68, 0x12, 0xca, 0xca, 0x6a, 0xad, 0x68, 0x23, + 0x95, 0x44, 0x2a, 0xb6, 0xea, 0xf2, 0x5f, 0x08, 0xa9, 0xd4, 0x3d, 0x84, 0x10, 0x1a, 0x6d, 0x0b, + 0x48, 0x5c, 0xa2, 0xf1, 0xee, 0xc4, 0x9e, 0x66, 0x77, 0x66, 0x35, 0x33, 0xeb, 0xc4, 0x47, 0xbe, + 0x01, 0x5f, 0x80, 0x03, 0x9f, 0x82, 0x2b, 0xe2, 0xc4, 0x81, 0x43, 0x8f, 0x1c, 0x51, 0xc2, 0x07, + 0x41, 0x3b, 0x33, 0xeb, 0xdd, 0xc4, 0x40, 0x29, 0x17, 0x6b, 0xde, 0xfb, 0xfd, 0xe6, 0xcd, 0xfb, + 0xef, 0x85, 0xcd, 0x98, 0xc6, 0xc3, 0xf9, 0x83, 0x61, 0xca, 0x63, 0x92, 0xc8, 0x41, 0x26, 0xb8, + 0xe2, 0xa8, 0x11, 0xd3, 0x78, 0x30, 0x7f, 0xd0, 0xbb, 0x6d, 0xc1, 0x88, 0x33, 0xa9, 0x30, 0x53, + 0x16, 0xef, 0x6d, 0x59, 0xfd, 0x94, 0x30, 0x22, 0xe9, 0x52, 0x3b, 0xe5, 0x53, 0xae, 0x8f, 0xc3, + 0xe2, 0x64, 0xb4, 0xc1, 0x10, 0x3a, 0x8f, 0xa2, 0x28, 0x4f, 0xf3, 0x04, 0x2b, 0x2e, 0xd0, 0x36, + 0x74, 0x70, 0x25, 0xfa, 0xce, 0xb6, 0xb3, 0xbb, 0x1e, 0xd6, 0x55, 0xc1, 0x2f, 0x0e, 0xc0, 0x63, + 0x41, 0x62, 0xc2, 0x14, 0xc5, 0x09, 0xea, 0x82, 0x4b, 0x63, 0xcd, 0x6b, 0x87, 0x2e, 0x8d, 0xd1, + 0xdb, 0x70, 0x2b, 0x5a, 0xa2, 0xc7, 0x6a, 0x91, 0x11, 0xdf, 0xd5, 0x60, 0xb7, 0x52, 0x3f, 0x5f, + 0x64, 0x04, 0xed, 0xc0, 0x1b, 0x35, 0x22, 0x8d, 0x7d, 0x4f, 0xbf, 0xb5, 0x5e, 0x29, 0xf7, 0x63, + 0x74, 0x07, 0xda, 0x4a, 0x60, 0x26, 0x33, 0x2e, 0x94, 0x7f, 0x73, 0xdb, 0xdb, 0x6d, 0x87, 0x95, + 0x02, 0xf9, 0xd0, 0x94, 0xf9, 0xe4, 0x05, 0x89, 0x94, 0xdf, 0xd0, 0x6f, 0x94, 0x22, 0xea, 0x03, + 0x44, 0x9c, 0x29, 0xc1, 0x93, 0x84, 0x08, 0xbf, 0xa9, 0xc1, 0x9a, 0x26, 0xf8, 0xc1, 0x01, 0x6f, + 0xbc, 0x3f, 0x46, 0xf7, 0xa1, 0x91, 0x12, 0x35, 0xe3, 0x26, 0x82, 0xee, 0x68, 0x6b, 0x60, 0x52, + 0x3b, 0x18, 0xef, 0x8f, 0xbf, 0xc4, 0x29, 0x91, 0x19, 0x8e, 0x48, 0x68, 0x39, 0xc5, 0x7b, 0x8c, + 0xa8, 0x33, 0x2e, 0x4e, 0x6d, 0x4c, 0xa5, 0x58, 0xf7, 0xc4, 0x5b, 0xf1, 0x84, 0xea, 0x78, 0x4e, + 0x28, 0x11, 0xfe, 0x4d, 0xe3, 0x49, 0xa5, 0x41, 0x5b, 0xb0, 0x96, 0x61, 0x35, 0x93, 0xfe, 0x9a, + 0x8e, 0xce, 0x08, 0xc1, 0xcf, 0x2e, 0xb4, 0xc6, 0x3c, 0xca, 0x53, 0xc2, 0xd4, 0x4a, 0x8a, 0x0f, + 0x61, 0x6b, 0x4e, 0x04, 0x3d, 0xa1, 0x11, 0x56, 0x94, 0xb3, 0x63, 0xe3, 0x9d, 0xf4, 0xdd, 0x6d, + 0x6f, 0xb7, 0x33, 0xea, 0x95, 0x21, 0x7c, 0x5d, 0xe3, 0x1c, 0x6a, 0x4a, 0xb8, 0x39, 0x5f, 0xd1, + 0x49, 0x74, 0x0f, 0xba, 0x38, 0x57, 0xb3, 0xc2, 0x23, 0x03, 0xd8, 0x44, 0x5f, 0xd3, 0xa2, 0x3d, + 0xd8, 0xc0, 0x52, 0x12, 0x51, 0x7b, 0xd3, 0x3a, 0x7d, 0x6b, 0xa9, 0x37, 0x36, 0xd1, 0x43, 0x78, + 0x33, 0xc2, 0x19, 0x9e, 0xd0, 0x84, 0xaa, 0xc5, 0x71, 0x4c, 0x12, 0x32, 0x35, 0x96, 0x9b, 0x9a, + 0xbf, 0x55, 0x81, 0xe3, 0x25, 0x76, 0xed, 0x12, 0x65, 0x73, 0x6e, 0xdd, 0x69, 0x5d, 0xbf, 0xb4, + 0xbf, 0xc4, 0x74, 0xe2, 0x89, 0x98, 0xd3, 0x88, 0xf8, 0x6d, 0x4d, 0x2b, 0xc5, 0xe0, 0x47, 0x17, + 0x5a, 0x87, 0x44, 0xe1, 0x18, 0x2b, 0x8c, 0xee, 0x02, 0x70, 0x41, 0xa7, 0x94, 0x1d, 0xe7, 0x82, + 0xda, 0x54, 0xb6, 0x8d, 0xe6, 0x2b, 0x41, 0xd1, 0xbb, 0xd0, 0xc8, 0xf2, 0x49, 0x42, 0x23, 0x9b, + 0xc3, 0x3b, 0x65, 0x0e, 0x4b, 0x03, 0x83, 0x23, 0x0d, 0x3f, 0x61, 0x4a, 0x2c, 0x42, 0xcb, 0x45, + 0x1f, 0x40, 0x33, 0x13, 0x74, 0x8e, 0x15, 0xf1, 0x3d, 0x7d, 0xed, 0xee, 0xea, 0x35, 0x83, 0x9b, + 0x7b, 0x25, 0xbb, 0xf7, 0x11, 0x74, 0x6a, 0xf6, 0xd0, 0x06, 0x78, 0xa7, 0x64, 0x61, 0xbd, 0x2a, + 0x8e, 0x45, 0x53, 0xcc, 0x71, 0x92, 0x97, 0xa3, 0x63, 0x84, 0x8f, 0xdd, 0x0f, 0x9d, 0xde, 0x17, + 0xb0, 0x5e, 0xb7, 0xf9, 0x37, 0x77, 0xef, 0xd5, 0xef, 0x76, 0x46, 0x1b, 0xa5, 0x4f, 0x47, 0x82, + 0x67, 0x44, 0xa8, 0x45, 0xcd, 0x5a, 0x90, 0x40, 0xe7, 0x88, 0x88, 0x94, 0x4a, 0x49, 0x39, 0x93, + 0xc5, 0x34, 0x4c, 0x45, 0xb1, 0x47, 0x7c, 0x67, 0xdb, 0xfb, 0xe7, 0x69, 0x30, 0x1c, 0x34, 0x84, + 0x86, 0x8c, 0x78, 0x46, 0x4c, 0xe3, 0x75, 0x47, 0x6f, 0x2d, 0x5f, 0x5a, 0x9a, 0x7c, 0x56, 0xe0, + 0xa1, 0xa5, 0x05, 0xdf, 0x39, 0xd0, 0x3c, 0x12, 0xfc, 0x84, 0x26, 0x64, 0xa5, 0xa7, 0x6b, 0x03, + 0xe4, 0xfe, 0xdb, 0x28, 0x7b, 0xd7, 0x47, 0x19, 0xdd, 0x87, 0x56, 0x6a, 0xd3, 0xad, 0xc7, 0xab, + 0x16, 0x72, 0x59, 0x86, 0x70, 0xc9, 0x08, 0x3e, 0x85, 0x56, 0x99, 0x88, 0x57, 0xef, 0xba, 0x32, + 0xbb, 0xae, 0x46, 0x8a, 0x63, 0xf0, 0x93, 0x0b, 0x8d, 0xa3, 0x7c, 0x72, 0x40, 0x16, 0x68, 0x07, + 0x6e, 0x0a, 0x9e, 0x10, 0xbb, 0x39, 0x6e, 0x95, 0x8f, 0x1e, 0x90, 0x45, 0xc8, 0x13, 0x12, 0x6a, + 0x10, 0x8d, 0xa0, 0x8d, 0x93, 0x29, 0x17, 0x54, 0xcd, 0x52, 0x6d, 0xa7, 0x96, 0xd5, 0x03, 0xb2, + 0x78, 0x54, 0x62, 0x61, 0x45, 0x43, 0x43, 0x68, 0x11, 0x16, 0xf1, 0x98, 0xb2, 0xa9, 0x8e, 0xb7, + 0x3b, 0xda, 0xac, 0x5d, 0x79, 0x62, 0xa1, 0x70, 0x49, 0x2a, 0xdc, 0x14, 0xf8, 0x4c, 0x47, 0xbf, + 0x1e, 0x16, 0xc7, 0x42, 0x33, 0x23, 0xe7, 0xfe, 0x9a, 0x69, 0x8b, 0x19, 0x39, 0x2f, 0x36, 0x69, + 0x9a, 0x27, 0x8a, 0x4e, 0xb0, 0x24, 0x76, 0x5b, 0x56, 0x0a, 0xb4, 0x07, 0xde, 0x8b, 0xb3, 0x53, + 0x3d, 0x9e, 0x9d, 0x5a, 0x21, 0x75, 0xa0, 0x83, 0xcf, 0xcf, 0x4e, 0x4d, 0x03, 0x17, 0x9c, 0xde, + 0xfb, 0xd0, 0x2a, 0x15, 0xaf, 0xd3, 0xb9, 0xc1, 0x9f, 0x0e, 0x34, 0x9f, 0x99, 0xd9, 0x5c, 0xa9, + 0xfe, 0xd5, 0x1a, 0xbb, 0x2b, 0x35, 0xbe, 0x0d, 0x0d, 0x33, 0xac, 0xb6, 0xfe, 0x56, 0x42, 0xef, + 0x41, 0x27, 0xab, 0xfa, 0xd7, 0x96, 0x7f, 0x73, 0xb5, 0x0f, 0x65, 0x58, 0xe7, 0x15, 0x7d, 0xce, + 0x33, 0xc2, 0x68, 0xac, 0x13, 0xd4, 0xa9, 0x2a, 0xf2, 0x34, 0x23, 0x6c, 0x7f, 0xfc, 0x98, 0xb3, + 0x13, 0x3a, 0x0d, 0x2d, 0xe7, 0x4a, 0x83, 0x35, 0x5e, 0xd9, 0x60, 0x4f, 0x61, 0xed, 0x39, 0x3f, + 0x25, 0xec, 0xff, 0xc4, 0x98, 0xe2, 0x48, 0x70, 0x66, 0xff, 0x08, 0xad, 0x14, 0xfc, 0xe6, 0x00, + 0x5a, 0x5d, 0xe5, 0xaf, 0x6d, 0xbe, 0xfa, 0xa7, 0xf3, 0xfe, 0xc3, 0x3f, 0xdd, 0x3b, 0x00, 0x66, + 0xc9, 0x1d, 0x17, 0xf5, 0x35, 0x79, 0xed, 0x5e, 0x6d, 0x8b, 0xb0, 0x6d, 0x18, 0xc5, 0x28, 0xec, + 0x55, 0x5b, 0xb8, 0xa9, 0xb9, 0xcb, 0x69, 0xb0, 0x15, 0xaf, 0xd6, 0xf2, 0x0e, 0x34, 0xbf, 0xa1, + 0x8a, 0x11, 0x29, 0x8b, 0x99, 0x3f, 0x33, 0x47, 0x3b, 0x7b, 0xa5, 0xf8, 0xd9, 0x27, 0xbf, 0x5e, + 0xf4, 0x9d, 0x97, 0x17, 0x7d, 0xe7, 0x8f, 0x8b, 0xbe, 0xf3, 0xfd, 0x65, 0xff, 0xc6, 0xcb, 0xcb, + 0xfe, 0x8d, 0xdf, 0x2f, 0xfb, 0x37, 0xbe, 0x0d, 0xa6, 0x54, 0xcd, 0xf2, 0xc9, 0x20, 0xe2, 0xe9, + 0x90, 0x33, 0xc9, 0x99, 0x18, 0xea, 0x9f, 0xf3, 0x61, 0xf1, 0xcd, 0x53, 0x7c, 0x6e, 0xc8, 0x49, + 0x43, 0x7f, 0xd9, 0x3c, 0xfc, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x95, 0xda, 0x01, 0x93, 0x3c, 0x09, + 0x00, 0x00, } -func (m *DID) Marshal() (dAtA []byte, err error) { +func (m *Accumulator) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -746,48 +1022,20 @@ func (m *DID) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *DID) MarshalTo(dAtA []byte) (int, error) { +func (m *Accumulator) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *DID) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *Accumulator) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Paths) > 0 { - for iNdEx := len(m.Paths) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Paths[iNdEx]) - copy(dAtA[i:], m.Paths[iNdEx]) - i = encodeVarintModels(dAtA, i, uint64(len(m.Paths[iNdEx]))) - i-- - dAtA[i] = 0x2a - } - } - if len(m.Identifier) > 0 { - i -= len(m.Identifier) - copy(dAtA[i:], m.Identifier) - i = encodeVarintModels(dAtA, i, uint64(len(m.Identifier))) - i-- - dAtA[i] = 0x22 - } - if len(m.Network) > 0 { - i -= len(m.Network) - copy(dAtA[i:], m.Network) - i = encodeVarintModels(dAtA, i, uint64(len(m.Network))) - i-- - dAtA[i] = 0x1a - } - if m.Method != 0 { - i = encodeVarintModels(dAtA, i, uint64(m.Method)) - i-- - dAtA[i] = 0x10 - } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintModels(dAtA, i, uint64(len(m.Id))) + if len(m.Accumulator) > 0 { + i -= len(m.Accumulator) + copy(dAtA[i:], m.Accumulator) + i = encodeVarintModels(dAtA, i, uint64(len(m.Accumulator))) i-- dAtA[i] = 0xa } @@ -861,6 +1109,64 @@ func (m *Credential) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *DID) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DID) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DID) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Paths) > 0 { + for iNdEx := len(m.Paths) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Paths[iNdEx]) + copy(dAtA[i:], m.Paths[iNdEx]) + i = encodeVarintModels(dAtA, i, uint64(len(m.Paths[iNdEx]))) + i-- + dAtA[i] = 0x2a + } + } + if len(m.Identifier) > 0 { + i -= len(m.Identifier) + copy(dAtA[i:], m.Identifier) + i = encodeVarintModels(dAtA, i, uint64(len(m.Identifier))) + i-- + dAtA[i] = 0x22 + } + if len(m.Subject) > 0 { + i -= len(m.Subject) + copy(dAtA[i:], m.Subject) + i = encodeVarintModels(dAtA, i, uint64(len(m.Subject))) + i-- + dAtA[i] = 0x1a + } + if len(m.Network) > 0 { + i -= len(m.Network) + copy(dAtA[i:], m.Network) + i = encodeVarintModels(dAtA, i, uint64(len(m.Network))) + i-- + dAtA[i] = 0x12 + } + if m.Method != 0 { + i = encodeVarintModels(dAtA, i, uint64(m.Method)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *Document) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -881,6 +1187,15 @@ func (m *Document) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Service) > 0 { + for iNdEx := len(m.Service) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Service[iNdEx]) + copy(dAtA[i:], m.Service[iNdEx]) + i = encodeVarintModels(dAtA, i, uint64(len(m.Service[iNdEx]))) + i-- + dAtA[i] = 0x4a + } + } if len(m.CapabilityInvocation) > 0 { for iNdEx := len(m.CapabilityInvocation) - 1; iNdEx >= 0; iNdEx-- { i -= len(m.CapabilityInvocation[iNdEx]) @@ -1105,35 +1420,7 @@ func (m *Profile) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintModels(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x32 - } - if len(m.Attestations) > 0 { - for iNdEx := len(m.Attestations) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Attestations[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintModels(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - } - if len(m.Credentials) > 0 { - for iNdEx := len(m.Credentials) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Credentials[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintModels(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } + dAtA[i] = 0x22 } if len(m.Controller) > 0 { i -= len(m.Controller) @@ -1216,9 +1503,9 @@ func (m *PubKey) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.Jwks) > 0 { - for k := range m.Jwks { - v := m.Jwks[k] + if len(m.Jwk) > 0 { + for k := range m.Jwk { + v := m.Jwk[k] baseI := i i -= len(v) copy(dAtA[i:], v) @@ -1232,7 +1519,7 @@ func (m *PubKey) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0xa i = encodeVarintModels(dAtA, i, uint64(baseI-i)) i-- - dAtA[i] = 0x32 + dAtA[i] = 0x3a } } if len(m.Multibase) > 0 { @@ -1240,24 +1527,160 @@ func (m *PubKey) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.Multibase) i = encodeVarintModels(dAtA, i, uint64(len(m.Multibase))) i-- + dAtA[i] = 0x32 + } + if len(m.Hex) > 0 { + i -= len(m.Hex) + copy(dAtA[i:], m.Hex) + i = encodeVarintModels(dAtA, i, uint64(len(m.Hex))) + i-- dAtA[i] = 0x2a } - if m.Kind != 0 { - i = encodeVarintModels(dAtA, i, uint64(m.Kind)) + if len(m.Raw) > 0 { + i -= len(m.Raw) + copy(dAtA[i:], m.Raw) + i = encodeVarintModels(dAtA, i, uint64(len(m.Raw))) + i-- + dAtA[i] = 0x22 + } + if m.Encoding != 0 { + i = encodeVarintModels(dAtA, i, uint64(m.Encoding)) i-- dAtA[i] = 0x18 } - if len(m.Key) > 0 { - i -= len(m.Key) - copy(dAtA[i:], m.Key) - i = encodeVarintModels(dAtA, i, uint64(len(m.Key))) + if m.Algorithm != 0 { + i = encodeVarintModels(dAtA, i, uint64(m.Algorithm)) + i-- + dAtA[i] = 0x10 + } + if m.Role != 0 { + i = encodeVarintModels(dAtA, i, uint64(m.Role)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *Service) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Service) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Service) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Metadata != nil { + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintModels(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if m.Openid != nil { + { + size, err := m.Openid.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintModels(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if m.Permissions != nil { + { + size, err := m.Permissions.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintModels(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if len(m.Origin) > 0 { + i -= len(m.Origin) + copy(dAtA[i:], m.Origin) + i = encodeVarintModels(dAtA, i, uint64(len(m.Origin))) + i-- + dAtA[i] = 0x1a + } + if len(m.Controller) > 0 { + i -= len(m.Controller) + copy(dAtA[i:], m.Controller) + i = encodeVarintModels(dAtA, i, uint64(len(m.Controller))) i-- dAtA[i] = 0x12 } - if m.Namespace != 0 { - i = encodeVarintModels(dAtA, i, uint64(m.Namespace)) + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintModels(dAtA, i, uint64(len(m.Id))) i-- - dAtA[i] = 0x8 + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *Token) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Token) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Token) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Macron) > 0 { + i -= len(m.Macron) + copy(dAtA[i:], m.Macron) + i = encodeVarintModels(dAtA, i, uint64(len(m.Macron))) + i-- + dAtA[i] = 0x1a + } + if len(m.Controller) > 0 { + i -= len(m.Controller) + copy(dAtA[i:], m.Controller) + i = encodeVarintModels(dAtA, i, uint64(len(m.Controller))) + i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintModels(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa } return len(dAtA) - i, nil } @@ -1282,6 +1705,18 @@ func (m *VerificationMethod) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Service != nil { + { + size, err := m.Service.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintModels(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } if m.PublicKey != nil { { size, err := m.PublicKey.MarshalToSizedBuffer(dAtA[:i]) @@ -1292,7 +1727,12 @@ func (m *VerificationMethod) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintModels(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x1a + dAtA[i] = 0x22 + } + if m.Method != 0 { + i = encodeVarintModels(dAtA, i, uint64(m.Method)) + i-- + dAtA[i] = 0x18 } if len(m.Controller) > 0 { i -= len(m.Controller) @@ -1311,6 +1751,36 @@ func (m *VerificationMethod) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *Witness) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Witness) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Witness) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Witness) > 0 { + i -= len(m.Witness) + copy(dAtA[i:], m.Witness) + i = encodeVarintModels(dAtA, i, uint64(len(m.Witness))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintModels(dAtA []byte, offset int, v uint64) int { offset -= sovModels(v) base := offset @@ -1322,33 +1792,16 @@ func encodeVarintModels(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *DID) Size() (n int) { +func (m *Accumulator) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Id) + l = len(m.Accumulator) if l > 0 { n += 1 + l + sovModels(uint64(l)) } - if m.Method != 0 { - n += 1 + sovModels(uint64(m.Method)) - } - l = len(m.Network) - if l > 0 { - n += 1 + l + sovModels(uint64(l)) - } - l = len(m.Identifier) - if l > 0 { - n += 1 + l + sovModels(uint64(l)) - } - if len(m.Paths) > 0 { - for _, s := range m.Paths { - l = len(s) - n += 1 + l + sovModels(uint64(l)) - } - } return n } @@ -1387,6 +1840,36 @@ func (m *Credential) Size() (n int) { return n } +func (m *DID) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Method != 0 { + n += 1 + sovModels(uint64(m.Method)) + } + l = len(m.Network) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } + l = len(m.Subject) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } + l = len(m.Identifier) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } + if len(m.Paths) > 0 { + for _, s := range m.Paths { + l = len(s) + n += 1 + l + sovModels(uint64(l)) + } + } + return n +} + func (m *Document) Size() (n int) { if m == nil { return 0 @@ -1427,6 +1910,12 @@ func (m *Document) Size() (n int) { n += 1 + l + sovModels(uint64(l)) } } + if len(m.Service) > 0 { + for _, s := range m.Service { + l = len(s) + n += 1 + l + sovModels(uint64(l)) + } + } return n } @@ -1505,18 +1994,6 @@ func (m *Profile) Size() (n int) { if l > 0 { n += 1 + l + sovModels(uint64(l)) } - if len(m.Credentials) > 0 { - for _, e := range m.Credentials { - l = e.Size() - n += 1 + l + sovModels(uint64(l)) - } - } - if len(m.Attestations) > 0 { - for _, e := range m.Attestations { - l = e.Size() - n += 1 + l + sovModels(uint64(l)) - } - } if m.Metadata != nil { l = m.Metadata.Size() n += 1 + l + sovModels(uint64(l)) @@ -1547,22 +2024,29 @@ func (m *PubKey) Size() (n int) { } var l int _ = l - if m.Namespace != 0 { - n += 1 + sovModels(uint64(m.Namespace)) + if m.Role != 0 { + n += 1 + sovModels(uint64(m.Role)) } - l = len(m.Key) + if m.Algorithm != 0 { + n += 1 + sovModels(uint64(m.Algorithm)) + } + if m.Encoding != 0 { + n += 1 + sovModels(uint64(m.Encoding)) + } + l = len(m.Raw) if l > 0 { n += 1 + l + sovModels(uint64(l)) } - if m.Kind != 0 { - n += 1 + sovModels(uint64(m.Kind)) + l = len(m.Hex) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) } l = len(m.Multibase) if l > 0 { n += 1 + l + sovModels(uint64(l)) } - if len(m.Jwks) > 0 { - for k, v := range m.Jwks { + if len(m.Jwk) > 0 { + for k, v := range m.Jwk { _ = k _ = v mapEntrySize := 1 + len(k) + sovModels(uint64(len(k))) + 1 + len(v) + sovModels(uint64(len(v))) @@ -1572,6 +2056,60 @@ func (m *PubKey) Size() (n int) { return n } +func (m *Service) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } + l = len(m.Controller) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } + l = len(m.Origin) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } + if m.Permissions != nil { + l = m.Permissions.Size() + n += 1 + l + sovModels(uint64(l)) + } + if m.Openid != nil { + l = m.Openid.Size() + n += 1 + l + sovModels(uint64(l)) + } + if m.Metadata != nil { + l = m.Metadata.Size() + n += 1 + l + sovModels(uint64(l)) + } + return n +} + +func (m *Token) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } + l = len(m.Controller) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } + l = len(m.Macron) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } + return n +} + func (m *VerificationMethod) Size() (n int) { if m == nil { return 0 @@ -1586,10 +2124,30 @@ func (m *VerificationMethod) Size() (n int) { if l > 0 { n += 1 + l + sovModels(uint64(l)) } + if m.Method != 0 { + n += 1 + sovModels(uint64(m.Method)) + } if m.PublicKey != nil { l = m.PublicKey.Size() n += 1 + l + sovModels(uint64(l)) } + if m.Service != nil { + l = m.Service.Size() + n += 1 + l + sovModels(uint64(l)) + } + return n +} + +func (m *Witness) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Witness) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } return n } @@ -1599,7 +2157,7 @@ func sovModels(x uint64) (n int) { func sozModels(x uint64) (n int) { return sovModels(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *DID) Unmarshal(dAtA []byte) error { +func (m *Accumulator) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1622,17 +2180,17 @@ func (m *DID) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: DID: wiretype end group for non-group") + return fmt.Errorf("proto: Accumulator: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: DID: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Accumulator: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Accumulator", wireType) } - var stringLen uint64 + var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowModels @@ -1642,138 +2200,25 @@ func (m *DID) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + byteLen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if byteLen < 0 { return ErrInvalidLengthModels } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + byteLen if postIndex < 0 { return ErrInvalidLengthModels } if postIndex > l { return io.ErrUnexpectedEOF } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Method", wireType) + m.Accumulator = append(m.Accumulator[:0], dAtA[iNdEx:postIndex]...) + if m.Accumulator == nil { + m.Accumulator = []byte{} } - m.Method = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowModels - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Method |= DIDNamespace(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowModels - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthModels - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthModels - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Network = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Identifier", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowModels - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthModels - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthModels - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Identifier = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Paths", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowModels - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthModels - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthModels - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Paths = append(m.Paths, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -2040,6 +2485,203 @@ func (m *Credential) Unmarshal(dAtA []byte) error { } return nil } +func (m *DID) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DID: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DID: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Method", wireType) + } + m.Method = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Method |= DIDNamespace(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Network = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subject = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Identifier", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Identifier = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Paths", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Paths = append(m.Paths, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipModels(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthModels + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *Document) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -2263,6 +2905,38 @@ func (m *Document) Unmarshal(dAtA []byte) error { } m.CapabilityInvocation = append(m.CapabilityInvocation, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Service = append(m.Service, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipModels(dAtA[iNdEx:]) @@ -2936,74 +3610,6 @@ func (m *Profile) Unmarshal(dAtA []byte) error { m.Controller = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Credentials", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowModels - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthModels - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthModels - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Credentials = append(m.Credentials, &Credential{}) - if err := m.Credentials[len(m.Credentials)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Attestations", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowModels - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthModels - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthModels - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Attestations = append(m.Attestations, &VerificationMethod{}) - if err := m.Attestations[len(m.Attestations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) } @@ -3209,9 +3815,9 @@ func (m *PubKey) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) } - m.Namespace = 0 + m.Role = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowModels @@ -3221,14 +3827,52 @@ func (m *PubKey) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Namespace |= DIDNamespace(b&0x7F) << shift + m.Role |= KeyRole(b&0x7F) << shift if b < 0x80 { break } } case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Algorithm", wireType) + } + m.Algorithm = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Algorithm |= KeyAlgorithm(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Encoding", wireType) + } + m.Encoding = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Encoding |= KeyEncoding(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Raw", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -3255,16 +3899,16 @@ func (m *PubKey) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) - if m.Key == nil { - m.Key = []byte{} + m.Raw = append(m.Raw[:0], dAtA[iNdEx:postIndex]...) + if m.Raw == nil { + m.Raw = []byte{} } iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hex", wireType) } - m.Kind = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowModels @@ -3274,12 +3918,25 @@ func (m *PubKey) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Kind |= KeyType(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 5: + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Hex = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Multibase", wireType) } @@ -3311,9 +3968,9 @@ func (m *PubKey) Unmarshal(dAtA []byte) error { } m.Multibase = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 6: + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Jwks", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Jwk", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3340,8 +3997,8 @@ func (m *PubKey) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Jwks == nil { - m.Jwks = make(map[string]string) + if m.Jwk == nil { + m.Jwk = make(map[string]string) } var mapkey string var mapvalue string @@ -3436,7 +4093,409 @@ func (m *PubKey) Unmarshal(dAtA []byte) error { iNdEx += skippy } } - m.Jwks[mapkey] = mapvalue + m.Jwk[mapkey] = mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipModels(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthModels + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Service) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Service: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Service: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Controller = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Origin = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Permissions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Permissions == nil { + m.Permissions = &Permissions{} + } + if err := m.Permissions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Openid", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Openid == nil { + m.Openid = &OpenIDConfig{} + } + if err := m.Openid.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metadata == nil { + m.Metadata = &Metadata{} + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipModels(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthModels + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Token) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Token: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Token: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Controller = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Macron", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Macron = append(m.Macron[:0], dAtA[iNdEx:postIndex]...) + if m.Macron == nil { + m.Macron = []byte{} + } iNdEx = postIndex default: iNdEx = preIndex @@ -3553,6 +4612,25 @@ func (m *VerificationMethod) Unmarshal(dAtA []byte) error { m.Controller = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Method", wireType) + } + m.Method = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Method |= DIDNamespace(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field PublicKey", wireType) } @@ -3588,6 +4666,126 @@ func (m *VerificationMethod) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Service == nil { + m.Service = &Service{} + } + if err := m.Service.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipModels(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthModels + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Witness) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Witness: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Witness: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Witness", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Witness = append(m.Witness[:0], dAtA[iNdEx:postIndex]...) + if m.Witness == nil { + m.Witness = []byte{} + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipModels(dAtA[iNdEx:]) diff --git a/x/did/types/msgs.go b/x/did/types/msgs.go index e308bb52a..f5b91d206 100644 --- a/x/did/types/msgs.go +++ b/x/did/types/msgs.go @@ -65,7 +65,7 @@ func NewMsgRegisterController( func (msg MsgRegisterController) Route() string { return ModuleName } // Type returns the the action -func (msg MsgRegisterController) Type() string { return "initialize_controller" } +func (msg MsgRegisterController) Type() string { return "register_controller" } // GetSignBytes implements the LegacyMsg interface. func (msg MsgRegisterController) GetSignBytes() []byte { @@ -92,7 +92,7 @@ func NewMsgRegisterService( sender sdk.Address, ) (*MsgRegisterService, error) { return &MsgRegisterService{ - Authority: sender.String(), + Controller: sender.String(), }, nil } @@ -100,7 +100,7 @@ func NewMsgRegisterService( func (msg MsgRegisterService) Route() string { return ModuleName } // Type returns the the action -func (msg MsgRegisterService) Type() string { return "initialize_controller" } +func (msg MsgRegisterService) Type() string { return "register_service" } // GetSignBytes implements the LegacyMsg interface. func (msg MsgRegisterService) GetSignBytes() []byte { @@ -109,7 +109,7 @@ func (msg MsgRegisterService) GetSignBytes() []byte { // GetSigners returns the expected signers for a MsgUpdateParams message. func (msg *MsgRegisterService) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(msg.Authority) + addr, _ := sdk.AccAddressFromBech32(msg.Controller) return []sdk.AccAddress{addr} } @@ -117,3 +117,38 @@ func (msg *MsgRegisterService) GetSigners() []sdk.AccAddress { func (msg *MsgRegisterService) Validate() error { return nil } + +// +// [AllocateVault] +// + +// NewMsgAllocateVault creates a new instance of MsgAllocateVault +func NewMsgAllocateVault( + sender sdk.Address, +) (*MsgAllocateVault, error) { + return &MsgAllocateVault{ + Authority: sender.String(), + }, nil +} + +// Route returns the name of the module +func (msg MsgAllocateVault) Route() string { return ModuleName } + +// Type returns the the action +func (msg MsgAllocateVault) Type() string { return "allocate_vault" } + +// GetSignBytes implements the LegacyMsg interface. +func (msg MsgAllocateVault) GetSignBytes() []byte { + return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(&msg)) +} + +// GetSigners returns the expected signers for a MsgUpdateParams message. +func (msg *MsgAllocateVault) GetSigners() []sdk.AccAddress { + addr, _ := sdk.AccAddressFromBech32(msg.Authority) + return []sdk.AccAddress{addr} +} + +// Vaalidate does a sanity check on the provided data. +func (msg *MsgAllocateVault) Validate() error { + return nil +} diff --git a/x/did/types/openid.go b/x/did/types/openid.go new file mode 100644 index 000000000..11beb94c1 --- /dev/null +++ b/x/did/types/openid.go @@ -0,0 +1,27 @@ +package types + +// DiscoveryDocument represents the OIDC discovery document. +type DiscoveryDocument struct { + Issuer string `json:"issuer"` + AuthorizationEndpoint string `json:"authorization_endpoint"` + TokenEndpoint string `json:"token_endpoint"` + UserinfoEndpoint string `json:"userinfo_endpoint"` + JwksURI string `json:"jwks_uri"` + RegistrationEndpoint string `json:"registration_endpoint"` + ScopesSupported []string `json:"scopes_supported"` + ResponseTypesSupported []string `json:"response_types_supported"` + SubjectTypesSupported []string `json:"subject_types_supported"` + IDTokenSigningAlgValuesSupported []string `json:"id_token_signing_alg_values_supported"` + ClaimsSupported []string `json:"claims_supported"` + GrantTypesSupported []string `json:"grant_types_supported"` + TokenEndpointAuthMethodsSupported []string `json:"token_endpoint_auth_methods_supported"` +} + +// UserInfo represents the user information. +type UserInfo struct { + DID string `json:"did"` + Sub string `json:"sub"` + Name string `json:"name"` + Email string `json:"email"` + // Add other claims as needed +} diff --git a/x/did/types/perms.go b/x/did/types/perms.go index a05a1b0d4..fd10719b3 100644 --- a/x/did/types/perms.go +++ b/x/did/types/perms.go @@ -21,9 +21,9 @@ var ( StringToPermissionScope = map[string]PermissionScope{ "PERMISSION_SCOPE_UNSPECIFIED": PermissionScope_PERMISSION_SCOPE_UNSPECIFIED, - "PERMISSION_SCOPE_PROFILE_NAME": PermissionScope_PERMISSION_SCOPE_PROFILE_NAME, - "PERMISSION_SCOPE_IDENTIFIERS_EMAIL": PermissionScope_PERMISSION_SCOPE_IDENTIFIERS_EMAIL, - "PERMISSION_SCOPE_IDENTIFIERS_PHONE": PermissionScope_PERMISSION_SCOPE_IDENTIFIERS_PHONE, + "PERMISSION_SCOPE_BASIC_INFO": PermissionScope_PERMISSION_SCOPE_BASIC_INFO, + "PERMISSION_SCOPE_IDENTIFIERS_EMAIL": PermissionScope_PERMISSION_SCOPE_RECORDS_READ, + "PERMISSION_SCOPE_IDENTIFIERS_PHONE": PermissionScope_PERMISSION_SCOPE_RECORDS_WRITE, "PERMISSION_SCOPE_TRANSACTIONS_READ": PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_READ, "PERMISSION_SCOPE_TRANSACTIONS_WRITE": PermissionScope_PERMISSION_SCOPE_TRANSACTIONS_WRITE, "PERMISSION_SCOPE_WALLETS_READ": PermissionScope_PERMISSION_SCOPE_WALLETS_READ, diff --git a/x/did/types/pubkey.go b/x/did/types/pubkey.go new file mode 100644 index 000000000..3a5f8a546 --- /dev/null +++ b/x/did/types/pubkey.go @@ -0,0 +1,40 @@ +package types + +import ( + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" +) + +// NewEthPublicKey returns a new ethereum public key +func NewPublicKey(data []byte, keyInfo *KeyInfo) (*PubKey, error) { + return &PubKey{ + Role: keyInfo.Role, + }, nil +} + +// Address returns the address of the public key +func (k *PubKey) Address() cryptotypes.Address { + return nil +} + +// Bytes returns the raw bytes of the public key +func (k *PubKey) Bytes() []byte { + return k.GetRaw() +} + +// VerifySignature verifies a signature over the given message +func (k *PubKey) VerifySignature(msg []byte, sig []byte) bool { + return false +} + +// Equals returns true if two public keys are equal +func (k *PubKey) Equals(k2 cryptotypes.PubKey) bool { + if k == nil && k2 == nil { + return true + } + return false +} + +// Type returns the type of the public key +func (k *PubKey) Type() string { + return "" +} diff --git a/x/did/types/query.pb.go b/x/did/types/query.pb.go index a093fbd7f..ec3b9b56f 100644 --- a/x/did/types/query.pb.go +++ b/x/did/types/query.pb.go @@ -28,22 +28,26 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// QueryParamsRequest is the request type for the Query/Params RPC method. -type QueryParamsRequest struct { +// Queryequest is the request type for the Query/Params RPC method. +type QueryRequest struct { + Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` + Origin string `protobuf:"bytes,2,opt,name=origin,proto3" json:"origin,omitempty"` + Subject string `protobuf:"bytes,3,opt,name=subject,proto3" json:"subject,omitempty"` + Credentials []*Credential `protobuf:"bytes,4,rep,name=credentials,proto3" json:"credentials,omitempty"` } -func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } -func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } -func (*QueryParamsRequest) ProtoMessage() {} -func (*QueryParamsRequest) Descriptor() ([]byte, []int) { +func (m *QueryRequest) Reset() { *m = QueryRequest{} } +func (m *QueryRequest) String() string { return proto.CompactTextString(m) } +func (*QueryRequest) ProtoMessage() {} +func (*QueryRequest) Descriptor() ([]byte, []int) { return fileDescriptor_ae1fa9bb626e2869, []int{0} } -func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryParamsRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -53,17 +57,45 @@ func (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, return b[:n], nil } } -func (m *QueryParamsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryParamsRequest.Merge(m, src) +func (m *QueryRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryRequest.Merge(m, src) } -func (m *QueryParamsRequest) XXX_Size() int { +func (m *QueryRequest) XXX_Size() int { return m.Size() } -func (m *QueryParamsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryParamsRequest.DiscardUnknown(m) +func (m *QueryRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryRequest proto.InternalMessageInfo + +func (m *QueryRequest) GetDid() string { + if m != nil { + return m.Did + } + return "" +} + +func (m *QueryRequest) GetOrigin() string { + if m != nil { + return m.Origin + } + return "" +} + +func (m *QueryRequest) GetSubject() string { + if m != nil { + return m.Subject + } + return "" +} + +func (m *QueryRequest) GetCredentials() []*Credential { + if m != nil { + return m.Credentials + } + return nil +} // QueryParamsResponse is the response type for the Query/Params RPC method. type QueryParamsResponse struct { @@ -111,51 +143,6 @@ func (m *QueryParamsResponse) GetParams() *Params { return nil } -// QueryAccountsRequest is the request type for the Query/Exists RPC method. -type QueryAccountsRequest struct { - Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` -} - -func (m *QueryAccountsRequest) Reset() { *m = QueryAccountsRequest{} } -func (m *QueryAccountsRequest) String() string { return proto.CompactTextString(m) } -func (*QueryAccountsRequest) ProtoMessage() {} -func (*QueryAccountsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ae1fa9bb626e2869, []int{2} -} -func (m *QueryAccountsRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryAccountsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryAccountsRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryAccountsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAccountsRequest.Merge(m, src) -} -func (m *QueryAccountsRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryAccountsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAccountsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryAccountsRequest proto.InternalMessageInfo - -func (m *QueryAccountsRequest) GetDid() string { - if m != nil { - return m.Did - } - return "" -} - // QueryAccountsResponse is the response type for the Query/Exists RPC method. type QueryAccountsResponse struct { Exists bool `protobuf:"varint,1,opt,name=exists,proto3" json:"exists,omitempty"` @@ -165,7 +152,7 @@ func (m *QueryAccountsResponse) Reset() { *m = QueryAccountsResponse{} } func (m *QueryAccountsResponse) String() string { return proto.CompactTextString(m) } func (*QueryAccountsResponse) ProtoMessage() {} func (*QueryAccountsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ae1fa9bb626e2869, []int{3} + return fileDescriptor_ae1fa9bb626e2869, []int{2} } func (m *QueryAccountsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -201,69 +188,20 @@ func (m *QueryAccountsResponse) GetExists() bool { return false } -// QueryCredentialsRequest is the request type for the Query/Exists RPC method. -type QueryCredentialsRequest struct { - Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` - Origin string `protobuf:"bytes,2,opt,name=origin,proto3" json:"origin,omitempty"` -} - -func (m *QueryCredentialsRequest) Reset() { *m = QueryCredentialsRequest{} } -func (m *QueryCredentialsRequest) String() string { return proto.CompactTextString(m) } -func (*QueryCredentialsRequest) ProtoMessage() {} -func (*QueryCredentialsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ae1fa9bb626e2869, []int{4} -} -func (m *QueryCredentialsRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryCredentialsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryCredentialsRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryCredentialsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryCredentialsRequest.Merge(m, src) -} -func (m *QueryCredentialsRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryCredentialsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryCredentialsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryCredentialsRequest proto.InternalMessageInfo - -func (m *QueryCredentialsRequest) GetDid() string { - if m != nil { - return m.Did - } - return "" -} - -func (m *QueryCredentialsRequest) GetOrigin() string { - if m != nil { - return m.Origin - } - return "" -} - // QueryCredentialsResponse is the response type for the Query/Exists RPC method. type QueryCredentialsResponse struct { - Credentials map[string][]byte `protobuf:"bytes,1,rep,name=credentials,proto3" json:"credentials,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"` + Origin string `protobuf:"bytes,3,opt,name=origin,proto3" json:"origin,omitempty"` + Credentials []*Credential `protobuf:"bytes,4,rep,name=credentials,proto3" json:"credentials,omitempty"` + Error string `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"` } func (m *QueryCredentialsResponse) Reset() { *m = QueryCredentialsResponse{} } func (m *QueryCredentialsResponse) String() string { return proto.CompactTextString(m) } func (*QueryCredentialsResponse) ProtoMessage() {} func (*QueryCredentialsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ae1fa9bb626e2869, []int{5} + return fileDescriptor_ae1fa9bb626e2869, []int{3} } func (m *QueryCredentialsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -292,152 +230,37 @@ func (m *QueryCredentialsResponse) XXX_DiscardUnknown() { var xxx_messageInfo_QueryCredentialsResponse proto.InternalMessageInfo -func (m *QueryCredentialsResponse) GetCredentials() map[string][]byte { +func (m *QueryCredentialsResponse) GetSuccess() bool { + if m != nil { + return m.Success + } + return false +} + +func (m *QueryCredentialsResponse) GetSubject() string { + if m != nil { + return m.Subject + } + return "" +} + +func (m *QueryCredentialsResponse) GetOrigin() string { + if m != nil { + return m.Origin + } + return "" +} + +func (m *QueryCredentialsResponse) GetCredentials() []*Credential { if m != nil { return m.Credentials } return nil } -// QueryIdentitiesRequest is the request type for the Query/Exists RPC method. -type QueryIdentitiesRequest struct { - Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` -} - -func (m *QueryIdentitiesRequest) Reset() { *m = QueryIdentitiesRequest{} } -func (m *QueryIdentitiesRequest) String() string { return proto.CompactTextString(m) } -func (*QueryIdentitiesRequest) ProtoMessage() {} -func (*QueryIdentitiesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ae1fa9bb626e2869, []int{6} -} -func (m *QueryIdentitiesRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryIdentitiesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryIdentitiesRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryIdentitiesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryIdentitiesRequest.Merge(m, src) -} -func (m *QueryIdentitiesRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryIdentitiesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryIdentitiesRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryIdentitiesRequest proto.InternalMessageInfo - -func (m *QueryIdentitiesRequest) GetDid() string { +func (m *QueryCredentialsResponse) GetError() string { if m != nil { - return m.Did - } - return "" -} - -// QueryIdentitiesResponse is the response type for the Query/Exists RPC method. -type QueryIdentitiesResponse struct { - Exists bool `protobuf:"varint,1,opt,name=exists,proto3" json:"exists,omitempty"` - VerificationMethod []*VerificationMethod `protobuf:"bytes,2,rep,name=verificationMethod,proto3" json:"verificationMethod,omitempty"` -} - -func (m *QueryIdentitiesResponse) Reset() { *m = QueryIdentitiesResponse{} } -func (m *QueryIdentitiesResponse) String() string { return proto.CompactTextString(m) } -func (*QueryIdentitiesResponse) ProtoMessage() {} -func (*QueryIdentitiesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ae1fa9bb626e2869, []int{7} -} -func (m *QueryIdentitiesResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryIdentitiesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryIdentitiesResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryIdentitiesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryIdentitiesResponse.Merge(m, src) -} -func (m *QueryIdentitiesResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryIdentitiesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryIdentitiesResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryIdentitiesResponse proto.InternalMessageInfo - -func (m *QueryIdentitiesResponse) GetExists() bool { - if m != nil { - return m.Exists - } - return false -} - -func (m *QueryIdentitiesResponse) GetVerificationMethod() []*VerificationMethod { - if m != nil { - return m.VerificationMethod - } - return nil -} - -// QueryResolveRequest is the request type for the Query/Resolve RPC method. -type QueryResolveRequest struct { - Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` -} - -func (m *QueryResolveRequest) Reset() { *m = QueryResolveRequest{} } -func (m *QueryResolveRequest) String() string { return proto.CompactTextString(m) } -func (*QueryResolveRequest) ProtoMessage() {} -func (*QueryResolveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ae1fa9bb626e2869, []int{8} -} -func (m *QueryResolveRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryResolveRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryResolveRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryResolveRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryResolveRequest.Merge(m, src) -} -func (m *QueryResolveRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryResolveRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryResolveRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryResolveRequest proto.InternalMessageInfo - -func (m *QueryResolveRequest) GetDid() string { - if m != nil { - return m.Did + return m.Error } return "" } @@ -452,7 +275,7 @@ func (m *QueryResolveResponse) Reset() { *m = QueryResolveResponse{} } func (m *QueryResolveResponse) String() string { return proto.CompactTextString(m) } func (*QueryResolveResponse) ProtoMessage() {} func (*QueryResolveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ae1fa9bb626e2869, []int{9} + return fileDescriptor_ae1fa9bb626e2869, []int{4} } func (m *QueryResolveResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -488,62 +311,16 @@ func (m *QueryResolveResponse) GetDocument() *Document { return nil } -// QueryServiceRequest is the request type for the Query/LoginOptions RPC method. -type QueryServiceRequest struct { - Origin string `protobuf:"bytes,1,opt,name=origin,proto3" json:"origin,omitempty"` -} - -func (m *QueryServiceRequest) Reset() { *m = QueryServiceRequest{} } -func (m *QueryServiceRequest) String() string { return proto.CompactTextString(m) } -func (*QueryServiceRequest) ProtoMessage() {} -func (*QueryServiceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ae1fa9bb626e2869, []int{10} -} -func (m *QueryServiceRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryServiceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryServiceRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryServiceRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryServiceRequest.Merge(m, src) -} -func (m *QueryServiceRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryServiceRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryServiceRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryServiceRequest proto.InternalMessageInfo - -func (m *QueryServiceRequest) GetOrigin() string { - if m != nil { - return m.Origin - } - return "" -} - // QueryLoginOptionsResponse is the response type for the Query/LoginOptions RPC method. type QueryServiceResponse struct { - // options is the PublicKeyCredentialAttestationOptions - Options string `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + Service *Service `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"` } func (m *QueryServiceResponse) Reset() { *m = QueryServiceResponse{} } func (m *QueryServiceResponse) String() string { return proto.CompactTextString(m) } func (*QueryServiceResponse) ProtoMessage() {} func (*QueryServiceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ae1fa9bb626e2869, []int{11} + return fileDescriptor_ae1fa9bb626e2869, []int{5} } func (m *QueryServiceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -572,75 +349,127 @@ func (m *QueryServiceResponse) XXX_DiscardUnknown() { var xxx_messageInfo_QueryServiceResponse proto.InternalMessageInfo -func (m *QueryServiceResponse) GetOptions() string { +func (m *QueryServiceResponse) GetService() *Service { if m != nil { - return m.Options + return m.Service + } + return nil +} + +// QueryTokenResponse is the response type for the Query/LoginOptions RPC method. +type QueryTokenResponse struct { + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Token *Token `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` + Error string `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *QueryTokenResponse) Reset() { *m = QueryTokenResponse{} } +func (m *QueryTokenResponse) String() string { return proto.CompactTextString(m) } +func (*QueryTokenResponse) ProtoMessage() {} +func (*QueryTokenResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_ae1fa9bb626e2869, []int{6} +} +func (m *QueryTokenResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTokenResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryTokenResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenResponse.Merge(m, src) +} +func (m *QueryTokenResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryTokenResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryTokenResponse proto.InternalMessageInfo + +func (m *QueryTokenResponse) GetSuccess() bool { + if m != nil { + return m.Success + } + return false +} + +func (m *QueryTokenResponse) GetToken() *Token { + if m != nil { + return m.Token + } + return nil +} + +func (m *QueryTokenResponse) GetError() string { + if m != nil { + return m.Error } return "" } func init() { - proto.RegisterType((*QueryParamsRequest)(nil), "did.v1.QueryParamsRequest") + proto.RegisterType((*QueryRequest)(nil), "did.v1.QueryRequest") proto.RegisterType((*QueryParamsResponse)(nil), "did.v1.QueryParamsResponse") - proto.RegisterType((*QueryAccountsRequest)(nil), "did.v1.QueryAccountsRequest") proto.RegisterType((*QueryAccountsResponse)(nil), "did.v1.QueryAccountsResponse") - proto.RegisterType((*QueryCredentialsRequest)(nil), "did.v1.QueryCredentialsRequest") proto.RegisterType((*QueryCredentialsResponse)(nil), "did.v1.QueryCredentialsResponse") - proto.RegisterMapType((map[string][]byte)(nil), "did.v1.QueryCredentialsResponse.CredentialsEntry") - proto.RegisterType((*QueryIdentitiesRequest)(nil), "did.v1.QueryIdentitiesRequest") - proto.RegisterType((*QueryIdentitiesResponse)(nil), "did.v1.QueryIdentitiesResponse") - proto.RegisterType((*QueryResolveRequest)(nil), "did.v1.QueryResolveRequest") proto.RegisterType((*QueryResolveResponse)(nil), "did.v1.QueryResolveResponse") - proto.RegisterType((*QueryServiceRequest)(nil), "did.v1.QueryServiceRequest") proto.RegisterType((*QueryServiceResponse)(nil), "did.v1.QueryServiceResponse") + proto.RegisterType((*QueryTokenResponse)(nil), "did.v1.QueryTokenResponse") } func init() { proto.RegisterFile("did/v1/query.proto", fileDescriptor_ae1fa9bb626e2869) } var fileDescriptor_ae1fa9bb626e2869 = []byte{ - // 669 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x94, 0x4f, 0x4f, 0x13, 0x4f, - 0x18, 0xc7, 0xd9, 0xf2, 0xa3, 0xf0, 0x7b, 0xaa, 0x86, 0x4c, 0x0b, 0x34, 0x0b, 0x2c, 0xb8, 0x07, - 0x21, 0x46, 0xbb, 0x82, 0x17, 0x63, 0xd4, 0x44, 0xc1, 0x83, 0x26, 0x26, 0xba, 0x24, 0x1c, 0x3c, - 0xb9, 0xec, 0x8c, 0x65, 0x42, 0x3b, 0x53, 0x76, 0xa7, 0x95, 0x0d, 0xe1, 0xe2, 0x2b, 0x30, 0xf1, - 0x85, 0xf8, 0x36, 0x3c, 0x92, 0x78, 0xf1, 0x68, 0xc0, 0xb7, 0xe0, 0xdd, 0x74, 0xe6, 0xd9, 0x76, - 0x77, 0xe9, 0xe2, 0xad, 0xf3, 0xfc, 0xf9, 0x7e, 0x9e, 0x99, 0xfd, 0x3e, 0x05, 0x42, 0x39, 0xf5, - 0x06, 0x5b, 0xde, 0x71, 0x9f, 0x45, 0x49, 0xab, 0x17, 0x49, 0x25, 0x49, 0x95, 0x72, 0xda, 0x1a, - 0x6c, 0xd9, 0x2b, 0x6d, 0x29, 0xdb, 0x1d, 0xe6, 0x05, 0x3d, 0xee, 0x05, 0x42, 0x48, 0x15, 0x28, - 0x2e, 0x45, 0x6c, 0xaa, 0xec, 0x06, 0x76, 0xb6, 0x99, 0x60, 0x31, 0x4f, 0xa3, 0x75, 0x8c, 0x76, - 0x25, 0x65, 0x1d, 0x0c, 0xba, 0x0d, 0x20, 0xef, 0x86, 0xfa, 0x6f, 0x83, 0x28, 0xe8, 0xc6, 0x3e, - 0x3b, 0xee, 0xb3, 0x58, 0xb9, 0x4f, 0xa1, 0x9e, 0x8b, 0xc6, 0x3d, 0x29, 0x62, 0x46, 0xee, 0x40, - 0xb5, 0xa7, 0x23, 0x4d, 0x6b, 0xdd, 0xda, 0xac, 0x6d, 0xdf, 0x6a, 0x99, 0x71, 0x5a, 0x58, 0x87, - 0x59, 0x77, 0x13, 0x1a, 0xba, 0xfd, 0x79, 0x18, 0xca, 0xbe, 0x50, 0xa9, 0x2c, 0x99, 0x87, 0x69, - 0xca, 0xa9, 0x6e, 0xfe, 0xdf, 0x1f, 0xfe, 0x74, 0x3d, 0x58, 0x28, 0x54, 0x22, 0x6a, 0x11, 0xaa, - 0xec, 0x84, 0xc7, 0xca, 0xa0, 0xe6, 0x7c, 0x3c, 0xb9, 0x3b, 0xb0, 0xa4, 0x1b, 0x76, 0x22, 0x46, - 0x99, 0x50, 0x3c, 0xe8, 0x94, 0xab, 0x0f, 0x45, 0x64, 0xc4, 0xdb, 0x5c, 0x34, 0x2b, 0x3a, 0x88, - 0x27, 0xf7, 0x9b, 0x05, 0xcd, 0xab, 0x2a, 0x48, 0xde, 0x83, 0x5a, 0x38, 0x0e, 0x37, 0xad, 0xf5, - 0xe9, 0xcd, 0xda, 0xf6, 0x56, 0x7a, 0xd3, 0xb2, 0xb6, 0x56, 0x26, 0xf6, 0x52, 0xa8, 0x28, 0xf1, - 0xb3, 0x2a, 0xf6, 0x33, 0x98, 0x2f, 0x16, 0x0c, 0xe7, 0x3d, 0x62, 0x49, 0x3a, 0xef, 0x11, 0x4b, - 0x48, 0x03, 0x66, 0x06, 0x41, 0xa7, 0xcf, 0xf4, 0xb8, 0x37, 0x7c, 0x73, 0x78, 0x5c, 0x79, 0x64, - 0xb9, 0x77, 0x61, 0x51, 0x93, 0x5f, 0x69, 0x09, 0xc5, 0xd9, 0x35, 0x6f, 0x7a, 0x86, 0x4f, 0x94, - 0xad, 0xbd, 0xfe, 0x55, 0xc9, 0x6b, 0x20, 0x03, 0x16, 0xf1, 0x8f, 0x3c, 0xd4, 0x3e, 0x7a, 0xc3, - 0xd4, 0xa1, 0xa4, 0xcd, 0x8a, 0xbe, 0xba, 0x9d, 0x5e, 0x7d, 0xff, 0x4a, 0x85, 0x3f, 0xa1, 0xcb, - 0xdd, 0x40, 0xef, 0xf8, 0x2c, 0x96, 0x9d, 0x01, 0x2b, 0x9f, 0x73, 0x17, 0x5d, 0x32, 0x2a, 0xc4, - 0x21, 0xef, 0xc1, 0x1c, 0x95, 0x61, 0xbf, 0xcb, 0x84, 0x42, 0x9f, 0xcd, 0xa7, 0x23, 0xec, 0x62, - 0xdc, 0x1f, 0x55, 0xb8, 0xf7, 0x11, 0xb7, 0xc7, 0xa2, 0x01, 0x0f, 0x47, 0xb8, 0xf1, 0xa7, 0xb7, - 0x72, 0x9f, 0xfe, 0x01, 0x42, 0x47, 0xe5, 0x08, 0x6d, 0xc2, 0xac, 0xec, 0xe9, 0x1d, 0xc2, 0x86, - 0xf4, 0xb8, 0xfd, 0xe7, 0x3f, 0x98, 0xd1, 0x2d, 0x64, 0x1f, 0xaa, 0xc6, 0xe8, 0xc4, 0xce, 0xd9, - 0x21, 0xb7, 0x3b, 0xf6, 0xf2, 0xc4, 0x9c, 0xc1, 0xb8, 0xf5, 0xcf, 0x3f, 0x7e, 0x7f, 0xad, 0xdc, - 0x24, 0x35, 0x6f, 0xb8, 0x8c, 0x66, 0x5d, 0x08, 0x85, 0xb9, 0xd4, 0xff, 0x64, 0x25, 0xd7, 0x5d, - 0x58, 0x20, 0x7b, 0xb5, 0x24, 0x8b, 0xea, 0xcb, 0x5a, 0x7d, 0x81, 0xd4, 0xb5, 0xfa, 0x29, 0xe5, - 0xf4, 0xcc, 0x0b, 0x52, 0xe5, 0x04, 0x6a, 0x19, 0x0b, 0x92, 0xb5, 0x72, 0x47, 0x1b, 0xd6, 0xfa, - 0xbf, 0x2c, 0xef, 0x6e, 0x68, 0xdc, 0x6d, 0xb2, 0x96, 0xc1, 0x9d, 0x9a, 0x77, 0x3e, 0xf3, 0x32, - 0xee, 0x27, 0x1d, 0x80, 0xb1, 0x19, 0x89, 0x93, 0x13, 0xbe, 0xe2, 0x68, 0x7b, 0xad, 0x34, 0x8f, - 0xdc, 0x55, 0xcd, 0x5d, 0x22, 0x0b, 0x19, 0x2e, 0x1f, 0xeb, 0x7f, 0x80, 0x59, 0xb4, 0x14, 0xc9, - 0x7f, 0x8b, 0xbc, 0x23, 0xed, 0x95, 0xc9, 0x49, 0x84, 0xd8, 0x1a, 0xd2, 0x20, 0x44, 0x43, 0x22, - 0x93, 0x35, 0x30, 0x12, 0xc2, 0x2c, 0xfa, 0xa7, 0x40, 0xc8, 0x9b, 0xb0, 0x40, 0x28, 0x58, 0xae, - 0x70, 0x8d, 0xd8, 0x64, 0x47, 0x0f, 0xf8, 0xe2, 0xc9, 0xf7, 0x0b, 0xc7, 0x3a, 0xbf, 0x70, 0xac, - 0x5f, 0x17, 0x8e, 0xf5, 0xe5, 0xd2, 0x99, 0x3a, 0xbf, 0x74, 0xa6, 0x7e, 0x5e, 0x3a, 0x53, 0xef, - 0xdd, 0x36, 0x57, 0x87, 0xfd, 0x83, 0x56, 0x28, 0xbb, 0x9e, 0x14, 0xb1, 0x14, 0x91, 0x77, 0xf8, - 0x29, 0x48, 0xbc, 0x13, 0x2d, 0xa4, 0x92, 0x1e, 0x8b, 0x0f, 0xaa, 0xfa, 0xef, 0xfd, 0xe1, 0xdf, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x2a, 0xc4, 0xb0, 0x4a, 0x45, 0x06, 0x00, 0x00, + // 620 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x4f, 0x4f, 0x13, 0x41, + 0x18, 0xc6, 0x59, 0x4a, 0xb7, 0xf5, 0x5d, 0x40, 0x9c, 0x16, 0xb2, 0x16, 0xdc, 0x90, 0x31, 0x51, + 0x48, 0x4c, 0x27, 0x54, 0x8f, 0x7a, 0x40, 0xb8, 0x78, 0x83, 0x95, 0x83, 0x31, 0x5e, 0x96, 0xdd, + 0x49, 0x1d, 0x6d, 0x67, 0xca, 0xce, 0x6c, 0x03, 0x21, 0x5c, 0x3c, 0x79, 0x34, 0xf1, 0x43, 0x78, + 0xf7, 0x53, 0x78, 0x24, 0xf1, 0xe2, 0xd1, 0x80, 0x1f, 0xc4, 0x74, 0x76, 0x86, 0xdd, 0xc5, 0x92, + 0x10, 0x2f, 0x4d, 0xe7, 0x79, 0xe7, 0xfd, 0xbd, 0x7f, 0xe6, 0x69, 0x01, 0x25, 0x2c, 0x21, 0xe3, + 0x2d, 0x72, 0x94, 0xd1, 0xf4, 0xa4, 0x3b, 0x4a, 0x85, 0x12, 0xc8, 0x4d, 0x58, 0xd2, 0x1d, 0x6f, + 0x75, 0xda, 0x26, 0xd6, 0xa7, 0x9c, 0x4a, 0x26, 0xf3, 0x68, 0xa7, 0x65, 0xd4, 0xa1, 0x48, 0xe8, + 0xc0, 0x8a, 0x6b, 0x7d, 0x21, 0xfa, 0x03, 0x4a, 0xa2, 0x11, 0x23, 0x11, 0xe7, 0x42, 0x45, 0x8a, + 0x09, 0x6e, 0xa2, 0xf8, 0xb3, 0x03, 0xf3, 0xfb, 0x93, 0x02, 0x21, 0x3d, 0xca, 0xa8, 0x54, 0x68, + 0x09, 0x6a, 0x09, 0x4b, 0x7c, 0x67, 0xdd, 0xd9, 0xb8, 0x13, 0x4e, 0xbe, 0xa2, 0x15, 0x70, 0x45, + 0xca, 0xfa, 0x8c, 0xfb, 0xb3, 0x5a, 0x34, 0x27, 0xe4, 0x43, 0x43, 0x66, 0x87, 0x1f, 0x68, 0xac, + 0xfc, 0x9a, 0x0e, 0xd8, 0x23, 0x7a, 0x06, 0x5e, 0x9c, 0xd2, 0x84, 0x72, 0xc5, 0xa2, 0x81, 0xf4, + 0xe7, 0xd6, 0x6b, 0x1b, 0x5e, 0x0f, 0x75, 0xf3, 0xde, 0xbb, 0x3b, 0x57, 0xa1, 0xb0, 0x7c, 0x0d, + 0xbf, 0x80, 0x96, 0xee, 0x64, 0x2f, 0x4a, 0xa3, 0xa1, 0x0c, 0xa9, 0x1c, 0x09, 0x2e, 0x29, 0x7a, + 0x04, 0xee, 0x48, 0x2b, 0xba, 0x27, 0xaf, 0xb7, 0x68, 0x39, 0xe6, 0x9e, 0x89, 0x62, 0x02, 0xcb, + 0x3a, 0x7d, 0x3b, 0x8e, 0x45, 0xc6, 0x55, 0x01, 0x58, 0x01, 0x97, 0x1e, 0x33, 0xa9, 0x72, 0x40, + 0x33, 0x34, 0x27, 0xfc, 0xdd, 0x01, 0x5f, 0x67, 0x14, 0x0d, 0x15, 0x49, 0x7a, 0xb8, 0x38, 0xa6, + 0xd2, 0x66, 0xd9, 0x63, 0x79, 0xec, 0xd9, 0xea, 0xd8, 0xc5, 0xa2, 0x6a, 0x95, 0x45, 0xfd, 0xd7, + 0x3a, 0x50, 0x1b, 0xea, 0x34, 0x4d, 0x45, 0xea, 0xd7, 0x35, 0x2c, 0x3f, 0xe0, 0x5d, 0x68, 0x9b, + 0xe7, 0x92, 0x62, 0x30, 0xa6, 0x57, 0xfd, 0x3e, 0x81, 0x66, 0x22, 0xe2, 0x6c, 0x48, 0xb9, 0x32, + 0x7b, 0x5a, 0xb2, 0x05, 0x76, 0x8d, 0x1e, 0x5e, 0xdd, 0xc0, 0xdb, 0x86, 0xf2, 0x9a, 0xa6, 0x63, + 0x16, 0x17, 0x94, 0x4d, 0x68, 0xc8, 0x5c, 0x32, 0x90, 0xbb, 0x16, 0x62, 0x6f, 0xda, 0x38, 0x66, + 0x80, 0x34, 0xe2, 0x40, 0x7c, 0xa4, 0xfc, 0x16, 0x6b, 0x7b, 0x08, 0x75, 0x35, 0xb9, 0xaa, 0x97, + 0xe6, 0xf5, 0x16, 0x2c, 0x38, 0xcf, 0xcf, 0x63, 0xc5, 0xcc, 0xb5, 0xd2, 0xcc, 0xbd, 0x6f, 0x73, + 0x50, 0xd7, 0xb5, 0xd0, 0x1e, 0xb8, 0xf9, 0xab, 0xa3, 0xb6, 0xcd, 0x2f, 0x9b, 0xb7, 0xb3, 0x5a, + 0x51, 0xab, 0x46, 0xc2, 0xad, 0x4f, 0x3f, 0xff, 0x7c, 0x9d, 0x5d, 0x40, 0x1e, 0x99, 0xfc, 0x4c, + 0x72, 0xd7, 0xa0, 0x77, 0xd0, 0xb4, 0x86, 0xb9, 0x81, 0xf9, 0xa0, 0xa2, 0x5e, 0x77, 0x17, 0x5e, + 0xd5, 0xd4, 0x65, 0xd4, 0xd2, 0xd4, 0xd3, 0x84, 0x25, 0x67, 0x24, 0xb2, 0xc4, 0x31, 0x78, 0x3b, + 0xe5, 0x27, 0x9d, 0x5a, 0x60, 0xbd, 0xa2, 0x4e, 0x31, 0x23, 0x26, 0xba, 0xc6, 0x26, 0x7a, 0x4c, + 0xcc, 0xf6, 0xc9, 0x69, 0x6e, 0xad, 0x33, 0x72, 0x6a, 0xcc, 0x77, 0x46, 0xca, 0xde, 0xd9, 0x87, + 0x86, 0x31, 0xc8, 0x0d, 0x35, 0xd7, 0xae, 0xa9, 0x15, 0x33, 0x61, 0xa4, 0xeb, 0xcd, 0x23, 0x28, + 0x66, 0x42, 0x6f, 0xa0, 0x61, 0x3c, 0x70, 0x2b, 0xe4, 0x35, 0x67, 0xe1, 0xfb, 0x1a, 0xd9, 0x42, + 0xf7, 0xfe, 0x19, 0x01, 0xbd, 0x82, 0xfa, 0x41, 0xfe, 0xfa, 0x53, 0xb9, 0x9d, 0x8a, 0x5a, 0xb1, + 0x1b, 0x5e, 0xd4, 0xd4, 0x26, 0x76, 0x89, 0xf6, 0xcf, 0xcb, 0xe7, 0x3f, 0x2e, 0x02, 0xe7, 0xfc, + 0x22, 0x70, 0x7e, 0x5f, 0x04, 0xce, 0x97, 0xcb, 0x60, 0xe6, 0xfc, 0x32, 0x98, 0xf9, 0x75, 0x19, + 0xcc, 0xbc, 0xc5, 0x7d, 0xa6, 0xde, 0x67, 0x87, 0xdd, 0x58, 0x0c, 0x89, 0xe0, 0x52, 0xf0, 0x94, + 0xe8, 0x8f, 0x63, 0x3d, 0xa2, 0x3a, 0x19, 0x51, 0x79, 0xe8, 0xea, 0xbf, 0xc4, 0xa7, 0x7f, 0x03, + 0x00, 0x00, 0xff, 0xff, 0xb5, 0xea, 0x49, 0x17, 0x79, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -656,17 +485,17 @@ const _ = grpc.SupportPackageIsVersion4 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type QueryClient interface { // Params queries all parameters of the module. - Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) + Params(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) // Accounts returns associated wallet accounts with the DID. - Accounts(ctx context.Context, in *QueryAccountsRequest, opts ...grpc.CallOption) (*QueryAccountsResponse, error) + Accounts(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryAccountsResponse, error) // Credentials returns associated credentials with the DID and Service Origin. - Credentials(ctx context.Context, in *QueryCredentialsRequest, opts ...grpc.CallOption) (*QueryCredentialsResponse, error) - // Identities returns associated identity with the DID. - Identities(ctx context.Context, in *QueryIdentitiesRequest, opts ...grpc.CallOption) (*QueryIdentitiesResponse, error) + Credentials(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryCredentialsResponse, error) // Resolve queries the DID document by its id. - Resolve(ctx context.Context, in *QueryResolveRequest, opts ...grpc.CallOption) (*QueryResolveResponse, error) + Resolve(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryResolveResponse, error) // Service returns associated ServiceInfo for a given Origin - Service(ctx context.Context, in *QueryServiceRequest, opts ...grpc.CallOption) (*QueryServiceResponse, error) + Service(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryServiceResponse, error) + // Token returns the current authentication token for the client. + Token(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryTokenResponse, error) } type queryClient struct { @@ -677,7 +506,7 @@ func NewQueryClient(cc grpc1.ClientConn) QueryClient { return &queryClient{cc} } -func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { +func (c *queryClient) Params(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { out := new(QueryParamsResponse) err := c.cc.Invoke(ctx, "/did.v1.Query/Params", in, out, opts...) if err != nil { @@ -686,7 +515,7 @@ func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts . return out, nil } -func (c *queryClient) Accounts(ctx context.Context, in *QueryAccountsRequest, opts ...grpc.CallOption) (*QueryAccountsResponse, error) { +func (c *queryClient) Accounts(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryAccountsResponse, error) { out := new(QueryAccountsResponse) err := c.cc.Invoke(ctx, "/did.v1.Query/Accounts", in, out, opts...) if err != nil { @@ -695,7 +524,7 @@ func (c *queryClient) Accounts(ctx context.Context, in *QueryAccountsRequest, op return out, nil } -func (c *queryClient) Credentials(ctx context.Context, in *QueryCredentialsRequest, opts ...grpc.CallOption) (*QueryCredentialsResponse, error) { +func (c *queryClient) Credentials(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryCredentialsResponse, error) { out := new(QueryCredentialsResponse) err := c.cc.Invoke(ctx, "/did.v1.Query/Credentials", in, out, opts...) if err != nil { @@ -704,16 +533,7 @@ func (c *queryClient) Credentials(ctx context.Context, in *QueryCredentialsReque return out, nil } -func (c *queryClient) Identities(ctx context.Context, in *QueryIdentitiesRequest, opts ...grpc.CallOption) (*QueryIdentitiesResponse, error) { - out := new(QueryIdentitiesResponse) - err := c.cc.Invoke(ctx, "/did.v1.Query/Identities", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *queryClient) Resolve(ctx context.Context, in *QueryResolveRequest, opts ...grpc.CallOption) (*QueryResolveResponse, error) { +func (c *queryClient) Resolve(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryResolveResponse, error) { out := new(QueryResolveResponse) err := c.cc.Invoke(ctx, "/did.v1.Query/Resolve", in, out, opts...) if err != nil { @@ -722,7 +542,7 @@ func (c *queryClient) Resolve(ctx context.Context, in *QueryResolveRequest, opts return out, nil } -func (c *queryClient) Service(ctx context.Context, in *QueryServiceRequest, opts ...grpc.CallOption) (*QueryServiceResponse, error) { +func (c *queryClient) Service(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryServiceResponse, error) { out := new(QueryServiceResponse) err := c.cc.Invoke(ctx, "/did.v1.Query/Service", in, out, opts...) if err != nil { @@ -731,51 +551,60 @@ func (c *queryClient) Service(ctx context.Context, in *QueryServiceRequest, opts return out, nil } +func (c *queryClient) Token(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryTokenResponse, error) { + out := new(QueryTokenResponse) + err := c.cc.Invoke(ctx, "/did.v1.Query/Token", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryServer is the server API for Query service. type QueryServer interface { // Params queries all parameters of the module. - Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) + Params(context.Context, *QueryRequest) (*QueryParamsResponse, error) // Accounts returns associated wallet accounts with the DID. - Accounts(context.Context, *QueryAccountsRequest) (*QueryAccountsResponse, error) + Accounts(context.Context, *QueryRequest) (*QueryAccountsResponse, error) // Credentials returns associated credentials with the DID and Service Origin. - Credentials(context.Context, *QueryCredentialsRequest) (*QueryCredentialsResponse, error) - // Identities returns associated identity with the DID. - Identities(context.Context, *QueryIdentitiesRequest) (*QueryIdentitiesResponse, error) + Credentials(context.Context, *QueryRequest) (*QueryCredentialsResponse, error) // Resolve queries the DID document by its id. - Resolve(context.Context, *QueryResolveRequest) (*QueryResolveResponse, error) + Resolve(context.Context, *QueryRequest) (*QueryResolveResponse, error) // Service returns associated ServiceInfo for a given Origin - Service(context.Context, *QueryServiceRequest) (*QueryServiceResponse, error) + Service(context.Context, *QueryRequest) (*QueryServiceResponse, error) + // Token returns the current authentication token for the client. + Token(context.Context, *QueryRequest) (*QueryTokenResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. type UnimplementedQueryServer struct { } -func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { +func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryRequest) (*QueryParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") } -func (*UnimplementedQueryServer) Accounts(ctx context.Context, req *QueryAccountsRequest) (*QueryAccountsResponse, error) { +func (*UnimplementedQueryServer) Accounts(ctx context.Context, req *QueryRequest) (*QueryAccountsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Accounts not implemented") } -func (*UnimplementedQueryServer) Credentials(ctx context.Context, req *QueryCredentialsRequest) (*QueryCredentialsResponse, error) { +func (*UnimplementedQueryServer) Credentials(ctx context.Context, req *QueryRequest) (*QueryCredentialsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Credentials not implemented") } -func (*UnimplementedQueryServer) Identities(ctx context.Context, req *QueryIdentitiesRequest) (*QueryIdentitiesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Identities not implemented") -} -func (*UnimplementedQueryServer) Resolve(ctx context.Context, req *QueryResolveRequest) (*QueryResolveResponse, error) { +func (*UnimplementedQueryServer) Resolve(ctx context.Context, req *QueryRequest) (*QueryResolveResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Resolve not implemented") } -func (*UnimplementedQueryServer) Service(ctx context.Context, req *QueryServiceRequest) (*QueryServiceResponse, error) { +func (*UnimplementedQueryServer) Service(ctx context.Context, req *QueryRequest) (*QueryServiceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Service not implemented") } +func (*UnimplementedQueryServer) Token(ctx context.Context, req *QueryRequest) (*QueryTokenResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Token not implemented") +} func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) } func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryParamsRequest) + in := new(QueryRequest) if err := dec(in); err != nil { return nil, err } @@ -787,13 +616,13 @@ func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interf FullMethod: "/did.v1.Query/Params", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + return srv.(QueryServer).Params(ctx, req.(*QueryRequest)) } return interceptor(ctx, in, info, handler) } func _Query_Accounts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryAccountsRequest) + in := new(QueryRequest) if err := dec(in); err != nil { return nil, err } @@ -805,13 +634,13 @@ func _Query_Accounts_Handler(srv interface{}, ctx context.Context, dec func(inte FullMethod: "/did.v1.Query/Accounts", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Accounts(ctx, req.(*QueryAccountsRequest)) + return srv.(QueryServer).Accounts(ctx, req.(*QueryRequest)) } return interceptor(ctx, in, info, handler) } func _Query_Credentials_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryCredentialsRequest) + in := new(QueryRequest) if err := dec(in); err != nil { return nil, err } @@ -823,31 +652,13 @@ func _Query_Credentials_Handler(srv interface{}, ctx context.Context, dec func(i FullMethod: "/did.v1.Query/Credentials", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Credentials(ctx, req.(*QueryCredentialsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Query_Identities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryIdentitiesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Identities(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/did.v1.Query/Identities", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Identities(ctx, req.(*QueryIdentitiesRequest)) + return srv.(QueryServer).Credentials(ctx, req.(*QueryRequest)) } return interceptor(ctx, in, info, handler) } func _Query_Resolve_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryResolveRequest) + in := new(QueryRequest) if err := dec(in); err != nil { return nil, err } @@ -859,13 +670,13 @@ func _Query_Resolve_Handler(srv interface{}, ctx context.Context, dec func(inter FullMethod: "/did.v1.Query/Resolve", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Resolve(ctx, req.(*QueryResolveRequest)) + return srv.(QueryServer).Resolve(ctx, req.(*QueryRequest)) } return interceptor(ctx, in, info, handler) } func _Query_Service_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryServiceRequest) + in := new(QueryRequest) if err := dec(in); err != nil { return nil, err } @@ -877,7 +688,25 @@ func _Query_Service_Handler(srv interface{}, ctx context.Context, dec func(inter FullMethod: "/did.v1.Query/Service", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Service(ctx, req.(*QueryServiceRequest)) + return srv.(QueryServer).Service(ctx, req.(*QueryRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_Token_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Token(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/did.v1.Query/Token", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Token(ctx, req.(*QueryRequest)) } return interceptor(ctx, in, info, handler) } @@ -898,10 +727,6 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "Credentials", Handler: _Query_Credentials_Handler, }, - { - MethodName: "Identities", - Handler: _Query_Identities_Handler, - }, { MethodName: "Resolve", Handler: _Query_Resolve_Handler, @@ -910,12 +735,16 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "Service", Handler: _Query_Service_Handler, }, + { + MethodName: "Token", + Handler: _Query_Token_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "did/v1/query.proto", } -func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -925,16 +754,51 @@ func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + if len(m.Credentials) > 0 { + for iNdEx := len(m.Credentials) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Credentials[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.Subject) > 0 { + i -= len(m.Subject) + copy(dAtA[i:], m.Subject) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Subject))) + i-- + dAtA[i] = 0x1a + } + if len(m.Origin) > 0 { + i -= len(m.Origin) + copy(dAtA[i:], m.Origin) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Origin))) + i-- + dAtA[i] = 0x12 + } + if len(m.Did) > 0 { + i -= len(m.Did) + copy(dAtA[i:], m.Did) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Did))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } @@ -973,36 +837,6 @@ func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *QueryAccountsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryAccountsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryAccountsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Did) > 0 { - i -= len(m.Did) - copy(dAtA[i:], m.Did) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Did))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *QueryAccountsResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1036,43 +870,6 @@ func (m *QueryAccountsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *QueryCredentialsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryCredentialsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryCredentialsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Origin) > 0 { - i -= len(m.Origin) - copy(dAtA[i:], m.Origin) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Origin))) - i-- - dAtA[i] = 0x12 - } - if len(m.Did) > 0 { - i -= len(m.Did) - copy(dAtA[i:], m.Did) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Did))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *QueryCredentialsResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1093,84 +890,17 @@ func (m *QueryCredentialsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error _ = i var l int _ = l - if len(m.Credentials) > 0 { - for k := range m.Credentials { - v := m.Credentials[k] - baseI := i - if len(v) > 0 { - i -= len(v) - copy(dAtA[i:], v) - i = encodeVarintQuery(dAtA, i, uint64(len(v))) - i-- - dAtA[i] = 0x12 - } - i -= len(k) - copy(dAtA[i:], k) - i = encodeVarintQuery(dAtA, i, uint64(len(k))) - i-- - dAtA[i] = 0xa - i = encodeVarintQuery(dAtA, i, uint64(baseI-i)) - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func (m *QueryIdentitiesRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryIdentitiesRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryIdentitiesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Did) > 0 { - i -= len(m.Did) - copy(dAtA[i:], m.Did) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Did))) + if len(m.Error) > 0 { + i -= len(m.Error) + copy(dAtA[i:], m.Error) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Error))) i-- - dAtA[i] = 0xa + dAtA[i] = 0x2a } - return len(dAtA) - i, nil -} - -func (m *QueryIdentitiesResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryIdentitiesResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryIdentitiesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.VerificationMethod) > 0 { - for iNdEx := len(m.VerificationMethod) - 1; iNdEx >= 0; iNdEx-- { + if len(m.Credentials) > 0 { + for iNdEx := len(m.Credentials) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.VerificationMethod[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Credentials[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -1178,12 +908,26 @@ func (m *QueryIdentitiesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) i = encodeVarintQuery(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x12 + dAtA[i] = 0x22 } } - if m.Exists { + if len(m.Origin) > 0 { + i -= len(m.Origin) + copy(dAtA[i:], m.Origin) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Origin))) i-- - if m.Exists { + dAtA[i] = 0x1a + } + if len(m.Subject) > 0 { + i -= len(m.Subject) + copy(dAtA[i:], m.Subject) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Subject))) + i-- + dAtA[i] = 0x12 + } + if m.Success { + i-- + if m.Success { dAtA[i] = 1 } else { dAtA[i] = 0 @@ -1194,36 +938,6 @@ func (m *QueryIdentitiesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *QueryResolveRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryResolveRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryResolveRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Did) > 0 { - i -= len(m.Did) - copy(dAtA[i:], m.Did) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Did))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *QueryResolveResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1259,36 +973,6 @@ func (m *QueryResolveResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *QueryServiceRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryServiceRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryServiceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Origin) > 0 { - i -= len(m.Origin) - copy(dAtA[i:], m.Origin) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Origin))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *QueryServiceResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1309,16 +993,73 @@ func (m *QueryServiceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.Options) > 0 { - i -= len(m.Options) - copy(dAtA[i:], m.Options) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Options))) + if m.Service != nil { + { + size, err := m.Service.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } +func (m *QueryTokenResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Error) > 0 { + i -= len(m.Error) + copy(dAtA[i:], m.Error) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Error))) + i-- + dAtA[i] = 0x1a + } + if m.Token != nil { + { + size, err := m.Token.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.Success { + i-- + if m.Success { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { offset -= sovQuery(v) base := offset @@ -1330,12 +1071,30 @@ func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *QueryParamsRequest) Size() (n int) { +func (m *QueryRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l + l = len(m.Did) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Origin) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Subject) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if len(m.Credentials) > 0 { + for _, e := range m.Credentials { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } return n } @@ -1352,19 +1111,6 @@ func (m *QueryParamsResponse) Size() (n int) { return n } -func (m *QueryAccountsRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Did) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - func (m *QueryAccountsResponse) Size() (n int) { if m == nil { return 0 @@ -1377,13 +1123,16 @@ func (m *QueryAccountsResponse) Size() (n int) { return n } -func (m *QueryCredentialsRequest) Size() (n int) { +func (m *QueryCredentialsResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Did) + if m.Success { + n += 2 + } + l = len(m.Subject) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } @@ -1391,68 +1140,13 @@ func (m *QueryCredentialsRequest) Size() (n int) { if l > 0 { n += 1 + l + sovQuery(uint64(l)) } - return n -} - -func (m *QueryCredentialsResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l if len(m.Credentials) > 0 { - for k, v := range m.Credentials { - _ = k - _ = v - l = 0 - if len(v) > 0 { - l = 1 + len(v) + sovQuery(uint64(len(v))) - } - mapEntrySize := 1 + len(k) + sovQuery(uint64(len(k))) + l - n += mapEntrySize + 1 + sovQuery(uint64(mapEntrySize)) - } - } - return n -} - -func (m *QueryIdentitiesRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Did) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *QueryIdentitiesResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Exists { - n += 2 - } - if len(m.VerificationMethod) > 0 { - for _, e := range m.VerificationMethod { + for _, e := range m.Credentials { l = e.Size() n += 1 + l + sovQuery(uint64(l)) } } - return n -} - -func (m *QueryResolveRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Did) + l = len(m.Error) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } @@ -1472,26 +1166,33 @@ func (m *QueryResolveResponse) Size() (n int) { return n } -func (m *QueryServiceRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Origin) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - func (m *QueryServiceResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Options) + if m.Service != nil { + l = m.Service.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryTokenResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Success { + n += 2 + } + if m.Token != nil { + l = m.Token.Size() + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Error) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } @@ -1504,7 +1205,7 @@ func sovQuery(x uint64) (n int) { func sozQuery(x uint64) (n int) { return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { +func (m *QueryRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1527,12 +1228,142 @@ func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Did = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Origin = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subject = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Credentials", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Credentials = append(m.Credentials, &Credential{}) + if err := m.Credentials[len(m.Credentials)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -1640,88 +1471,6 @@ func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAccountsRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryAccountsRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAccountsRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Did = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *QueryAccountsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -1792,7 +1541,7 @@ func (m *QueryAccountsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryCredentialsRequest) Unmarshal(dAtA []byte) error { +func (m *QueryCredentialsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1815,15 +1564,35 @@ func (m *QueryCredentialsRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryCredentialsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryCredentialsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryCredentialsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryCredentialsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Success = bool(v != 0) + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1851,9 +1620,9 @@ func (m *QueryCredentialsRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Did = string(dAtA[iNdEx:postIndex]) + m.Subject = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) } @@ -1885,57 +1654,7 @@ func (m *QueryCredentialsRequest) Unmarshal(dAtA []byte) error { } m.Origin = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryCredentialsResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryCredentialsResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryCredentialsResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Credentials", wireType) } @@ -1964,158 +1683,14 @@ func (m *QueryCredentialsResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Credentials == nil { - m.Credentials = make(map[string][]byte) - } - var mapkey string - mapvalue := []byte{} - for iNdEx < postIndex { - entryPreIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - if fieldNum == 1 { - var stringLenmapkey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapkey |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapkey := int(stringLenmapkey) - if intStringLenmapkey < 0 { - return ErrInvalidLengthQuery - } - postStringIndexmapkey := iNdEx + intStringLenmapkey - if postStringIndexmapkey < 0 { - return ErrInvalidLengthQuery - } - if postStringIndexmapkey > l { - return io.ErrUnexpectedEOF - } - mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) - iNdEx = postStringIndexmapkey - } else if fieldNum == 2 { - var mapbyteLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - mapbyteLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intMapbyteLen := int(mapbyteLen) - if intMapbyteLen < 0 { - return ErrInvalidLengthQuery - } - postbytesIndex := iNdEx + intMapbyteLen - if postbytesIndex < 0 { - return ErrInvalidLengthQuery - } - if postbytesIndex > l { - return io.ErrUnexpectedEOF - } - mapvalue = make([]byte, mapbyteLen) - copy(mapvalue, dAtA[iNdEx:postbytesIndex]) - iNdEx = postbytesIndex - } else { - iNdEx = entryPreIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > postIndex { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - m.Credentials[mapkey] = mapvalue - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { + m.Credentials = append(m.Credentials, &Credential{}) + if err := m.Credentials[len(m.Credentials)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryIdentitiesRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryIdentitiesRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryIdentitiesRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2143,193 +1718,7 @@ func (m *QueryIdentitiesRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Did = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryIdentitiesResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryIdentitiesResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryIdentitiesResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Exists", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Exists = bool(v != 0) - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field VerificationMethod", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.VerificationMethod = append(m.VerificationMethod, &VerificationMethod{}) - if err := m.VerificationMethod[len(m.VerificationMethod)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryResolveRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryResolveRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryResolveRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Did = string(dAtA[iNdEx:postIndex]) + m.Error = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -2438,88 +1827,6 @@ func (m *QueryResolveResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryServiceRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryServiceRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryServiceRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Origin = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *QueryServiceResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -2551,7 +1858,149 @@ func (m *QueryServiceResponse) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Service == nil { + m.Service = &Service{} + } + if err := m.Service.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryTokenResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryTokenResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryTokenResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Success = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Token == nil { + m.Token = &Token{} + } + if err := m.Token.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2579,7 +2028,7 @@ func (m *QueryServiceResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Options = string(dAtA[iNdEx:postIndex]) + m.Error = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex diff --git a/x/did/types/query.pb.gw.go b/x/did/types/query.pb.gw.go index 5a8f31c40..f3a697dd7 100644 --- a/x/did/types/query.pb.gw.go +++ b/x/did/types/query.pb.gw.go @@ -33,26 +33,48 @@ var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage var _ = metadata.Join +var ( + filter_Query_Params_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryParamsRequest + var protoReq QueryRequest var metadata runtime.ServerMetadata + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Params_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryParamsRequest + var protoReq QueryRequest var metadata runtime.ServerMetadata + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Params_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.Params(ctx, &protoReq) return msg, metadata, err } +var ( + filter_Query_Accounts_0 = &utilities.DoubleArray{Encoding: map[string]int{"did": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + func request_Query_Accounts_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryAccountsRequest + var protoReq QueryRequest var metadata runtime.ServerMetadata var ( @@ -73,13 +95,20 @@ func request_Query_Accounts_0(ctx context.Context, marshaler runtime.Marshaler, return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "did", err) } + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Accounts_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.Accounts(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } func local_request_Query_Accounts_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryAccountsRequest + var protoReq QueryRequest var metadata runtime.ServerMetadata var ( @@ -100,13 +129,24 @@ func local_request_Query_Accounts_0(ctx context.Context, marshaler runtime.Marsh return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "did", err) } + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Accounts_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.Accounts(ctx, &protoReq) return msg, metadata, err } +var ( + filter_Query_Credentials_0 = &utilities.DoubleArray{Encoding: map[string]int{"origin": 0, "subject": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}} +) + func request_Query_Credentials_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryCredentialsRequest + var protoReq QueryRequest var metadata runtime.ServerMetadata var ( @@ -116,17 +156,6 @@ func request_Query_Credentials_0(ctx context.Context, marshaler runtime.Marshale _ = err ) - val, ok = pathParams["did"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "did") - } - - protoReq.Did, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "did", err) - } - val, ok = pathParams["origin"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "origin") @@ -138,13 +167,31 @@ func request_Query_Credentials_0(ctx context.Context, marshaler runtime.Marshale return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "origin", err) } + val, ok = pathParams["subject"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "subject") + } + + protoReq.Subject, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "subject", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Credentials_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.Credentials(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } func local_request_Query_Credentials_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryCredentialsRequest + var protoReq QueryRequest var metadata runtime.ServerMetadata var ( @@ -154,17 +201,6 @@ func local_request_Query_Credentials_0(ctx context.Context, marshaler runtime.Ma _ = err ) - val, ok = pathParams["did"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "did") - } - - protoReq.Did, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "did", err) - } - val, ok = pathParams["origin"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "origin") @@ -176,67 +212,35 @@ func local_request_Query_Credentials_0(ctx context.Context, marshaler runtime.Ma return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "origin", err) } + val, ok = pathParams["subject"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "subject") + } + + protoReq.Subject, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "subject", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Credentials_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.Credentials(ctx, &protoReq) return msg, metadata, err } -func request_Query_Identities_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryIdentitiesRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["did"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "did") - } - - protoReq.Did, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "did", err) - } - - msg, err := client.Identities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_Identities_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryIdentitiesRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["did"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "did") - } - - protoReq.Did, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "did", err) - } - - msg, err := server.Identities(ctx, &protoReq) - return msg, metadata, err - -} +var ( + filter_Query_Resolve_0 = &utilities.DoubleArray{Encoding: map[string]int{"did": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) func request_Query_Resolve_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryResolveRequest + var protoReq QueryRequest var metadata runtime.ServerMetadata var ( @@ -257,13 +261,20 @@ func request_Query_Resolve_0(ctx context.Context, marshaler runtime.Marshaler, c return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "did", err) } + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Resolve_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.Resolve(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } func local_request_Query_Resolve_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryResolveRequest + var protoReq QueryRequest var metadata runtime.ServerMetadata var ( @@ -284,13 +295,24 @@ func local_request_Query_Resolve_0(ctx context.Context, marshaler runtime.Marsha return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "did", err) } + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Resolve_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.Resolve(ctx, &protoReq) return msg, metadata, err } +var ( + filter_Query_Service_0 = &utilities.DoubleArray{Encoding: map[string]int{"origin": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + func request_Query_Service_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryServiceRequest + var protoReq QueryRequest var metadata runtime.ServerMetadata var ( @@ -311,13 +333,20 @@ func request_Query_Service_0(ctx context.Context, marshaler runtime.Marshaler, c return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "origin", err) } + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Service_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.Service(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } func local_request_Query_Service_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryServiceRequest + var protoReq QueryRequest var metadata runtime.ServerMetadata var ( @@ -338,11 +367,54 @@ func local_request_Query_Service_0(ctx context.Context, marshaler runtime.Marsha return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "origin", err) } + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Service_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.Service(ctx, &protoReq) return msg, metadata, err } +var ( + filter_Query_Token_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_Token_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Token_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Token(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Token_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Token_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.Token(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -418,29 +490,6 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) - mux.Handle("GET", pattern_Query_Identities_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) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_Identities_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Identities_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - mux.Handle("GET", pattern_Query_Resolve_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -487,6 +536,29 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("POST", pattern_Query_Token_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) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Token_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Token_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -588,26 +660,6 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) - mux.Handle("GET", pattern_Query_Identities_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) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_Identities_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Identities_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - mux.Handle("GET", pattern_Query_Resolve_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -648,6 +700,26 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("POST", pattern_Query_Token_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) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Token_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Token_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -656,13 +728,13 @@ var ( pattern_Query_Accounts_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 0, 2, 1}, []string{"did", "accounts"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_Credentials_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"did", "origin", "credentials"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_Credentials_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"service", "origin", "subject", "credentials"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_Identities_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 0, 2, 1}, []string{"did", "identities"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_Resolve_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 0}, []string{"did"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_Resolve_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 0}, []string{"did", "resolve"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_Service_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"service", "origin"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_Service_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"did", "service", "origin"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_Token_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"token"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( @@ -672,9 +744,9 @@ var ( forward_Query_Credentials_0 = runtime.ForwardResponseMessage - forward_Query_Identities_0 = runtime.ForwardResponseMessage - forward_Query_Resolve_0 = runtime.ForwardResponseMessage forward_Query_Service_0 = runtime.ForwardResponseMessage + + forward_Query_Token_0 = runtime.ForwardResponseMessage ) diff --git a/x/did/types/state.go b/x/did/types/state.go index 4768c695c..e490eec6d 100644 --- a/x/did/types/state.go +++ b/x/did/types/state.go @@ -2,3 +2,11 @@ package types // ByteArray is a list of byte arrays type ByteArray = [][]byte + +// ToVerificationMethod converts a Profile to a VerificationMethod +func (p Profile) ToVerificationMethod() VerificationMethod { + return VerificationMethod{ + Id: p.Id, + Controller: p.Controller, + } +} diff --git a/x/did/types/state.pb.go b/x/did/types/state.pb.go index abddda968..9691a3002 100644 --- a/x/did/types/state.pb.go +++ b/x/did/types/state.pb.go @@ -33,8 +33,14 @@ type Assertion struct { PublicKey *PubKey `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // The value of the linked identifier CredentialId []byte `protobuf:"bytes,4,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + // The display label of the attestation + CredentialLabel string `protobuf:"bytes,5,opt,name=credential_label,json=credentialLabel,proto3" json:"credential_label,omitempty"` + // The origin of the attestation + Origin string `protobuf:"bytes,6,opt,name=origin,proto3" json:"origin,omitempty"` + // The subject of the attestation + Subject string `protobuf:"bytes,7,opt,name=subject,proto3" json:"subject,omitempty"` // Metadata is optional additional information about the assertion - Metadata *Metadata `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"` + Metadata *Metadata `protobuf:"bytes,8,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (m *Assertion) Reset() { *m = Assertion{} } @@ -98,6 +104,27 @@ func (m *Assertion) GetCredentialId() []byte { return nil } +func (m *Assertion) GetCredentialLabel() string { + if m != nil { + return m.CredentialLabel + } + return "" +} + +func (m *Assertion) GetOrigin() string { + if m != nil { + return m.Origin + } + return "" +} + +func (m *Assertion) GetSubject() string { + if m != nil { + return m.Subject + } + return "" +} + func (m *Assertion) GetMetadata() *Metadata { if m != nil { return m.Metadata @@ -202,6 +229,8 @@ type Controller struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // The DID of the controller Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + // Aliases of the controller + Aliases []string `protobuf:"bytes,3,rep,name=aliases,proto3" json:"aliases,omitempty"` // PubKey is the verification method PublicKey *PubKey `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // The vault address or identifier @@ -255,6 +284,13 @@ func (m *Controller) GetAddress() string { return "" } +func (m *Controller) GetAliases() []string { + if m != nil { + return m.Aliases + } + return nil +} + func (m *Controller) GetPublicKey() *PubKey { if m != nil { return m.PublicKey @@ -276,9 +312,15 @@ type Delegation struct { // The Decentralized Identifier of the delegated account Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` // Resolved from module parameters - ChainInfoId string `protobuf:"bytes,3,opt,name=chain_info_id,json=chainInfoId,proto3" json:"chain_info_id,omitempty"` + ChainIndex string `protobuf:"bytes,3,opt,name=chain_index,json=chainIndex,proto3" json:"chain_index,omitempty"` // The delegation proof or verification method PublicKey *PubKey `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + // The Account Address + AccountAddress string `protobuf:"bytes,5,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` + // The Account label + AccountLabel string `protobuf:"bytes,6,opt,name=account_label,json=accountLabel,proto3" json:"account_label,omitempty"` + // The Chain ID + ChainId string `protobuf:"bytes,7,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` } func (m *Delegation) Reset() { *m = Delegation{} } @@ -328,9 +370,9 @@ func (m *Delegation) GetController() string { return "" } -func (m *Delegation) GetChainInfoId() string { +func (m *Delegation) GetChainIndex() string { if m != nil { - return m.ChainInfoId + return m.ChainIndex } return "" } @@ -342,34 +384,59 @@ func (m *Delegation) GetPublicKey() *PubKey { return nil } -// Service represents a service in a DID Document -type Service struct { +func (m *Delegation) GetAccountAddress() string { + if m != nil { + return m.AccountAddress + } + return "" +} + +func (m *Delegation) GetAccountLabel() string { + if m != nil { + return m.AccountLabel + } + return "" +} + +func (m *Delegation) GetChainId() string { + if m != nil { + return m.ChainId + } + return "" +} + +// ServiceRecord represents a decentralized service in a DID Document +type ServiceRecord struct { // The ID of the service Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // The type of the service ServiceType string `protobuf:"bytes,2,opt,name=service_type,json=serviceType,proto3" json:"service_type,omitempty"` // The controller DID of the service - ControllerDid string `protobuf:"bytes,3,opt,name=controller_did,json=controllerDid,proto3" json:"controller_did,omitempty"` + Controller string `protobuf:"bytes,3,opt,name=controller,proto3" json:"controller,omitempty"` // The domain name of the service OriginUri string `protobuf:"bytes,4,opt,name=origin_uri,json=originUri,proto3" json:"origin_uri,omitempty"` + // The description of the service + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` // The service endpoint - ServiceEndpoints map[string]string `protobuf:"bytes,5,rep,name=service_endpoints,json=serviceEndpoints,proto3" json:"service_endpoints,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ServiceEndpoints map[string]string `protobuf:"bytes,6,rep,name=service_endpoints,json=serviceEndpoints,proto3" json:"service_endpoints,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Scopes is the Authorization Grants of the service - Permissions *Permissions `protobuf:"bytes,6,opt,name=permissions,proto3" json:"permissions,omitempty"` + Permissions *Permissions `protobuf:"bytes,7,opt,name=permissions,proto3" json:"permissions,omitempty"` + // Metadata is optional additional information about the service + Metadata *Metadata `protobuf:"bytes,8,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (m *Service) Reset() { *m = Service{} } -func (m *Service) String() string { return proto.CompactTextString(m) } -func (*Service) ProtoMessage() {} -func (*Service) Descriptor() ([]byte, []int) { +func (m *ServiceRecord) Reset() { *m = ServiceRecord{} } +func (m *ServiceRecord) String() string { return proto.CompactTextString(m) } +func (*ServiceRecord) ProtoMessage() {} +func (*ServiceRecord) Descriptor() ([]byte, []int) { return fileDescriptor_f44bb702879c34b4, []int{4} } -func (m *Service) XXX_Unmarshal(b []byte) error { +func (m *ServiceRecord) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *Service) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *ServiceRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_Service.Marshal(b, m, deterministic) + return xxx_messageInfo_ServiceRecord.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -379,112 +446,137 @@ func (m *Service) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return b[:n], nil } } -func (m *Service) XXX_Merge(src proto.Message) { - xxx_messageInfo_Service.Merge(m, src) +func (m *ServiceRecord) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceRecord.Merge(m, src) } -func (m *Service) XXX_Size() int { +func (m *ServiceRecord) XXX_Size() int { return m.Size() } -func (m *Service) XXX_DiscardUnknown() { - xxx_messageInfo_Service.DiscardUnknown(m) +func (m *ServiceRecord) XXX_DiscardUnknown() { + xxx_messageInfo_ServiceRecord.DiscardUnknown(m) } -var xxx_messageInfo_Service proto.InternalMessageInfo +var xxx_messageInfo_ServiceRecord proto.InternalMessageInfo -func (m *Service) GetId() string { +func (m *ServiceRecord) GetId() string { if m != nil { return m.Id } return "" } -func (m *Service) GetServiceType() string { +func (m *ServiceRecord) GetServiceType() string { if m != nil { return m.ServiceType } return "" } -func (m *Service) GetControllerDid() string { +func (m *ServiceRecord) GetController() string { if m != nil { - return m.ControllerDid + return m.Controller } return "" } -func (m *Service) GetOriginUri() string { +func (m *ServiceRecord) GetOriginUri() string { if m != nil { return m.OriginUri } return "" } -func (m *Service) GetServiceEndpoints() map[string]string { +func (m *ServiceRecord) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *ServiceRecord) GetServiceEndpoints() map[string]string { if m != nil { return m.ServiceEndpoints } return nil } -func (m *Service) GetPermissions() *Permissions { +func (m *ServiceRecord) GetPermissions() *Permissions { if m != nil { return m.Permissions } return nil } +func (m *ServiceRecord) GetMetadata() *Metadata { + if m != nil { + return m.Metadata + } + return nil +} + func init() { proto.RegisterType((*Assertion)(nil), "did.v1.Assertion") proto.RegisterType((*Attestation)(nil), "did.v1.Attestation") proto.RegisterType((*Controller)(nil), "did.v1.Controller") proto.RegisterType((*Delegation)(nil), "did.v1.Delegation") - proto.RegisterType((*Service)(nil), "did.v1.Service") - proto.RegisterMapType((map[string]string)(nil), "did.v1.Service.ServiceEndpointsEntry") + proto.RegisterType((*ServiceRecord)(nil), "did.v1.ServiceRecord") + proto.RegisterMapType((map[string]string)(nil), "did.v1.ServiceRecord.ServiceEndpointsEntry") } func init() { proto.RegisterFile("did/v1/state.proto", fileDescriptor_f44bb702879c34b4) } var fileDescriptor_f44bb702879c34b4 = []byte{ - // 613 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0x4f, 0x6b, 0xd4, 0x40, - 0x18, 0xc6, 0x3b, 0xfb, 0xaf, 0xcd, 0xbb, 0xed, 0xb2, 0x4e, 0xab, 0x86, 0x8a, 0x61, 0x8d, 0x16, - 0xf6, 0x50, 0x37, 0xb4, 0x22, 0x48, 0xf1, 0x52, 0xdb, 0x1e, 0x4a, 0x11, 0x24, 0xea, 0xc5, 0x4b, - 0xc8, 0x66, 0xa6, 0xdb, 0xd1, 0x64, 0x66, 0x99, 0x99, 0xac, 0xe6, 0x4b, 0x88, 0xf8, 0x01, 0xf4, - 0xeb, 0x78, 0x11, 0x0a, 0x5e, 0x3c, 0xca, 0xf6, 0x1b, 0xf4, 0x13, 0x48, 0x92, 0x49, 0xb7, 0xae, - 0x42, 0xd1, 0x83, 0xa7, 0xdd, 0xf7, 0xc9, 0x93, 0x99, 0xe7, 0xf7, 0xcc, 0x10, 0xc0, 0x84, 0x11, - 0x6f, 0xb2, 0xe5, 0x29, 0x1d, 0x6a, 0x3a, 0x18, 0x4b, 0xa1, 0x05, 0x6e, 0x11, 0x46, 0x06, 0x93, - 0xad, 0xf5, 0x9b, 0x91, 0x50, 0x89, 0x50, 0x9e, 0x90, 0x49, 0x6e, 0x11, 0x32, 0x29, 0x0d, 0xeb, - 0x6b, 0xe6, 0xa5, 0x11, 0xe5, 0x54, 0x31, 0x65, 0xd4, 0x55, 0xa3, 0x26, 0x82, 0xd0, 0xd8, 0x88, - 0xee, 0x57, 0x04, 0xd6, 0xae, 0x52, 0x54, 0x6a, 0x26, 0x38, 0xee, 0x40, 0x8d, 0x11, 0x1b, 0xf5, - 0x50, 0xdf, 0xf2, 0x6b, 0x8c, 0x60, 0x07, 0x20, 0x12, 0x5c, 0x4b, 0x11, 0xc7, 0x54, 0xda, 0xb5, - 0x42, 0xbf, 0xa4, 0xe0, 0xfb, 0x00, 0xe3, 0x74, 0x18, 0xb3, 0x28, 0x78, 0x43, 0x33, 0xbb, 0xde, - 0x43, 0xfd, 0xf6, 0x76, 0x67, 0x50, 0xc6, 0x1b, 0x3c, 0x4b, 0x87, 0x47, 0x34, 0xf3, 0xad, 0xd2, - 0x71, 0x44, 0x33, 0x7c, 0x17, 0x56, 0x22, 0x49, 0x09, 0xe5, 0x9a, 0x85, 0x71, 0xc0, 0x88, 0xdd, - 0xe8, 0xa1, 0xfe, 0xb2, 0xbf, 0x3c, 0x13, 0x0f, 0x09, 0xde, 0x84, 0xa5, 0x84, 0xea, 0x90, 0x84, - 0x3a, 0xb4, 0x9b, 0xc5, 0x8a, 0xdd, 0x6a, 0xc5, 0xa7, 0x46, 0xf7, 0x2f, 0x1c, 0x3b, 0x9d, 0xf3, - 0x4f, 0xdf, 0xde, 0xd7, 0x97, 0xa0, 0x51, 0x26, 0x77, 0xcf, 0x11, 0xb4, 0x77, 0xb5, 0xa6, 0x79, - 0x5f, 0xff, 0x81, 0xe8, 0x06, 0xb4, 0x84, 0x64, 0x23, 0xc6, 0x0b, 0x14, 0xcb, 0x37, 0x13, 0xb6, - 0x61, 0x51, 0xa5, 0xc3, 0xd7, 0x34, 0xd2, 0x05, 0x83, 0xe5, 0x57, 0xe3, 0x2f, 0x78, 0xad, 0x2b, - 0xf1, 0xee, 0x15, 0x78, 0x4e, 0x89, 0x87, 0xd7, 0xa0, 0x63, 0x96, 0xd9, 0x2c, 0xf7, 0xe9, 0x22, - 0x1b, 0xd9, 0x35, 0xf7, 0x23, 0x02, 0xd8, 0x9b, 0x31, 0xcc, 0x33, 0xdb, 0xb0, 0x18, 0x12, 0x22, - 0xa9, 0x52, 0x06, 0xb8, 0x1a, 0xe7, 0x68, 0x1b, 0x57, 0xd1, 0xde, 0x02, 0x6b, 0x12, 0xa6, 0xb1, - 0x0e, 0x22, 0x46, 0x0c, 0xd7, 0x52, 0x21, 0xec, 0x31, 0x32, 0x77, 0x12, 0x75, 0xf7, 0x33, 0x02, - 0xd8, 0xa7, 0x31, 0x1d, 0xfd, 0xdb, 0x41, 0xb8, 0xb0, 0x12, 0x9d, 0x84, 0x8c, 0x07, 0x8c, 0x1f, - 0x8b, 0xfc, 0xae, 0xd4, 0x0b, 0x4b, 0xbb, 0x10, 0x0f, 0xf9, 0xb1, 0x38, 0x24, 0x7f, 0x19, 0x7f, - 0x2e, 0x61, 0xc3, 0x9d, 0xd6, 0x60, 0xf1, 0x39, 0x95, 0x13, 0x16, 0xd1, 0xdf, 0xe2, 0xdd, 0x81, - 0x65, 0x55, 0x3e, 0x0a, 0x74, 0x36, 0xa6, 0x26, 0x60, 0xdb, 0x68, 0x2f, 0xb2, 0x31, 0xc5, 0x1b, - 0xd0, 0x99, 0xe5, 0x0d, 0xc8, 0x45, 0xc4, 0x95, 0x99, 0xba, 0xcf, 0x08, 0xbe, 0x0d, 0x50, 0x1e, - 0x56, 0x90, 0x4a, 0x66, 0xae, 0x89, 0x55, 0x2a, 0x2f, 0x25, 0xc3, 0x3e, 0x5c, 0xab, 0x36, 0xa2, - 0x9c, 0x8c, 0x05, 0xe3, 0x5a, 0xd9, 0xcd, 0x5e, 0xbd, 0xdf, 0xde, 0xde, 0xa8, 0x50, 0x4c, 0xc8, - 0xea, 0xf7, 0xa0, 0xf2, 0x1d, 0x70, 0x2d, 0x33, 0xbf, 0xab, 0xe6, 0x64, 0xfc, 0x10, 0xda, 0x63, - 0x2a, 0x13, 0xa6, 0x14, 0x13, 0x5c, 0x99, 0x6b, 0xb6, 0x7a, 0x51, 0xcc, 0xec, 0x91, 0x7f, 0xd9, - 0xb7, 0xbe, 0x07, 0xd7, 0xff, 0xb8, 0x03, 0xee, 0x42, 0x3d, 0x2f, 0xb8, 0x6c, 0x27, 0xff, 0x8b, - 0xd7, 0xa0, 0x39, 0x09, 0xe3, 0xb4, 0xea, 0xa5, 0x1c, 0x76, 0x6a, 0x8f, 0xd0, 0x5c, 0xc9, 0xcd, - 0x27, 0x8f, 0xbf, 0x4c, 0x1d, 0x74, 0x3a, 0x75, 0xd0, 0x8f, 0xa9, 0x83, 0x3e, 0x9c, 0x39, 0x0b, - 0xa7, 0x67, 0xce, 0xc2, 0xf7, 0x33, 0x67, 0xe1, 0x95, 0x3b, 0x62, 0xfa, 0x24, 0x1d, 0x0e, 0x22, - 0x91, 0x78, 0x82, 0x2b, 0xc1, 0xa5, 0x77, 0xf2, 0x36, 0xcc, 0xbc, 0x77, 0x5e, 0xfe, 0xa1, 0xca, - 0x5b, 0x57, 0xc3, 0x56, 0xf1, 0x95, 0x7a, 0xf0, 0x33, 0x00, 0x00, 0xff, 0xff, 0x13, 0xa6, 0x96, - 0x2c, 0x07, 0x05, 0x00, 0x00, + // 796 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0x41, 0x4f, 0x23, 0x37, + 0x14, 0xc7, 0x99, 0x99, 0x24, 0x24, 0x6f, 0x92, 0x10, 0x0c, 0x14, 0x17, 0xd4, 0x69, 0x08, 0x87, + 0xa6, 0x2a, 0x4d, 0x04, 0x55, 0xd5, 0x2a, 0x6a, 0x0f, 0x94, 0x72, 0x40, 0xb4, 0x52, 0x95, 0xb6, + 0x52, 0xc5, 0x25, 0x9d, 0x8c, 0xad, 0xe0, 0x76, 0x32, 0x8e, 0x6c, 0x4f, 0x44, 0x3e, 0x43, 0xa5, + 0xaa, 0x9f, 0xa0, 0x9f, 0xa7, 0x87, 0x1e, 0x90, 0xf6, 0xb2, 0xa7, 0xd5, 0x0a, 0xa4, 0xfd, 0x00, + 0x7b, 0xde, 0xc3, 0x6a, 0x3c, 0x1e, 0x32, 0x84, 0x45, 0x08, 0x0e, 0x7b, 0x41, 0xf8, 0xff, 0xfe, + 0x8e, 0xdf, 0xfb, 0x3d, 0x3f, 0x0f, 0x20, 0xc2, 0x48, 0x77, 0xba, 0xdf, 0x95, 0xca, 0x57, 0xb4, + 0x33, 0x11, 0x5c, 0x71, 0x54, 0x22, 0x8c, 0x74, 0xa6, 0xfb, 0x5b, 0x9b, 0x01, 0x97, 0x63, 0x2e, + 0xbb, 0x5c, 0x8c, 0x13, 0x0b, 0x17, 0xe3, 0xd4, 0xb0, 0xb5, 0x6e, 0x36, 0x8d, 0x68, 0x44, 0x25, + 0x93, 0x46, 0x5d, 0x33, 0xea, 0x98, 0x13, 0x1a, 0x1a, 0xb1, 0xf5, 0xc6, 0x86, 0xca, 0xa1, 0x94, + 0x54, 0x28, 0xc6, 0x23, 0x54, 0x07, 0x9b, 0x11, 0x6c, 0x35, 0xad, 0x76, 0xa5, 0x6f, 0x33, 0x82, + 0x3c, 0x80, 0x80, 0x47, 0x4a, 0xf0, 0x30, 0xa4, 0x02, 0xdb, 0x5a, 0xcf, 0x29, 0xe8, 0x73, 0x80, + 0x49, 0x3c, 0x0c, 0x59, 0x30, 0xf8, 0x93, 0xce, 0xb0, 0xd3, 0xb4, 0xda, 0xee, 0x41, 0xbd, 0x93, + 0xa6, 0xd7, 0xf9, 0x29, 0x1e, 0x9e, 0xd2, 0x59, 0xbf, 0x92, 0x3a, 0x4e, 0xe9, 0x0c, 0xed, 0x42, + 0x2d, 0x10, 0x94, 0xd0, 0x48, 0x31, 0x3f, 0x1c, 0x30, 0x82, 0x0b, 0x4d, 0xab, 0x5d, 0xed, 0x57, + 0xe7, 0xe2, 0x09, 0x41, 0x9f, 0x42, 0x23, 0x67, 0x0a, 0xfd, 0x21, 0x0d, 0x71, 0x51, 0x9f, 0xbc, + 0x32, 0xd7, 0x7f, 0x48, 0x64, 0xf4, 0x01, 0x94, 0xb8, 0x60, 0x23, 0x16, 0xe1, 0x92, 0x36, 0x98, + 0x15, 0xc2, 0xb0, 0x2c, 0xe3, 0xe1, 0x1f, 0x34, 0x50, 0x78, 0x59, 0x07, 0xb2, 0x25, 0xda, 0x83, + 0xf2, 0x98, 0x2a, 0x9f, 0xf8, 0xca, 0xc7, 0x65, 0x9d, 0x6e, 0x23, 0x4b, 0xf7, 0x47, 0xa3, 0xf7, + 0x6f, 0x1c, 0xbd, 0xdf, 0x5f, 0xff, 0xfb, 0xec, 0x6f, 0xe7, 0x0c, 0x0a, 0x09, 0x16, 0xb4, 0x0e, + 0x75, 0xf3, 0x33, 0x7b, 0xe9, 0x39, 0x0d, 0x0b, 0x5b, 0x68, 0x13, 0x56, 0xe7, 0x40, 0xb2, 0x80, + 0x8d, 0x2d, 0xb4, 0x03, 0xdb, 0xb9, 0xc0, 0x62, 0x49, 0x0d, 0x07, 0x5b, 0xd8, 0x6a, 0xfd, 0x65, + 0x83, 0x7b, 0xa8, 0x14, 0x4d, 0xda, 0xfb, 0x1e, 0x1a, 0x30, 0x07, 0x56, 0xb8, 0x0f, 0x58, 0xf1, + 0x7e, 0x60, 0xa5, 0x07, 0x81, 0x7d, 0xab, 0x81, 0x7d, 0xf5, 0x24, 0x60, 0xd8, 0x6e, 0xfd, 0x6f, + 0x01, 0x1c, 0xcd, 0x8b, 0x5b, 0x84, 0x81, 0x61, 0xd9, 0x27, 0x44, 0x50, 0x29, 0x0d, 0x89, 0x6c, + 0xa9, 0x23, 0x21, 0xf3, 0x25, 0x95, 0xd8, 0x69, 0x3a, 0x3a, 0x92, 0x2e, 0x17, 0x00, 0x15, 0x1e, + 0x02, 0xb4, 0x0d, 0x95, 0xa9, 0x1f, 0x87, 0x6a, 0x10, 0x30, 0x62, 0x50, 0x94, 0xb5, 0x70, 0xc4, + 0x48, 0xaf, 0xa3, 0xab, 0x6b, 0x9b, 0xea, 0x6a, 0x37, 0xd9, 0xe8, 0xb2, 0x56, 0x72, 0x3b, 0x75, + 0x39, 0x4e, 0xeb, 0x85, 0x0d, 0xf0, 0x3d, 0x0d, 0xe9, 0xe8, 0x69, 0xbd, 0xfd, 0x18, 0xdc, 0xe0, + 0xdc, 0x67, 0xd1, 0x80, 0x45, 0x84, 0x5e, 0xe8, 0xe6, 0x26, 0x86, 0x44, 0x3a, 0x49, 0x94, 0xc7, + 0xd6, 0xf6, 0x09, 0xac, 0xf8, 0x41, 0xc0, 0xe3, 0x48, 0x0d, 0x32, 0x8c, 0x69, 0x85, 0x75, 0x23, + 0x1f, 0x1a, 0x9a, 0xbb, 0x50, 0xcb, 0x8c, 0xe9, 0xf8, 0xa5, 0xd3, 0x55, 0x35, 0x62, 0x3a, 0x7b, + 0x1f, 0x42, 0xd9, 0x64, 0x47, 0xb2, 0x21, 0x4b, 0x53, 0x23, 0xbd, 0x91, 0xe6, 0xe4, 0x1b, 0x4e, + 0x1e, 0xe0, 0x85, 0x63, 0xf7, 0xb2, 0x8d, 0x1a, 0x9c, 0x07, 0x38, 0x77, 0x1f, 0x6e, 0x1d, 0xac, + 0xe7, 0x68, 0x13, 0xd6, 0xf2, 0x73, 0x94, 0x6d, 0x75, 0x70, 0xa1, 0xf5, 0xca, 0x81, 0xda, 0xcf, + 0x54, 0x4c, 0x59, 0x40, 0xfb, 0x34, 0xe0, 0x82, 0xdc, 0x61, 0xbc, 0x03, 0x55, 0x99, 0x1a, 0x06, + 0x6a, 0x36, 0xa1, 0x86, 0xb2, 0x6b, 0xb4, 0x5f, 0x66, 0x13, 0xba, 0xd0, 0x06, 0xe7, 0x4e, 0x1b, + 0x3e, 0x02, 0x48, 0x2f, 0xe9, 0x20, 0x16, 0xcc, 0xcc, 0x4d, 0x25, 0x55, 0x7e, 0x15, 0x0c, 0x35, + 0xc1, 0x25, 0x54, 0x06, 0x82, 0x4d, 0x92, 0x26, 0x1b, 0xa2, 0x79, 0x09, 0xfd, 0x06, 0xab, 0x59, + 0x0e, 0x34, 0x22, 0x13, 0xce, 0x22, 0x25, 0x71, 0xa9, 0xe9, 0xb4, 0xdd, 0x83, 0xcf, 0xb2, 0x6e, + 0xdd, 0xaa, 0x22, 0x5b, 0x1d, 0x67, 0xee, 0xe3, 0x48, 0x89, 0x59, 0xbf, 0x21, 0x17, 0x64, 0xf4, + 0x25, 0xb8, 0x13, 0x2a, 0xc6, 0x4c, 0x4a, 0xc6, 0x23, 0xa9, 0xdb, 0xe0, 0x1e, 0xac, 0xdd, 0xdc, + 0x80, 0x79, 0xa8, 0x9f, 0xf7, 0x3d, 0xee, 0x11, 0xdc, 0x3a, 0x82, 0x8d, 0x77, 0xe6, 0x83, 0x1a, + 0xe0, 0x24, 0xf7, 0x2e, 0x85, 0x9d, 0xfc, 0x8b, 0xd6, 0xa1, 0x38, 0xf5, 0xc3, 0x38, 0xc3, 0x9c, + 0x2e, 0x7a, 0xf6, 0xd7, 0xd6, 0xc2, 0xc3, 0xd0, 0xc8, 0x23, 0xd5, 0x97, 0x60, 0x1b, 0x36, 0xee, + 0x3c, 0x0a, 0x3a, 0x98, 0x4c, 0x52, 0xf1, 0xbb, 0x6f, 0xfe, 0xbb, 0xf2, 0xac, 0xcb, 0x2b, 0xcf, + 0x7a, 0x79, 0xe5, 0x59, 0xff, 0x5c, 0x7b, 0x4b, 0x97, 0xd7, 0xde, 0xd2, 0xf3, 0x6b, 0x6f, 0xe9, + 0xac, 0x35, 0x62, 0xea, 0x3c, 0x1e, 0x76, 0x02, 0x3e, 0xee, 0xf2, 0x48, 0xf2, 0x48, 0x74, 0xf5, + 0x9f, 0x8b, 0x6e, 0xf2, 0xb5, 0x4b, 0x7a, 0x2e, 0x87, 0x25, 0xfd, 0xa9, 0xfb, 0xe2, 0x6d, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x39, 0xd5, 0x9b, 0xc7, 0x4c, 0x07, 0x00, 0x00, } func (m *Assertion) Marshal() (dAtA []byte, err error) { @@ -517,6 +609,27 @@ func (m *Assertion) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintState(dAtA, i, uint64(size)) } i-- + dAtA[i] = 0x42 + } + if len(m.Subject) > 0 { + i -= len(m.Subject) + copy(dAtA[i:], m.Subject) + i = encodeVarintState(dAtA, i, uint64(len(m.Subject))) + i-- + dAtA[i] = 0x3a + } + if len(m.Origin) > 0 { + i -= len(m.Origin) + copy(dAtA[i:], m.Origin) + i = encodeVarintState(dAtA, i, uint64(len(m.Origin))) + i-- + dAtA[i] = 0x32 + } + if len(m.CredentialLabel) > 0 { + i -= len(m.CredentialLabel) + copy(dAtA[i:], m.CredentialLabel) + i = encodeVarintState(dAtA, i, uint64(len(m.CredentialLabel))) + i-- dAtA[i] = 0x2a } if len(m.CredentialId) > 0 { @@ -669,6 +782,15 @@ func (m *Controller) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x22 } + if len(m.Aliases) > 0 { + for iNdEx := len(m.Aliases) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Aliases[iNdEx]) + copy(dAtA[i:], m.Aliases[iNdEx]) + i = encodeVarintState(dAtA, i, uint64(len(m.Aliases[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } if len(m.Address) > 0 { i -= len(m.Address) copy(dAtA[i:], m.Address) @@ -706,6 +828,27 @@ func (m *Delegation) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.ChainId) > 0 { + i -= len(m.ChainId) + copy(dAtA[i:], m.ChainId) + i = encodeVarintState(dAtA, i, uint64(len(m.ChainId))) + i-- + dAtA[i] = 0x3a + } + if len(m.AccountLabel) > 0 { + i -= len(m.AccountLabel) + copy(dAtA[i:], m.AccountLabel) + i = encodeVarintState(dAtA, i, uint64(len(m.AccountLabel))) + i-- + dAtA[i] = 0x32 + } + if len(m.AccountAddress) > 0 { + i -= len(m.AccountAddress) + copy(dAtA[i:], m.AccountAddress) + i = encodeVarintState(dAtA, i, uint64(len(m.AccountAddress))) + i-- + dAtA[i] = 0x2a + } if m.PublicKey != nil { { size, err := m.PublicKey.MarshalToSizedBuffer(dAtA[:i]) @@ -718,10 +861,10 @@ func (m *Delegation) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x22 } - if len(m.ChainInfoId) > 0 { - i -= len(m.ChainInfoId) - copy(dAtA[i:], m.ChainInfoId) - i = encodeVarintState(dAtA, i, uint64(len(m.ChainInfoId))) + if len(m.ChainIndex) > 0 { + i -= len(m.ChainIndex) + copy(dAtA[i:], m.ChainIndex) + i = encodeVarintState(dAtA, i, uint64(len(m.ChainIndex))) i-- dAtA[i] = 0x1a } @@ -742,7 +885,7 @@ func (m *Delegation) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *Service) Marshal() (dAtA []byte, err error) { +func (m *ServiceRecord) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -752,16 +895,28 @@ func (m *Service) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *Service) MarshalTo(dAtA []byte) (int, error) { +func (m *ServiceRecord) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *Service) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ServiceRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + if m.Metadata != nil { + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintState(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } if m.Permissions != nil { { size, err := m.Permissions.MarshalToSizedBuffer(dAtA[:i]) @@ -772,7 +927,7 @@ func (m *Service) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintState(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x32 + dAtA[i] = 0x3a } if len(m.ServiceEndpoints) > 0 { for k := range m.ServiceEndpoints { @@ -790,9 +945,16 @@ func (m *Service) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0xa i = encodeVarintState(dAtA, i, uint64(baseI-i)) i-- - dAtA[i] = 0x2a + dAtA[i] = 0x32 } } + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintState(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x2a + } if len(m.OriginUri) > 0 { i -= len(m.OriginUri) copy(dAtA[i:], m.OriginUri) @@ -800,10 +962,10 @@ func (m *Service) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x22 } - if len(m.ControllerDid) > 0 { - i -= len(m.ControllerDid) - copy(dAtA[i:], m.ControllerDid) - i = encodeVarintState(dAtA, i, uint64(len(m.ControllerDid))) + if len(m.Controller) > 0 { + i -= len(m.Controller) + copy(dAtA[i:], m.Controller) + i = encodeVarintState(dAtA, i, uint64(len(m.Controller))) i-- dAtA[i] = 0x1a } @@ -857,6 +1019,18 @@ func (m *Assertion) Size() (n int) { if l > 0 { n += 1 + l + sovState(uint64(l)) } + l = len(m.CredentialLabel) + if l > 0 { + n += 1 + l + sovState(uint64(l)) + } + l = len(m.Origin) + if l > 0 { + n += 1 + l + sovState(uint64(l)) + } + l = len(m.Subject) + if l > 0 { + n += 1 + l + sovState(uint64(l)) + } if m.Metadata != nil { l = m.Metadata.Size() n += 1 + l + sovState(uint64(l)) @@ -911,6 +1085,12 @@ func (m *Controller) Size() (n int) { if l > 0 { n += 1 + l + sovState(uint64(l)) } + if len(m.Aliases) > 0 { + for _, s := range m.Aliases { + l = len(s) + n += 1 + l + sovState(uint64(l)) + } + } if m.PublicKey != nil { l = m.PublicKey.Size() n += 1 + l + sovState(uint64(l)) @@ -936,7 +1116,7 @@ func (m *Delegation) Size() (n int) { if l > 0 { n += 1 + l + sovState(uint64(l)) } - l = len(m.ChainInfoId) + l = len(m.ChainIndex) if l > 0 { n += 1 + l + sovState(uint64(l)) } @@ -944,10 +1124,22 @@ func (m *Delegation) Size() (n int) { l = m.PublicKey.Size() n += 1 + l + sovState(uint64(l)) } + l = len(m.AccountAddress) + if l > 0 { + n += 1 + l + sovState(uint64(l)) + } + l = len(m.AccountLabel) + if l > 0 { + n += 1 + l + sovState(uint64(l)) + } + l = len(m.ChainId) + if l > 0 { + n += 1 + l + sovState(uint64(l)) + } return n } -func (m *Service) Size() (n int) { +func (m *ServiceRecord) Size() (n int) { if m == nil { return 0 } @@ -961,7 +1153,7 @@ func (m *Service) Size() (n int) { if l > 0 { n += 1 + l + sovState(uint64(l)) } - l = len(m.ControllerDid) + l = len(m.Controller) if l > 0 { n += 1 + l + sovState(uint64(l)) } @@ -969,6 +1161,10 @@ func (m *Service) Size() (n int) { if l > 0 { n += 1 + l + sovState(uint64(l)) } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovState(uint64(l)) + } if len(m.ServiceEndpoints) > 0 { for k, v := range m.ServiceEndpoints { _ = k @@ -981,6 +1177,10 @@ func (m *Service) Size() (n int) { l = m.Permissions.Size() n += 1 + l + sovState(uint64(l)) } + if m.Metadata != nil { + l = m.Metadata.Size() + n += 1 + l + sovState(uint64(l)) + } return n } @@ -1154,6 +1354,102 @@ func (m *Assertion) Unmarshal(dAtA []byte) error { } iNdEx = postIndex case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CredentialLabel", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CredentialLabel = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Origin = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subject = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) } @@ -1553,6 +1849,38 @@ func (m *Controller) Unmarshal(dAtA []byte) error { } m.Address = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Aliases", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Aliases = append(m.Aliases, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field PublicKey", wireType) @@ -1737,7 +2065,7 @@ func (m *Delegation) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ChainInfoId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ChainIndex", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1765,7 +2093,7 @@ func (m *Delegation) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ChainInfoId = string(dAtA[iNdEx:postIndex]) + m.ChainIndex = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: if wireType != 2 { @@ -1803,6 +2131,102 @@ func (m *Delegation) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AccountAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AccountAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AccountLabel", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AccountLabel = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChainId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipState(dAtA[iNdEx:]) @@ -1824,7 +2248,7 @@ func (m *Delegation) Unmarshal(dAtA []byte) error { } return nil } -func (m *Service) Unmarshal(dAtA []byte) error { +func (m *ServiceRecord) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1847,10 +2271,10 @@ func (m *Service) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Service: wiretype end group for non-group") + return fmt.Errorf("proto: ServiceRecord: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Service: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ServiceRecord: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1919,7 +2343,7 @@ func (m *Service) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ControllerDid", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1947,7 +2371,7 @@ func (m *Service) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ControllerDid = string(dAtA[iNdEx:postIndex]) + m.Controller = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: if wireType != 2 { @@ -1982,6 +2406,38 @@ func (m *Service) Unmarshal(dAtA []byte) error { m.OriginUri = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ServiceEndpoints", wireType) } @@ -2108,7 +2564,7 @@ func (m *Service) Unmarshal(dAtA []byte) error { } m.ServiceEndpoints[mapkey] = mapvalue iNdEx = postIndex - case 6: + case 7: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Permissions", wireType) } @@ -2144,6 +2600,42 @@ func (m *Service) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metadata == nil { + m.Metadata = &Metadata{} + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipState(dAtA[iNdEx:]) diff --git a/x/did/types/tx.pb.go b/x/did/types/tx.pb.go index 370bc42d8..aeea91030 100644 --- a/x/did/types/tx.pb.go +++ b/x/did/types/tx.pb.go @@ -37,9 +37,9 @@ type MsgUpdateParams struct { // authority is the address of the governance account. Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` // params defines the parameters to update. - // - // NOTE: All parameters must be supplied. Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"` + // token is the macron token to authenticate the operation. + Token *Token `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` } func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } @@ -89,6 +89,13 @@ func (m *MsgUpdateParams) GetParams() Params { return Params{} } +func (m *MsgUpdateParams) GetToken() *Token { + if m != nil { + return m.Token + } + return nil +} + // MsgUpdateParamsResponse defines the response structure for executing a // MsgUpdateParams message. // @@ -129,30 +136,28 @@ func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo -// MsgAuthenticate is the message type for the Authenticate RPC. -type MsgAuthenticate struct { - // authority is the address of the governance account. +// MsgAllocateVault is the message type for the AllocateVault RPC. +type MsgAllocateVault struct { + // authority is the address of the service account. Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` - // Controller is the address of the controller to authenticate. - Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` - // Address is the address to authenticate. - Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` - // Origin is the origin of the request in wildcard form. - Origin string `protobuf:"bytes,4,opt,name=origin,proto3" json:"origin,omitempty"` + // subject is a unique human-defined identifier to associate with the vault. + Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"` + // token is the macron token to authenticate the operation. + Token *Token `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` } -func (m *MsgAuthenticate) Reset() { *m = MsgAuthenticate{} } -func (m *MsgAuthenticate) String() string { return proto.CompactTextString(m) } -func (*MsgAuthenticate) ProtoMessage() {} -func (*MsgAuthenticate) Descriptor() ([]byte, []int) { +func (m *MsgAllocateVault) Reset() { *m = MsgAllocateVault{} } +func (m *MsgAllocateVault) String() string { return proto.CompactTextString(m) } +func (*MsgAllocateVault) ProtoMessage() {} +func (*MsgAllocateVault) Descriptor() ([]byte, []int) { return fileDescriptor_d73284df019ff211, []int{2} } -func (m *MsgAuthenticate) XXX_Unmarshal(b []byte) error { +func (m *MsgAllocateVault) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgAuthenticate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgAllocateVault) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgAuthenticate.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgAllocateVault.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -162,62 +167,59 @@ func (m *MsgAuthenticate) XXX_Marshal(b []byte, deterministic bool) ([]byte, err return b[:n], nil } } -func (m *MsgAuthenticate) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgAuthenticate.Merge(m, src) +func (m *MsgAllocateVault) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgAllocateVault.Merge(m, src) } -func (m *MsgAuthenticate) XXX_Size() int { +func (m *MsgAllocateVault) XXX_Size() int { return m.Size() } -func (m *MsgAuthenticate) XXX_DiscardUnknown() { - xxx_messageInfo_MsgAuthenticate.DiscardUnknown(m) +func (m *MsgAllocateVault) XXX_DiscardUnknown() { + xxx_messageInfo_MsgAllocateVault.DiscardUnknown(m) } -var xxx_messageInfo_MsgAuthenticate proto.InternalMessageInfo +var xxx_messageInfo_MsgAllocateVault proto.InternalMessageInfo -func (m *MsgAuthenticate) GetAuthority() string { +func (m *MsgAllocateVault) GetAuthority() string { if m != nil { return m.Authority } return "" } -func (m *MsgAuthenticate) GetController() string { +func (m *MsgAllocateVault) GetSubject() string { if m != nil { - return m.Controller + return m.Subject } return "" } -func (m *MsgAuthenticate) GetAddress() string { +func (m *MsgAllocateVault) GetToken() *Token { if m != nil { - return m.Address + return m.Token } - return "" + return nil } -func (m *MsgAuthenticate) GetOrigin() string { - if m != nil { - return m.Origin - } - return "" +// MsgAllocateVaultResponse is the response type for the AllocateVault RPC. +type MsgAllocateVaultResponse struct { + // CID is the content identifier of the vault. + Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` + // ExpiryBlock is the block number at which the vault will expire. + ExpiryBlock int64 `protobuf:"varint,2,opt,name=expiry_block,json=expiryBlock,proto3" json:"expiry_block,omitempty"` } -// MsgAuthenticateResponse is the response type for the Authenticate RPC. -type MsgAuthenticateResponse struct { -} - -func (m *MsgAuthenticateResponse) Reset() { *m = MsgAuthenticateResponse{} } -func (m *MsgAuthenticateResponse) String() string { return proto.CompactTextString(m) } -func (*MsgAuthenticateResponse) ProtoMessage() {} -func (*MsgAuthenticateResponse) Descriptor() ([]byte, []int) { +func (m *MsgAllocateVaultResponse) Reset() { *m = MsgAllocateVaultResponse{} } +func (m *MsgAllocateVaultResponse) String() string { return proto.CompactTextString(m) } +func (*MsgAllocateVaultResponse) ProtoMessage() {} +func (*MsgAllocateVaultResponse) Descriptor() ([]byte, []int) { return fileDescriptor_d73284df019ff211, []int{3} } -func (m *MsgAuthenticateResponse) XXX_Unmarshal(b []byte) error { +func (m *MsgAllocateVaultResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgAuthenticateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgAllocateVaultResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgAuthenticateResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgAllocateVaultResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -227,17 +229,31 @@ func (m *MsgAuthenticateResponse) XXX_Marshal(b []byte, deterministic bool) ([]b return b[:n], nil } } -func (m *MsgAuthenticateResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgAuthenticateResponse.Merge(m, src) +func (m *MsgAllocateVaultResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgAllocateVaultResponse.Merge(m, src) } -func (m *MsgAuthenticateResponse) XXX_Size() int { +func (m *MsgAllocateVaultResponse) XXX_Size() int { return m.Size() } -func (m *MsgAuthenticateResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgAuthenticateResponse.DiscardUnknown(m) +func (m *MsgAllocateVaultResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgAllocateVaultResponse.DiscardUnknown(m) } -var xxx_messageInfo_MsgAuthenticateResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgAllocateVaultResponse proto.InternalMessageInfo + +func (m *MsgAllocateVaultResponse) GetCid() string { + if m != nil { + return m.Cid + } + return "" +} + +func (m *MsgAllocateVaultResponse) GetExpiryBlock() int64 { + if m != nil { + return m.ExpiryBlock + } + return 0 +} // MsgProveWitness is the message type for the ProveWitness RPC. type MsgProveWitness struct { @@ -247,6 +263,8 @@ type MsgProveWitness struct { Property string `protobuf:"bytes,2,opt,name=property,proto3" json:"property,omitempty"` // Witness Value is the bytes of the witness. Witness []byte `protobuf:"bytes,3,opt,name=witness,proto3" json:"witness,omitempty"` + // token is the macron token to authenticate the operation. + Token *Token `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` } func (m *MsgProveWitness) Reset() { *m = MsgProveWitness{} } @@ -303,6 +321,13 @@ func (m *MsgProveWitness) GetWitness() []byte { return nil } +func (m *MsgProveWitness) GetToken() *Token { + if m != nil { + return m.Token + } + return nil +} + // MsgProveWitnessResponse is the response type for the ProveWitness RPC. type MsgProveWitnessResponse struct { Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` @@ -360,10 +385,8 @@ func (m *MsgProveWitnessResponse) GetProperty() string { type MsgSyncVault struct { // controller is the address of the controller to sync. Controller string `protobuf:"bytes,1,opt,name=controller,proto3" json:"controller,omitempty"` - // cid is the IPFS content identifier. - Cid string `protobuf:"bytes,2,opt,name=cid,proto3" json:"cid,omitempty"` - // Macroon is the public token to authenticate the operation. - Macron []byte `protobuf:"bytes,3,opt,name=macron,proto3" json:"macron,omitempty"` + // Token is the public token to authenticate the operation. + Token *Token `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` } func (m *MsgSyncVault) Reset() { *m = MsgSyncVault{} } @@ -406,16 +429,9 @@ func (m *MsgSyncVault) GetController() string { return "" } -func (m *MsgSyncVault) GetCid() string { +func (m *MsgSyncVault) GetToken() *Token { if m != nil { - return m.Cid - } - return "" -} - -func (m *MsgSyncVault) GetMacron() []byte { - if m != nil { - return m.Macron + return m.Token } return nil } @@ -471,10 +487,12 @@ type MsgRegisterController struct { Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` // Assertions is the list of assertions to initialize the controller with. Cid string `protobuf:"bytes,2,opt,name=cid,proto3" json:"cid,omitempty"` - // Keyshares is the list of keyshares to initialize the controller with. - Keyshares [][]byte `protobuf:"bytes,3,rep,name=keyshares,proto3" json:"keyshares,omitempty"` - // Verifications is the list of verifications to initialize the controller with. - Verifications [][]byte `protobuf:"bytes,4,rep,name=verifications,proto3" json:"verifications,omitempty"` + // Origin is the origin of the request in wildcard form. + Origin string `protobuf:"bytes,3,opt,name=origin,proto3" json:"origin,omitempty"` + // Credential is the list of keyshares to initialize the controller with. + Authentication []*Credential `protobuf:"bytes,4,rep,name=authentication,proto3" json:"authentication,omitempty"` + // token is the macron token to authenticate the operation. + Token *Token `protobuf:"bytes,5,opt,name=token,proto3" json:"token,omitempty"` } func (m *MsgRegisterController) Reset() { *m = MsgRegisterController{} } @@ -524,26 +542,35 @@ func (m *MsgRegisterController) GetCid() string { return "" } -func (m *MsgRegisterController) GetKeyshares() [][]byte { +func (m *MsgRegisterController) GetOrigin() string { if m != nil { - return m.Keyshares + return m.Origin + } + return "" +} + +func (m *MsgRegisterController) GetAuthentication() []*Credential { + if m != nil { + return m.Authentication } return nil } -func (m *MsgRegisterController) GetVerifications() [][]byte { +func (m *MsgRegisterController) GetToken() *Token { if m != nil { - return m.Verifications + return m.Token } return nil } // MsgRegisterControllerResponse is the response type for the InitializeController RPC. type MsgRegisterControllerResponse struct { + // Success returns true if the specified cid is valid and not already encrypted. + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` // Controller is the address of the initialized controller. - Controller string `protobuf:"bytes,1,opt,name=controller,proto3" json:"controller,omitempty"` + Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` // Accounts are a Address Map and Supported coin Denoms for the controller - Accounts map[string]string `protobuf:"bytes,2,rep,name=accounts,proto3" json:"accounts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Accounts map[string]string `protobuf:"bytes,3,rep,name=accounts,proto3" json:"accounts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (m *MsgRegisterControllerResponse) Reset() { *m = MsgRegisterControllerResponse{} } @@ -579,6 +606,13 @@ func (m *MsgRegisterControllerResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgRegisterControllerResponse proto.InternalMessageInfo +func (m *MsgRegisterControllerResponse) GetSuccess() bool { + if m != nil { + return m.Success + } + return false +} + func (m *MsgRegisterControllerResponse) GetController() string { if m != nil { return m.Controller @@ -593,21 +627,164 @@ func (m *MsgRegisterControllerResponse) GetAccounts() map[string]string { return nil } +// MsgAuthorize is the message type for the Authorize RPC. +type MsgAuthorize struct { + // authority is the address of the governance account. + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // Controller is the address of the controller to authenticate. + Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` + // Address is the address to authenticate. + Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` + // Origin is the origin of the request in wildcard form. + Origin string `protobuf:"bytes,4,opt,name=origin,proto3" json:"origin,omitempty"` + // token is the macron token to authenticate the operation. + Token *Token `protobuf:"bytes,5,opt,name=token,proto3" json:"token,omitempty"` +} + +func (m *MsgAuthorize) Reset() { *m = MsgAuthorize{} } +func (m *MsgAuthorize) String() string { return proto.CompactTextString(m) } +func (*MsgAuthorize) ProtoMessage() {} +func (*MsgAuthorize) Descriptor() ([]byte, []int) { + return fileDescriptor_d73284df019ff211, []int{10} +} +func (m *MsgAuthorize) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgAuthorize) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgAuthorize.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgAuthorize) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgAuthorize.Merge(m, src) +} +func (m *MsgAuthorize) XXX_Size() int { + return m.Size() +} +func (m *MsgAuthorize) XXX_DiscardUnknown() { + xxx_messageInfo_MsgAuthorize.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgAuthorize proto.InternalMessageInfo + +func (m *MsgAuthorize) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgAuthorize) GetController() string { + if m != nil { + return m.Controller + } + return "" +} + +func (m *MsgAuthorize) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func (m *MsgAuthorize) GetOrigin() string { + if m != nil { + return m.Origin + } + return "" +} + +func (m *MsgAuthorize) GetToken() *Token { + if m != nil { + return m.Token + } + return nil +} + +// MsgAuthorizeResponse is the response type for the Authorize RPC. +type MsgAuthorizeResponse struct { + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Token *Token `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` +} + +func (m *MsgAuthorizeResponse) Reset() { *m = MsgAuthorizeResponse{} } +func (m *MsgAuthorizeResponse) String() string { return proto.CompactTextString(m) } +func (*MsgAuthorizeResponse) ProtoMessage() {} +func (*MsgAuthorizeResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d73284df019ff211, []int{11} +} +func (m *MsgAuthorizeResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgAuthorizeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgAuthorizeResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgAuthorizeResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgAuthorizeResponse.Merge(m, src) +} +func (m *MsgAuthorizeResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgAuthorizeResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgAuthorizeResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgAuthorizeResponse proto.InternalMessageInfo + +func (m *MsgAuthorizeResponse) GetSuccess() bool { + if m != nil { + return m.Success + } + return false +} + +func (m *MsgAuthorizeResponse) GetToken() *Token { + if m != nil { + return m.Token + } + return nil +} + // MsgRegisterService is the message type for the RegisterService RPC. type MsgRegisterService struct { // authority is the address of the governance account. - Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + Controller string `protobuf:"bytes,1,opt,name=controller,proto3" json:"controller,omitempty"` // origin is the origin of the request in wildcard form. OriginUri string `protobuf:"bytes,2,opt,name=origin_uri,json=originUri,proto3" json:"origin_uri,omitempty"` - // PermissionScope is the scope of the service. - Scopes []PermissionScope `protobuf:"varint,3,rep,packed,name=scopes,proto3,enum=did.v1.PermissionScope" json:"scopes,omitempty"` + // Permissions is the scope of the service. + Scopes *Permissions `protobuf:"bytes,3,opt,name=scopes,proto3" json:"scopes,omitempty"` + // Description is the description of the service + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + // service_endpoints is the endpoints of the service + ServiceEndpoints map[string]string `protobuf:"bytes,5,rep,name=service_endpoints,json=serviceEndpoints,proto3" json:"service_endpoints,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Metadata is optional additional information about the service + Metadata *Metadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` + // token is the macron token to authenticate the operation. + Token *Token `protobuf:"bytes,7,opt,name=token,proto3" json:"token,omitempty"` } func (m *MsgRegisterService) Reset() { *m = MsgRegisterService{} } func (m *MsgRegisterService) String() string { return proto.CompactTextString(m) } func (*MsgRegisterService) ProtoMessage() {} func (*MsgRegisterService) Descriptor() ([]byte, []int) { - return fileDescriptor_d73284df019ff211, []int{10} + return fileDescriptor_d73284df019ff211, []int{12} } func (m *MsgRegisterService) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -636,9 +813,9 @@ func (m *MsgRegisterService) XXX_DiscardUnknown() { var xxx_messageInfo_MsgRegisterService proto.InternalMessageInfo -func (m *MsgRegisterService) GetAuthority() string { +func (m *MsgRegisterService) GetController() string { if m != nil { - return m.Authority + return m.Controller } return "" } @@ -650,23 +827,52 @@ func (m *MsgRegisterService) GetOriginUri() string { return "" } -func (m *MsgRegisterService) GetScopes() []PermissionScope { +func (m *MsgRegisterService) GetScopes() *Permissions { if m != nil { return m.Scopes } return nil } +func (m *MsgRegisterService) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *MsgRegisterService) GetServiceEndpoints() map[string]string { + if m != nil { + return m.ServiceEndpoints + } + return nil +} + +func (m *MsgRegisterService) GetMetadata() *Metadata { + if m != nil { + return m.Metadata + } + return nil +} + +func (m *MsgRegisterService) GetToken() *Token { + if m != nil { + return m.Token + } + return nil +} + // MsgRegisterServiceResponse is the response type for the RegisterService RPC. type MsgRegisterServiceResponse struct { - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Did string `protobuf:"bytes,2,opt,name=did,proto3" json:"did,omitempty"` } func (m *MsgRegisterServiceResponse) Reset() { *m = MsgRegisterServiceResponse{} } func (m *MsgRegisterServiceResponse) String() string { return proto.CompactTextString(m) } func (*MsgRegisterServiceResponse) ProtoMessage() {} func (*MsgRegisterServiceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d73284df019ff211, []int{11} + return fileDescriptor_d73284df019ff211, []int{13} } func (m *MsgRegisterServiceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -702,11 +908,18 @@ func (m *MsgRegisterServiceResponse) GetSuccess() bool { return false } +func (m *MsgRegisterServiceResponse) GetDid() string { + if m != nil { + return m.Did + } + return "" +} + func init() { proto.RegisterType((*MsgUpdateParams)(nil), "did.v1.MsgUpdateParams") proto.RegisterType((*MsgUpdateParamsResponse)(nil), "did.v1.MsgUpdateParamsResponse") - proto.RegisterType((*MsgAuthenticate)(nil), "did.v1.MsgAuthenticate") - proto.RegisterType((*MsgAuthenticateResponse)(nil), "did.v1.MsgAuthenticateResponse") + proto.RegisterType((*MsgAllocateVault)(nil), "did.v1.MsgAllocateVault") + proto.RegisterType((*MsgAllocateVaultResponse)(nil), "did.v1.MsgAllocateVaultResponse") proto.RegisterType((*MsgProveWitness)(nil), "did.v1.MsgProveWitness") proto.RegisterType((*MsgProveWitnessResponse)(nil), "did.v1.MsgProveWitnessResponse") proto.RegisterType((*MsgSyncVault)(nil), "did.v1.MsgSyncVault") @@ -714,64 +927,78 @@ func init() { proto.RegisterType((*MsgRegisterController)(nil), "did.v1.MsgRegisterController") proto.RegisterType((*MsgRegisterControllerResponse)(nil), "did.v1.MsgRegisterControllerResponse") proto.RegisterMapType((map[string]string)(nil), "did.v1.MsgRegisterControllerResponse.AccountsEntry") + proto.RegisterType((*MsgAuthorize)(nil), "did.v1.MsgAuthorize") + proto.RegisterType((*MsgAuthorizeResponse)(nil), "did.v1.MsgAuthorizeResponse") proto.RegisterType((*MsgRegisterService)(nil), "did.v1.MsgRegisterService") + proto.RegisterMapType((map[string]string)(nil), "did.v1.MsgRegisterService.ServiceEndpointsEntry") proto.RegisterType((*MsgRegisterServiceResponse)(nil), "did.v1.MsgRegisterServiceResponse") } func init() { proto.RegisterFile("did/v1/tx.proto", fileDescriptor_d73284df019ff211) } var fileDescriptor_d73284df019ff211 = []byte{ - // 788 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x4f, 0x4f, 0xdb, 0x48, - 0x14, 0x8f, 0x09, 0x04, 0xf2, 0x08, 0x64, 0xe5, 0xcd, 0x6e, 0x82, 0x05, 0x01, 0x59, 0xbb, 0x52, - 0x84, 0x76, 0xe3, 0x25, 0x48, 0x08, 0xb1, 0x2b, 0xad, 0x60, 0xb5, 0x12, 0x97, 0x08, 0xd6, 0x11, - 0x5b, 0x89, 0x0b, 0x32, 0xf6, 0xd4, 0x19, 0x11, 0x7b, 0xac, 0x99, 0x71, 0x20, 0xb7, 0xaa, 0x3d, - 0xf4, 0xd8, 0x7e, 0x90, 0x1e, 0x38, 0xb4, 0xdf, 0x81, 0x23, 0xea, 0xa9, 0xea, 0xa1, 0xad, 0xe0, - 0xc0, 0xd7, 0xa8, 0x26, 0x9e, 0x38, 0x0e, 0x09, 0xa1, 0xcd, 0x6d, 0xde, 0xbf, 0xdf, 0xfb, 0xfd, - 0xe6, 0x8d, 0x5f, 0x02, 0x79, 0x07, 0x3b, 0x46, 0x7b, 0xc3, 0xe0, 0x17, 0xd5, 0x80, 0x12, 0x4e, - 0xd4, 0x8c, 0x83, 0x9d, 0x6a, 0x7b, 0x43, 0x2b, 0xda, 0x84, 0x79, 0x84, 0x19, 0x1e, 0x73, 0x45, - 0xdc, 0x63, 0x6e, 0x94, 0xa0, 0xfd, 0x28, 0x2b, 0x3c, 0xe2, 0xa0, 0x16, 0x93, 0xce, 0x82, 0x74, - 0xba, 0xc8, 0x47, 0x0c, 0xc7, 0x5e, 0x97, 0xb8, 0xa4, 0x7b, 0x34, 0xc4, 0x49, 0x7a, 0x97, 0x22, - 0xe4, 0x93, 0x28, 0x10, 0x19, 0x51, 0x48, 0x7f, 0xa9, 0x40, 0xbe, 0xce, 0xdc, 0xa3, 0xc0, 0xb1, - 0x38, 0x3a, 0xb4, 0xa8, 0xe5, 0x31, 0x75, 0x0b, 0xb2, 0x56, 0xc8, 0x9b, 0x84, 0x62, 0xde, 0x29, - 0x29, 0x6b, 0x4a, 0x25, 0xbb, 0x57, 0x7a, 0xff, 0xf6, 0xf7, 0x82, 0x2c, 0xdc, 0x75, 0x1c, 0x8a, - 0x18, 0x6b, 0x70, 0x8a, 0x7d, 0xd7, 0xec, 0xa7, 0xaa, 0xbf, 0x41, 0x26, 0xe8, 0x22, 0x94, 0xa6, - 0xd6, 0x94, 0xca, 0x7c, 0x6d, 0xb1, 0x1a, 0x29, 0xab, 0x46, 0xb8, 0x7b, 0xd3, 0x57, 0x9f, 0x56, - 0x53, 0xa6, 0xcc, 0xd9, 0x59, 0x7c, 0x7e, 0x77, 0xb9, 0xde, 0xaf, 0xd6, 0x97, 0xa0, 0x78, 0x8f, - 0x88, 0x89, 0x58, 0x40, 0x7c, 0x86, 0xf4, 0xcf, 0x11, 0xc9, 0xdd, 0x90, 0x37, 0x91, 0xcf, 0xb1, - 0x6d, 0x71, 0x34, 0x31, 0xc9, 0x6d, 0x00, 0x9b, 0xf8, 0x9c, 0x92, 0x56, 0x0b, 0xd1, 0x2e, 0xd1, - 0x71, 0x85, 0x89, 0x5c, 0xb5, 0x06, 0xb3, 0x56, 0x14, 0x2c, 0xa5, 0x1f, 0x29, 0xeb, 0x25, 0xaa, - 0x3f, 0x43, 0x86, 0x50, 0xec, 0x62, 0xbf, 0x34, 0x2d, 0x4a, 0x4c, 0x69, 0x3d, 0x20, 0x3e, 0x29, - 0x30, 0x16, 0xff, 0x2a, 0x12, 0x7f, 0x48, 0x49, 0x1b, 0x3d, 0xc1, 0xdc, 0x17, 0xb0, 0x93, 0x8a, - 0xd7, 0x60, 0x2e, 0xa0, 0x24, 0x40, 0x94, 0x77, 0x22, 0xe9, 0x66, 0x6c, 0xab, 0x25, 0x98, 0x3d, - 0x8f, 0xe0, 0xbb, 0xf2, 0x72, 0x66, 0xcf, 0x1c, 0x22, 0x7b, 0xd0, 0x25, 0x9b, 0x24, 0xd4, 0x23, - 0x2b, 0x40, 0x58, 0x68, 0xdb, 0x02, 0x44, 0xd0, 0x9a, 0x33, 0x7b, 0xe6, 0xb8, 0xd6, 0xfa, 0x0b, - 0x05, 0x72, 0x75, 0xe6, 0x36, 0x3a, 0xbe, 0xfd, 0xbf, 0x15, 0xb6, 0xf8, 0xbd, 0x21, 0x29, 0xdf, - 0x31, 0xa4, 0x1f, 0x20, 0x6d, 0x63, 0x47, 0x76, 0x10, 0x47, 0x31, 0x02, 0xcf, 0xb2, 0x29, 0xf1, - 0xa5, 0x2c, 0x69, 0xed, 0xe4, 0x85, 0xaa, 0x44, 0xa9, 0xfe, 0x07, 0x14, 0x92, 0x24, 0x1e, 0xd7, - 0xa4, 0xbf, 0x53, 0xe0, 0xa7, 0x3a, 0x73, 0x4d, 0xe4, 0x62, 0xc6, 0x11, 0xfd, 0xa7, 0x4f, 0x63, - 0xd2, 0x01, 0x0d, 0xd3, 0x5f, 0x86, 0xec, 0x19, 0xea, 0xb0, 0xa6, 0x45, 0x91, 0x18, 0x4c, 0xba, - 0x92, 0x33, 0xfb, 0x0e, 0xf5, 0x17, 0x58, 0x68, 0x23, 0x8a, 0x9f, 0x8a, 0x27, 0x83, 0x89, 0xcf, - 0x4a, 0xd3, 0xdd, 0x8c, 0x41, 0xe7, 0xd0, 0x00, 0xef, 0x14, 0x58, 0x19, 0xc9, 0x3b, 0xd6, 0x3c, - 0xf9, 0x00, 0x0e, 0x60, 0xce, 0xb2, 0x6d, 0x12, 0xfa, 0x5c, 0xac, 0x81, 0x74, 0x65, 0xbe, 0xb6, - 0xd9, 0x5b, 0x03, 0x63, 0x5b, 0x56, 0x77, 0x65, 0xd5, 0xbf, 0x3e, 0xa7, 0x1d, 0x33, 0x06, 0xd1, - 0xfe, 0x84, 0x85, 0x81, 0x90, 0xb8, 0xa3, 0x33, 0x24, 0x6f, 0xd5, 0x14, 0x47, 0xb5, 0x00, 0x33, - 0x6d, 0xab, 0x15, 0x22, 0x79, 0x6f, 0x91, 0xb1, 0x33, 0xb5, 0xad, 0xe8, 0x6f, 0x14, 0x50, 0x13, - 0x6d, 0x1b, 0x88, 0xb6, 0xb1, 0x3d, 0xf9, 0xf2, 0x58, 0x01, 0x88, 0x3e, 0xe0, 0x93, 0x90, 0x62, - 0xd9, 0x2d, 0x1b, 0x79, 0x8e, 0x28, 0x56, 0x0d, 0xc8, 0x30, 0x9b, 0x04, 0x72, 0x50, 0x8b, 0xb5, - 0x62, 0xbc, 0x00, 0x11, 0xf5, 0x30, 0x63, 0x98, 0xf8, 0x0d, 0x11, 0x37, 0x65, 0xda, 0xd0, 0x60, - 0xb6, 0x40, 0x1b, 0x66, 0xfb, 0xf8, 0x43, 0xac, 0x7d, 0x4c, 0x43, 0xba, 0xce, 0x5c, 0x75, 0x1f, - 0x72, 0x03, 0x9b, 0xbc, 0x98, 0xb8, 0xfa, 0x64, 0x40, 0x5b, 0x7d, 0x20, 0x10, 0xf7, 0xda, 0x87, - 0xdc, 0xc0, 0xba, 0x4d, 0x22, 0x25, 0x03, 0x03, 0x48, 0xa3, 0xf6, 0x97, 0x40, 0x1a, 0xd8, 0x5d, - 0x49, 0xa4, 0x64, 0x60, 0x00, 0x69, 0xe4, 0x72, 0xf9, 0x1b, 0xb2, 0xfd, 0x15, 0x51, 0x48, 0x64, - 0xc7, 0x5e, 0x6d, 0x79, 0x94, 0x37, 0x06, 0x38, 0x06, 0x75, 0xc4, 0xb7, 0xba, 0x32, 0xf6, 0x7d, - 0x6a, 0xbf, 0x7e, 0xd3, 0xf3, 0x55, 0xff, 0x83, 0xfc, 0xfd, 0x57, 0xa6, 0x8d, 0xa8, 0x94, 0x31, - 0x4d, 0x7f, 0x38, 0xd6, 0x83, 0xd4, 0x66, 0x9e, 0xdd, 0x5d, 0xae, 0x2b, 0x7b, 0x7f, 0x5d, 0xdd, - 0x94, 0x95, 0xeb, 0x9b, 0xb2, 0xf2, 0xe5, 0xa6, 0xac, 0xbc, 0xbe, 0x2d, 0xa7, 0xae, 0x6f, 0xcb, - 0xa9, 0x0f, 0xb7, 0xe5, 0xd4, 0xb1, 0xee, 0x62, 0xde, 0x0c, 0x4f, 0xab, 0x36, 0xf1, 0x0c, 0xe2, - 0x33, 0xe2, 0x53, 0xa3, 0x79, 0x6e, 0x75, 0x8c, 0x0b, 0x43, 0xfc, 0x39, 0xe0, 0x9d, 0x00, 0xb1, - 0xd3, 0x4c, 0xf7, 0x77, 0x7e, 0xf3, 0x6b, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb5, 0xd3, 0x5a, 0x47, - 0x77, 0x08, 0x00, 0x00, + // 974 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x4d, 0x6f, 0x1b, 0x45, + 0x18, 0xce, 0xda, 0xb1, 0x13, 0xbf, 0xf9, 0x32, 0x53, 0xb7, 0x71, 0x57, 0xc4, 0x0d, 0x8b, 0x90, + 0xa2, 0x52, 0xec, 0x36, 0x95, 0x50, 0x15, 0x90, 0x50, 0x12, 0x55, 0xaa, 0x84, 0xac, 0x96, 0x0d, + 0x01, 0xa9, 0x12, 0x8a, 0x36, 0xb3, 0xa3, 0xed, 0x10, 0x7b, 0x67, 0x35, 0x33, 0x36, 0x31, 0x07, + 0x04, 0xfc, 0x02, 0xae, 0xfc, 0x07, 0x0e, 0x3d, 0xf4, 0x27, 0x70, 0xe8, 0xb1, 0x42, 0x1c, 0x38, + 0x21, 0x94, 0x1c, 0x2a, 0xf1, 0x2b, 0xd0, 0xec, 0xcc, 0x7e, 0xd8, 0xb1, 0x13, 0xc7, 0x5c, 0x12, + 0xbf, 0x1f, 0xf3, 0xce, 0xf3, 0x3e, 0xcf, 0x3b, 0xb3, 0x03, 0x6b, 0x3e, 0xf5, 0x5b, 0xfd, 0x07, + 0x2d, 0x79, 0xda, 0x8c, 0x38, 0x93, 0x0c, 0x95, 0x7d, 0xea, 0x37, 0xfb, 0x0f, 0xec, 0x75, 0xcc, + 0x44, 0x97, 0x89, 0x56, 0x57, 0x04, 0x2a, 0xde, 0x15, 0x81, 0x4e, 0xb0, 0x6f, 0xeb, 0xc0, 0x51, + 0x6c, 0xb5, 0xb4, 0x61, 0x42, 0xb7, 0x4c, 0x31, 0xcc, 0x42, 0x21, 0xbd, 0x50, 0x26, 0xfe, 0x9a, + 0xf1, 0x07, 0x24, 0x24, 0x82, 0x26, 0xde, 0x1b, 0xc6, 0xdb, 0x65, 0x3e, 0xe9, 0xa4, 0xa9, 0x01, + 0x0b, 0x98, 0x2e, 0xad, 0x7e, 0x69, 0xaf, 0xf3, 0x9b, 0x05, 0x6b, 0x6d, 0x11, 0x1c, 0x46, 0xbe, + 0x27, 0xc9, 0x33, 0x8f, 0x7b, 0x5d, 0x81, 0x3e, 0x86, 0x8a, 0xd7, 0x93, 0x2f, 0x18, 0xa7, 0x72, + 0x50, 0xb7, 0x36, 0xad, 0xad, 0xca, 0x5e, 0xfd, 0x8f, 0x57, 0x1f, 0xd5, 0x0c, 0xa2, 0x5d, 0xdf, + 0xe7, 0x44, 0x88, 0x03, 0xc9, 0x69, 0x18, 0xb8, 0x59, 0x2a, 0xba, 0x07, 0xe5, 0x28, 0xae, 0x50, + 0x2f, 0x6c, 0x5a, 0x5b, 0x4b, 0xdb, 0xab, 0x4d, 0xdd, 0x71, 0x53, 0xd7, 0xdd, 0x9b, 0x7f, 0xfd, + 0xf7, 0x9d, 0x39, 0xd7, 0xe4, 0xa0, 0xf7, 0xa1, 0x24, 0xd9, 0x09, 0x09, 0xeb, 0xc5, 0x38, 0x79, + 0x25, 0x49, 0xfe, 0x52, 0x39, 0x5d, 0x1d, 0xdb, 0x59, 0xfd, 0xf9, 0xed, 0xcb, 0xbb, 0xd9, 0x16, + 0xce, 0x6d, 0x58, 0x1f, 0x41, 0xeb, 0x12, 0x11, 0xb1, 0x50, 0x10, 0xe7, 0x57, 0x0b, 0xaa, 0x6d, + 0x11, 0xec, 0x76, 0x3a, 0x0c, 0x7b, 0x92, 0x7c, 0xe5, 0xf5, 0x3a, 0x72, 0xe6, 0x56, 0xea, 0xb0, + 0x20, 0x7a, 0xc7, 0xdf, 0x12, 0x2c, 0xe3, 0x5e, 0x2a, 0x6e, 0x62, 0xce, 0x06, 0xfb, 0x29, 0xd4, + 0x47, 0xa1, 0x25, 0xb8, 0x51, 0x15, 0x8a, 0x98, 0xfa, 0x1a, 0x9c, 0xab, 0x7e, 0xa2, 0xf7, 0x60, + 0x99, 0x9c, 0x46, 0x94, 0x0f, 0x8e, 0x8e, 0x3b, 0x0c, 0x9f, 0xc4, 0x08, 0x8a, 0xee, 0x92, 0xf6, + 0xed, 0x29, 0x97, 0xf3, 0x4a, 0xcb, 0xf6, 0x8c, 0xb3, 0x3e, 0xf9, 0x9a, 0xca, 0x90, 0x88, 0xd9, + 0x65, 0xb3, 0x61, 0x31, 0xe2, 0x2c, 0x22, 0x5c, 0x0e, 0x4c, 0xb3, 0xa9, 0xad, 0x78, 0xf8, 0x4e, + 0x97, 0x8f, 0xfb, 0x5d, 0x76, 0x13, 0x33, 0xe3, 0x61, 0xfe, 0x5a, 0x3c, 0xac, 0x8f, 0xa0, 0x4e, + 0x69, 0x88, 0x19, 0xc7, 0x58, 0xed, 0xa4, 0xb0, 0x2f, 0xba, 0x89, 0x79, 0x19, 0x3e, 0xe7, 0x07, + 0x58, 0x6e, 0x8b, 0xe0, 0x60, 0x10, 0x62, 0xad, 0xf7, 0x23, 0x00, 0xcc, 0x42, 0xc9, 0x59, 0xa7, + 0x43, 0xf8, 0x95, 0x24, 0xe4, 0x72, 0xa7, 0xd3, 0x75, 0x4d, 0xf5, 0x93, 0x5b, 0xe5, 0xdc, 0x87, + 0x5a, 0x7e, 0xff, 0xab, 0xbb, 0x71, 0xfe, 0xb5, 0xe0, 0x66, 0x5b, 0x04, 0x2e, 0x09, 0xa8, 0x90, + 0x84, 0xef, 0x67, 0x08, 0x66, 0xd5, 0xcf, 0x0c, 0x50, 0x21, 0x1b, 0xa0, 0x5b, 0x50, 0x66, 0x9c, + 0x06, 0x54, 0x37, 0x53, 0x71, 0x8d, 0x85, 0x76, 0x60, 0x55, 0x2d, 0x23, 0xa1, 0xa4, 0xd8, 0x93, + 0x94, 0x29, 0xf1, 0x8a, 0x5b, 0x4b, 0xdb, 0x28, 0x69, 0x76, 0x9f, 0x13, 0x5f, 0x45, 0xbd, 0x8e, + 0x3b, 0x92, 0x99, 0xf1, 0x53, 0xba, 0x86, 0xde, 0x3f, 0x15, 0x60, 0x63, 0x6c, 0xb3, 0x53, 0xc8, + 0x3e, 0x2c, 0x65, 0xe1, 0x1a, 0x52, 0x3e, 0x85, 0x45, 0x0f, 0x63, 0xd6, 0x0b, 0xa5, 0x9a, 0x5a, + 0xd5, 0xe0, 0xc3, 0x04, 0xed, 0xa5, 0x60, 0x9a, 0xbb, 0x66, 0xd5, 0xe3, 0x50, 0xf2, 0x81, 0x9b, + 0x16, 0xb1, 0x3f, 0x81, 0x95, 0xa1, 0x90, 0xa2, 0xfc, 0x84, 0x0c, 0x92, 0x33, 0x7b, 0x42, 0x06, + 0xa8, 0x06, 0xa5, 0xbe, 0xd7, 0xe9, 0x11, 0x23, 0x83, 0x36, 0x76, 0x0a, 0x8f, 0x2c, 0xc5, 0x81, + 0x9a, 0xd1, 0x5d, 0x4d, 0xca, 0xf7, 0x64, 0x66, 0x9d, 0x67, 0x27, 0x64, 0x1b, 0x16, 0x3c, 0x1d, + 0xd4, 0x03, 0x71, 0xc9, 0xb2, 0x24, 0x31, 0x37, 0x43, 0xf3, 0x43, 0x33, 0x34, 0xd3, 0x1c, 0x1c, + 0xc6, 0xc7, 0x24, 0xa5, 0x60, 0x0a, 0xf5, 0xd3, 0x6d, 0x0a, 0x93, 0xb7, 0x71, 0x7e, 0x2f, 0x02, + 0xca, 0x29, 0x7a, 0x40, 0x78, 0x9f, 0x62, 0xf2, 0x3f, 0x2e, 0x81, 0x0d, 0x00, 0xdd, 0xe6, 0x51, + 0x8f, 0x53, 0x23, 0x65, 0x45, 0x7b, 0x0e, 0x39, 0x45, 0x1f, 0x42, 0x59, 0x60, 0x16, 0x11, 0x61, + 0x2e, 0x89, 0x1b, 0xe9, 0x07, 0x8e, 0xf0, 0x2e, 0x15, 0x82, 0xb2, 0x50, 0xb8, 0x26, 0x05, 0x6d, + 0xc2, 0x92, 0x4f, 0x04, 0xe6, 0x34, 0x32, 0x27, 0x4d, 0x15, 0xcb, 0xbb, 0xd0, 0x37, 0xf0, 0x8e, + 0xd0, 0x90, 0x8f, 0x48, 0xe8, 0x47, 0x8c, 0xaa, 0x81, 0x2d, 0xc5, 0x03, 0x7b, 0x7f, 0xcc, 0xc0, + 0x9a, 0xf6, 0x9a, 0xe6, 0xff, 0xe3, 0x64, 0x89, 0x9e, 0xd6, 0xaa, 0x18, 0x71, 0xa3, 0x7b, 0xb0, + 0xd8, 0x25, 0xd2, 0xf3, 0x3d, 0xe9, 0xd5, 0xcb, 0x31, 0xde, 0x6a, 0x5a, 0xd5, 0xf8, 0xdd, 0x34, + 0x23, 0x23, 0x7c, 0x61, 0x32, 0xe1, 0xf6, 0x3e, 0xdc, 0x1c, 0xbb, 0xfb, 0x75, 0x0e, 0xc4, 0xc5, + 0x4b, 0xf4, 0x09, 0xd8, 0x17, 0xdb, 0x9c, 0x62, 0x46, 0xaa, 0x50, 0xf4, 0xb3, 0x8b, 0xcf, 0xa7, + 0xfe, 0xf6, 0x9f, 0x45, 0x28, 0xb6, 0x45, 0x80, 0x9e, 0xc0, 0xf2, 0xd0, 0x8b, 0x66, 0x3d, 0x47, + 0x67, 0x3e, 0x60, 0xdf, 0x99, 0x10, 0x48, 0x77, 0xff, 0x0c, 0x2a, 0xd9, 0xc9, 0xad, 0xe5, 0xb2, + 0x53, 0xaf, 0xfd, 0xee, 0x38, 0x6f, 0x5a, 0xe0, 0x73, 0x58, 0x19, 0x7e, 0x92, 0xd4, 0xf3, 0xe9, + 0xf9, 0x88, 0xbd, 0x39, 0x29, 0x92, 0x47, 0x93, 0x7d, 0xeb, 0xf2, 0x68, 0x52, 0xef, 0x10, 0x9a, + 0x8b, 0xdf, 0xa5, 0xe7, 0x80, 0xc6, 0x7c, 0x79, 0x36, 0x2e, 0xbd, 0x1e, 0xed, 0x0f, 0xa6, 0xba, + 0x3d, 0xd1, 0x17, 0xb0, 0x36, 0x7a, 0x12, 0xed, 0xc9, 0x63, 0x6c, 0x3b, 0x93, 0x63, 0x49, 0x49, + 0xbb, 0xf4, 0xe3, 0xdb, 0x97, 0x77, 0xad, 0xbd, 0x4f, 0x5f, 0x9f, 0x35, 0xac, 0x37, 0x67, 0x0d, + 0xeb, 0x9f, 0xb3, 0x86, 0xf5, 0xcb, 0x79, 0x63, 0xee, 0xcd, 0x79, 0x63, 0xee, 0xaf, 0xf3, 0xc6, + 0xdc, 0x73, 0x27, 0xa0, 0xf2, 0x45, 0xef, 0xb8, 0x89, 0x59, 0xb7, 0xc5, 0x42, 0xc1, 0x42, 0xde, + 0x8a, 0xff, 0x9c, 0xb6, 0xd4, 0x13, 0x58, 0x0e, 0x22, 0x22, 0x8e, 0xcb, 0xf1, 0x4b, 0xf7, 0xe1, + 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xdb, 0xbe, 0xf6, 0x61, 0x91, 0x0b, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -790,10 +1017,11 @@ type MsgClient interface { // // Since: cosmos-sdk 0.47 UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) - // Authenticate asserts the given controller is the owner of the given address. - Authenticate(ctx context.Context, in *MsgAuthenticate, opts ...grpc.CallOption) (*MsgAuthenticateResponse, error) - // ProveWitness is an operation to prove the controller has a valid property using ZK Accumulators. - ProveWitness(ctx context.Context, in *MsgProveWitness, opts ...grpc.CallOption) (*MsgProveWitnessResponse, error) + // Authorize asserts the given controller is the owner of the given address. + Authorize(ctx context.Context, in *MsgAuthorize, opts ...grpc.CallOption) (*MsgAuthorizeResponse, error) + // AllocateVault assembles a sqlite3 database in a local directory and returns the CID of the database. + // this operation is called by services initiating a controller registration. + AllocateVault(ctx context.Context, in *MsgAllocateVault, opts ...grpc.CallOption) (*MsgAllocateVaultResponse, error) // SyncVault synchronizes the controller with the Vault Motr DWN WASM Wallet. SyncVault(ctx context.Context, in *MsgSyncVault, opts ...grpc.CallOption) (*MsgSyncVaultResponse, error) // RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias. @@ -819,18 +1047,18 @@ func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts return out, nil } -func (c *msgClient) Authenticate(ctx context.Context, in *MsgAuthenticate, opts ...grpc.CallOption) (*MsgAuthenticateResponse, error) { - out := new(MsgAuthenticateResponse) - err := c.cc.Invoke(ctx, "/did.v1.Msg/Authenticate", in, out, opts...) +func (c *msgClient) Authorize(ctx context.Context, in *MsgAuthorize, opts ...grpc.CallOption) (*MsgAuthorizeResponse, error) { + out := new(MsgAuthorizeResponse) + err := c.cc.Invoke(ctx, "/did.v1.Msg/Authorize", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *msgClient) ProveWitness(ctx context.Context, in *MsgProveWitness, opts ...grpc.CallOption) (*MsgProveWitnessResponse, error) { - out := new(MsgProveWitnessResponse) - err := c.cc.Invoke(ctx, "/did.v1.Msg/ProveWitness", in, out, opts...) +func (c *msgClient) AllocateVault(ctx context.Context, in *MsgAllocateVault, opts ...grpc.CallOption) (*MsgAllocateVaultResponse, error) { + out := new(MsgAllocateVaultResponse) + err := c.cc.Invoke(ctx, "/did.v1.Msg/AllocateVault", in, out, opts...) if err != nil { return nil, err } @@ -870,10 +1098,11 @@ type MsgServer interface { // // Since: cosmos-sdk 0.47 UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) - // Authenticate asserts the given controller is the owner of the given address. - Authenticate(context.Context, *MsgAuthenticate) (*MsgAuthenticateResponse, error) - // ProveWitness is an operation to prove the controller has a valid property using ZK Accumulators. - ProveWitness(context.Context, *MsgProveWitness) (*MsgProveWitnessResponse, error) + // Authorize asserts the given controller is the owner of the given address. + Authorize(context.Context, *MsgAuthorize) (*MsgAuthorizeResponse, error) + // AllocateVault assembles a sqlite3 database in a local directory and returns the CID of the database. + // this operation is called by services initiating a controller registration. + AllocateVault(context.Context, *MsgAllocateVault) (*MsgAllocateVaultResponse, error) // SyncVault synchronizes the controller with the Vault Motr DWN WASM Wallet. SyncVault(context.Context, *MsgSyncVault) (*MsgSyncVaultResponse, error) // RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias. @@ -889,11 +1118,11 @@ type UnimplementedMsgServer struct { func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") } -func (*UnimplementedMsgServer) Authenticate(ctx context.Context, req *MsgAuthenticate) (*MsgAuthenticateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Authenticate not implemented") +func (*UnimplementedMsgServer) Authorize(ctx context.Context, req *MsgAuthorize) (*MsgAuthorizeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Authorize not implemented") } -func (*UnimplementedMsgServer) ProveWitness(ctx context.Context, req *MsgProveWitness) (*MsgProveWitnessResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ProveWitness not implemented") +func (*UnimplementedMsgServer) AllocateVault(ctx context.Context, req *MsgAllocateVault) (*MsgAllocateVaultResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AllocateVault not implemented") } func (*UnimplementedMsgServer) SyncVault(ctx context.Context, req *MsgSyncVault) (*MsgSyncVaultResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SyncVault not implemented") @@ -927,38 +1156,38 @@ func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } -func _Msg_Authenticate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgAuthenticate) +func _Msg_Authorize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgAuthorize) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).Authenticate(ctx, in) + return srv.(MsgServer).Authorize(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/did.v1.Msg/Authenticate", + FullMethod: "/did.v1.Msg/Authorize", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).Authenticate(ctx, req.(*MsgAuthenticate)) + return srv.(MsgServer).Authorize(ctx, req.(*MsgAuthorize)) } return interceptor(ctx, in, info, handler) } -func _Msg_ProveWitness_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgProveWitness) +func _Msg_AllocateVault_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgAllocateVault) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).ProveWitness(ctx, in) + return srv.(MsgServer).AllocateVault(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/did.v1.Msg/ProveWitness", + FullMethod: "/did.v1.Msg/AllocateVault", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).ProveWitness(ctx, req.(*MsgProveWitness)) + return srv.(MsgServer).AllocateVault(ctx, req.(*MsgAllocateVault)) } return interceptor(ctx, in, info, handler) } @@ -1026,12 +1255,12 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ Handler: _Msg_UpdateParams_Handler, }, { - MethodName: "Authenticate", - Handler: _Msg_Authenticate_Handler, + MethodName: "Authorize", + Handler: _Msg_Authorize_Handler, }, { - MethodName: "ProveWitness", - Handler: _Msg_ProveWitness_Handler, + MethodName: "AllocateVault", + Handler: _Msg_AllocateVault_Handler, }, { MethodName: "SyncVault", @@ -1070,6 +1299,18 @@ func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Token != nil { + { + size, err := m.Token.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } { size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -1113,7 +1354,7 @@ func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *MsgAuthenticate) Marshal() (dAtA []byte, err error) { +func (m *MsgAllocateVault) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1123,34 +1364,32 @@ func (m *MsgAuthenticate) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgAuthenticate) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgAllocateVault) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgAuthenticate) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgAllocateVault) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Origin) > 0 { - i -= len(m.Origin) - copy(dAtA[i:], m.Origin) - i = encodeVarintTx(dAtA, i, uint64(len(m.Origin))) - i-- - dAtA[i] = 0x22 - } - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintTx(dAtA, i, uint64(len(m.Address))) + if m.Token != nil { + { + size, err := m.Token.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } i-- dAtA[i] = 0x1a } - if len(m.Controller) > 0 { - i -= len(m.Controller) - copy(dAtA[i:], m.Controller) - i = encodeVarintTx(dAtA, i, uint64(len(m.Controller))) + if len(m.Subject) > 0 { + i -= len(m.Subject) + copy(dAtA[i:], m.Subject) + i = encodeVarintTx(dAtA, i, uint64(len(m.Subject))) i-- dAtA[i] = 0x12 } @@ -1164,7 +1403,7 @@ func (m *MsgAuthenticate) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *MsgAuthenticateResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgAllocateVaultResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1174,16 +1413,28 @@ func (m *MsgAuthenticateResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgAuthenticateResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgAllocateVaultResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgAuthenticateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgAllocateVaultResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + if m.ExpiryBlock != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.ExpiryBlock)) + i-- + dAtA[i] = 0x10 + } + if len(m.Cid) > 0 { + i -= len(m.Cid) + copy(dAtA[i:], m.Cid) + i = encodeVarintTx(dAtA, i, uint64(len(m.Cid))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } @@ -1207,6 +1458,18 @@ func (m *MsgProveWitness) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Token != nil { + { + size, err := m.Token.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } if len(m.Witness) > 0 { i -= len(m.Witness) copy(dAtA[i:], m.Witness) @@ -1291,20 +1554,18 @@ func (m *MsgSyncVault) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.Macron) > 0 { - i -= len(m.Macron) - copy(dAtA[i:], m.Macron) - i = encodeVarintTx(dAtA, i, uint64(len(m.Macron))) + if m.Token != nil { + { + size, err := m.Token.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } i-- dAtA[i] = 0x1a } - if len(m.Cid) > 0 { - i -= len(m.Cid) - copy(dAtA[i:], m.Cid) - i = encodeVarintTx(dAtA, i, uint64(len(m.Cid))) - i-- - dAtA[i] = 0x12 - } if len(m.Controller) > 0 { i -= len(m.Controller) copy(dAtA[i:], m.Controller) @@ -1368,23 +1629,38 @@ func (m *MsgRegisterController) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.Verifications) > 0 { - for iNdEx := len(m.Verifications) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Verifications[iNdEx]) - copy(dAtA[i:], m.Verifications[iNdEx]) - i = encodeVarintTx(dAtA, i, uint64(len(m.Verifications[iNdEx]))) + if m.Token != nil { + { + size, err := m.Token.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if len(m.Authentication) > 0 { + for iNdEx := len(m.Authentication) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Authentication[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } i-- dAtA[i] = 0x22 } } - if len(m.Keyshares) > 0 { - for iNdEx := len(m.Keyshares) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Keyshares[iNdEx]) - copy(dAtA[i:], m.Keyshares[iNdEx]) - i = encodeVarintTx(dAtA, i, uint64(len(m.Keyshares[iNdEx]))) - i-- - dAtA[i] = 0x1a - } + if len(m.Origin) > 0 { + i -= len(m.Origin) + copy(dAtA[i:], m.Origin) + i = encodeVarintTx(dAtA, i, uint64(len(m.Origin))) + i-- + dAtA[i] = 0x1a } if len(m.Cid) > 0 { i -= len(m.Cid) @@ -1439,7 +1715,7 @@ func (m *MsgRegisterControllerResponse) MarshalToSizedBuffer(dAtA []byte) (int, dAtA[i] = 0xa i = encodeVarintTx(dAtA, i, uint64(baseI-i)) i-- - dAtA[i] = 0x12 + dAtA[i] = 0x1a } } if len(m.Controller) > 0 { @@ -1447,11 +1723,129 @@ func (m *MsgRegisterControllerResponse) MarshalToSizedBuffer(dAtA []byte) (int, copy(dAtA[i:], m.Controller) i = encodeVarintTx(dAtA, i, uint64(len(m.Controller))) i-- + dAtA[i] = 0x12 + } + if m.Success { + i-- + if m.Success { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *MsgAuthorize) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgAuthorize) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgAuthorize) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Token != nil { + { + size, err := m.Token.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if len(m.Origin) > 0 { + i -= len(m.Origin) + copy(dAtA[i:], m.Origin) + i = encodeVarintTx(dAtA, i, uint64(len(m.Origin))) + i-- + dAtA[i] = 0x22 + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintTx(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0x1a + } + if len(m.Controller) > 0 { + i -= len(m.Controller) + copy(dAtA[i:], m.Controller) + i = encodeVarintTx(dAtA, i, uint64(len(m.Controller))) + i-- + dAtA[i] = 0x12 + } + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } +func (m *MsgAuthorizeResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgAuthorizeResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgAuthorizeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Token != nil { + { + size, err := m.Token.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.Success { + i-- + if m.Success { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *MsgRegisterService) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1472,21 +1866,65 @@ func (m *MsgRegisterService) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.Scopes) > 0 { - dAtA3 := make([]byte, len(m.Scopes)*10) - var j2 int - for _, num := range m.Scopes { - for num >= 1<<7 { - dAtA3[j2] = uint8(uint64(num)&0x7f | 0x80) - num >>= 7 - j2++ + if m.Token != nil { + { + size, err := m.Token.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } - dAtA3[j2] = uint8(num) - j2++ + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + if m.Metadata != nil { + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if len(m.ServiceEndpoints) > 0 { + for k := range m.ServiceEndpoints { + v := m.ServiceEndpoints[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintTx(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarintTx(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarintTx(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x2a + } + } + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintTx(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x22 + } + if m.Scopes != nil { + { + size, err := m.Scopes.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) } - i -= j2 - copy(dAtA[i:], dAtA3[:j2]) - i = encodeVarintTx(dAtA, i, uint64(j2)) i-- dAtA[i] = 0x1a } @@ -1497,10 +1935,10 @@ func (m *MsgRegisterService) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - if len(m.Authority) > 0 { - i -= len(m.Authority) - copy(dAtA[i:], m.Authority) - i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + if len(m.Controller) > 0 { + i -= len(m.Controller) + copy(dAtA[i:], m.Controller) + i = encodeVarintTx(dAtA, i, uint64(len(m.Controller))) i-- dAtA[i] = 0xa } @@ -1527,6 +1965,13 @@ func (m *MsgRegisterServiceResponse) MarshalToSizedBuffer(dAtA []byte) (int, err _ = i var l int _ = l + if len(m.Did) > 0 { + i -= len(m.Did) + copy(dAtA[i:], m.Did) + i = encodeVarintTx(dAtA, i, uint64(len(m.Did))) + i-- + dAtA[i] = 0x12 + } if m.Success { i-- if m.Success { @@ -1563,6 +2008,10 @@ func (m *MsgUpdateParams) Size() (n int) { } l = m.Params.Size() n += 1 + l + sovTx(uint64(l)) + if m.Token != nil { + l = m.Token.Size() + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -1575,7 +2024,7 @@ func (m *MsgUpdateParamsResponse) Size() (n int) { return n } -func (m *MsgAuthenticate) Size() (n int) { +func (m *MsgAllocateVault) Size() (n int) { if m == nil { return 0 } @@ -1585,27 +2034,30 @@ func (m *MsgAuthenticate) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.Controller) + l = len(m.Subject) if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.Address) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Origin) - if l > 0 { + if m.Token != nil { + l = m.Token.Size() n += 1 + l + sovTx(uint64(l)) } return n } -func (m *MsgAuthenticateResponse) Size() (n int) { +func (m *MsgAllocateVaultResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l + l = len(m.Cid) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.ExpiryBlock != 0 { + n += 1 + sovTx(uint64(m.ExpiryBlock)) + } return n } @@ -1627,6 +2079,10 @@ func (m *MsgProveWitness) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } + if m.Token != nil { + l = m.Token.Size() + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -1656,12 +2112,8 @@ func (m *MsgSyncVault) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.Cid) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Macron) - if l > 0 { + if m.Token != nil { + l = m.Token.Size() n += 1 + l + sovTx(uint64(l)) } return n @@ -1693,17 +2145,19 @@ func (m *MsgRegisterController) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - if len(m.Keyshares) > 0 { - for _, b := range m.Keyshares { - l = len(b) + l = len(m.Origin) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.Authentication) > 0 { + for _, e := range m.Authentication { + l = e.Size() n += 1 + l + sovTx(uint64(l)) } } - if len(m.Verifications) > 0 { - for _, b := range m.Verifications { - l = len(b) - n += 1 + l + sovTx(uint64(l)) - } + if m.Token != nil { + l = m.Token.Size() + n += 1 + l + sovTx(uint64(l)) } return n } @@ -1714,6 +2168,9 @@ func (m *MsgRegisterControllerResponse) Size() (n int) { } var l int _ = l + if m.Success { + n += 2 + } l = len(m.Controller) if l > 0 { n += 1 + l + sovTx(uint64(l)) @@ -1729,7 +2186,7 @@ func (m *MsgRegisterControllerResponse) Size() (n int) { return n } -func (m *MsgRegisterService) Size() (n int) { +func (m *MsgAuthorize) Size() (n int) { if m == nil { return 0 } @@ -1739,16 +2196,78 @@ func (m *MsgRegisterService) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } + l = len(m.Controller) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Address) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Origin) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.Token != nil { + l = m.Token.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgAuthorizeResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Success { + n += 2 + } + if m.Token != nil { + l = m.Token.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgRegisterService) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Controller) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } l = len(m.OriginUri) if l > 0 { n += 1 + l + sovTx(uint64(l)) } - if len(m.Scopes) > 0 { - l = 0 - for _, e := range m.Scopes { - l += sovTx(uint64(e)) + if m.Scopes != nil { + l = m.Scopes.Size() + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.ServiceEndpoints) > 0 { + for k, v := range m.ServiceEndpoints { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovTx(uint64(len(k))) + 1 + len(v) + sovTx(uint64(len(v))) + n += mapEntrySize + 1 + sovTx(uint64(mapEntrySize)) } - n += 1 + sovTx(uint64(l)) + l + } + if m.Metadata != nil { + l = m.Metadata.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.Token != nil { + l = m.Token.Size() + n += 1 + l + sovTx(uint64(l)) } return n } @@ -1762,6 +2281,10 @@ func (m *MsgRegisterServiceResponse) Size() (n int) { if m.Success { n += 2 } + l = len(m.Did) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -1865,6 +2388,42 @@ func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Token == nil { + m.Token = &Token{} + } + if err := m.Token.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -1936,7 +2495,7 @@ func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgAuthenticate) Unmarshal(dAtA []byte) error { +func (m *MsgAllocateVault) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1959,10 +2518,10 @@ func (m *MsgAuthenticate) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgAuthenticate: wiretype end group for non-group") + return fmt.Errorf("proto: MsgAllocateVault: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgAuthenticate: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgAllocateVault: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1999,7 +2558,7 @@ func (m *MsgAuthenticate) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2027,13 +2586,13 @@ func (m *MsgAuthenticate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Controller = string(dAtA[iNdEx:postIndex]) + m.Subject = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -2043,55 +2602,27 @@ func (m *MsgAuthenticate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) + if m.Token == nil { + m.Token = &Token{} } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } + if err := m.Token.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Origin = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -2114,7 +2645,7 @@ func (m *MsgAuthenticate) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgAuthenticateResponse) Unmarshal(dAtA []byte) error { +func (m *MsgAllocateVaultResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2137,12 +2668,63 @@ func (m *MsgAuthenticateResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgAuthenticateResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgAllocateVaultResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgAuthenticateResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgAllocateVaultResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cid", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Cid = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpiryBlock", wireType) + } + m.ExpiryBlock = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ExpiryBlock |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -2291,6 +2873,42 @@ func (m *MsgProveWitness) Unmarshal(dAtA []byte) error { m.Witness = []byte{} } iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Token == nil { + m.Token = &Token{} + } + if err := m.Token.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -2475,43 +3093,11 @@ func (m *MsgSyncVault) Unmarshal(dAtA []byte) error { } m.Controller = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Cid", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Cid = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Macron", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) } - var byteLen int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -2521,24 +3107,26 @@ func (m *MsgSyncVault) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + if msglen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + byteLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.Macron = append(m.Macron[:0], dAtA[iNdEx:postIndex]...) - if m.Macron == nil { - m.Macron = []byte{} + if m.Token == nil { + m.Token = &Token{} + } + if err := m.Token.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } iNdEx = postIndex default: @@ -2727,9 +3315,9 @@ func (m *MsgRegisterController) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Keyshares", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) } - var byteLen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -2739,29 +3327,29 @@ func (m *MsgRegisterController) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + byteLen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.Keyshares = append(m.Keyshares, make([]byte, postIndex-iNdEx)) - copy(m.Keyshares[len(m.Keyshares)-1], dAtA[iNdEx:postIndex]) + m.Origin = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Verifications", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Authentication", wireType) } - var byteLen int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -2771,23 +3359,61 @@ func (m *MsgRegisterController) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + if msglen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + byteLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.Verifications = append(m.Verifications, make([]byte, postIndex-iNdEx)) - copy(m.Verifications[len(m.Verifications)-1], dAtA[iNdEx:postIndex]) + m.Authentication = append(m.Authentication, &Credential{}) + if err := m.Authentication[len(m.Authentication)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Token == nil { + m.Token = &Token{} + } + if err := m.Token.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -2840,6 +3466,26 @@ func (m *MsgRegisterControllerResponse) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Success = bool(v != 0) + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) } @@ -2871,7 +3517,7 @@ func (m *MsgRegisterControllerResponse) Unmarshal(dAtA []byte) error { } m.Controller = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Accounts", wireType) } @@ -3019,7 +3665,7 @@ func (m *MsgRegisterControllerResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgRegisterService) Unmarshal(dAtA []byte) error { +func (m *MsgAuthorize) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3042,10 +3688,10 @@ func (m *MsgRegisterService) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgRegisterService: wiretype end group for non-group") + return fmt.Errorf("proto: MsgAuthorize: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRegisterService: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgAuthorize: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -3080,6 +3726,326 @@ func (m *MsgRegisterService) Unmarshal(dAtA []byte) error { } m.Authority = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Controller = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Origin = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Token == nil { + m.Token = &Token{} + } + if err := m.Token.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgAuthorizeResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgAuthorizeResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgAuthorizeResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Success = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Token == nil { + m.Token = &Token{} + } + if err := m.Token.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgRegisterService) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgRegisterService: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRegisterService: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Controller = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field OriginUri", wireType) @@ -3113,55 +4079,127 @@ func (m *MsgRegisterService) Unmarshal(dAtA []byte) error { m.OriginUri = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: - if wireType == 0 { - var v PermissionScope - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= PermissionScope(b&0x7F) << shift - if b < 0x80 { - break - } + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Scopes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx } - m.Scopes = append(m.Scopes, v) - } else if wireType == 2 { - var packedLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - packedLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if packedLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + packedLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - var elementCount int - if elementCount != 0 && len(m.Scopes) == 0 { - m.Scopes = make([]PermissionScope, 0, elementCount) + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break } - for iNdEx < postIndex { - var v PermissionScope + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Scopes == nil { + m.Scopes = &Permissions{} + } + if err := m.Scopes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServiceEndpoints", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ServiceEndpoints == nil { + m.ServiceEndpoints = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -3171,16 +4209,142 @@ func (m *MsgRegisterService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= PermissionScope(b&0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } } - m.Scopes = append(m.Scopes, v) + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthTx + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthTx + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthTx + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthTx + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy } - } else { - return fmt.Errorf("proto: wrong wireType = %d for field Scopes", wireType) } + m.ServiceEndpoints[mapkey] = mapvalue + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metadata == nil { + m.Metadata = &Metadata{} + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Token == nil { + m.Token = &Token{} + } + if err := m.Token.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -3251,6 +4415,38 @@ func (m *MsgRegisterServiceResponse) Unmarshal(dAtA []byte) error { } } m.Success = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Did = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) diff --git a/x/did/types/types.go b/x/did/types/types.go deleted file mode 100644 index 777f908ff..000000000 --- a/x/did/types/types.go +++ /dev/null @@ -1,15 +0,0 @@ -package types - -func (a *AssetInfo) Equal(b *AssetInfo) bool { - if a == nil && b == nil { - return true - } - return false -} - -func (c *ChainInfo) Equal(b *ChainInfo) bool { - if c == nil && b == nil { - return true - } - return false -} diff --git a/x/did/types/types.pb.go b/x/did/types/types.pb.go deleted file mode 100644 index 75ec7c838..000000000 --- a/x/did/types/types.pb.go +++ /dev/null @@ -1,2274 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: did/v1/types.proto - -package types - -import ( - fmt "fmt" - _ "github.com/cosmos/cosmos-proto" - _ "github.com/cosmos/cosmos-sdk/types/msgservice" - _ "github.com/cosmos/gogoproto/gogoproto" - proto "github.com/cosmos/gogoproto/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -// Credential defines a WebAuthn credential -type Credential struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - CredentialType string `protobuf:"bytes,2,opt,name=credential_type,json=credentialType,proto3" json:"credential_type,omitempty"` - CredentialId []byte `protobuf:"bytes,3,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` - Transport []string `protobuf:"bytes,4,rep,name=transport,proto3" json:"transport,omitempty"` - AttestationType string `protobuf:"bytes,5,opt,name=attestation_type,json=attestationType,proto3" json:"attestation_type,omitempty"` - DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Controller string `protobuf:"bytes,7,opt,name=controller,proto3" json:"controller,omitempty"` -} - -func (m *Credential) Reset() { *m = Credential{} } -func (m *Credential) String() string { return proto.CompactTextString(m) } -func (*Credential) ProtoMessage() {} -func (*Credential) Descriptor() ([]byte, []int) { - return fileDescriptor_e3176cd2dbe76ac1, []int{0} -} -func (m *Credential) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Credential) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Credential.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Credential) XXX_Merge(src proto.Message) { - xxx_messageInfo_Credential.Merge(m, src) -} -func (m *Credential) XXX_Size() int { - return m.Size() -} -func (m *Credential) XXX_DiscardUnknown() { - xxx_messageInfo_Credential.DiscardUnknown(m) -} - -var xxx_messageInfo_Credential proto.InternalMessageInfo - -func (m *Credential) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Credential) GetCredentialType() string { - if m != nil { - return m.CredentialType - } - return "" -} - -func (m *Credential) GetCredentialId() []byte { - if m != nil { - return m.CredentialId - } - return nil -} - -func (m *Credential) GetTransport() []string { - if m != nil { - return m.Transport - } - return nil -} - -func (m *Credential) GetAttestationType() string { - if m != nil { - return m.AttestationType - } - return "" -} - -func (m *Credential) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *Credential) GetController() string { - if m != nil { - return m.Controller - } - return "" -} - -// Document defines a DID document -type Document struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - VerificationMethods []*VerificationMethod `protobuf:"bytes,2,rep,name=verification_methods,json=verificationMethods,proto3" json:"verification_methods,omitempty"` - Authentication []string `protobuf:"bytes,4,rep,name=authentication,proto3" json:"authentication,omitempty"` - AssertionMethod []string `protobuf:"bytes,5,rep,name=assertion_method,json=assertionMethod,proto3" json:"assertion_method,omitempty"` - CapabilityDelegation []string `protobuf:"bytes,7,rep,name=capability_delegation,json=capabilityDelegation,proto3" json:"capability_delegation,omitempty"` - CapabilityInvocation []string `protobuf:"bytes,8,rep,name=capability_invocation,json=capabilityInvocation,proto3" json:"capability_invocation,omitempty"` -} - -func (m *Document) Reset() { *m = Document{} } -func (m *Document) String() string { return proto.CompactTextString(m) } -func (*Document) ProtoMessage() {} -func (*Document) Descriptor() ([]byte, []int) { - return fileDescriptor_e3176cd2dbe76ac1, []int{1} -} -func (m *Document) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Document) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Document.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Document) XXX_Merge(src proto.Message) { - xxx_messageInfo_Document.Merge(m, src) -} -func (m *Document) XXX_Size() int { - return m.Size() -} -func (m *Document) XXX_DiscardUnknown() { - xxx_messageInfo_Document.DiscardUnknown(m) -} - -var xxx_messageInfo_Document proto.InternalMessageInfo - -func (m *Document) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Document) GetVerificationMethods() []*VerificationMethod { - if m != nil { - return m.VerificationMethods - } - return nil -} - -func (m *Document) GetAuthentication() []string { - if m != nil { - return m.Authentication - } - return nil -} - -func (m *Document) GetAssertionMethod() []string { - if m != nil { - return m.AssertionMethod - } - return nil -} - -func (m *Document) GetCapabilityDelegation() []string { - if m != nil { - return m.CapabilityDelegation - } - return nil -} - -func (m *Document) GetCapabilityInvocation() []string { - if m != nil { - return m.CapabilityInvocation - } - return nil -} - -// Identity defines an associated profile for a did subject -type Identity struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"` - Controller string `protobuf:"bytes,3,opt,name=controller,proto3" json:"controller,omitempty"` - Credentials []*Credential `protobuf:"bytes,4,rep,name=credentials,proto3" json:"credentials,omitempty"` - VerificationMethods []*VerificationMethod `protobuf:"bytes,5,rep,name=verification_methods,json=verificationMethods,proto3" json:"verification_methods,omitempty"` -} - -func (m *Identity) Reset() { *m = Identity{} } -func (m *Identity) String() string { return proto.CompactTextString(m) } -func (*Identity) ProtoMessage() {} -func (*Identity) Descriptor() ([]byte, []int) { - return fileDescriptor_e3176cd2dbe76ac1, []int{2} -} -func (m *Identity) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Identity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Identity.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Identity) XXX_Merge(src proto.Message) { - xxx_messageInfo_Identity.Merge(m, src) -} -func (m *Identity) XXX_Size() int { - return m.Size() -} -func (m *Identity) XXX_DiscardUnknown() { - xxx_messageInfo_Identity.DiscardUnknown(m) -} - -var xxx_messageInfo_Identity proto.InternalMessageInfo - -func (m *Identity) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Identity) GetSubject() string { - if m != nil { - return m.Subject - } - return "" -} - -func (m *Identity) GetController() string { - if m != nil { - return m.Controller - } - return "" -} - -func (m *Identity) GetCredentials() []*Credential { - if m != nil { - return m.Credentials - } - return nil -} - -func (m *Identity) GetVerificationMethods() []*VerificationMethod { - if m != nil { - return m.VerificationMethods - } - return nil -} - -// PubKey defines a public key for a did -type PubKey struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - KeyType string `protobuf:"bytes,3,opt,name=key_type,json=keyType,proto3" json:"key_type,omitempty"` - Controller string `protobuf:"bytes,4,opt,name=controller,proto3" json:"controller,omitempty"` -} - -func (m *PubKey) Reset() { *m = PubKey{} } -func (m *PubKey) String() string { return proto.CompactTextString(m) } -func (*PubKey) ProtoMessage() {} -func (*PubKey) Descriptor() ([]byte, []int) { - return fileDescriptor_e3176cd2dbe76ac1, []int{3} -} -func (m *PubKey) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *PubKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_PubKey.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *PubKey) XXX_Merge(src proto.Message) { - xxx_messageInfo_PubKey.Merge(m, src) -} -func (m *PubKey) XXX_Size() int { - return m.Size() -} -func (m *PubKey) XXX_DiscardUnknown() { - xxx_messageInfo_PubKey.DiscardUnknown(m) -} - -var xxx_messageInfo_PubKey proto.InternalMessageInfo - -func (m *PubKey) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *PubKey) GetKey() []byte { - if m != nil { - return m.Key - } - return nil -} - -func (m *PubKey) GetKeyType() string { - if m != nil { - return m.KeyType - } - return "" -} - -func (m *PubKey) GetController() string { - if m != nil { - return m.Controller - } - return "" -} - -// VerificationMethod defines a verification method -type VerificationMethod struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` - // The delegation proof or verification method - PublicKeyMultibase string `protobuf:"bytes,3,opt,name=public_key_multibase,json=publicKeyMultibase,proto3" json:"public_key_multibase,omitempty"` - // Public Key JWKS is a map of the associated public keys - PublicKeyJwks map[string]string `protobuf:"bytes,4,rep,name=public_key_jwks,json=publicKeyJwks,proto3" json:"public_key_jwks,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -} - -func (m *VerificationMethod) Reset() { *m = VerificationMethod{} } -func (m *VerificationMethod) String() string { return proto.CompactTextString(m) } -func (*VerificationMethod) ProtoMessage() {} -func (*VerificationMethod) Descriptor() ([]byte, []int) { - return fileDescriptor_e3176cd2dbe76ac1, []int{4} -} -func (m *VerificationMethod) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *VerificationMethod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_VerificationMethod.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *VerificationMethod) XXX_Merge(src proto.Message) { - xxx_messageInfo_VerificationMethod.Merge(m, src) -} -func (m *VerificationMethod) XXX_Size() int { - return m.Size() -} -func (m *VerificationMethod) XXX_DiscardUnknown() { - xxx_messageInfo_VerificationMethod.DiscardUnknown(m) -} - -var xxx_messageInfo_VerificationMethod proto.InternalMessageInfo - -func (m *VerificationMethod) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *VerificationMethod) GetController() string { - if m != nil { - return m.Controller - } - return "" -} - -func (m *VerificationMethod) GetPublicKeyMultibase() string { - if m != nil { - return m.PublicKeyMultibase - } - return "" -} - -func (m *VerificationMethod) GetPublicKeyJwks() map[string]string { - if m != nil { - return m.PublicKeyJwks - } - return nil -} - -func init() { - proto.RegisterType((*Credential)(nil), "did.v1.Credential") - proto.RegisterType((*Document)(nil), "did.v1.Document") - proto.RegisterType((*Identity)(nil), "did.v1.Identity") - proto.RegisterType((*PubKey)(nil), "did.v1.PubKey") - proto.RegisterType((*VerificationMethod)(nil), "did.v1.VerificationMethod") - proto.RegisterMapType((map[string]string)(nil), "did.v1.VerificationMethod.PublicKeyJwksEntry") -} - -func init() { proto.RegisterFile("did/v1/types.proto", fileDescriptor_e3176cd2dbe76ac1) } - -var fileDescriptor_e3176cd2dbe76ac1 = []byte{ - // 628 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0xcf, 0x6e, 0xd3, 0x4e, - 0x10, 0xae, 0x9d, 0xe6, 0x4f, 0x27, 0x69, 0x53, 0xed, 0x2f, 0x3f, 0xe1, 0x46, 0xc8, 0x0a, 0x41, - 0x82, 0x70, 0x20, 0xa6, 0x2d, 0x07, 0x84, 0x38, 0x20, 0x28, 0x87, 0x52, 0x15, 0x55, 0x16, 0x70, - 0xe0, 0x12, 0xad, 0xed, 0x25, 0xd9, 0xc6, 0xf6, 0x5a, 0xde, 0x75, 0x8a, 0x9f, 0x02, 0x9e, 0x82, - 0x67, 0xe1, 0xd8, 0x23, 0xdc, 0x50, 0xfb, 0x0e, 0x9c, 0x91, 0x77, 0xe3, 0xd8, 0x8d, 0xd5, 0x0b, - 0xb7, 0xdd, 0xef, 0xfb, 0x76, 0x67, 0xe6, 0x9b, 0xd1, 0x00, 0xf2, 0xa8, 0x67, 0x2d, 0xf6, 0x2d, - 0x91, 0x46, 0x84, 0x8f, 0xa3, 0x98, 0x09, 0x86, 0x1a, 0x1e, 0xf5, 0xc6, 0x8b, 0xfd, 0xfe, 0x1d, - 0x97, 0xf1, 0x80, 0x71, 0x2b, 0xe0, 0xd3, 0x4c, 0x12, 0xf0, 0xa9, 0x12, 0xf4, 0x7b, 0x53, 0x36, - 0x65, 0xf2, 0x68, 0x65, 0xa7, 0x25, 0xba, 0xa7, 0xe4, 0x13, 0x45, 0xa8, 0x8b, 0xa2, 0x86, 0x7f, - 0x34, 0x80, 0xd7, 0x31, 0xf1, 0x48, 0x28, 0x28, 0xf6, 0xd1, 0x0e, 0xe8, 0xd4, 0x33, 0xb4, 0x81, - 0x36, 0xda, 0xb2, 0x75, 0xea, 0xa1, 0x87, 0xd0, 0x75, 0x57, 0xec, 0x24, 0x4b, 0xc5, 0xd0, 0x25, - 0xb9, 0x53, 0xc0, 0xef, 0xd3, 0x88, 0xa0, 0xfb, 0xb0, 0x5d, 0x12, 0x52, 0xcf, 0xa8, 0x0d, 0xb4, - 0x51, 0xc7, 0xee, 0x14, 0xe0, 0xb1, 0x87, 0xee, 0xc2, 0x96, 0x88, 0x71, 0xc8, 0x23, 0x16, 0x0b, - 0x63, 0x73, 0x50, 0x1b, 0x6d, 0xd9, 0x05, 0x80, 0x1e, 0xc1, 0x2e, 0x16, 0x82, 0x70, 0x81, 0x05, - 0x65, 0xa1, 0x0a, 0x56, 0x97, 0xc1, 0xba, 0x25, 0x5c, 0x46, 0xbb, 0x07, 0x1d, 0x8f, 0xf2, 0xc8, - 0xc7, 0xe9, 0x24, 0xc4, 0x01, 0x31, 0x1a, 0x52, 0xd6, 0x5e, 0x62, 0xef, 0x70, 0x40, 0x90, 0x09, - 0xe0, 0xb2, 0x50, 0xc4, 0xcc, 0xf7, 0x49, 0x6c, 0x34, 0xa5, 0xa0, 0x84, 0x0c, 0xbf, 0xeb, 0xd0, - 0x3a, 0x62, 0x6e, 0x12, 0x90, 0x50, 0x54, 0xca, 0x3e, 0x85, 0xde, 0x82, 0xc4, 0xf4, 0x33, 0x75, - 0x55, 0x2e, 0x01, 0x11, 0x33, 0xe6, 0x71, 0x43, 0x1f, 0xd4, 0x46, 0xed, 0x83, 0xfe, 0x58, 0xb5, - 0x61, 0xfc, 0xb1, 0xa4, 0x39, 0x95, 0x12, 0xfb, 0xbf, 0x45, 0x05, 0xe3, 0xe8, 0x01, 0xec, 0xe0, - 0x44, 0xcc, 0x32, 0x1f, 0x14, 0xb1, 0x2c, 0x7e, 0x0d, 0x95, 0x0e, 0x70, 0x4e, 0xe2, 0x52, 0x4c, - 0xa3, 0x2e, 0x95, 0xdd, 0x15, 0xae, 0xfe, 0x44, 0x87, 0xf0, 0xbf, 0x8b, 0x23, 0xec, 0x50, 0x9f, - 0x8a, 0x74, 0xe2, 0x11, 0x9f, 0x4c, 0xd5, 0xcf, 0x4d, 0xa9, 0xef, 0x15, 0xe4, 0xd1, 0x8a, 0x5b, - 0x7b, 0x44, 0xc3, 0x05, 0x5b, 0xa6, 0xd3, 0x5a, 0x7f, 0x74, 0xbc, 0xe2, 0x86, 0xbf, 0x34, 0x68, - 0x1d, 0xcb, 0x1e, 0x8a, 0xb4, 0x62, 0x94, 0x01, 0x4d, 0x9e, 0x38, 0xe7, 0xc4, 0x15, 0xcb, 0xb9, - 0xc8, 0xaf, 0x6b, 0xfe, 0xd7, 0xd6, 0xfd, 0x47, 0x4f, 0xa1, 0x5d, 0xcc, 0x06, 0x97, 0x86, 0xb4, - 0x0f, 0x50, 0xee, 0x6c, 0x31, 0x92, 0x76, 0x59, 0x76, 0x6b, 0x63, 0xea, 0xff, 0xd4, 0x98, 0x21, - 0x81, 0xc6, 0x59, 0xe2, 0x9c, 0x90, 0x6a, 0x61, 0xbb, 0x50, 0x9b, 0x93, 0x54, 0x16, 0xd5, 0xb1, - 0xb3, 0x23, 0xda, 0x83, 0xd6, 0x9c, 0xa4, 0x6a, 0x2c, 0x55, 0x39, 0xcd, 0x39, 0x49, 0xe5, 0x38, - 0xde, 0xac, 0x75, 0xb3, 0x32, 0x6b, 0x5f, 0x75, 0x40, 0xd5, 0x94, 0x2a, 0x31, 0x6f, 0x7e, 0xa3, - 0x57, 0x2c, 0x7b, 0x02, 0xbd, 0x28, 0x71, 0x7c, 0xea, 0x4e, 0xb2, 0x44, 0x82, 0xc4, 0x17, 0xd4, - 0xc1, 0x3c, 0xcf, 0x06, 0x29, 0xee, 0x84, 0xa4, 0xa7, 0x39, 0x83, 0x3e, 0x40, 0xb7, 0xf4, 0xe2, - 0xfc, 0x62, 0x9e, 0x1b, 0xfd, 0xf8, 0x76, 0xa7, 0xc6, 0x67, 0xf9, 0x3f, 0x6f, 0x2f, 0xe6, 0xfc, - 0x4d, 0x28, 0xe2, 0xd4, 0xde, 0x8e, 0xca, 0x58, 0xff, 0x25, 0xa0, 0xaa, 0x28, 0xb7, 0x4c, 0xd5, - 0x23, 0x2d, 0xeb, 0x41, 0x7d, 0x81, 0xfd, 0x24, 0xdf, 0x19, 0xea, 0xf2, 0x5c, 0x7f, 0xa6, 0xbd, - 0x7a, 0xf1, 0xe3, 0xca, 0xd4, 0x2e, 0xaf, 0x4c, 0xed, 0xf7, 0x95, 0xa9, 0x7d, 0xbb, 0x36, 0x37, - 0x2e, 0xaf, 0xcd, 0x8d, 0x9f, 0xd7, 0xe6, 0xc6, 0xa7, 0xe1, 0x94, 0x8a, 0x59, 0xe2, 0x8c, 0x5d, - 0x16, 0x58, 0x2c, 0xe4, 0x2c, 0x8c, 0xad, 0xd9, 0x05, 0x4e, 0xad, 0x2f, 0x56, 0xb6, 0x0f, 0xe5, - 0x32, 0x74, 0x1a, 0x72, 0x77, 0x1d, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x43, 0x8a, 0x36, 0x63, - 0x23, 0x05, 0x00, 0x00, -} - -func (m *Credential) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Credential) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Credential) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Controller) > 0 { - i -= len(m.Controller) - copy(dAtA[i:], m.Controller) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Controller))) - i-- - dAtA[i] = 0x3a - } - if len(m.DisplayName) > 0 { - i -= len(m.DisplayName) - copy(dAtA[i:], m.DisplayName) - i = encodeVarintTypes(dAtA, i, uint64(len(m.DisplayName))) - i-- - dAtA[i] = 0x32 - } - if len(m.AttestationType) > 0 { - i -= len(m.AttestationType) - copy(dAtA[i:], m.AttestationType) - i = encodeVarintTypes(dAtA, i, uint64(len(m.AttestationType))) - i-- - dAtA[i] = 0x2a - } - if len(m.Transport) > 0 { - for iNdEx := len(m.Transport) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Transport[iNdEx]) - copy(dAtA[i:], m.Transport[iNdEx]) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Transport[iNdEx]))) - i-- - dAtA[i] = 0x22 - } - } - if len(m.CredentialId) > 0 { - i -= len(m.CredentialId) - copy(dAtA[i:], m.CredentialId) - i = encodeVarintTypes(dAtA, i, uint64(len(m.CredentialId))) - i-- - dAtA[i] = 0x1a - } - if len(m.CredentialType) > 0 { - i -= len(m.CredentialType) - copy(dAtA[i:], m.CredentialType) - i = encodeVarintTypes(dAtA, i, uint64(len(m.CredentialType))) - i-- - dAtA[i] = 0x12 - } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *Document) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Document) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Document) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.CapabilityInvocation) > 0 { - for iNdEx := len(m.CapabilityInvocation) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.CapabilityInvocation[iNdEx]) - copy(dAtA[i:], m.CapabilityInvocation[iNdEx]) - i = encodeVarintTypes(dAtA, i, uint64(len(m.CapabilityInvocation[iNdEx]))) - i-- - dAtA[i] = 0x42 - } - } - if len(m.CapabilityDelegation) > 0 { - for iNdEx := len(m.CapabilityDelegation) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.CapabilityDelegation[iNdEx]) - copy(dAtA[i:], m.CapabilityDelegation[iNdEx]) - i = encodeVarintTypes(dAtA, i, uint64(len(m.CapabilityDelegation[iNdEx]))) - i-- - dAtA[i] = 0x3a - } - } - if len(m.AssertionMethod) > 0 { - for iNdEx := len(m.AssertionMethod) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.AssertionMethod[iNdEx]) - copy(dAtA[i:], m.AssertionMethod[iNdEx]) - i = encodeVarintTypes(dAtA, i, uint64(len(m.AssertionMethod[iNdEx]))) - i-- - dAtA[i] = 0x2a - } - } - if len(m.Authentication) > 0 { - for iNdEx := len(m.Authentication) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Authentication[iNdEx]) - copy(dAtA[i:], m.Authentication[iNdEx]) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Authentication[iNdEx]))) - i-- - dAtA[i] = 0x22 - } - } - if len(m.VerificationMethods) > 0 { - for iNdEx := len(m.VerificationMethods) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.VerificationMethods[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTypes(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *Identity) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Identity) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Identity) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.VerificationMethods) > 0 { - for iNdEx := len(m.VerificationMethods) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.VerificationMethods[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTypes(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - } - if len(m.Credentials) > 0 { - for iNdEx := len(m.Credentials) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Credentials[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTypes(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - } - if len(m.Controller) > 0 { - i -= len(m.Controller) - copy(dAtA[i:], m.Controller) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Controller))) - i-- - dAtA[i] = 0x1a - } - if len(m.Subject) > 0 { - i -= len(m.Subject) - copy(dAtA[i:], m.Subject) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Subject))) - i-- - dAtA[i] = 0x12 - } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *PubKey) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *PubKey) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *PubKey) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Controller) > 0 { - i -= len(m.Controller) - copy(dAtA[i:], m.Controller) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Controller))) - i-- - dAtA[i] = 0x22 - } - if len(m.KeyType) > 0 { - i -= len(m.KeyType) - copy(dAtA[i:], m.KeyType) - i = encodeVarintTypes(dAtA, i, uint64(len(m.KeyType))) - i-- - dAtA[i] = 0x1a - } - if len(m.Key) > 0 { - i -= len(m.Key) - copy(dAtA[i:], m.Key) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Key))) - i-- - dAtA[i] = 0x12 - } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *VerificationMethod) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *VerificationMethod) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *VerificationMethod) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.PublicKeyJwks) > 0 { - for k := range m.PublicKeyJwks { - v := m.PublicKeyJwks[k] - baseI := i - i -= len(v) - copy(dAtA[i:], v) - i = encodeVarintTypes(dAtA, i, uint64(len(v))) - i-- - dAtA[i] = 0x12 - i -= len(k) - copy(dAtA[i:], k) - i = encodeVarintTypes(dAtA, i, uint64(len(k))) - i-- - dAtA[i] = 0xa - i = encodeVarintTypes(dAtA, i, uint64(baseI-i)) - i-- - dAtA[i] = 0x22 - } - } - if len(m.PublicKeyMultibase) > 0 { - i -= len(m.PublicKeyMultibase) - copy(dAtA[i:], m.PublicKeyMultibase) - i = encodeVarintTypes(dAtA, i, uint64(len(m.PublicKeyMultibase))) - i-- - dAtA[i] = 0x1a - } - if len(m.Controller) > 0 { - i -= len(m.Controller) - copy(dAtA[i:], m.Controller) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Controller))) - i-- - dAtA[i] = 0x12 - } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintTypes(dAtA []byte, offset int, v uint64) int { - offset -= sovTypes(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Credential) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - l = len(m.CredentialType) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - l = len(m.CredentialId) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - if len(m.Transport) > 0 { - for _, s := range m.Transport { - l = len(s) - n += 1 + l + sovTypes(uint64(l)) - } - } - l = len(m.AttestationType) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - l = len(m.DisplayName) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - l = len(m.Controller) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - return n -} - -func (m *Document) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - if len(m.VerificationMethods) > 0 { - for _, e := range m.VerificationMethods { - l = e.Size() - n += 1 + l + sovTypes(uint64(l)) - } - } - if len(m.Authentication) > 0 { - for _, s := range m.Authentication { - l = len(s) - n += 1 + l + sovTypes(uint64(l)) - } - } - if len(m.AssertionMethod) > 0 { - for _, s := range m.AssertionMethod { - l = len(s) - n += 1 + l + sovTypes(uint64(l)) - } - } - if len(m.CapabilityDelegation) > 0 { - for _, s := range m.CapabilityDelegation { - l = len(s) - n += 1 + l + sovTypes(uint64(l)) - } - } - if len(m.CapabilityInvocation) > 0 { - for _, s := range m.CapabilityInvocation { - l = len(s) - n += 1 + l + sovTypes(uint64(l)) - } - } - return n -} - -func (m *Identity) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - l = len(m.Subject) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - l = len(m.Controller) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - if len(m.Credentials) > 0 { - for _, e := range m.Credentials { - l = e.Size() - n += 1 + l + sovTypes(uint64(l)) - } - } - if len(m.VerificationMethods) > 0 { - for _, e := range m.VerificationMethods { - l = e.Size() - n += 1 + l + sovTypes(uint64(l)) - } - } - return n -} - -func (m *PubKey) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - l = len(m.Key) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - l = len(m.KeyType) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - l = len(m.Controller) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - return n -} - -func (m *VerificationMethod) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - l = len(m.Controller) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - l = len(m.PublicKeyMultibase) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - if len(m.PublicKeyJwks) > 0 { - for k, v := range m.PublicKeyJwks { - _ = k - _ = v - mapEntrySize := 1 + len(k) + sovTypes(uint64(len(k))) + 1 + len(v) + sovTypes(uint64(len(v))) - n += mapEntrySize + 1 + sovTypes(uint64(mapEntrySize)) - } - } - return n -} - -func sovTypes(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozTypes(x uint64) (n int) { - return sovTypes(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *Credential) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Credential: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Credential: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CredentialType", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.CredentialType = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CredentialId", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.CredentialId = append(m.CredentialId[:0], dAtA[iNdEx:postIndex]...) - if m.CredentialId == nil { - m.CredentialId = []byte{} - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Transport", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Transport = append(m.Transport, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AttestationType", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AttestationType = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DisplayName", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.DisplayName = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Controller = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Document) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Document: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Document: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field VerificationMethods", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.VerificationMethods = append(m.VerificationMethods, &VerificationMethod{}) - if err := m.VerificationMethods[len(m.VerificationMethods)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Authentication", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Authentication = append(m.Authentication, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AssertionMethod", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AssertionMethod = append(m.AssertionMethod, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CapabilityDelegation", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.CapabilityDelegation = append(m.CapabilityDelegation, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CapabilityInvocation", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.CapabilityInvocation = append(m.CapabilityInvocation, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Identity) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Identity: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Identity: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Subject = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Controller = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Credentials", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Credentials = append(m.Credentials, &Credential{}) - if err := m.Credentials[len(m.Credentials)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field VerificationMethods", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.VerificationMethods = append(m.VerificationMethods, &VerificationMethod{}) - if err := m.VerificationMethods[len(m.VerificationMethods)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PubKey) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PubKey: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PubKey: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) - if m.Key == nil { - m.Key = []byte{} - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field KeyType", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.KeyType = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Controller = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *VerificationMethod) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: VerificationMethod: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: VerificationMethod: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Controller = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PublicKeyMultibase", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.PublicKeyMultibase = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PublicKeyJwks", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.PublicKeyJwks == nil { - m.PublicKeyJwks = make(map[string]string) - } - var mapkey string - var mapvalue string - for iNdEx < postIndex { - entryPreIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - if fieldNum == 1 { - var stringLenmapkey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapkey |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapkey := int(stringLenmapkey) - if intStringLenmapkey < 0 { - return ErrInvalidLengthTypes - } - postStringIndexmapkey := iNdEx + intStringLenmapkey - if postStringIndexmapkey < 0 { - return ErrInvalidLengthTypes - } - if postStringIndexmapkey > l { - return io.ErrUnexpectedEOF - } - mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) - iNdEx = postStringIndexmapkey - } else if fieldNum == 2 { - var stringLenmapvalue uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapvalue |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapvalue := int(stringLenmapvalue) - if intStringLenmapvalue < 0 { - return ErrInvalidLengthTypes - } - postStringIndexmapvalue := iNdEx + intStringLenmapvalue - if postStringIndexmapvalue < 0 { - return ErrInvalidLengthTypes - } - if postStringIndexmapvalue > l { - return io.ErrUnexpectedEOF - } - mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) - iNdEx = postStringIndexmapvalue - } else { - iNdEx = entryPreIndex - skippy, err := skipTypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTypes - } - if (iNdEx + skippy) > postIndex { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - m.PublicKeyJwks[mapkey] = mapvalue - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipTypes(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTypes - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTypes - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTypes - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthTypes - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupTypes - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthTypes - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthTypes = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowTypes = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupTypes = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/did/types/bip32.go b/x/did/types/utils.go similarity index 87% rename from x/did/types/bip32.go rename to x/did/types/utils.go index 9c54b6e2d..42b592caf 100644 --- a/x/did/types/bip32.go +++ b/x/did/types/utils.go @@ -10,8 +10,8 @@ import ( "github.com/btcsuite/btcd/btcec/v2" ) -// ComputePublicKey computes the public key of a child key given the extended public key, chain code, and index. -func ComputePublicKey(extPubKey []byte, chainCode uint32, index int) ([]byte, error) { +// ComputeAccountPublicKey computes the public key of a child key given the extended public key, chain code, and index. +func ComputeAccountPublicKey(extPubKey []byte, chainCode uint32, index int) ([]byte, error) { // Check if the index is a hardened child key if chainCode&0x80000000 != 0 && index < 0 { return nil, errors.New("invalid index") diff --git a/x/did/types/verifier.go b/x/did/types/verifier.go new file mode 100644 index 000000000..652ec610d --- /dev/null +++ b/x/did/types/verifier.go @@ -0,0 +1,11 @@ +package types + +import sdk "github.com/cosmos/cosmos-sdk/types" + +func (t *Token) Validate(permissions string) error { + return nil +} + +func (t *Token) Verify(msg sdk.Msg) error { + return nil +} diff --git a/x/did/types/zkprop.go b/x/did/types/zkprop.go new file mode 100644 index 000000000..c90ba5422 --- /dev/null +++ b/x/did/types/zkprop.go @@ -0,0 +1,145 @@ +package types + +import ( + "fmt" + + "github.com/onsonr/crypto/accumulator" + "github.com/onsonr/crypto/core/curves" +) + +// Element is the element for the BLS scheme +type Element = accumulator.Element + +// NewProperty creates a new Property which is used for ZKP +func NewProperty(propertyKey string, pubKey []byte) (*Property, error) { + input := append(pubKey, []byte(propertyKey)...) + hash := []byte(input) + + curve := curves.BLS12381(&curves.PointBls12381G1{}) + key, err := new(accumulator.SecretKey).New(curve, hash[:]) + if err != nil { + return nil, fmt.Errorf("failed to create secret key: %w", err) + } + + keyBytes, err := key.MarshalBinary() + if err != nil { + return nil, fmt.Errorf("failed to marshal secret key: %w", err) + } + + return &Property{Key: keyBytes}, nil +} + +// CreateAccumulator creates a new accumulator +func CreateAccumulator(prop *Property, values ...string) (*Accumulator, error) { + curve := curves.BLS12381(&curves.PointBls12381G1{}) + acc, err := new(accumulator.Accumulator).New(curve) + if err != nil { + return nil, err + } + + secretKey := new(accumulator.SecretKey) + if err := secretKey.UnmarshalBinary(prop.Key); err != nil { + return nil, err + } + + fin, _, err := acc.Update(secretKey, ConvertValuesToZeroKnowledgeElements(values), nil) + if err != nil { + return nil, err + } + + accBytes, err := fin.MarshalBinary() + if err != nil { + return nil, fmt.Errorf("failed to marshal accumulator: %w", err) + } + + return &Accumulator{Accumulator: accBytes}, nil +} + +// CreateWitness creates a witness for the accumulator for a given value +func CreateWitness(prop *Property, acc *Accumulator, value string) (*Witness, error) { + curve := curves.BLS12381(&curves.PointBls12381G1{}) + element := curve.Scalar.Hash([]byte(value)) + + secretKey := new(accumulator.SecretKey) + if err := secretKey.UnmarshalBinary(prop.Key); err != nil { + return nil, err + } + + accObj := new(accumulator.Accumulator) + if err := accObj.UnmarshalBinary(acc.Accumulator); err != nil { + return nil, fmt.Errorf("failed to unmarshal accumulator: %w", err) + } + + mw, err := new(accumulator.MembershipWitness).New(element, accObj, secretKey) + if err != nil { + return nil, err + } + + witnessBytes, err := mw.MarshalBinary() + if err != nil { + return nil, fmt.Errorf("failed to marshal witness: %w", err) + } + + return &Witness{Witness: witnessBytes}, nil +} + +// VerifyWitness proves that a value is a member of the accumulator +func VerifyWitness(prop *Property, acc *Accumulator, witness *Witness) error { + secretKey := new(accumulator.SecretKey) + if err := secretKey.UnmarshalBinary(prop.Key); err != nil { + return err + } + + curve := curves.BLS12381(&curves.PointBls12381G1{}) + publicKey, err := secretKey.GetPublicKey(curve) + if err != nil { + return err + } + + accObj := new(accumulator.Accumulator) + if err := accObj.UnmarshalBinary(acc.Accumulator); err != nil { + return fmt.Errorf("failed to unmarshal accumulator: %w", err) + } + + witnessObj := new(accumulator.MembershipWitness) + if err := witnessObj.UnmarshalBinary(witness.Witness); err != nil { + return fmt.Errorf("failed to unmarshal witness: %w", err) + } + + return witnessObj.Verify(publicKey, accObj) +} + +// UpdateAccumulator updates the accumulator with new values +func UpdateAccumulator(prop *Property, acc *Accumulator, addValues []string, removeValues []string) (*Accumulator, error) { + secretKey := new(accumulator.SecretKey) + if err := secretKey.UnmarshalBinary(prop.Key); err != nil { + return nil, err + } + + accObj := new(accumulator.Accumulator) + if err := accObj.UnmarshalBinary(acc.Accumulator); err != nil { + return nil, fmt.Errorf("failed to unmarshal accumulator: %w", err) + } + + updatedAcc, _, err := accObj.Update(secretKey, ConvertValuesToZeroKnowledgeElements(addValues), ConvertValuesToZeroKnowledgeElements(removeValues)) + if err != nil { + return nil, err + } + + updatedAccBytes, err := updatedAcc.MarshalBinary() + if err != nil { + return nil, fmt.Errorf("failed to marshal updated accumulator: %w", err) + } + + return &Accumulator{Accumulator: updatedAccBytes}, nil +} + +// ConvertValuesToZeroKnowledgeElements converts a slice of strings to a slice of accumulator elements +func ConvertValuesToZeroKnowledgeElements(values []string) []Element { + curve := curves.BLS12381(&curves.PointBls12381G1{}) + elements := make([]accumulator.Element, len(values)) + for i, value := range values { + elements[i] = curve.Scalar.Hash([]byte(value)) + } + return elements +} diff --git a/x/oracle/ibc_middleware.go b/x/oracle/ibc_middleware.go index e7dd9808f..0674a10a6 100644 --- a/x/oracle/ibc_middleware.go +++ b/x/oracle/ibc_middleware.go @@ -1,7 +1,7 @@ package oracle import ( - "github.com/onsonr/hway/x/oracle/keeper" + "github.com/onsonr/sonr/x/oracle/keeper" sdk "github.com/cosmos/cosmos-sdk/types" capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" diff --git a/x/oracle/keeper/genesis.go b/x/oracle/keeper/genesis.go index c6b82713e..af1457f1b 100644 --- a/x/oracle/keeper/genesis.go +++ b/x/oracle/keeper/genesis.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/onsonr/hway/x/oracle/types" + "github.com/onsonr/sonr/x/oracle/types" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/x/oracle/keeper/keeper.go b/x/oracle/keeper/keeper.go index bc3b25aa8..3cb2a7e11 100644 --- a/x/oracle/keeper/keeper.go +++ b/x/oracle/keeper/keeper.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/onsonr/hway/x/oracle/types" + "github.com/onsonr/sonr/x/oracle/types" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" diff --git a/x/oracle/module.go b/x/oracle/module.go index 233c4e6d3..39016479a 100644 --- a/x/oracle/module.go +++ b/x/oracle/module.go @@ -4,8 +4,8 @@ import ( "encoding/json" "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/onsonr/hway/x/oracle/keeper" - "github.com/onsonr/hway/x/oracle/types" + "github.com/onsonr/sonr/x/oracle/keeper" + "github.com/onsonr/sonr/x/oracle/types" "github.com/spf13/cobra" "github.com/cosmos/cosmos-sdk/client" diff --git a/x/oracle/types/genesis.pb.go b/x/oracle/types/genesis.pb.go index 71cd005fc..efeed87fb 100644 --- a/x/oracle/types/genesis.pb.go +++ b/x/oracle/types/genesis.pb.go @@ -67,7 +67,7 @@ func init() { func init() { proto.RegisterFile("oracle/v1/genesis.proto", fileDescriptor_14b982a0a6345d1d) } var fileDescriptor_14b982a0a6345d1d = []byte{ - // 147 bytes of a gzipped FileDescriptorProto + // 144 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xcf, 0x2f, 0x4a, 0x4c, 0xce, 0x49, 0xd5, 0x2f, 0x33, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x84, 0x48, 0xe8, 0x95, 0x19, 0x4a, 0x89, 0xa4, 0xe7, 0xa7, 0xe7, @@ -75,9 +75,8 @@ var fileDescriptor_14b982a0a6345d1d = []byte{ 0xc4, 0x92, 0x54, 0x27, 0xfb, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x52, 0x4d, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0xcf, 0xcf, 0x2b, 0xce, 0xcf, - 0x2b, 0xd2, 0xcf, 0x28, 0x4f, 0xac, 0xd4, 0xaf, 0xd0, 0x87, 0x5a, 0x5e, 0x52, 0x59, 0x90, 0x5a, - 0x9c, 0xc4, 0x06, 0x36, 0xd7, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x25, 0x38, 0x48, 0xfb, 0x93, - 0x00, 0x00, 0x00, + 0x2b, 0xd2, 0x07, 0x13, 0x15, 0xfa, 0x50, 0xcb, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, + 0xe6, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x74, 0xe4, 0x19, 0x43, 0x93, 0x00, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/oracle/types/query.pb.go b/x/oracle/types/query.pb.go index 83371e3e1..bc3d610dc 100644 --- a/x/oracle/types/query.pb.go +++ b/x/oracle/types/query.pb.go @@ -24,14 +24,14 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("oracle/v1/query.proto", fileDescriptor_34238c8dfdfcd7ec) } var fileDescriptor_34238c8dfdfcd7ec = []byte{ - // 133 bytes of a gzipped FileDescriptorProto + // 130 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xcd, 0x2f, 0x4a, 0x4c, 0xce, 0x49, 0xd5, 0x2f, 0x33, 0xd4, 0x2f, 0x2c, 0x4d, 0x2d, 0xaa, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x84, 0x08, 0xeb, 0x95, 0x19, 0x4a, 0x89, 0xa4, 0xe7, 0xa7, 0xe7, 0x83, 0x45, 0xf5, 0x41, 0x2c, 0x88, 0x02, 0x27, 0xfb, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x52, 0x4d, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0xcf, 0xcf, 0x2b, - 0xce, 0xcf, 0x2b, 0xd2, 0xcf, 0x28, 0x4f, 0xac, 0xd4, 0xaf, 0xd0, 0x87, 0x5a, 0x55, 0x52, 0x59, - 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x36, 0xc7, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x1c, 0x7f, 0x61, - 0xbe, 0x81, 0x00, 0x00, 0x00, + 0xce, 0xcf, 0x2b, 0xd2, 0x07, 0x13, 0x15, 0xfa, 0x50, 0xab, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, + 0xd8, 0xc0, 0xe6, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x4d, 0xa3, 0x30, 0x06, 0x81, 0x00, + 0x00, 0x00, } diff --git a/x/oracle/types/tx.pb.go b/x/oracle/types/tx.pb.go index 405cea3d0..8d38e5b0e 100644 --- a/x/oracle/types/tx.pb.go +++ b/x/oracle/types/tx.pb.go @@ -24,14 +24,13 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("oracle/v1/tx.proto", fileDescriptor_31571edce0094a5d) } var fileDescriptor_31571edce0094a5d = []byte{ - // 130 bytes of a gzipped FileDescriptorProto + // 127 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xca, 0x2f, 0x4a, 0x4c, 0xce, 0x49, 0xd5, 0x2f, 0x33, 0xd4, 0x2f, 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x84, 0x88, 0xe9, 0x95, 0x19, 0x4a, 0x89, 0xa4, 0xe7, 0xa7, 0xe7, 0x83, 0x45, 0xf5, 0x41, 0x2c, 0x88, 0x02, 0x27, 0xfb, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x52, 0x4d, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0xcf, 0xcf, 0x2b, 0xce, 0xcf, 0x2b, - 0xd2, 0xcf, 0x28, 0x4f, 0xac, 0xd4, 0xaf, 0xd0, 0x87, 0xda, 0x53, 0x52, 0x59, 0x90, 0x5a, 0x9c, - 0xc4, 0x06, 0x36, 0xc7, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x39, 0x40, 0x7c, 0x7a, 0x7e, 0x00, - 0x00, 0x00, + 0xd2, 0x07, 0x13, 0x15, 0xfa, 0x50, 0x7b, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0xe6, + 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x68, 0x9c, 0x2d, 0xc2, 0x7e, 0x00, 0x00, 0x00, }