From 58df27d8a340e28e8d8d2543c729fb03a7278f6e Mon Sep 17 00:00:00 2001 From: Gabe Rodriguez Date: Thu, 5 Oct 2023 20:33:17 +0200 Subject: [PATCH] Rename account_group_id to wallet_id --- crates/bin/pcli/src/command/keys.rs | 12 +- crates/bin/pcli/src/command/tx.rs | 65 +- crates/bin/pcli/src/command/tx/replicate.rs | 2 +- crates/bin/pcli/src/command/validator.rs | 13 +- crates/bin/pcli/src/command/view/balance.rs | 4 +- crates/bin/pcli/src/command/view/staked.rs | 4 +- crates/bin/pcli/src/main.rs | 2 +- .../bin/pclientd/tests/network_integration.rs | 8 +- crates/core/component/chain/src/lib.rs | 17 +- crates/core/keys/src/address/view.rs | 35 +- crates/core/keys/src/keys.rs | 4 +- crates/core/keys/src/keys/bip44.rs | 2 +- crates/core/keys/src/keys/fvk.rs | 12 +- .../keys/{account_group.rs => wallet_id.rs} | 22 +- ...est_account_group.rs => test_wallet_id.rs} | 13 +- crates/custody/src/request.rs | 8 +- .../src/gen/penumbra.core.keys.v1alpha1.rs | 4 +- .../gen/penumbra.core.keys.v1alpha1.serde.rs | 212 +-- .../src/gen/penumbra.custody.v1alpha1.rs | 4 +- .../gen/penumbra.custody.v1alpha1.serde.rs | 26 +- .../gen/penumbra.narsil.ledger.v1alpha1.rs | 14 +- .../penumbra.narsil.ledger.v1alpha1.serde.rs | 244 +-- .../proto/src/gen/penumbra.view.v1alpha1.rs | 64 +- .../src/gen/penumbra.view.v1alpha1.serde.rs | 260 +-- .../proto/src/gen/proto_descriptor.bin.no_lfs | Bin 341066 -> 326750 bytes crates/proto/src/serializers/bech32str.rs | 10 +- crates/view/src/client.rs | 62 +- crates/view/src/planner.rs | 12 +- crates/view/src/service.rs | 39 +- crates/wallet/src/build.rs | 4 +- crates/wallet/src/plan.rs | 62 +- crates/wasm/src/keys.rs | 6 +- crates/wasm/src/planner.rs | 4 +- crates/wasm/tests/test_keys.rs | 11 +- .../protocol/addresses_keys/viewing_keys.md | 2 +- .../penumbra/core/keys/v1alpha1/keys.pb.go | 146 +- .../penumbra/custody/v1alpha1/custody.pb.go | 117 +- .../narsil/ledger/v1alpha1/ledger.pb.go | 692 ++++---- .../go/gen/penumbra/view/v1alpha1/view.pb.go | 1580 ++++++++--------- .../penumbra/core/keys/v1alpha1/keys.proto | 4 +- .../penumbra/custody/v1alpha1/custody.proto | 2 +- .../narsil/ledger/v1alpha1/ledger.proto | 14 +- .../penumbra/view/v1alpha1/view.proto | 42 +- 43 files changed, 1904 insertions(+), 1956 deletions(-) rename crates/core/keys/src/keys/{account_group.rs => wallet_id.rs} (60%) rename crates/core/keys/tests/{test_account_group.rs => test_wallet_id.rs} (65%) diff --git a/crates/bin/pcli/src/command/keys.rs b/crates/bin/pcli/src/command/keys.rs index 738c12fa70..488653dd6d 100644 --- a/crates/bin/pcli/src/command/keys.rs +++ b/crates/bin/pcli/src/command/keys.rs @@ -42,8 +42,8 @@ pub enum ImportCmd { pub enum ExportCmd { /// Export the full viewing key for the wallet. FullViewingKey, - /// Export the account group ID. - AccountGroupId, + /// Export the wallet ID. + WalletId, } impl KeysCmd { @@ -122,10 +122,10 @@ impl KeysCmd { let wallet = KeyStore::load(data_dir.join(crate::CUSTODY_FILE_NAME))?; println!("{}", wallet.spend_key.full_viewing_key()); } - KeysCmd::Export(ExportCmd::AccountGroupId) => { - let wallet = KeyStore::load(data_dir.join(crate::CUSTODY_FILE_NAME))?; - let account_group_id = wallet.spend_key.full_viewing_key().account_group_id(); - println!("{}", serde_json::to_string_pretty(&account_group_id)?); + KeysCmd::Export(ExportCmd::WalletId) => { + let key_store = KeyStore::load(data_dir.join(crate::CUSTODY_FILE_NAME))?; + let wallet_id = key_store.spend_key.full_viewing_key().wallet_id(); + println!("{}", serde_json::to_string_pretty(&wallet_id)?); } KeysCmd::Delete => { let wallet_path = data_dir.join(crate::CUSTODY_FILE_NAME); diff --git a/crates/bin/pcli/src/command/tx.rs b/crates/bin/pcli/src/command/tx.rs index 363e2bde11..a32eca394a 100644 --- a/crates/bin/pcli/src/command/tx.rs +++ b/crates/bin/pcli/src/command/tx.rs @@ -10,6 +10,10 @@ use anyhow::{Context, Result}; use ark_ff::UniformRand; use decaf377::{Fq, Fr}; use ibc_types::core::{channel::ChannelId, client::Height as IbcHeight}; +use rand_core::OsRng; +use regex::Regex; + +use liquidity_position::PositionCmd; use penumbra_asset::{asset, asset::DenomMetadata, Value, STAKING_TOKEN_ASSET_ID}; use penumbra_dex::{lp::position, swap_claim::SwapClaimPlan}; use penumbra_fee::Fee; @@ -39,17 +43,12 @@ use penumbra_stake::{DelegationToken, IdentityKey, Penalty, UnbondingToken, Unde use penumbra_transaction::memo::MemoPlaintext; use penumbra_view::ViewClient; use penumbra_wallet::plan::{self, Planner}; -use rand_core::OsRng; -use regex::Regex; +use proposal::ProposalCmd; use crate::App; -mod proposal; -use proposal::ProposalCmd; - mod liquidity_position; -use liquidity_position::PositionCmd; - +mod proposal; mod replicate; #[derive(Debug, clap::Subcommand)] @@ -203,7 +202,7 @@ pub enum TxCmd { #[clap(long, default_value = "0", display_order = 150)] timeout_timestamp: u64, - /// Only withdraw funds from the specified account group within Penumbra. + /// Only withdraw funds from the specified wallet within Penumbra. #[clap(long, default_value = "0", display_order = 200)] source: u32, }, @@ -290,7 +289,7 @@ impl TxCmd { }; let plan = plan::send( - app.fvk.account_group_id(), + app.fvk.wallet_id(), app.view.as_mut().context("view service initialized")?, OsRng, &values, @@ -323,7 +322,7 @@ impl TxCmd { app.view .as_mut() .context("view service must be initialized")?, - app.fvk.account_group_id(), + app.fvk.wallet_id(), AddressIndex::new(*source), ) .await?; @@ -331,7 +330,7 @@ impl TxCmd { } TxCmd::Sweep => loop { let plans = plan::sweep( - app.fvk.account_group_id(), + app.fvk.wallet_id(), app.view .as_mut() .context("view service must be initialized")?, @@ -378,9 +377,9 @@ impl TxCmd { planner.fee(swap_fee); planner.swap(input, into.id(), swap_claim_fee.clone(), claim_address)?; - let account_group_id = app.fvk.account_group_id(); + let wallet_id = app.fvk.wallet_id(); let plan = planner - .plan(app.view(), account_group_id, AddressIndex::new(*source)) + .plan(app.view(), wallet_id, AddressIndex::new(*source)) .await .context("can't plan swap transaction")?; @@ -399,7 +398,7 @@ impl TxCmd { // Fetch the SwapRecord with the claimable swap. let swap_record = app .view() - .swap_by_commitment(account_group_id, swap_plaintext.swap_commitment()) + .swap_by_commitment(wallet_id, swap_plaintext.swap_commitment()) .await?; let asset_cache = app.view().assets().await?; @@ -429,7 +428,7 @@ impl TxCmd { .app_params() .await?; - let account_group_id = app.fvk.account_group_id(); + let wallet_id = app.fvk.wallet_id(); let mut planner = Planner::new(OsRng); let plan = planner @@ -441,7 +440,7 @@ impl TxCmd { proof_blinding_r: Fq::rand(&mut OsRng), proof_blinding_s: Fq::rand(&mut OsRng), }) - .plan(app.view(), account_group_id, AddressIndex::new(*source)) + .plan(app.view(), wallet_id, AddressIndex::new(*source)) .await .context("can't plan swap claim")?; @@ -475,7 +474,7 @@ impl TxCmd { let fee = Fee::from_staking_token_amount((*fee).into()); let plan = plan::delegate( - app.fvk.account_group_id(), + app.fvk.wallet_id(), app.view .as_mut() .context("view service must be initialized")?, @@ -530,7 +529,7 @@ impl TxCmd { app.view .as_mut() .context("view service must be initialized")?, - app.fvk.account_group_id(), + app.fvk.wallet_id(), AddressIndex::new(*source), ) .await @@ -541,7 +540,7 @@ impl TxCmd { TxCmd::UndelegateClaim { fee } => { let fee = Fee::from_staking_token_amount((*fee).into()); - let account_group_id = app.fvk.account_group_id(); // this should be optional? or saved in the client statefully? + let wallet_id = app.fvk.wallet_id(); // this should be optional? or saved in the client statefully? let channel = app.pd_channel().await?; let view: &mut dyn ViewClient = app @@ -550,7 +549,7 @@ impl TxCmd { .context("view service must be initialized")?; let params = view.app_params().await?; - let current_height = view.status(account_group_id).await?.sync_height; + let current_height = view.status(wallet_id).await?.sync_height; let mut client = ChainQueryServiceClient::new(channel.clone()); let current_epoch = client .epoch_by_height(EpochByHeightRequest { @@ -564,9 +563,7 @@ impl TxCmd { // Query the view client for the list of undelegations that are ready to be claimed. // We want to claim them into the same address index that currently holds the tokens. - let notes = view - .unspent_notes_by_address_and_asset(account_group_id) - .await?; + let notes = view.unspent_notes_by_address_and_asset(wallet_id).await?; for (address_index, notes_by_asset) in notes.into_iter() { for (token, notes) in @@ -627,7 +624,7 @@ impl TxCmd { app.view .as_mut() .context("view service must be initialized")?, - app.fvk.account_group_id(), + app.fvk.wallet_id(), address_index, ) .await?; @@ -648,7 +645,7 @@ impl TxCmd { .context("can't parse proposal file")?; let fee = Fee::from_staking_token_amount((*fee).into()); let plan = plan::proposal_submit( - app.fvk.account_group_id(), + app.fvk.wallet_id(), app.view .as_mut() .context("view service must be initialized")?, @@ -668,7 +665,7 @@ impl TxCmd { }) => { let fee = Fee::from_staking_token_amount((*fee).into()); let plan = plan::proposal_withdraw( - app.fvk.account_group_id(), + app.fvk.wallet_id(), app.view .as_mut() .context("view service must be initialized")?, @@ -755,7 +752,7 @@ impl TxCmd { app.view .as_mut() .context("view service must be initialized")?, - app.fvk.account_group_id(), + app.fvk.wallet_id(), AddressIndex::new(*source), ) .await?; @@ -823,7 +820,7 @@ impl TxCmd { app.view .as_mut() .context("view service must be initialized")?, - app.fvk.account_group_id(), + app.fvk.wallet_id(), AddressIndex::new(*source), ) .await?; @@ -846,7 +843,7 @@ impl TxCmd { app.view .as_mut() .context("view service must be initialized")?, - app.fvk.account_group_id(), + app.fvk.wallet_id(), source, ) .await?; @@ -918,7 +915,7 @@ impl TxCmd { app.view .as_mut() .context("view service must be initialized")?, - app.fvk.account_group_id(), + app.fvk.wallet_id(), AddressIndex::new(*source), ) .await?; @@ -938,7 +935,7 @@ impl TxCmd { app.view .as_mut() .context("view service must be initialized")?, - app.fvk.account_group_id(), + app.fvk.wallet_id(), AddressIndex::new(*source), ) .await?; @@ -978,7 +975,7 @@ impl TxCmd { app.view .as_mut() .context("view service must be initialized")?, - app.fvk.account_group_id(), + app.fvk.wallet_id(), AddressIndex::new(*source), ) .await?; @@ -1052,7 +1049,7 @@ impl TxCmd { app.view .as_mut() .context("view service must be initialized")?, - app.fvk.account_group_id(), + app.fvk.wallet_id(), AddressIndex::new(*source), ) .await?; @@ -1103,7 +1100,7 @@ impl TxCmd { app.view .as_mut() .context("view service must be initialized")?, - app.fvk.account_group_id(), + app.fvk.wallet_id(), AddressIndex::new(*source), ) .await?; diff --git a/crates/bin/pcli/src/command/tx/replicate.rs b/crates/bin/pcli/src/command/tx/replicate.rs index ef8192130a..cd51013391 100644 --- a/crates/bin/pcli/src/command/tx/replicate.rs +++ b/crates/bin/pcli/src/command/tx/replicate.rs @@ -153,7 +153,7 @@ impl ConstantProduct { app.view .as_mut() .context("view service must be initialized")?, - app.fvk.account_group_id(), + app.fvk.wallet_id(), AddressIndex::new(self.source), ) .await?; diff --git a/crates/bin/pcli/src/command/validator.rs b/crates/bin/pcli/src/command/validator.rs index 19d1e81d09..3b85e2f749 100644 --- a/crates/bin/pcli/src/command/validator.rs +++ b/crates/bin/pcli/src/command/validator.rs @@ -4,6 +4,9 @@ use std::{ }; use anyhow::{Context, Result}; +use rand_core::OsRng; +use serde_json::Value; + use penumbra_fee::Fee; use penumbra_governance::{ ValidatorVote, ValidatorVoteBody, ValidatorVoteReason, Vote, MAX_VALIDATOR_VOTE_REASON_LENGTH, @@ -18,8 +21,6 @@ use penumbra_stake::{ FundingStream, FundingStreams, GovernanceKey, IdentityKey, }; use penumbra_wallet::plan; -use rand_core::OsRng; -use serde_json::Value; use crate::App; @@ -149,9 +150,9 @@ impl ValidatorCmd { }; // Construct a new transaction and include the validator definition. - let account_group_id = app.fvk.account_group_id(); + let wallet_id = app.fvk.wallet_id(); let plan = plan::validator_definition( - account_group_id, + wallet_id, app.view .as_mut() .context("view service must be initialized")?, @@ -205,10 +206,10 @@ impl ValidatorCmd { // Construct a new transaction and include the validator definition. let fee = Fee::from_staking_token_amount((*fee).into()); - let account_group_id = app.fvk.account_group_id(); + let wallet_id = app.fvk.wallet_id(); let plan = plan::validator_vote( - account_group_id, + wallet_id, app.view .as_mut() .context("view service must be initialized")?, diff --git a/crates/bin/pcli/src/command/view/balance.rs b/crates/bin/pcli/src/command/view/balance.rs index 91d0dec0a3..40343c6108 100644 --- a/crates/bin/pcli/src/command/view/balance.rs +++ b/crates/bin/pcli/src/command/view/balance.rs @@ -24,7 +24,7 @@ impl BalanceCmd { let rows: Vec<(Option, Value)> = if self.by_note { let notes = view - .unspent_notes_by_address_and_asset(fvk.account_group_id()) + .unspent_notes_by_address_and_asset(fvk.wallet_id()) .await?; notes @@ -40,7 +40,7 @@ impl BalanceCmd { .collect() } else { let notes = view - .unspent_notes_by_address_and_asset(fvk.account_group_id()) + .unspent_notes_by_address_and_asset(fvk.wallet_id()) .await?; notes diff --git a/crates/bin/pcli/src/command/view/staked.rs b/crates/bin/pcli/src/command/view/staked.rs index 3dd8a90aa7..b1d4cbc965 100644 --- a/crates/bin/pcli/src/command/view/staked.rs +++ b/crates/bin/pcli/src/command/view/staked.rs @@ -43,9 +43,9 @@ impl StakedCmd { .map(TryInto::try_into) .collect::, _>>()?; - let account_group_id = full_viewing_key.account_group_id(); + let wallet_id = full_viewing_key.wallet_id(); let notes = view_client - .unspent_notes_by_asset_and_address(account_group_id) + .unspent_notes_by_asset_and_address(wallet_id) .await?; let mut total = 0u128; diff --git a/crates/bin/pcli/src/main.rs b/crates/bin/pcli/src/main.rs index 535dbb6182..842a339679 100644 --- a/crates/bin/pcli/src/main.rs +++ b/crates/bin/pcli/src/main.rs @@ -49,7 +49,7 @@ impl App { async fn sync(&mut self) -> Result<()> { let mut status_stream = ViewClient::status_stream( self.view.as_mut().expect("view service initialized"), - self.fvk.account_group_id(), + self.fvk.wallet_id(), ) .await?; diff --git a/crates/bin/pclientd/tests/network_integration.rs b/crates/bin/pclientd/tests/network_integration.rs index e0bfde4603..d37414aa10 100644 --- a/crates/bin/pclientd/tests/network_integration.rs +++ b/crates/bin/pclientd/tests/network_integration.rs @@ -83,7 +83,7 @@ async fn transaction_send_flow() -> anyhow::Result<()> { // 4. Use the view protocol to wait for it to sync. let mut status_stream = (&mut view_client as &mut dyn ViewClient) - .status_stream(test_keys::FULL_VIEWING_KEY.account_group_id()) + .status_stream(test_keys::FULL_VIEWING_KEY.wallet_id()) .await?; while let Some(item) = status_stream.as_mut().next().await.transpose()? { tracing::debug!(?item); @@ -220,7 +220,7 @@ async fn swap_claim_flow() -> anyhow::Result<()> { // 4. Use the view protocol to wait for it to sync. let mut status_stream = (&mut view_client as &mut dyn ViewClient) - .status_stream(test_keys::FULL_VIEWING_KEY.account_group_id()) + .status_stream(test_keys::FULL_VIEWING_KEY.wallet_id()) .await?; while let Some(item) = status_stream.as_mut().next().await.transpose()? { tracing::debug!(?item); @@ -317,7 +317,7 @@ async fn swap_claim_flow() -> anyhow::Result<()> { // 6. Use the view protocol to wait for it to sync. let mut status_stream = (&mut view_client as &mut dyn ViewClient) - .status_stream(test_keys::FULL_VIEWING_KEY.account_group_id()) + .status_stream(test_keys::FULL_VIEWING_KEY.wallet_id()) .await?; while let Some(item) = status_stream.as_mut().next().await.transpose()? { tracing::debug!(?item); @@ -326,7 +326,7 @@ async fn swap_claim_flow() -> anyhow::Result<()> { // Ensure we can fetch the SwapRecord with the claimable swap. let _swap_record = (&mut view_client as &mut dyn ViewClient) .swap_by_commitment( - test_keys::FULL_VIEWING_KEY.account_group_id(), + test_keys::FULL_VIEWING_KEY.wallet_id(), swap_plaintext.swap_commitment(), ) .await?; diff --git a/crates/core/component/chain/src/lib.rs b/crates/core/component/chain/src/lib.rs index 102007e084..8096849bac 100644 --- a/crates/core/component/chain/src/lib.rs +++ b/crates/core/component/chain/src/lib.rs @@ -1,6 +1,12 @@ #![deny(clippy::unwrap_used)] #![cfg_attr(docsrs, feature(doc_cfg))] +pub use effect_hash::{EffectHash, EffectingData}; +pub use epoch::Epoch; +pub use known_assets::KnownAssets; +pub use note_source::{NoteSource, SpendInfo}; +pub use transaction::TransactionContext; + mod epoch; mod known_assets; mod note_source; @@ -13,15 +19,12 @@ pub mod genesis; pub mod params; pub mod state_key; -pub use epoch::Epoch; -pub use known_assets::KnownAssets; -pub use note_source::{NoteSource, SpendInfo}; - /// Hardcoded test data used by the `Default` genesis state. pub mod test_keys { use once_cell::sync::Lazy; + use penumbra_keys::{ - keys::{AccountGroupId, SpendKey}, + keys::{SpendKey, WalletId}, Address, FullViewingKey, }; @@ -57,11 +60,9 @@ pub mod test_keys { pub static FULL_VIEWING_KEY: Lazy = Lazy::new(|| SPEND_KEY.full_viewing_key().clone()); - pub static ACCOUNT_ID: Lazy = Lazy::new(|| FULL_VIEWING_KEY.account_group_id()); + pub static WALLET_ID: Lazy = Lazy::new(|| FULL_VIEWING_KEY.wallet_id()); } // Located here at the bottom of the dep tree for convenience mod effect_hash; mod transaction; -pub use effect_hash::{EffectHash, EffectingData}; -pub use transaction::TransactionContext; diff --git a/crates/core/keys/src/address/view.rs b/crates/core/keys/src/address/view.rs index 1e9f4cae0b..439614c016 100644 --- a/crates/core/keys/src/address/view.rs +++ b/crates/core/keys/src/address/view.rs @@ -1,7 +1,8 @@ -use penumbra_proto::{penumbra::core::keys::v1alpha1 as pb, DomainType, TypeUrl}; use serde::{Deserialize, Serialize}; -use crate::keys::{AccountGroupId, AddressIndex}; +use penumbra_proto::{penumbra::core::keys::v1alpha1 as pb, DomainType, TypeUrl}; + +use crate::keys::{AddressIndex, WalletId}; use super::Address; @@ -19,7 +20,7 @@ pub enum AddressView { Visible { address: Address, index: AddressIndex, - account_group_id: AccountGroupId, + wallet_id: WalletId, }, } @@ -53,13 +54,13 @@ impl From for pb::AddressView { AddressView::Visible { address, index, - account_group_id, + wallet_id, } => Self { address_view: Some(pb::address_view::AddressView::Visible( pb::address_view::Visible { address: Some(address.into()), index: Some(index.into()), - account_group_id: Some(account_group_id.into()), + wallet_id: Some(wallet_id.into()), }, )), }, @@ -87,16 +88,14 @@ impl TryFrom for AddressView { .index .ok_or_else(|| anyhow::anyhow!("AddressView::Visible missing index field"))? .try_into()?; - let account_group_id = visible - .account_group_id - .ok_or_else(|| { - anyhow::anyhow!("AddressView::Visible missing account_group_id field") - })? + let wallet_id = visible + .wallet_id + .ok_or_else(|| anyhow::anyhow!("AddressView::Visible missing wallet_id field"))? .try_into()?; Ok(AddressView::Visible { address, index, - account_group_id, + wallet_id, }) } None => Err(anyhow::anyhow!("AddressView missing address_view field")), @@ -106,10 +105,12 @@ impl TryFrom for AddressView { #[cfg(test)] mod tests { - use super::*; - use crate::keys::{SeedPhrase, SpendKey}; use rand_core::OsRng; + use crate::keys::{SeedPhrase, SpendKey}; + + use super::*; + #[test] fn address_view_basic() { let sk1 = SpendKey::from_seed_phrase_bip39(SeedPhrase::generate(OsRng), 0); @@ -128,7 +129,7 @@ mod tests { AddressView::Visible { address: addr1_0, index: 0.into(), - account_group_id: fvk1.account_group_id(), + wallet_id: fvk1.wallet_id(), } ); assert_eq!( @@ -140,7 +141,7 @@ mod tests { AddressView::Visible { address: addr1_1, index: 1.into(), - account_group_id: fvk1.account_group_id(), + wallet_id: fvk1.wallet_id(), } ); assert_eq!( @@ -156,7 +157,7 @@ mod tests { AddressView::Visible { address: addr2_0, index: 0.into(), - account_group_id: fvk2.account_group_id(), + wallet_id: fvk2.wallet_id(), } ); assert_eq!( @@ -168,7 +169,7 @@ mod tests { AddressView::Visible { address: addr2_1, index: 1.into(), - account_group_id: fvk2.account_group_id(), + wallet_id: fvk2.wallet_id(), } ); } diff --git a/crates/core/keys/src/keys.rs b/crates/core/keys/src/keys.rs index dd60929408..39ea81ee3a 100644 --- a/crates/core/keys/src/keys.rs +++ b/crates/core/keys/src/keys.rs @@ -13,8 +13,8 @@ pub use spend::{SpendKey, SpendKeyBytes, SPENDKEY_LEN_BYTES}; mod bip44; pub use bip44::Bip44Path; -mod account_group; -pub use account_group::AccountGroupId; +mod wallet_id; +pub use wallet_id::WalletId; mod fvk; mod ivk; diff --git a/crates/core/keys/src/keys/bip44.rs b/crates/core/keys/src/keys/bip44.rs index 784ea285a1..bda5ea3a59 100644 --- a/crates/core/keys/src/keys/bip44.rs +++ b/crates/core/keys/src/keys/bip44.rs @@ -17,7 +17,7 @@ pub struct Bip44Path { } impl Bip44Path { - /// Create a new BIP44 path for a Penumbra account group. + /// Create a new BIP44 path for a Penumbra wallet. pub fn new(account: u32) -> Self { Self { purpose: 44, diff --git a/crates/core/keys/src/keys/fvk.rs b/crates/core/keys/src/keys/fvk.rs index 8d99d0dfb7..6f2918e0d2 100644 --- a/crates/core/keys/src/keys/fvk.rs +++ b/crates/core/keys/src/keys/fvk.rs @@ -12,7 +12,7 @@ use penumbra_proto::{ penumbra::core::keys::v1alpha1 as pb, serializers::bech32str, DomainType, TypeUrl, }; -use crate::keys::account_group::AccountGroupId; +use crate::keys::wallet_id::WalletId; use crate::{ fmd, ka, prf, rdsa::{SpendAuth, VerificationKey}, @@ -57,11 +57,11 @@ impl FullViewingKey { /// Views the structure of the supplied address with this viewing key. pub fn view_address(&self, address: Address) -> AddressView { // WART: this can't cleanly forward to a method on the IVK, - // because the IVK doesn't know the AccountGroupId. + // because the IVK doesn't know the WalletId. if self.incoming().views_address(&address) { AddressView::Visible { index: self.incoming().index_for_diversifier(address.diversifier()), - account_group_id: self.account_group_id(), + wallet_id: self.wallet_id(), address, } } else { @@ -124,8 +124,8 @@ impl FullViewingKey { &self.ak } - /// Hashes the full viewing key into an [`AccountGroupId`]. - pub fn account_group_id(&self) -> AccountGroupId { + /// Hashes the full viewing key into an [`WalletId`]. + pub fn wallet_id(&self) -> WalletId { let hash_result = hash_2( &ACCOUNT_ID_DOMAIN_SEP, ( @@ -136,7 +136,7 @@ impl FullViewingKey { let hash = hash_result.to_bytes()[..32] .try_into() .expect("hash is 32 bytes"); - AccountGroupId(hash) + WalletId(hash) } } diff --git a/crates/core/keys/src/keys/account_group.rs b/crates/core/keys/src/keys/wallet_id.rs similarity index 60% rename from crates/core/keys/src/keys/account_group.rs rename to crates/core/keys/src/keys/wallet_id.rs index 0ec82d87c1..35a42065b9 100644 --- a/crates/core/keys/src/keys/account_group.rs +++ b/crates/core/keys/src/keys/wallet_id.rs @@ -5,14 +5,14 @@ use penumbra_proto::{penumbra::core::keys::v1alpha1 as pb, serializers::bech32st /// The hash of a full viewing key, used as an account identifier. #[derive(Clone, Copy, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)] -#[serde(try_from = "pb::AccountGroupId", into = "pb::AccountGroupId")] -pub struct AccountGroupId(pub [u8; 32]); +#[serde(try_from = "pb::WalletId", into = "pb::WalletId")] +pub struct WalletId(pub [u8; 32]); -impl TryFrom for AccountGroupId { +impl TryFrom for WalletId { type Error = anyhow::Error; - fn try_from(value: v1alpha1::AccountGroupId) -> Result { - Ok(AccountGroupId( + fn try_from(value: v1alpha1::WalletId) -> Result { + Ok(WalletId( value .inner .try_into() @@ -21,25 +21,25 @@ impl TryFrom for AccountGroupId { } } -impl From for v1alpha1::AccountGroupId { - fn from(value: AccountGroupId) -> v1alpha1::AccountGroupId { - v1alpha1::AccountGroupId { +impl From for v1alpha1::WalletId { + fn from(value: WalletId) -> v1alpha1::WalletId { + v1alpha1::WalletId { inner: value.0.to_vec(), } } } -impl std::fmt::Debug for AccountGroupId { +impl std::fmt::Debug for WalletId { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { ::fmt(self, f) } } -impl std::fmt::Display for AccountGroupId { +impl std::fmt::Display for WalletId { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { f.write_str(&bech32str::encode( &self.0, - bech32str::account_group_id::BECH32_PREFIX, + bech32str::wallet_id::BECH32_PREFIX, bech32str::Bech32m, )) } diff --git a/crates/core/keys/tests/test_account_group.rs b/crates/core/keys/tests/test_wallet_id.rs similarity index 65% rename from crates/core/keys/tests/test_account_group.rs rename to crates/core/keys/tests/test_wallet_id.rs index 0ad2810662..4931b71434 100644 --- a/crates/core/keys/tests/test_account_group.rs +++ b/crates/core/keys/tests/test_wallet_id.rs @@ -6,26 +6,25 @@ use penumbra_keys::keys::{SeedPhrase, SpendKey}; use penumbra_proto::serializers::bech32str; #[test] -fn account_group_id_to_bech32() { +fn wallet_id_to_bech32() { let seed = SeedPhrase::from_str("comfort ten front cycle churn burger oak absent rice ice urge result art couple benefit cabbage frequent obscure hurry trick segment cool job debate").unwrap(); let spend_key = SpendKey::from_seed_phrase_bip39(seed, 0); let fvk = spend_key.full_viewing_key(); - let account_group_id = fvk.account_group_id(); - let actual_bech32_str = account_group_id.to_string(); + let wallet_id = fvk.wallet_id(); + let actual_bech32_str = wallet_id.to_string(); let expected_bech32_str = - "penumbraaccountgroupid15r7q7qsf3hhsgj0g530n7ng9acdacmmx9ajknjz38dyt90u9gcgs767wla" - .to_string(); + "penumbrawalletid15r7q7qsf3hhsgj0g530n7ng9acdacmmx9ajknjz38dyt90u9gcgsmjre75".to_string(); assert_eq!(expected_bech32_str, actual_bech32_str); // Decoding returns original inner vec let inner_bytes = bech32str::decode( &expected_bech32_str, - bech32str::account_group_id::BECH32_PREFIX, + bech32str::wallet_id::BECH32_PREFIX, bech32str::Bech32m, ) .unwrap(); - assert_eq!(account_group_id.0, inner_bytes.as_slice()); + assert_eq!(wallet_id.0, inner_bytes.as_slice()); } diff --git a/crates/custody/src/request.rs b/crates/custody/src/request.rs index 9c0b99df8b..2dd5a831e7 100644 --- a/crates/custody/src/request.rs +++ b/crates/custody/src/request.rs @@ -1,4 +1,4 @@ -use penumbra_keys::keys::AccountGroupId; +use penumbra_keys::keys::WalletId; use penumbra_proto::{custody::v1alpha1 as pb, DomainType, TypeUrl}; use penumbra_transaction::plan::TransactionPlan; @@ -10,7 +10,7 @@ pub struct AuthorizeRequest { /// The transaction plan to authorize. pub plan: TransactionPlan, /// Identifies the FVK (and hence the spend authorization key) to use for signing. - pub account_group_id: Option, + pub wallet_id: Option, /// Optionally, pre-authorization data, if required by the custodian. pub pre_authorizations: Vec, } @@ -31,7 +31,7 @@ impl TryFrom for AuthorizeRequest { .plan .ok_or_else(|| anyhow::anyhow!("missing plan"))? .try_into()?, - account_group_id: value.account_group_id.map(TryInto::try_into).transpose()?, + wallet_id: value.wallet_id.map(TryInto::try_into).transpose()?, pre_authorizations: value .pre_authorizations .into_iter() @@ -45,7 +45,7 @@ impl From for pb::AuthorizeRequest { fn from(value: AuthorizeRequest) -> pb::AuthorizeRequest { Self { plan: Some(value.plan.into()), - account_group_id: value.account_group_id.map(Into::into), + wallet_id: value.wallet_id.map(Into::into), pre_authorizations: value .pre_authorizations .into_iter() diff --git a/crates/proto/src/gen/penumbra.core.keys.v1alpha1.rs b/crates/proto/src/gen/penumbra.core.keys.v1alpha1.rs index c86101272f..964293e593 100644 --- a/crates/proto/src/gen/penumbra.core.keys.v1alpha1.rs +++ b/crates/proto/src/gen/penumbra.core.keys.v1alpha1.rs @@ -33,7 +33,7 @@ pub mod address_view { #[prost(message, optional, tag = "2")] pub index: ::core::option::Option, #[prost(message, optional, tag = "3")] - pub account_group_id: ::core::option::Option, + pub wallet_id: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -76,7 +76,7 @@ pub struct FullViewingKey { } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct AccountGroupId { +pub struct WalletId { #[prost(bytes = "vec", tag = "1")] pub inner: ::prost::alloc::vec::Vec, } diff --git a/crates/proto/src/gen/penumbra.core.keys.v1alpha1.serde.rs b/crates/proto/src/gen/penumbra.core.keys.v1alpha1.serde.rs index ded992ec24..363874e67b 100644 --- a/crates/proto/src/gen/penumbra.core.keys.v1alpha1.serde.rs +++ b/crates/proto/src/gen/penumbra.core.keys.v1alpha1.serde.rs @@ -1,96 +1,3 @@ -impl serde::Serialize for AccountGroupId { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.inner.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("penumbra.core.keys.v1alpha1.AccountGroupId", len)?; - if !self.inner.is_empty() { - struct_ser.serialize_field("inner", pbjson::private::base64::encode(&self.inner).as_str())?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for AccountGroupId { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "inner", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Inner, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "inner" => Ok(GeneratedField::Inner), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = AccountGroupId; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct penumbra.core.keys.v1alpha1.AccountGroupId") - } - - fn visit_map(self, mut map: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut inner__ = None; - while let Some(k) = map.next_key()? { - match k { - GeneratedField::Inner => { - if inner__.is_some() { - return Err(serde::de::Error::duplicate_field("inner")); - } - inner__ = - Some(map.next_value::<::pbjson::private::BytesDeserialize<_>>()?.0) - ; - } - } - } - Ok(AccountGroupId { - inner: inner__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("penumbra.core.keys.v1alpha1.AccountGroupId", FIELDS, GeneratedVisitor) - } -} impl serde::Serialize for Address { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result @@ -528,7 +435,7 @@ impl serde::Serialize for address_view::Visible { if self.index.is_some() { len += 1; } - if self.account_group_id.is_some() { + if self.wallet_id.is_some() { len += 1; } let mut struct_ser = serializer.serialize_struct("penumbra.core.keys.v1alpha1.AddressView.Visible", len)?; @@ -538,8 +445,8 @@ impl serde::Serialize for address_view::Visible { if let Some(v) = self.index.as_ref() { struct_ser.serialize_field("index", v)?; } - if let Some(v) = self.account_group_id.as_ref() { - struct_ser.serialize_field("accountGroupId", v)?; + if let Some(v) = self.wallet_id.as_ref() { + struct_ser.serialize_field("walletId", v)?; } struct_ser.end() } @@ -553,15 +460,15 @@ impl<'de> serde::Deserialize<'de> for address_view::Visible { const FIELDS: &[&str] = &[ "address", "index", - "account_group_id", - "accountGroupId", + "wallet_id", + "walletId", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { Address, Index, - AccountGroupId, + WalletId, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -585,7 +492,7 @@ impl<'de> serde::Deserialize<'de> for address_view::Visible { match value { "address" => Ok(GeneratedField::Address), "index" => Ok(GeneratedField::Index), - "accountGroupId" | "account_group_id" => Ok(GeneratedField::AccountGroupId), + "walletId" | "wallet_id" => Ok(GeneratedField::WalletId), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -607,7 +514,7 @@ impl<'de> serde::Deserialize<'de> for address_view::Visible { { let mut address__ = None; let mut index__ = None; - let mut account_group_id__ = None; + let mut wallet_id__ = None; while let Some(k) = map.next_key()? { match k { GeneratedField::Address => { @@ -622,18 +529,18 @@ impl<'de> serde::Deserialize<'de> for address_view::Visible { } index__ = map.next_value()?; } - GeneratedField::AccountGroupId => { - if account_group_id__.is_some() { - return Err(serde::de::Error::duplicate_field("accountGroupId")); + GeneratedField::WalletId => { + if wallet_id__.is_some() { + return Err(serde::de::Error::duplicate_field("walletId")); } - account_group_id__ = map.next_value()?; + wallet_id__ = map.next_value()?; } } } Ok(address_view::Visible { address: address__, index: index__, - account_group_id: account_group_id__, + wallet_id: wallet_id__, }) } } @@ -1384,3 +1291,96 @@ impl<'de> serde::Deserialize<'de> for SpendVerificationKey { deserializer.deserialize_struct("penumbra.core.keys.v1alpha1.SpendVerificationKey", FIELDS, GeneratedVisitor) } } +impl serde::Serialize for WalletId { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.inner.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("penumbra.core.keys.v1alpha1.WalletId", len)?; + if !self.inner.is_empty() { + struct_ser.serialize_field("inner", pbjson::private::base64::encode(&self.inner).as_str())?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for WalletId { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "inner", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Inner, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "inner" => Ok(GeneratedField::Inner), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = WalletId; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct penumbra.core.keys.v1alpha1.WalletId") + } + + fn visit_map(self, mut map: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut inner__ = None; + while let Some(k) = map.next_key()? { + match k { + GeneratedField::Inner => { + if inner__.is_some() { + return Err(serde::de::Error::duplicate_field("inner")); + } + inner__ = + Some(map.next_value::<::pbjson::private::BytesDeserialize<_>>()?.0) + ; + } + } + } + Ok(WalletId { + inner: inner__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("penumbra.core.keys.v1alpha1.WalletId", FIELDS, GeneratedVisitor) + } +} diff --git a/crates/proto/src/gen/penumbra.custody.v1alpha1.rs b/crates/proto/src/gen/penumbra.custody.v1alpha1.rs index d305b35791..e91cbafda1 100644 --- a/crates/proto/src/gen/penumbra.custody.v1alpha1.rs +++ b/crates/proto/src/gen/penumbra.custody.v1alpha1.rs @@ -8,9 +8,7 @@ pub struct AuthorizeRequest { >, /// Identifies the FVK (and hence the spend authorization key) to use for signing. #[prost(message, optional, tag = "2")] - pub account_group_id: ::core::option::Option< - super::super::core::keys::v1alpha1::AccountGroupId, - >, + pub wallet_id: ::core::option::Option, /// Optionally, pre-authorization data, if required by the custodian. /// /// Multiple `PreAuthorization` packets can be included in a single request, diff --git a/crates/proto/src/gen/penumbra.custody.v1alpha1.serde.rs b/crates/proto/src/gen/penumbra.custody.v1alpha1.serde.rs index f0446529f6..a3454e6b39 100644 --- a/crates/proto/src/gen/penumbra.custody.v1alpha1.serde.rs +++ b/crates/proto/src/gen/penumbra.custody.v1alpha1.serde.rs @@ -9,7 +9,7 @@ impl serde::Serialize for AuthorizeRequest { if self.plan.is_some() { len += 1; } - if self.account_group_id.is_some() { + if self.wallet_id.is_some() { len += 1; } if !self.pre_authorizations.is_empty() { @@ -19,8 +19,8 @@ impl serde::Serialize for AuthorizeRequest { if let Some(v) = self.plan.as_ref() { struct_ser.serialize_field("plan", v)?; } - if let Some(v) = self.account_group_id.as_ref() { - struct_ser.serialize_field("accountGroupId", v)?; + if let Some(v) = self.wallet_id.as_ref() { + struct_ser.serialize_field("walletId", v)?; } if !self.pre_authorizations.is_empty() { struct_ser.serialize_field("preAuthorizations", &self.pre_authorizations)?; @@ -36,8 +36,8 @@ impl<'de> serde::Deserialize<'de> for AuthorizeRequest { { const FIELDS: &[&str] = &[ "plan", - "account_group_id", - "accountGroupId", + "wallet_id", + "walletId", "pre_authorizations", "preAuthorizations", ]; @@ -45,7 +45,7 @@ impl<'de> serde::Deserialize<'de> for AuthorizeRequest { #[allow(clippy::enum_variant_names)] enum GeneratedField { Plan, - AccountGroupId, + WalletId, PreAuthorizations, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -69,7 +69,7 @@ impl<'de> serde::Deserialize<'de> for AuthorizeRequest { { match value { "plan" => Ok(GeneratedField::Plan), - "accountGroupId" | "account_group_id" => Ok(GeneratedField::AccountGroupId), + "walletId" | "wallet_id" => Ok(GeneratedField::WalletId), "preAuthorizations" | "pre_authorizations" => Ok(GeneratedField::PreAuthorizations), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } @@ -91,7 +91,7 @@ impl<'de> serde::Deserialize<'de> for AuthorizeRequest { V: serde::de::MapAccess<'de>, { let mut plan__ = None; - let mut account_group_id__ = None; + let mut wallet_id__ = None; let mut pre_authorizations__ = None; while let Some(k) = map.next_key()? { match k { @@ -101,11 +101,11 @@ impl<'de> serde::Deserialize<'de> for AuthorizeRequest { } plan__ = map.next_value()?; } - GeneratedField::AccountGroupId => { - if account_group_id__.is_some() { - return Err(serde::de::Error::duplicate_field("accountGroupId")); + GeneratedField::WalletId => { + if wallet_id__.is_some() { + return Err(serde::de::Error::duplicate_field("walletId")); } - account_group_id__ = map.next_value()?; + wallet_id__ = map.next_value()?; } GeneratedField::PreAuthorizations => { if pre_authorizations__.is_some() { @@ -117,7 +117,7 @@ impl<'de> serde::Deserialize<'de> for AuthorizeRequest { } Ok(AuthorizeRequest { plan: plan__, - account_group_id: account_group_id__, + wallet_id: wallet_id__, pre_authorizations: pre_authorizations__.unwrap_or_default(), }) } diff --git a/crates/proto/src/gen/penumbra.narsil.ledger.v1alpha1.rs b/crates/proto/src/gen/penumbra.narsil.ledger.v1alpha1.rs index 78be90a12b..12358fa80a 100644 --- a/crates/proto/src/gen/penumbra.narsil.ledger.v1alpha1.rs +++ b/crates/proto/src/gen/penumbra.narsil.ledger.v1alpha1.rs @@ -124,22 +124,22 @@ pub struct GenesisData { #[prost(uint32, tag = "2")] pub threshold: u32, } -/// Describes the Penumbra account group jointly controlled by the Narsil instance. +/// Describes the Penumbra wallet id jointly controlled by the Narsil instance. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct AccountGroupInfo { +pub struct WalletInfo { /// The full viewing key for the shared account. /// /// In the Penumbra key hierarchy, this is the highest-authority key below /// spend authority, and allows deriving all subkeys for all accounts in the - /// account group. It is replicated across all shards. + /// wallet id. It is replicated across all shards. /// /// The spend verification key component is the `PK` in the FROST I-D. #[prost(message, optional, tag = "1")] pub full_viewing_key: ::core::option::Option< super::super::super::core::keys::v1alpha1::FullViewingKey, >, - /// Describes the participants in the account group. + /// Describes the participants in the wallet id. #[prost(message, repeated, tag = "2")] pub participants: ::prost::alloc::vec::Vec, } @@ -510,7 +510,7 @@ pub mod dkg_state { #[prost(message, repeated, tag = "2")] pub round_2_messages: ::prost::alloc::vec::Vec, } - /// The DKG has finished successfully, producing the jointly-controlled `AccountGroupInfo`. + /// The DKG has finished successfully, producing the jointly-controlled `WalletInfo`. /// /// Unlike the signing ceremony, we don't record a failure case here: if the DKG fails, we abort the entire ledger. #[allow(clippy::derive_partial_eq_without_eq)] @@ -522,9 +522,9 @@ pub mod dkg_state { /// A list of messages received during round 2. #[prost(message, repeated, tag = "2")] pub round_2_messages: ::prost::alloc::vec::Vec, - /// The jointly-controlled `AccountGroupInfo` resulting from the DKG. + /// The jointly-controlled `WalletInfo` resulting from the DKG. #[prost(message, optional, tag = "3")] - pub account_group_info: ::core::option::Option, + pub wallet_info: ::core::option::Option, } } /// Generated client implementations. diff --git a/crates/proto/src/gen/penumbra.narsil.ledger.v1alpha1.serde.rs b/crates/proto/src/gen/penumbra.narsil.ledger.v1alpha1.serde.rs index 20788c13cd..bf4a5a8fb5 100644 --- a/crates/proto/src/gen/penumbra.narsil.ledger.v1alpha1.serde.rs +++ b/crates/proto/src/gen/penumbra.narsil.ledger.v1alpha1.serde.rs @@ -1,112 +1,3 @@ -impl serde::Serialize for AccountGroupInfo { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if self.full_viewing_key.is_some() { - len += 1; - } - if !self.participants.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("penumbra.narsil.ledger.v1alpha1.AccountGroupInfo", len)?; - if let Some(v) = self.full_viewing_key.as_ref() { - struct_ser.serialize_field("fullViewingKey", v)?; - } - if !self.participants.is_empty() { - struct_ser.serialize_field("participants", &self.participants)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for AccountGroupInfo { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "full_viewing_key", - "fullViewingKey", - "participants", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - FullViewingKey, - Participants, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "fullViewingKey" | "full_viewing_key" => Ok(GeneratedField::FullViewingKey), - "participants" => Ok(GeneratedField::Participants), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = AccountGroupInfo; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct penumbra.narsil.ledger.v1alpha1.AccountGroupInfo") - } - - fn visit_map(self, mut map: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut full_viewing_key__ = None; - let mut participants__ = None; - while let Some(k) = map.next_key()? { - match k { - GeneratedField::FullViewingKey => { - if full_viewing_key__.is_some() { - return Err(serde::de::Error::duplicate_field("fullViewingKey")); - } - full_viewing_key__ = map.next_value()?; - } - GeneratedField::Participants => { - if participants__.is_some() { - return Err(serde::de::Error::duplicate_field("participants")); - } - participants__ = Some(map.next_value()?); - } - } - } - Ok(AccountGroupInfo { - full_viewing_key: full_viewing_key__, - participants: participants__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("penumbra.narsil.ledger.v1alpha1.AccountGroupInfo", FIELDS, GeneratedVisitor) - } -} impl serde::Serialize for AuthorizeCommitment { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result @@ -2387,7 +2278,7 @@ impl serde::Serialize for dkg_state::Finished { if !self.round_2_messages.is_empty() { len += 1; } - if self.account_group_info.is_some() { + if self.wallet_info.is_some() { len += 1; } let mut struct_ser = serializer.serialize_struct("penumbra.narsil.ledger.v1alpha1.DkgState.Finished", len)?; @@ -2397,8 +2288,8 @@ impl serde::Serialize for dkg_state::Finished { if !self.round_2_messages.is_empty() { struct_ser.serialize_field("round2Messages", &self.round_2_messages)?; } - if let Some(v) = self.account_group_info.as_ref() { - struct_ser.serialize_field("accountGroupInfo", v)?; + if let Some(v) = self.wallet_info.as_ref() { + struct_ser.serialize_field("walletInfo", v)?; } struct_ser.end() } @@ -2414,15 +2305,15 @@ impl<'de> serde::Deserialize<'de> for dkg_state::Finished { "round1Messages", "round_2_messages", "round2Messages", - "account_group_info", - "accountGroupInfo", + "wallet_info", + "walletInfo", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { Round1Messages, Round2Messages, - AccountGroupInfo, + WalletInfo, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -2446,7 +2337,7 @@ impl<'de> serde::Deserialize<'de> for dkg_state::Finished { match value { "round1Messages" | "round_1_messages" => Ok(GeneratedField::Round1Messages), "round2Messages" | "round_2_messages" => Ok(GeneratedField::Round2Messages), - "accountGroupInfo" | "account_group_info" => Ok(GeneratedField::AccountGroupInfo), + "walletInfo" | "wallet_info" => Ok(GeneratedField::WalletInfo), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -2468,7 +2359,7 @@ impl<'de> serde::Deserialize<'de> for dkg_state::Finished { { let mut round_1_messages__ = None; let mut round_2_messages__ = None; - let mut account_group_info__ = None; + let mut wallet_info__ = None; while let Some(k) = map.next_key()? { match k { GeneratedField::Round1Messages => { @@ -2483,18 +2374,18 @@ impl<'de> serde::Deserialize<'de> for dkg_state::Finished { } round_2_messages__ = Some(map.next_value()?); } - GeneratedField::AccountGroupInfo => { - if account_group_info__.is_some() { - return Err(serde::de::Error::duplicate_field("accountGroupInfo")); + GeneratedField::WalletInfo => { + if wallet_info__.is_some() { + return Err(serde::de::Error::duplicate_field("walletInfo")); } - account_group_info__ = map.next_value()?; + wallet_info__ = map.next_value()?; } } } Ok(dkg_state::Finished { round_1_messages: round_1_messages__.unwrap_or_default(), round_2_messages: round_2_messages__.unwrap_or_default(), - account_group_info: account_group_info__, + wallet_info: wallet_info__, }) } } @@ -4319,3 +4210,112 @@ impl<'de> serde::Deserialize<'de> for ShardOperator { deserializer.deserialize_struct("penumbra.narsil.ledger.v1alpha1.ShardOperator", FIELDS, GeneratedVisitor) } } +impl serde::Serialize for WalletInfo { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.full_viewing_key.is_some() { + len += 1; + } + if !self.participants.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("penumbra.narsil.ledger.v1alpha1.WalletInfo", len)?; + if let Some(v) = self.full_viewing_key.as_ref() { + struct_ser.serialize_field("fullViewingKey", v)?; + } + if !self.participants.is_empty() { + struct_ser.serialize_field("participants", &self.participants)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for WalletInfo { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "full_viewing_key", + "fullViewingKey", + "participants", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + FullViewingKey, + Participants, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "fullViewingKey" | "full_viewing_key" => Ok(GeneratedField::FullViewingKey), + "participants" => Ok(GeneratedField::Participants), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = WalletInfo; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct penumbra.narsil.ledger.v1alpha1.WalletInfo") + } + + fn visit_map(self, mut map: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut full_viewing_key__ = None; + let mut participants__ = None; + while let Some(k) = map.next_key()? { + match k { + GeneratedField::FullViewingKey => { + if full_viewing_key__.is_some() { + return Err(serde::de::Error::duplicate_field("fullViewingKey")); + } + full_viewing_key__ = map.next_value()?; + } + GeneratedField::Participants => { + if participants__.is_some() { + return Err(serde::de::Error::duplicate_field("participants")); + } + participants__ = Some(map.next_value()?); + } + } + } + Ok(WalletInfo { + full_viewing_key: full_viewing_key__, + participants: participants__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("penumbra.narsil.ledger.v1alpha1.WalletInfo", FIELDS, GeneratedVisitor) + } +} diff --git a/crates/proto/src/gen/penumbra.view.v1alpha1.rs b/crates/proto/src/gen/penumbra.view.v1alpha1.rs index 554a42079a..d4b73d8c68 100644 --- a/crates/proto/src/gen/penumbra.view.v1alpha1.rs +++ b/crates/proto/src/gen/penumbra.view.v1alpha1.rs @@ -62,11 +62,9 @@ pub struct TransactionPlannerRequest { /// If present, only spends funds from the given account. #[prost(message, optional, tag = "4")] pub source: ::core::option::Option, - /// Optionally identifies the account group to query. + /// Optionally identifies the wallet id to query. #[prost(message, optional, tag = "14")] - pub account_group_id: ::core::option::Option< - super::super::core::keys::v1alpha1::AccountGroupId, - >, + pub wallet_id: ::core::option::Option, /// Request contents #[prost(message, repeated, tag = "20")] pub outputs: ::prost::alloc::vec::Vec, @@ -314,11 +312,9 @@ pub struct ViewAuthResponse { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct StatusRequest { - /// Identifies the account group to query. + /// Identifies the wallet id to query. #[prost(message, optional, tag = "14")] - pub account_group_id: ::core::option::Option< - super::super::core::keys::v1alpha1::AccountGroupId, - >, + pub wallet_id: ::core::option::Option, } /// Returns the status of the view service and whether it is synchronized with the chain state. #[allow(clippy::derive_partial_eq_without_eq)] @@ -335,11 +331,9 @@ pub struct StatusResponse { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct StatusStreamRequest { - /// Identifies the account group to query. + /// Identifies the wallet id to query. #[prost(message, optional, tag = "14")] - pub account_group_id: ::core::option::Option< - super::super::core::keys::v1alpha1::AccountGroupId, - >, + pub wallet_id: ::core::option::Option, } /// A streaming sync status update #[allow(clippy::derive_partial_eq_without_eq)] @@ -375,11 +369,9 @@ pub struct NotesRequest { pub amount_to_spend: ::core::option::Option< super::super::core::num::v1alpha1::Amount, >, - /// Identifies the account group to query. + /// Identifies the wallet id to query. #[prost(message, optional, tag = "14")] - pub account_group_id: ::core::option::Option< - super::super::core::keys::v1alpha1::AccountGroupId, - >, + pub wallet_id: ::core::option::Option, } /// A query for notes to be used for voting on a proposal. #[allow(clippy::derive_partial_eq_without_eq)] @@ -393,11 +385,9 @@ pub struct NotesForVotingRequest { pub address_index: ::core::option::Option< super::super::core::keys::v1alpha1::AddressIndex, >, - /// Identifies the account group to query. + /// Identifies the wallet id to query. #[prost(message, optional, tag = "14")] - pub account_group_id: ::core::option::Option< - super::super::core::keys::v1alpha1::AccountGroupId, - >, + pub wallet_id: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -412,11 +402,9 @@ pub struct WitnessRequest { pub transaction_plan: ::core::option::Option< super::super::core::transaction::v1alpha1::TransactionPlan, >, - /// Identifies the account group to query. + /// Identifies the wallet id to query. #[prost(message, optional, tag = "14")] - pub account_group_id: ::core::option::Option< - super::super::core::keys::v1alpha1::AccountGroupId, - >, + pub wallet_id: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -518,11 +506,9 @@ pub struct NoteByCommitmentRequest { /// If set to true, waits to return until the requested note is detected. #[prost(bool, tag = "3")] pub await_detection: bool, - /// Identifies the account group to query. + /// Identifies the wallet id to query. #[prost(message, optional, tag = "14")] - pub account_group_id: ::core::option::Option< - super::super::core::keys::v1alpha1::AccountGroupId, - >, + pub wallet_id: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -540,11 +526,9 @@ pub struct SwapByCommitmentRequest { /// If set to true, waits to return until the requested swap is detected. #[prost(bool, tag = "3")] pub await_detection: bool, - /// Identifies the account group to query. + /// Identifies the wallet id to query. #[prost(message, optional, tag = "14")] - pub account_group_id: ::core::option::Option< - super::super::core::keys::v1alpha1::AccountGroupId, - >, + pub wallet_id: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -555,11 +539,9 @@ pub struct SwapByCommitmentResponse { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct UnclaimedSwapsRequest { - /// Identifies the account group to query. + /// Identifies the wallet id to query. #[prost(message, optional, tag = "1")] - pub account_group_id: ::core::option::Option< - super::super::core::keys::v1alpha1::AccountGroupId, - >, + pub wallet_id: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -576,11 +558,9 @@ pub struct NullifierStatusRequest { >, #[prost(bool, tag = "3")] pub await_detection: bool, - /// Identifies the account group to query. + /// Identifies the wallet id to query. #[prost(message, optional, tag = "14")] - pub account_group_id: ::core::option::Option< - super::super::core::keys::v1alpha1::AccountGroupId, - >, + pub wallet_id: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -758,7 +738,7 @@ pub mod view_protocol_service_client { /// responsible for synchronizing and scanning the public chain state with one or /// more full viewing keys. /// - /// View protocol requests optionally include the account group ID, used to + /// View protocol requests optionally include the wallet id, used to /// identify which set of data to query. #[derive(Debug, Clone)] pub struct ViewProtocolServiceClient { @@ -1919,7 +1899,7 @@ pub mod view_protocol_service_server { /// responsible for synchronizing and scanning the public chain state with one or /// more full viewing keys. /// - /// View protocol requests optionally include the account group ID, used to + /// View protocol requests optionally include the wallet id, used to /// identify which set of data to query. #[derive(Debug)] pub struct ViewProtocolServiceServer { diff --git a/crates/proto/src/gen/penumbra.view.v1alpha1.serde.rs b/crates/proto/src/gen/penumbra.view.v1alpha1.serde.rs index 028f830ec4..2aa40c85fb 100644 --- a/crates/proto/src/gen/penumbra.view.v1alpha1.serde.rs +++ b/crates/proto/src/gen/penumbra.view.v1alpha1.serde.rs @@ -1851,7 +1851,7 @@ impl serde::Serialize for NoteByCommitmentRequest { if self.await_detection { len += 1; } - if self.account_group_id.is_some() { + if self.wallet_id.is_some() { len += 1; } let mut struct_ser = serializer.serialize_struct("penumbra.view.v1alpha1.NoteByCommitmentRequest", len)?; @@ -1861,8 +1861,8 @@ impl serde::Serialize for NoteByCommitmentRequest { if self.await_detection { struct_ser.serialize_field("awaitDetection", &self.await_detection)?; } - if let Some(v) = self.account_group_id.as_ref() { - struct_ser.serialize_field("accountGroupId", v)?; + if let Some(v) = self.wallet_id.as_ref() { + struct_ser.serialize_field("walletId", v)?; } struct_ser.end() } @@ -1878,15 +1878,15 @@ impl<'de> serde::Deserialize<'de> for NoteByCommitmentRequest { "noteCommitment", "await_detection", "awaitDetection", - "account_group_id", - "accountGroupId", + "wallet_id", + "walletId", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { NoteCommitment, AwaitDetection, - AccountGroupId, + WalletId, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -1910,7 +1910,7 @@ impl<'de> serde::Deserialize<'de> for NoteByCommitmentRequest { match value { "noteCommitment" | "note_commitment" => Ok(GeneratedField::NoteCommitment), "awaitDetection" | "await_detection" => Ok(GeneratedField::AwaitDetection), - "accountGroupId" | "account_group_id" => Ok(GeneratedField::AccountGroupId), + "walletId" | "wallet_id" => Ok(GeneratedField::WalletId), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -1932,7 +1932,7 @@ impl<'de> serde::Deserialize<'de> for NoteByCommitmentRequest { { let mut note_commitment__ = None; let mut await_detection__ = None; - let mut account_group_id__ = None; + let mut wallet_id__ = None; while let Some(k) = map.next_key()? { match k { GeneratedField::NoteCommitment => { @@ -1947,18 +1947,18 @@ impl<'de> serde::Deserialize<'de> for NoteByCommitmentRequest { } await_detection__ = Some(map.next_value()?); } - GeneratedField::AccountGroupId => { - if account_group_id__.is_some() { - return Err(serde::de::Error::duplicate_field("accountGroupId")); + GeneratedField::WalletId => { + if wallet_id__.is_some() { + return Err(serde::de::Error::duplicate_field("walletId")); } - account_group_id__ = map.next_value()?; + wallet_id__ = map.next_value()?; } } } Ok(NoteByCommitmentRequest { note_commitment: note_commitment__, await_detection: await_detection__.unwrap_or_default(), - account_group_id: account_group_id__, + wallet_id: wallet_id__, }) } } @@ -2071,7 +2071,7 @@ impl serde::Serialize for NotesForVotingRequest { if self.address_index.is_some() { len += 1; } - if self.account_group_id.is_some() { + if self.wallet_id.is_some() { len += 1; } let mut struct_ser = serializer.serialize_struct("penumbra.view.v1alpha1.NotesForVotingRequest", len)?; @@ -2081,8 +2081,8 @@ impl serde::Serialize for NotesForVotingRequest { if let Some(v) = self.address_index.as_ref() { struct_ser.serialize_field("addressIndex", v)?; } - if let Some(v) = self.account_group_id.as_ref() { - struct_ser.serialize_field("accountGroupId", v)?; + if let Some(v) = self.wallet_id.as_ref() { + struct_ser.serialize_field("walletId", v)?; } struct_ser.end() } @@ -2098,15 +2098,15 @@ impl<'de> serde::Deserialize<'de> for NotesForVotingRequest { "votableAtHeight", "address_index", "addressIndex", - "account_group_id", - "accountGroupId", + "wallet_id", + "walletId", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { VotableAtHeight, AddressIndex, - AccountGroupId, + WalletId, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -2130,7 +2130,7 @@ impl<'de> serde::Deserialize<'de> for NotesForVotingRequest { match value { "votableAtHeight" | "votable_at_height" => Ok(GeneratedField::VotableAtHeight), "addressIndex" | "address_index" => Ok(GeneratedField::AddressIndex), - "accountGroupId" | "account_group_id" => Ok(GeneratedField::AccountGroupId), + "walletId" | "wallet_id" => Ok(GeneratedField::WalletId), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -2152,7 +2152,7 @@ impl<'de> serde::Deserialize<'de> for NotesForVotingRequest { { let mut votable_at_height__ = None; let mut address_index__ = None; - let mut account_group_id__ = None; + let mut wallet_id__ = None; while let Some(k) = map.next_key()? { match k { GeneratedField::VotableAtHeight => { @@ -2169,18 +2169,18 @@ impl<'de> serde::Deserialize<'de> for NotesForVotingRequest { } address_index__ = map.next_value()?; } - GeneratedField::AccountGroupId => { - if account_group_id__.is_some() { - return Err(serde::de::Error::duplicate_field("accountGroupId")); + GeneratedField::WalletId => { + if wallet_id__.is_some() { + return Err(serde::de::Error::duplicate_field("walletId")); } - account_group_id__ = map.next_value()?; + wallet_id__ = map.next_value()?; } } } Ok(NotesForVotingRequest { votable_at_height: votable_at_height__.unwrap_or_default(), address_index: address_index__, - account_group_id: account_group_id__, + wallet_id: wallet_id__, }) } } @@ -2317,7 +2317,7 @@ impl serde::Serialize for NotesRequest { if self.amount_to_spend.is_some() { len += 1; } - if self.account_group_id.is_some() { + if self.wallet_id.is_some() { len += 1; } let mut struct_ser = serializer.serialize_struct("penumbra.view.v1alpha1.NotesRequest", len)?; @@ -2333,8 +2333,8 @@ impl serde::Serialize for NotesRequest { if let Some(v) = self.amount_to_spend.as_ref() { struct_ser.serialize_field("amountToSpend", v)?; } - if let Some(v) = self.account_group_id.as_ref() { - struct_ser.serialize_field("accountGroupId", v)?; + if let Some(v) = self.wallet_id.as_ref() { + struct_ser.serialize_field("walletId", v)?; } struct_ser.end() } @@ -2354,8 +2354,8 @@ impl<'de> serde::Deserialize<'de> for NotesRequest { "addressIndex", "amount_to_spend", "amountToSpend", - "account_group_id", - "accountGroupId", + "wallet_id", + "walletId", ]; #[allow(clippy::enum_variant_names)] @@ -2364,7 +2364,7 @@ impl<'de> serde::Deserialize<'de> for NotesRequest { AssetId, AddressIndex, AmountToSpend, - AccountGroupId, + WalletId, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -2390,7 +2390,7 @@ impl<'de> serde::Deserialize<'de> for NotesRequest { "assetId" | "asset_id" => Ok(GeneratedField::AssetId), "addressIndex" | "address_index" => Ok(GeneratedField::AddressIndex), "amountToSpend" | "amount_to_spend" => Ok(GeneratedField::AmountToSpend), - "accountGroupId" | "account_group_id" => Ok(GeneratedField::AccountGroupId), + "walletId" | "wallet_id" => Ok(GeneratedField::WalletId), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -2414,7 +2414,7 @@ impl<'de> serde::Deserialize<'de> for NotesRequest { let mut asset_id__ = None; let mut address_index__ = None; let mut amount_to_spend__ = None; - let mut account_group_id__ = None; + let mut wallet_id__ = None; while let Some(k) = map.next_key()? { match k { GeneratedField::IncludeSpent => { @@ -2441,11 +2441,11 @@ impl<'de> serde::Deserialize<'de> for NotesRequest { } amount_to_spend__ = map.next_value()?; } - GeneratedField::AccountGroupId => { - if account_group_id__.is_some() { - return Err(serde::de::Error::duplicate_field("accountGroupId")); + GeneratedField::WalletId => { + if wallet_id__.is_some() { + return Err(serde::de::Error::duplicate_field("walletId")); } - account_group_id__ = map.next_value()?; + wallet_id__ = map.next_value()?; } } } @@ -2454,7 +2454,7 @@ impl<'de> serde::Deserialize<'de> for NotesRequest { asset_id: asset_id__, address_index: address_index__, amount_to_spend: amount_to_spend__, - account_group_id: account_group_id__, + wallet_id: wallet_id__, }) } } @@ -2567,7 +2567,7 @@ impl serde::Serialize for NullifierStatusRequest { if self.await_detection { len += 1; } - if self.account_group_id.is_some() { + if self.wallet_id.is_some() { len += 1; } let mut struct_ser = serializer.serialize_struct("penumbra.view.v1alpha1.NullifierStatusRequest", len)?; @@ -2577,8 +2577,8 @@ impl serde::Serialize for NullifierStatusRequest { if self.await_detection { struct_ser.serialize_field("awaitDetection", &self.await_detection)?; } - if let Some(v) = self.account_group_id.as_ref() { - struct_ser.serialize_field("accountGroupId", v)?; + if let Some(v) = self.wallet_id.as_ref() { + struct_ser.serialize_field("walletId", v)?; } struct_ser.end() } @@ -2593,15 +2593,15 @@ impl<'de> serde::Deserialize<'de> for NullifierStatusRequest { "nullifier", "await_detection", "awaitDetection", - "account_group_id", - "accountGroupId", + "wallet_id", + "walletId", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { Nullifier, AwaitDetection, - AccountGroupId, + WalletId, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -2625,7 +2625,7 @@ impl<'de> serde::Deserialize<'de> for NullifierStatusRequest { match value { "nullifier" => Ok(GeneratedField::Nullifier), "awaitDetection" | "await_detection" => Ok(GeneratedField::AwaitDetection), - "accountGroupId" | "account_group_id" => Ok(GeneratedField::AccountGroupId), + "walletId" | "wallet_id" => Ok(GeneratedField::WalletId), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -2647,7 +2647,7 @@ impl<'de> serde::Deserialize<'de> for NullifierStatusRequest { { let mut nullifier__ = None; let mut await_detection__ = None; - let mut account_group_id__ = None; + let mut wallet_id__ = None; while let Some(k) = map.next_key()? { match k { GeneratedField::Nullifier => { @@ -2662,18 +2662,18 @@ impl<'de> serde::Deserialize<'de> for NullifierStatusRequest { } await_detection__ = Some(map.next_value()?); } - GeneratedField::AccountGroupId => { - if account_group_id__.is_some() { - return Err(serde::de::Error::duplicate_field("accountGroupId")); + GeneratedField::WalletId => { + if wallet_id__.is_some() { + return Err(serde::de::Error::duplicate_field("walletId")); } - account_group_id__ = map.next_value()?; + wallet_id__ = map.next_value()?; } } } Ok(NullifierStatusRequest { nullifier: nullifier__, await_detection: await_detection__.unwrap_or_default(), - account_group_id: account_group_id__, + wallet_id: wallet_id__, }) } } @@ -3201,12 +3201,12 @@ impl serde::Serialize for StatusRequest { { use serde::ser::SerializeStruct; let mut len = 0; - if self.account_group_id.is_some() { + if self.wallet_id.is_some() { len += 1; } let mut struct_ser = serializer.serialize_struct("penumbra.view.v1alpha1.StatusRequest", len)?; - if let Some(v) = self.account_group_id.as_ref() { - struct_ser.serialize_field("accountGroupId", v)?; + if let Some(v) = self.wallet_id.as_ref() { + struct_ser.serialize_field("walletId", v)?; } struct_ser.end() } @@ -3218,13 +3218,13 @@ impl<'de> serde::Deserialize<'de> for StatusRequest { D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "account_group_id", - "accountGroupId", + "wallet_id", + "walletId", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - AccountGroupId, + WalletId, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -3246,7 +3246,7 @@ impl<'de> serde::Deserialize<'de> for StatusRequest { E: serde::de::Error, { match value { - "accountGroupId" | "account_group_id" => Ok(GeneratedField::AccountGroupId), + "walletId" | "wallet_id" => Ok(GeneratedField::WalletId), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -3266,19 +3266,19 @@ impl<'de> serde::Deserialize<'de> for StatusRequest { where V: serde::de::MapAccess<'de>, { - let mut account_group_id__ = None; + let mut wallet_id__ = None; while let Some(k) = map.next_key()? { match k { - GeneratedField::AccountGroupId => { - if account_group_id__.is_some() { - return Err(serde::de::Error::duplicate_field("accountGroupId")); + GeneratedField::WalletId => { + if wallet_id__.is_some() { + return Err(serde::de::Error::duplicate_field("walletId")); } - account_group_id__ = map.next_value()?; + wallet_id__ = map.next_value()?; } } } Ok(StatusRequest { - account_group_id: account_group_id__, + wallet_id: wallet_id__, }) } } @@ -3405,12 +3405,12 @@ impl serde::Serialize for StatusStreamRequest { { use serde::ser::SerializeStruct; let mut len = 0; - if self.account_group_id.is_some() { + if self.wallet_id.is_some() { len += 1; } let mut struct_ser = serializer.serialize_struct("penumbra.view.v1alpha1.StatusStreamRequest", len)?; - if let Some(v) = self.account_group_id.as_ref() { - struct_ser.serialize_field("accountGroupId", v)?; + if let Some(v) = self.wallet_id.as_ref() { + struct_ser.serialize_field("walletId", v)?; } struct_ser.end() } @@ -3422,13 +3422,13 @@ impl<'de> serde::Deserialize<'de> for StatusStreamRequest { D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "account_group_id", - "accountGroupId", + "wallet_id", + "walletId", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - AccountGroupId, + WalletId, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -3450,7 +3450,7 @@ impl<'de> serde::Deserialize<'de> for StatusStreamRequest { E: serde::de::Error, { match value { - "accountGroupId" | "account_group_id" => Ok(GeneratedField::AccountGroupId), + "walletId" | "wallet_id" => Ok(GeneratedField::WalletId), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -3470,19 +3470,19 @@ impl<'de> serde::Deserialize<'de> for StatusStreamRequest { where V: serde::de::MapAccess<'de>, { - let mut account_group_id__ = None; + let mut wallet_id__ = None; while let Some(k) = map.next_key()? { match k { - GeneratedField::AccountGroupId => { - if account_group_id__.is_some() { - return Err(serde::de::Error::duplicate_field("accountGroupId")); + GeneratedField::WalletId => { + if wallet_id__.is_some() { + return Err(serde::de::Error::duplicate_field("walletId")); } - account_group_id__ = map.next_value()?; + wallet_id__ = map.next_value()?; } } } Ok(StatusStreamRequest { - account_group_id: account_group_id__, + wallet_id: wallet_id__, }) } } @@ -3617,7 +3617,7 @@ impl serde::Serialize for SwapByCommitmentRequest { if self.await_detection { len += 1; } - if self.account_group_id.is_some() { + if self.wallet_id.is_some() { len += 1; } let mut struct_ser = serializer.serialize_struct("penumbra.view.v1alpha1.SwapByCommitmentRequest", len)?; @@ -3627,8 +3627,8 @@ impl serde::Serialize for SwapByCommitmentRequest { if self.await_detection { struct_ser.serialize_field("awaitDetection", &self.await_detection)?; } - if let Some(v) = self.account_group_id.as_ref() { - struct_ser.serialize_field("accountGroupId", v)?; + if let Some(v) = self.wallet_id.as_ref() { + struct_ser.serialize_field("walletId", v)?; } struct_ser.end() } @@ -3644,15 +3644,15 @@ impl<'de> serde::Deserialize<'de> for SwapByCommitmentRequest { "swapCommitment", "await_detection", "awaitDetection", - "account_group_id", - "accountGroupId", + "wallet_id", + "walletId", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { SwapCommitment, AwaitDetection, - AccountGroupId, + WalletId, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -3676,7 +3676,7 @@ impl<'de> serde::Deserialize<'de> for SwapByCommitmentRequest { match value { "swapCommitment" | "swap_commitment" => Ok(GeneratedField::SwapCommitment), "awaitDetection" | "await_detection" => Ok(GeneratedField::AwaitDetection), - "accountGroupId" | "account_group_id" => Ok(GeneratedField::AccountGroupId), + "walletId" | "wallet_id" => Ok(GeneratedField::WalletId), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -3698,7 +3698,7 @@ impl<'de> serde::Deserialize<'de> for SwapByCommitmentRequest { { let mut swap_commitment__ = None; let mut await_detection__ = None; - let mut account_group_id__ = None; + let mut wallet_id__ = None; while let Some(k) = map.next_key()? { match k { GeneratedField::SwapCommitment => { @@ -3713,18 +3713,18 @@ impl<'de> serde::Deserialize<'de> for SwapByCommitmentRequest { } await_detection__ = Some(map.next_value()?); } - GeneratedField::AccountGroupId => { - if account_group_id__.is_some() { - return Err(serde::de::Error::duplicate_field("accountGroupId")); + GeneratedField::WalletId => { + if wallet_id__.is_some() { + return Err(serde::de::Error::duplicate_field("walletId")); } - account_group_id__ = map.next_value()?; + wallet_id__ = map.next_value()?; } } } Ok(SwapByCommitmentRequest { swap_commitment: swap_commitment__, await_detection: await_detection__.unwrap_or_default(), - account_group_id: account_group_id__, + wallet_id: wallet_id__, }) } } @@ -4592,7 +4592,7 @@ impl serde::Serialize for TransactionPlannerRequest { if self.source.is_some() { len += 1; } - if self.account_group_id.is_some() { + if self.wallet_id.is_some() { len += 1; } if !self.outputs.is_empty() { @@ -4635,8 +4635,8 @@ impl serde::Serialize for TransactionPlannerRequest { if let Some(v) = self.source.as_ref() { struct_ser.serialize_field("source", v)?; } - if let Some(v) = self.account_group_id.as_ref() { - struct_ser.serialize_field("accountGroupId", v)?; + if let Some(v) = self.wallet_id.as_ref() { + struct_ser.serialize_field("walletId", v)?; } if !self.outputs.is_empty() { struct_ser.serialize_field("outputs", &self.outputs)?; @@ -4680,8 +4680,8 @@ impl<'de> serde::Deserialize<'de> for TransactionPlannerRequest { "fee", "memo", "source", - "account_group_id", - "accountGroupId", + "wallet_id", + "walletId", "outputs", "swaps", "swap_claims", @@ -4704,7 +4704,7 @@ impl<'de> serde::Deserialize<'de> for TransactionPlannerRequest { Fee, Memo, Source, - AccountGroupId, + WalletId, Outputs, Swaps, SwapClaims, @@ -4739,7 +4739,7 @@ impl<'de> serde::Deserialize<'de> for TransactionPlannerRequest { "fee" => Ok(GeneratedField::Fee), "memo" => Ok(GeneratedField::Memo), "source" => Ok(GeneratedField::Source), - "accountGroupId" | "account_group_id" => Ok(GeneratedField::AccountGroupId), + "walletId" | "wallet_id" => Ok(GeneratedField::WalletId), "outputs" => Ok(GeneratedField::Outputs), "swaps" => Ok(GeneratedField::Swaps), "swapClaims" | "swap_claims" => Ok(GeneratedField::SwapClaims), @@ -4772,7 +4772,7 @@ impl<'de> serde::Deserialize<'de> for TransactionPlannerRequest { let mut fee__ = None; let mut memo__ = None; let mut source__ = None; - let mut account_group_id__ = None; + let mut wallet_id__ = None; let mut outputs__ = None; let mut swaps__ = None; let mut swap_claims__ = None; @@ -4810,11 +4810,11 @@ impl<'de> serde::Deserialize<'de> for TransactionPlannerRequest { } source__ = map.next_value()?; } - GeneratedField::AccountGroupId => { - if account_group_id__.is_some() { - return Err(serde::de::Error::duplicate_field("accountGroupId")); + GeneratedField::WalletId => { + if wallet_id__.is_some() { + return Err(serde::de::Error::duplicate_field("walletId")); } - account_group_id__ = map.next_value()?; + wallet_id__ = map.next_value()?; } GeneratedField::Outputs => { if outputs__.is_some() { @@ -4877,7 +4877,7 @@ impl<'de> serde::Deserialize<'de> for TransactionPlannerRequest { fee: fee__, memo: memo__, source: source__, - account_group_id: account_group_id__, + wallet_id: wallet_id__, outputs: outputs__.unwrap_or_default(), swaps: swaps__.unwrap_or_default(), swap_claims: swap_claims__.unwrap_or_default(), @@ -5864,12 +5864,12 @@ impl serde::Serialize for UnclaimedSwapsRequest { { use serde::ser::SerializeStruct; let mut len = 0; - if self.account_group_id.is_some() { + if self.wallet_id.is_some() { len += 1; } let mut struct_ser = serializer.serialize_struct("penumbra.view.v1alpha1.UnclaimedSwapsRequest", len)?; - if let Some(v) = self.account_group_id.as_ref() { - struct_ser.serialize_field("accountGroupId", v)?; + if let Some(v) = self.wallet_id.as_ref() { + struct_ser.serialize_field("walletId", v)?; } struct_ser.end() } @@ -5881,13 +5881,13 @@ impl<'de> serde::Deserialize<'de> for UnclaimedSwapsRequest { D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ - "account_group_id", - "accountGroupId", + "wallet_id", + "walletId", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { - AccountGroupId, + WalletId, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -5909,7 +5909,7 @@ impl<'de> serde::Deserialize<'de> for UnclaimedSwapsRequest { E: serde::de::Error, { match value { - "accountGroupId" | "account_group_id" => Ok(GeneratedField::AccountGroupId), + "walletId" | "wallet_id" => Ok(GeneratedField::WalletId), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -5929,19 +5929,19 @@ impl<'de> serde::Deserialize<'de> for UnclaimedSwapsRequest { where V: serde::de::MapAccess<'de>, { - let mut account_group_id__ = None; + let mut wallet_id__ = None; while let Some(k) = map.next_key()? { match k { - GeneratedField::AccountGroupId => { - if account_group_id__.is_some() { - return Err(serde::de::Error::duplicate_field("accountGroupId")); + GeneratedField::WalletId => { + if wallet_id__.is_some() { + return Err(serde::de::Error::duplicate_field("walletId")); } - account_group_id__ = map.next_value()?; + wallet_id__ = map.next_value()?; } } } Ok(UnclaimedSwapsRequest { - account_group_id: account_group_id__, + wallet_id: wallet_id__, }) } } @@ -6529,7 +6529,7 @@ impl serde::Serialize for WitnessRequest { if self.transaction_plan.is_some() { len += 1; } - if self.account_group_id.is_some() { + if self.wallet_id.is_some() { len += 1; } let mut struct_ser = serializer.serialize_struct("penumbra.view.v1alpha1.WitnessRequest", len)?; @@ -6539,8 +6539,8 @@ impl serde::Serialize for WitnessRequest { if let Some(v) = self.transaction_plan.as_ref() { struct_ser.serialize_field("transactionPlan", v)?; } - if let Some(v) = self.account_group_id.as_ref() { - struct_ser.serialize_field("accountGroupId", v)?; + if let Some(v) = self.wallet_id.as_ref() { + struct_ser.serialize_field("walletId", v)?; } struct_ser.end() } @@ -6556,15 +6556,15 @@ impl<'de> serde::Deserialize<'de> for WitnessRequest { "noteCommitments", "transaction_plan", "transactionPlan", - "account_group_id", - "accountGroupId", + "wallet_id", + "walletId", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { NoteCommitments, TransactionPlan, - AccountGroupId, + WalletId, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -6588,7 +6588,7 @@ impl<'de> serde::Deserialize<'de> for WitnessRequest { match value { "noteCommitments" | "note_commitments" => Ok(GeneratedField::NoteCommitments), "transactionPlan" | "transaction_plan" => Ok(GeneratedField::TransactionPlan), - "accountGroupId" | "account_group_id" => Ok(GeneratedField::AccountGroupId), + "walletId" | "wallet_id" => Ok(GeneratedField::WalletId), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -6610,7 +6610,7 @@ impl<'de> serde::Deserialize<'de> for WitnessRequest { { let mut note_commitments__ = None; let mut transaction_plan__ = None; - let mut account_group_id__ = None; + let mut wallet_id__ = None; while let Some(k) = map.next_key()? { match k { GeneratedField::NoteCommitments => { @@ -6625,18 +6625,18 @@ impl<'de> serde::Deserialize<'de> for WitnessRequest { } transaction_plan__ = map.next_value()?; } - GeneratedField::AccountGroupId => { - if account_group_id__.is_some() { - return Err(serde::de::Error::duplicate_field("accountGroupId")); + GeneratedField::WalletId => { + if wallet_id__.is_some() { + return Err(serde::de::Error::duplicate_field("walletId")); } - account_group_id__ = map.next_value()?; + wallet_id__ = map.next_value()?; } } } Ok(WitnessRequest { note_commitments: note_commitments__.unwrap_or_default(), transaction_plan: transaction_plan__, - account_group_id: account_group_id__, + wallet_id: wallet_id__, }) } } diff --git a/crates/proto/src/gen/proto_descriptor.bin.no_lfs b/crates/proto/src/gen/proto_descriptor.bin.no_lfs index f87cb3638827e87a4b628b91ed11e0ff027051bd..37a590302226bd784dfe8ec0554f9c20cb5b2af3 100644 GIT binary patch delta 17113 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 diff --git a/crates/proto/src/serializers/bech32str.rs b/crates/proto/src/serializers/bech32str.rs index b5cd4c9847..0f26afe279 100644 --- a/crates/proto/src/serializers/bech32str.rs +++ b/crates/proto/src/serializers/bech32str.rs @@ -183,17 +183,17 @@ pub mod full_viewing_key { } } -pub mod account_group_id { +pub mod wallet_id { use super::*; - /// The Bech32 prefix used for account group ids. - pub const BECH32_PREFIX: &str = "penumbraaccountgroupid"; + /// The Bech32 prefix used for wallet ids. + pub const BECH32_PREFIX: &str = "penumbrawalletid"; pub fn deserialize<'de, D>(deserializer: D) -> Result, D::Error> where D: Deserializer<'de>, { - deserialize_bech32(deserializer, BECH32_PREFIX, Variant::Bech32m) + deserialize_bech32(deserializer, BECH32_PREFIX, Bech32m) } pub fn serialize(value: &T, serializer: S) -> Result @@ -201,7 +201,7 @@ pub mod account_group_id { S: Serializer, T: AsRef<[u8]>, { - serialize_bech32(value, serializer, BECH32_PREFIX, Variant::Bech32m) + serialize_bech32(value, serializer, BECH32_PREFIX, Bech32m) } } diff --git a/crates/view/src/client.rs b/crates/view/src/client.rs index e37576af7d..52c4e34140 100644 --- a/crates/view/src/client.rs +++ b/crates/view/src/client.rs @@ -10,7 +10,7 @@ use penumbra_dex::{ TradingPair, }; use penumbra_keys::{ - keys::{AccountGroupId, AddressIndex}, + keys::{AddressIndex, WalletId}, Address, }; use penumbra_num::Amount; @@ -46,13 +46,13 @@ pub trait ViewClient { /// Get the current status of chain sync. fn status( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, ) -> Pin> + Send + 'static>>; /// Stream status updates on chain sync until it completes. fn status_stream( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, ) -> Pin< Box< dyn Future< @@ -98,21 +98,21 @@ pub trait ViewClient { /// Queries for a specific note by commitment, returning immediately if it is not found. fn note_by_commitment( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, note_commitment: note::StateCommitment, ) -> Pin> + Send + 'static>>; /// Queries for a specific swap by commitment, returning immediately if it is not found. fn swap_by_commitment( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, swap_commitment: penumbra_tct::StateCommitment, ) -> Pin> + Send + 'static>>; /// Queries for a specific nullifier's status, returning immediately if it is not found. fn nullifier_status( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, nullifier: Nullifier, ) -> Pin> + Send + 'static>>; @@ -120,7 +120,7 @@ pub trait ViewClient { /// present, but waiting otherwise. fn await_nullifier( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, nullifier: Nullifier, ) -> Pin> + Send + 'static>>; @@ -129,7 +129,7 @@ pub trait ViewClient { /// This is useful for waiting for a note to be detected by the view service. fn await_note_by_commitment( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, note_commitment: note::StateCommitment, ) -> Pin> + Send + 'static>>; @@ -141,7 +141,7 @@ pub trait ViewClient { /// service could have advanced the state commitment tree state between queries). fn witness( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, plan: &TransactionPlan, ) -> Pin> + Send + 'static>>; @@ -182,10 +182,10 @@ pub trait ViewClient { ) -> Pin> + Send + 'static>>; /// Return unspent notes, grouped by address index and then by asset id. - #[instrument(skip(self, account_group_id))] + #[instrument(skip(self, wallet_id))] fn unspent_notes_by_address_and_asset( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, ) -> Pin< Box< dyn Future< @@ -197,7 +197,7 @@ pub trait ViewClient { >, > { let notes = self.notes(pb::NotesRequest { - account_group_id: Some(account_group_id.into()), + wallet_id: Some(wallet_id.into()), include_spent: false, ..Default::default() }); @@ -223,10 +223,10 @@ pub trait ViewClient { } /// Return unspent notes, grouped by denom and then by address index. - #[instrument(skip(self, account_group_id))] + #[instrument(skip(self, wallet_id))] fn unspent_notes_by_asset_and_address( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, ) -> Pin< Box< dyn Future< @@ -238,7 +238,7 @@ pub trait ViewClient { >, > { let notes = self.notes(pb::NotesRequest { - account_group_id: Some(account_group_id.into()), + wallet_id: Some(wallet_id.into()), include_spent: false, ..Default::default() }); @@ -291,12 +291,12 @@ where { fn status( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, ) -> Pin> + Send + 'static>> { let mut self2 = self.clone(); async move { let status = self2.status(tonic::Request::new(pb::StatusRequest { - account_group_id: Some(account_group_id.into()), + wallet_id: Some(wallet_id.into()), })); let status = status.await?.into_inner(); Ok(status) @@ -306,7 +306,7 @@ where fn status_stream( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, ) -> Pin< Box< dyn Future< @@ -320,7 +320,7 @@ where let mut self2 = self.clone(); async move { let stream = self2.status_stream(tonic::Request::new(pb::StatusStreamRequest { - account_group_id: Some(account_group_id.into()), + wallet_id: Some(wallet_id.into()), })); let stream = stream.await?.into_inner(); @@ -425,7 +425,7 @@ where fn note_by_commitment( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, note_commitment: note::StateCommitment, ) -> Pin> + Send + 'static>> { let mut self2 = self.clone(); @@ -433,7 +433,7 @@ where let note_commitment_response = ViewProtocolServiceClient::note_by_commitment( &mut self2, tonic::Request::new(pb::NoteByCommitmentRequest { - account_group_id: Some(account_group_id.into()), + wallet_id: Some(wallet_id.into()), note_commitment: Some(note_commitment.into()), await_detection: false, }), @@ -491,7 +491,7 @@ where fn swap_by_commitment( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, swap_commitment: penumbra_tct::StateCommitment, ) -> Pin> + Send + 'static>> { let mut self2 = self.clone(); @@ -499,7 +499,7 @@ where let swap_commitment_response = ViewProtocolServiceClient::swap_by_commitment( &mut self2, tonic::Request::new(pb::SwapByCommitmentRequest { - account_group_id: Some(account_group_id.into()), + wallet_id: Some(wallet_id.into()), swap_commitment: Some(swap_commitment.into()), await_detection: false, }), @@ -519,7 +519,7 @@ where /// This is useful for waiting for a note to be detected by the view service. fn await_note_by_commitment( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, note_commitment: note::StateCommitment, ) -> Pin> + Send + 'static>> { let mut self2 = self.clone(); @@ -527,7 +527,7 @@ where let spendable_note = ViewProtocolServiceClient::note_by_commitment( &mut self2, tonic::Request::new(pb::NoteByCommitmentRequest { - account_group_id: Some(account_group_id.into()), + wallet_id: Some(wallet_id.into()), note_commitment: Some(note_commitment.into()), await_detection: true, }), @@ -544,7 +544,7 @@ where /// Queries for a specific nullifier's status, returning immediately if it is not found. fn nullifier_status( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, nullifier: Nullifier, ) -> Pin> + Send + 'static>> { let mut self2 = self.clone(); @@ -552,7 +552,7 @@ where let rsp = ViewProtocolServiceClient::nullifier_status( &mut self2, tonic::Request::new(pb::NullifierStatusRequest { - account_group_id: Some(account_group_id.into()), + wallet_id: Some(wallet_id.into()), nullifier: Some(nullifier.into()), await_detection: false, }), @@ -566,7 +566,7 @@ where /// present, but waiting otherwise. fn await_nullifier( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, nullifier: Nullifier, ) -> Pin> + Send + 'static>> { let mut self2 = self.clone(); @@ -574,7 +574,7 @@ where let rsp = ViewProtocolServiceClient::nullifier_status( &mut self2, tonic::Request::new(pb::NullifierStatusRequest { - account_group_id: Some(account_group_id.into()), + wallet_id: Some(wallet_id.into()), nullifier: Some(nullifier.into()), await_detection: true, }), @@ -587,7 +587,7 @@ where fn witness( &mut self, - account_group_id: AccountGroupId, + wallet_id: WalletId, plan: &TransactionPlan, ) -> Pin> + Send + 'static>> { // TODO: delete this code and move it into the view service. @@ -610,7 +610,7 @@ where .collect(); let request = WitnessRequest { - account_group_id: Some(account_group_id.into()), + wallet_id: Some(wallet_id.into()), note_commitments, transaction_plan: Some(plan.clone().into()), }; diff --git a/crates/view/src/planner.rs b/crates/view/src/planner.rs index ee4b685209..084813ed59 100644 --- a/crates/view/src/planner.rs +++ b/crates/view/src/planner.rs @@ -26,7 +26,7 @@ use penumbra_governance::{ }; use penumbra_ibc::{IbcAction, Ics20Withdrawal}; use penumbra_keys::{ - keys::{AccountGroupId, AddressIndex}, + keys::{AddressIndex, WalletId}, Address, }; use penumbra_num::Amount; @@ -92,14 +92,14 @@ impl Planner { /// Get all the note requests necessary to fulfill the current [`Balance`]. pub fn notes_requests( &self, - account_group_id: AccountGroupId, + wallet_id: WalletId, source: AddressIndex, ) -> (Vec, Vec) { ( self.balance .required() .map(|Value { asset_id, amount }| NotesRequest { - account_group_id: Some(account_group_id.into()), + wallet_id: Some(wallet_id.into()), asset_id: Some(asset_id.into()), address_index: Some(source.into()), amount_to_spend: Some(amount.into()), @@ -115,7 +115,7 @@ impl Planner { start_block_height, .. }, )| NotesForVotingRequest { - account_group_id: Some(account_group_id.into()), + wallet_id: Some(wallet_id.into()), votable_at_height: *start_block_height, address_index: Some(source.into()), }, @@ -425,7 +425,7 @@ impl Planner { pub async fn plan( &mut self, view: &mut V, - account_group_id: AccountGroupId, + wallet_id: WalletId, source: AddressIndex, ) -> anyhow::Result { // Gather all the information needed from the view service @@ -433,7 +433,7 @@ impl Planner { let fmd_params = view.fmd_parameters().await?; let mut spendable_notes = Vec::new(); let mut voting_notes = Vec::new(); - let (spendable_requests, voting_requests) = self.notes_requests(account_group_id, source); + let (spendable_requests, voting_requests) = self.notes_requests(wallet_id, source); for request in spendable_requests { let notes = view.notes(request).await?; spendable_notes.extend(notes); diff --git a/crates/view/src/service.rs b/crates/view/src/service.rs index 59e163184f..13be34f112 100644 --- a/crates/view/src/service.rs +++ b/crates/view/src/service.rs @@ -21,7 +21,7 @@ use penumbra_dex::{ }; use penumbra_fee::Fee; use penumbra_keys::{ - keys::{AccountGroupId, AddressIndex, FullViewingKey}, + keys::{AddressIndex, FullViewingKey, WalletId}, Address, }; use penumbra_num::Amount; @@ -69,7 +69,7 @@ pub struct ViewService { // A shared error slot for errors bubbled up by the worker. This is a regular Mutex // rather than a Tokio Mutex because it should be uncontended. error_slot: Arc>>, - account_group_id: AccountGroupId, + wallet_id: WalletId, // A copy of the SCT used by the worker task. state_commitment_tree: Arc>, // The Url for the pd gRPC endpoint on remote node. @@ -104,11 +104,11 @@ impl ViewService { tokio::spawn(worker.run()); let fvk = storage.full_viewing_key().await?; - let account_group_id = fvk.account_group_id(); + let wallet_id = fvk.wallet_id(); Ok(Self { storage, - account_group_id, + wallet_id, error_slot, sync_height_rx, state_commitment_tree: sct, @@ -116,13 +116,10 @@ impl ViewService { }) } - /// Checks that the account group ID, if present, matches the one for this service. - async fn check_account_group_id( - &self, - fvk: Option<&pbc::AccountGroupId>, - ) -> Result<(), tonic::Status> { + /// Checks that the wallet ID, if present, matches the one for this service. + async fn check_wallet_id(&self, fvk: Option<&pbc::WalletId>) -> Result<(), tonic::Status> { if let Some(fvk) = fvk { - if fvk != &self.account_group_id.into() { + if fvk != &self.wallet_id.into() { return Err(tonic::Status::new( tonic::Code::InvalidArgument, "Invalid account ID", @@ -597,7 +594,7 @@ impl ViewProtocolService for ViewService { .unwrap_or(0u32); let plan = planner - .plan(&mut client_of_self, fvk.account_group_id(), source.into()) + .plan(&mut client_of_self, fvk.wallet_id(), source.into()) .await .context("could not plan requested transaction") .map_err(|e| tonic::Status::invalid_argument(format!("{e:#}")))?; @@ -862,7 +859,7 @@ impl ViewProtocolService for ViewService { request: tonic::Request, ) -> Result, tonic::Status> { self.check_worker().await?; - self.check_account_group_id(request.get_ref().account_group_id.as_ref()) + self.check_wallet_id(request.get_ref().wallet_id.as_ref()) .await?; let request = request.into_inner(); @@ -947,7 +944,7 @@ impl ViewProtocolService for ViewService { request: tonic::Request, ) -> Result, tonic::Status> { self.check_worker().await?; - self.check_account_group_id(request.get_ref().account_group_id.as_ref()) + self.check_wallet_id(request.get_ref().wallet_id.as_ref()) .await?; let request = request.into_inner(); @@ -979,7 +976,7 @@ impl ViewProtocolService for ViewService { request: tonic::Request, ) -> Result, tonic::Status> { self.check_worker().await?; - self.check_account_group_id(request.get_ref().account_group_id.as_ref()) + self.check_wallet_id(request.get_ref().wallet_id.as_ref()) .await?; let request = request.into_inner(); @@ -1004,7 +1001,7 @@ impl ViewProtocolService for ViewService { request: tonic::Request, ) -> Result, tonic::Status> { self.check_worker().await?; - self.check_account_group_id(request.get_ref().account_group_id.as_ref()) + self.check_wallet_id(request.get_ref().wallet_id.as_ref()) .await?; Ok(tonic::Response::new(self.status().await.map_err(|e| { @@ -1017,7 +1014,7 @@ impl ViewProtocolService for ViewService { request: tonic::Request, ) -> Result, tonic::Status> { self.check_worker().await?; - self.check_account_group_id(request.get_ref().account_group_id.as_ref()) + self.check_wallet_id(request.get_ref().wallet_id.as_ref()) .await?; let (latest_known_block_height, _) = @@ -1050,7 +1047,7 @@ impl ViewProtocolService for ViewService { request: tonic::Request, ) -> Result, tonic::Status> { self.check_worker().await?; - self.check_account_group_id(request.get_ref().account_group_id.as_ref()) + self.check_wallet_id(request.get_ref().wallet_id.as_ref()) .await?; let request = request.into_inner(); @@ -1103,7 +1100,7 @@ impl ViewProtocolService for ViewService { request: tonic::Request, ) -> Result, tonic::Status> { self.check_worker().await?; - self.check_account_group_id(request.get_ref().account_group_id.as_ref()) + self.check_wallet_id(request.get_ref().wallet_id.as_ref()) .await?; let address_index = request @@ -1260,7 +1257,7 @@ impl ViewProtocolService for ViewService { request: tonic::Request, ) -> Result, tonic::Status> { self.check_worker().await?; - self.check_account_group_id(request.get_ref().account_group_id.as_ref()) + self.check_wallet_id(request.get_ref().wallet_id.as_ref()) .await?; // Acquire a read lock for the SCT that will live for the entire request, @@ -1374,7 +1371,7 @@ impl ViewProtocolService for ViewService { .map_err(|e| tonic::Status::invalid_argument(format!("{:#}", e)))?; let witness_request = pb::WitnessRequest { - account_group_id: Some(self.account_group_id.into()), + wallet_id: Some(self.wallet_id.into()), note_commitments, transaction_plan: Some(transaction_plan.clone().into()), }; @@ -1502,7 +1499,7 @@ impl ViewProtocolService for ViewService { request: tonic::Request, ) -> Result, tonic::Status> { self.check_worker().await?; - self.check_account_group_id(request.get_ref().account_group_id.as_ref()) + self.check_wallet_id(request.get_ref().wallet_id.as_ref()) .await?; let swaps = self.storage.unclaimed_swaps().await.map_err(|e| { diff --git a/crates/wallet/src/build.rs b/crates/wallet/src/build.rs index be2efb897a..09e798d9e9 100644 --- a/crates/wallet/src/build.rs +++ b/crates/wallet/src/build.rs @@ -20,7 +20,7 @@ where // Get the authorization data from the custody service... let auth_data: AuthorizationData = custody .authorize(AuthorizeRequest { - account_group_id: Some(fvk.account_group_id()), + wallet_id: Some(fvk.wallet_id()), plan: plan.clone(), pre_authorizations: Vec::new(), }) @@ -30,7 +30,7 @@ where .try_into()?; // Send a witness request to the view service to get witness data - let witness_data = view.witness(fvk.account_group_id(), &plan).await?; + let witness_data = view.witness(fvk.wallet_id(), &plan).await?; // ... and then build the transaction: #[cfg(not(feature = "parallel"))] diff --git a/crates/wallet/src/plan.rs b/crates/wallet/src/plan.rs index c6f8f29f0c..22cfcb6a53 100644 --- a/crates/wallet/src/plan.rs +++ b/crates/wallet/src/plan.rs @@ -9,7 +9,7 @@ use penumbra_asset::Value; use penumbra_fee::Fee; use penumbra_governance::{proposal_state, Proposal, ValidatorVote}; use penumbra_keys::{ - keys::{AccountGroupId, AddressIndex}, + keys::{AddressIndex, WalletId}, Address, }; use penumbra_num::Amount; @@ -23,7 +23,7 @@ use tracing::instrument; pub use penumbra_view::Planner; pub async fn validator_definition( - account_group_id: AccountGroupId, + wallet_id: WalletId, view: &mut V, rng: R, new_validator: validator::Definition, @@ -37,13 +37,13 @@ where Planner::new(rng) .fee(fee) .validator_definition(new_validator) - .plan(view, account_group_id, source_address) + .plan(view, wallet_id, source_address) .await .context("can't build validator definition plan") } pub async fn validator_vote( - account_group_id: AccountGroupId, + wallet_id: WalletId, view: &mut V, rng: R, vote: ValidatorVote, @@ -57,23 +57,15 @@ where Planner::new(rng) .fee(fee) .validator_vote(vote) - .plan(view, account_group_id, source_address) + .plan(view, wallet_id, source_address) .await .context("can't build validator vote plan") } /// Generate a new transaction plan delegating stake -#[instrument(skip( - account_group_id, - view, - rng, - rate_data, - unbonded_amount, - fee, - source_address -))] +#[instrument(skip(wallet_id, view, rng, rate_data, unbonded_amount, fee, source_address))] pub async fn delegate( - account_group_id: AccountGroupId, + wallet_id: WalletId, view: &mut V, rng: R, rate_data: RateData, @@ -88,14 +80,14 @@ where Planner::new(rng) .fee(fee) .delegate(unbonded_amount, rate_data) - .plan(view, account_group_id, source_address) + .plan(view, wallet_id, source_address) .await .context("can't build delegate plan") } #[allow(clippy::too_many_arguments)] #[instrument(skip( - account_group_id, + wallet_id, view, rng, values, @@ -105,7 +97,7 @@ where tx_memo ))] pub async fn send( - account_group_id: AccountGroupId, + wallet_id: WalletId, view: &mut V, rng: R, values: &[Value], @@ -126,14 +118,14 @@ where } planner .memo(tx_memo.unwrap_or_default())? - .plan(view, account_group_id, source_address) + .plan(view, wallet_id, source_address) .await .context("can't build send transaction") } -#[instrument(skip(account_group_id, view, rng))] +#[instrument(skip(wallet_id, view, rng))] pub async fn sweep( - account_group_id: AccountGroupId, + wallet_id: WalletId, view: &mut V, mut rng: R, ) -> anyhow::Result> @@ -148,7 +140,7 @@ where // Finally, sweep dust notes by spending them to their owner's address. // This will consolidate small-value notes into larger ones. - plans.extend(sweep_notes(account_group_id, view, &mut rng).await?); + plans.extend(sweep_notes(wallet_id, view, &mut rng).await?); Ok(plans) } @@ -202,9 +194,9 @@ where Ok(plans) } -#[instrument(skip(account_group_id, view, rng))] +#[instrument(skip(wallet_id, view, rng))] pub async fn sweep_notes( - account_group_id: AccountGroupId, + wallet_id: WalletId, view: &mut V, mut rng: R, ) -> anyhow::Result> @@ -216,7 +208,7 @@ where let all_notes = view .notes(NotesRequest { - account_group_id: Some(account_group_id.into()), + wallet_id: Some(wallet_id.into()), ..Default::default() }) .await?; @@ -254,7 +246,7 @@ where } let plan = planner - .plan(view, account_group_id, index) + .plan(view, wallet_id, index) .await .context("can't build sweep transaction")?; @@ -267,9 +259,9 @@ where Ok(plans) } -#[instrument(skip(account_group_id, view, rng))] +#[instrument(skip(wallet_id, view, rng))] pub async fn proposal_submit( - account_group_id: AccountGroupId, + wallet_id: WalletId, view: &mut V, rng: R, proposal: Proposal, @@ -289,15 +281,15 @@ where .governance_params .proposal_deposit_amount, ) - .plan(view, account_group_id, source_address) + .plan(view, wallet_id, source_address) .await .context("can't build proposal submit transaction") } #[allow(clippy::too_many_arguments)] -#[instrument(skip(account_group_id, view, rng))] +#[instrument(skip(wallet_id, view, rng))] pub async fn proposal_withdraw( - account_group_id: AccountGroupId, + wallet_id: WalletId, view: &mut V, rng: R, proposal_id: u64, @@ -312,15 +304,15 @@ where Planner::new(rng) .fee(fee) .proposal_withdraw(proposal_id, reason) - .plan(view, account_group_id, source_address) + .plan(view, wallet_id, source_address) .await .context("can't build proposal withdraw transaction") } #[allow(clippy::too_many_arguments)] -#[instrument(skip(account_group_id, view, rng))] +#[instrument(skip(wallet_id, view, rng))] pub async fn proposal_deposit_claim( - account_group_id: AccountGroupId, + wallet_id: WalletId, view: &mut V, rng: R, proposal_id: u64, @@ -336,7 +328,7 @@ where Planner::new(rng) .fee(fee) .proposal_deposit_claim(proposal_id, deposit_amount, outcome) - .plan(view, account_group_id, source_address) + .plan(view, wallet_id, source_address) .await .context("can't build proposal withdraw transaction") } diff --git a/crates/wasm/src/keys.rs b/crates/wasm/src/keys.rs index f1ab1f8077..bfec8571de 100644 --- a/crates/wasm/src/keys.rs +++ b/crates/wasm/src/keys.rs @@ -49,14 +49,14 @@ pub fn get_full_viewing_key(spend_key: &str) -> WasmResult { Ok(JsValue::from_str(&fvk_bech32)) } -/// Account Group Id: the hash of a full viewing key, used as an account identifier +/// Wallet id: the hash of a full viewing key, used as an account identifier /// Arguments: /// full_viewing_key: `bech32 string` /// Returns: `bech32 string` #[wasm_bindgen] -pub fn get_account_group_id(full_viewing_key: &str) -> WasmResult { +pub fn get_wallet_id(full_viewing_key: &str) -> WasmResult { let fvk = FullViewingKey::from_str(full_viewing_key)?; - Ok(fvk.account_group_id().to_string()) + Ok(fvk.wallet_id().to_string()) } /// get address by index using FVK diff --git a/crates/wasm/src/planner.rs b/crates/wasm/src/planner.rs index 7ac80c71f3..aa27e819f2 100644 --- a/crates/wasm/src/planner.rs +++ b/crates/wasm/src/planner.rs @@ -87,7 +87,7 @@ impl Planner { self.balance .required() .map(|Value { asset_id, amount }| NotesRequest { - account_group_id: None, + wallet_id: None, asset_id: Some(asset_id.into()), address_index: None, amount_to_spend: Some(amount.into()), @@ -103,7 +103,7 @@ impl Planner { start_block_height, .. }, )| NotesForVotingRequest { - account_group_id: None, + wallet_id: None, votable_at_height: *start_block_height, address_index: None, }, diff --git a/crates/wasm/tests/test_keys.rs b/crates/wasm/tests/test_keys.rs index 1f6ded728f..725d5e0b6c 100644 --- a/crates/wasm/tests/test_keys.rs +++ b/crates/wasm/tests/test_keys.rs @@ -1,20 +1,19 @@ extern crate core; -use penumbra_wasm::keys::get_account_group_id; +use penumbra_wasm::keys::get_wallet_id; #[test] -fn successfully_get_account_group_id() { +fn successfully_get_wallet_id() { let fvk_str = "penumbrafullviewingkey1sjeaceqzgaeye2ksnz8q73mp6rpx2ykdtzs8wurrnhwdn8vqwuxhxtjdndrjc74udjh0uch0tatnrd93q50wp9pfk86h3lgpew8lsqsz2a6la".to_string(); - let actual_bech32_str = get_account_group_id(&fvk_str).unwrap(); + let actual_bech32_str = get_wallet_id(&fvk_str).unwrap(); let expected_bech32_str = - "penumbraaccountgroupid15r7q7qsf3hhsgj0g530n7ng9acdacmmx9ajknjz38dyt90u9gcgs767wla" - .to_string(); + "penumbrawalletid15r7q7qsf3hhsgj0g530n7ng9acdacmmx9ajknjz38dyt90u9gcgsmjre75".to_string(); assert_eq!(expected_bech32_str, actual_bech32_str); } #[test] fn raises_if_fvk_invalid() { let fvk_str = "invalid".to_string(); - let err = get_account_group_id(&fvk_str).unwrap_err(); + let err = get_wallet_id(&fvk_str).unwrap_err(); assert_eq!("invalid length", err.to_string()); } diff --git a/docs/protocol/src/protocol/addresses_keys/viewing_keys.md b/docs/protocol/src/protocol/addresses_keys/viewing_keys.md index f22c66511a..94609292c4 100644 --- a/docs/protocol/src/protocol/addresses_keys/viewing_keys.md +++ b/docs/protocol/src/protocol/addresses_keys/viewing_keys.md @@ -48,7 +48,7 @@ Then ``` hash_output = poseidon_hash_2(from_le_bytes(b"Penumbra_HashFVK"), nk, decaf377_s(ak)) -account_group_id = hash_output.to_le_bytes()[0:32] +wallet_id = hash_output.to_le_bytes()[0:32] ``` i.e. we take the 32-bytes of the hash output as the account ID. diff --git a/proto/go/gen/penumbra/core/keys/v1alpha1/keys.pb.go b/proto/go/gen/penumbra/core/keys/v1alpha1/keys.pb.go index 5dddd7c0d5..baec8b610b 100644 --- a/proto/go/gen/penumbra/core/keys/v1alpha1/keys.pb.go +++ b/proto/go/gen/penumbra/core/keys/v1alpha1/keys.pb.go @@ -355,7 +355,7 @@ func (x *FullViewingKey) GetInner() []byte { return nil } -type AccountGroupId struct { +type WalletId struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -363,8 +363,8 @@ type AccountGroupId struct { Inner []byte `protobuf:"bytes,1,opt,name=inner,proto3" json:"inner,omitempty"` } -func (x *AccountGroupId) Reset() { - *x = AccountGroupId{} +func (x *WalletId) Reset() { + *x = WalletId{} if protoimpl.UnsafeEnabled { mi := &file_penumbra_core_keys_v1alpha1_keys_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -372,13 +372,13 @@ func (x *AccountGroupId) Reset() { } } -func (x *AccountGroupId) String() string { +func (x *WalletId) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AccountGroupId) ProtoMessage() {} +func (*WalletId) ProtoMessage() {} -func (x *AccountGroupId) ProtoReflect() protoreflect.Message { +func (x *WalletId) ProtoReflect() protoreflect.Message { mi := &file_penumbra_core_keys_v1alpha1_keys_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -390,12 +390,12 @@ func (x *AccountGroupId) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AccountGroupId.ProtoReflect.Descriptor instead. -func (*AccountGroupId) Descriptor() ([]byte, []int) { +// Deprecated: Use WalletId.ProtoReflect.Descriptor instead. +func (*WalletId) Descriptor() ([]byte, []int) { return file_penumbra_core_keys_v1alpha1_keys_proto_rawDescGZIP(), []int{6} } -func (x *AccountGroupId) GetInner() []byte { +func (x *WalletId) GetInner() []byte { if x != nil { return x.Inner } @@ -652,9 +652,9 @@ type AddressView_Visible struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Address *Address `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Index *AddressIndex `protobuf:"bytes,2,opt,name=index,proto3" json:"index,omitempty"` - AccountGroupId *AccountGroupId `protobuf:"bytes,3,opt,name=account_group_id,json=accountGroupId,proto3" json:"account_group_id,omitempty"` + Address *Address `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Index *AddressIndex `protobuf:"bytes,2,opt,name=index,proto3" json:"index,omitempty"` + WalletId *WalletId `protobuf:"bytes,3,opt,name=wallet_id,json=walletId,proto3" json:"wallet_id,omitempty"` } func (x *AddressView_Visible) Reset() { @@ -703,9 +703,9 @@ func (x *AddressView_Visible) GetIndex() *AddressIndex { return nil } -func (x *AddressView_Visible) GetAccountGroupId() *AccountGroupId { +func (x *AddressView_Visible) GetWalletId() *WalletId { if x != nil { - return x.AccountGroupId + return x.WalletId } return nil } @@ -768,7 +768,7 @@ var file_penumbra_core_keys_v1alpha1_keys_proto_rawDesc = []byte{ 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x74, 0x5f, 0x62, 0x65, 0x63, 0x68, 0x33, 0x32, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x74, - 0x42, 0x65, 0x63, 0x68, 0x33, 0x32, 0x6d, 0x22, 0xe4, 0x03, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x72, + 0x42, 0x65, 0x63, 0x68, 0x33, 0x32, 0x6d, 0x22, 0xd1, 0x03, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x56, 0x69, 0x65, 0x77, 0x12, 0x4c, 0x0a, 0x07, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, @@ -779,7 +779,7 @@ var file_penumbra_core_keys_v1alpha1_keys_proto_rawDesc = []byte{ 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x56, 0x69, 0x65, 0x77, 0x2e, 0x4f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, - 0x1a, 0xe1, 0x01, 0x0a, 0x07, 0x56, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x07, + 0x1a, 0xce, 0x01, 0x0a, 0x07, 0x56, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, @@ -787,62 +787,60 @@ var file_penumbra_core_keys_v1alpha1_keys_proto_rawDesc = []byte{ 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x55, 0x0a, - 0x10, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x64, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x64, 0x1a, 0x48, 0x0a, 0x06, 0x4f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x12, 0x3e, - 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0e, - 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x22, 0x22, - 0x0a, 0x0a, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x6e, - 0x65, 0x72, 0x22, 0x20, 0x0a, 0x08, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, - 0x6e, 0x6e, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x14, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x6e, - 0x65, 0x72, 0x22, 0x26, 0x0a, 0x0e, 0x46, 0x75, 0x6c, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x69, 0x6e, - 0x67, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x22, 0x26, 0x0a, 0x0e, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x6e, - 0x65, 0x72, 0x22, 0x23, 0x0a, 0x0b, 0x44, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x22, 0x48, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x65, - 0x72, 0x22, 0x1d, 0x0a, 0x0b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4b, 0x65, 0x79, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x6b, - 0x22, 0x1f, 0x0a, 0x0d, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4b, 0x65, - 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x67, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x67, - 0x6b, 0x22, 0x24, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4b, 0x65, + 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x42, 0x0a, + 0x09, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, + 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x52, 0x08, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, + 0x64, 0x1a, 0x48, 0x0a, 0x06, 0x4f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, + 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, + 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x22, 0x22, 0x0a, 0x0a, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x6e, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x22, + 0x20, 0x0a, 0x08, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x6e, 0x65, + 0x72, 0x22, 0x2c, 0x0a, 0x14, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x6e, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x22, + 0x26, 0x0a, 0x0e, 0x46, 0x75, 0x6c, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x42, 0x94, 0x02, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, - 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, - 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x09, 0x4b, 0x65, 0x79, - 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x57, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2d, 0x7a, 0x6f, - 0x6e, 0x65, 0x2f, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, - 0x61, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x3b, 0x6b, 0x65, 0x79, 0x73, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0xa2, 0x02, 0x03, 0x50, 0x43, 0x4b, 0xaa, 0x02, 0x1b, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x2e, 0x56, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x1b, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, - 0x5c, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x4b, 0x65, 0x79, 0x73, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0xe2, 0x02, 0x27, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x5c, 0x43, - 0x6f, 0x72, 0x65, 0x5c, 0x4b, 0x65, 0x79, 0x73, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1e, - 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x3a, 0x3a, 0x43, 0x6f, 0x72, 0x65, 0x3a, 0x3a, - 0x4b, 0x65, 0x79, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x22, 0x20, 0x0a, 0x08, 0x57, 0x61, 0x6c, 0x6c, 0x65, + 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x22, 0x23, 0x0a, 0x0b, 0x44, 0x69, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x6e, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x22, 0x48, + 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x18, + 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x61, 0x6e, 0x64, + 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x72, 0x61, + 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x22, 0x1d, 0x0a, 0x0b, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6b, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x6b, 0x22, 0x1f, 0x0a, 0x0d, 0x47, 0x6f, 0x76, 0x65, 0x72, + 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x67, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x67, 0x6b, 0x22, 0x24, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x73, + 0x65, 0x6e, 0x73, 0x75, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x6e, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x42, 0x94, + 0x02, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x42, 0x09, 0x4b, 0x65, 0x79, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x57, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x72, 0x61, 0x2d, 0x7a, 0x6f, 0x6e, 0x65, 0x2f, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, + 0x72, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, + 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x6b, 0x65, + 0x79, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x6b, 0x65, 0x79, 0x73, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x43, 0x4b, 0xaa, 0x02, + 0x1b, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x2e, 0x4b, + 0x65, 0x79, 0x73, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x1b, 0x50, + 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x4b, 0x65, 0x79, + 0x73, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x27, 0x50, 0x65, 0x6e, + 0x75, 0x6d, 0x62, 0x72, 0x61, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x4b, 0x65, 0x79, 0x73, 0x5c, + 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1e, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x3a, + 0x3a, 0x43, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x4b, 0x65, 0x79, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -865,7 +863,7 @@ var file_penumbra_core_keys_v1alpha1_keys_proto_goTypes = []interface{}{ (*SpendKey)(nil), // 3: penumbra.core.keys.v1alpha1.SpendKey (*SpendVerificationKey)(nil), // 4: penumbra.core.keys.v1alpha1.SpendVerificationKey (*FullViewingKey)(nil), // 5: penumbra.core.keys.v1alpha1.FullViewingKey - (*AccountGroupId)(nil), // 6: penumbra.core.keys.v1alpha1.AccountGroupId + (*WalletId)(nil), // 6: penumbra.core.keys.v1alpha1.WalletId (*Diversifier)(nil), // 7: penumbra.core.keys.v1alpha1.Diversifier (*AddressIndex)(nil), // 8: penumbra.core.keys.v1alpha1.AddressIndex (*IdentityKey)(nil), // 9: penumbra.core.keys.v1alpha1.IdentityKey @@ -879,7 +877,7 @@ var file_penumbra_core_keys_v1alpha1_keys_proto_depIdxs = []int32{ 13, // 1: penumbra.core.keys.v1alpha1.AddressView.opaque:type_name -> penumbra.core.keys.v1alpha1.AddressView.Opaque 0, // 2: penumbra.core.keys.v1alpha1.AddressView.Visible.address:type_name -> penumbra.core.keys.v1alpha1.Address 8, // 3: penumbra.core.keys.v1alpha1.AddressView.Visible.index:type_name -> penumbra.core.keys.v1alpha1.AddressIndex - 6, // 4: penumbra.core.keys.v1alpha1.AddressView.Visible.account_group_id:type_name -> penumbra.core.keys.v1alpha1.AccountGroupId + 6, // 4: penumbra.core.keys.v1alpha1.AddressView.Visible.wallet_id:type_name -> penumbra.core.keys.v1alpha1.WalletId 0, // 5: penumbra.core.keys.v1alpha1.AddressView.Opaque.address:type_name -> penumbra.core.keys.v1alpha1.Address 6, // [6:6] is the sub-list for method output_type 6, // [6:6] is the sub-list for method input_type @@ -967,7 +965,7 @@ func file_penumbra_core_keys_v1alpha1_keys_proto_init() { } } file_penumbra_core_keys_v1alpha1_keys_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountGroupId); i { + switch v := v.(*WalletId); i { case 0: return &v.state case 1: diff --git a/proto/go/gen/penumbra/custody/v1alpha1/custody.pb.go b/proto/go/gen/penumbra/custody/v1alpha1/custody.pb.go index b2c60d821f..79c5867cd9 100644 --- a/proto/go/gen/penumbra/custody/v1alpha1/custody.pb.go +++ b/proto/go/gen/penumbra/custody/v1alpha1/custody.pb.go @@ -30,7 +30,7 @@ type AuthorizeRequest struct { // The transaction plan to authorize. Plan *v1alpha1.TransactionPlan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` // Identifies the FVK (and hence the spend authorization key) to use for signing. - AccountGroupId *v1alpha11.AccountGroupId `protobuf:"bytes,2,opt,name=account_group_id,json=accountGroupId,proto3" json:"account_group_id,omitempty"` + WalletId *v1alpha11.WalletId `protobuf:"bytes,2,opt,name=wallet_id,json=walletId,proto3" json:"wallet_id,omitempty"` // Optionally, pre-authorization data, if required by the custodian. // // Multiple `PreAuthorization` packets can be included in a single request, @@ -77,9 +77,9 @@ func (x *AuthorizeRequest) GetPlan() *v1alpha1.TransactionPlan { return nil } -func (x *AuthorizeRequest) GetAccountGroupId() *v1alpha11.AccountGroupId { +func (x *AuthorizeRequest) GetWalletId() *v1alpha11.WalletId { if x != nil { - return x.AccountGroupId + return x.WalletId } return nil } @@ -281,66 +281,65 @@ var file_penumbra_custody_v1alpha1_custody_proto_rawDesc = []byte{ 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0x8e, 0x02, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, + 0x74, 0x6f, 0x22, 0xfb, 0x01, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x04, 0x70, 0x6c, 0x61, 0x6e, - 0x12, 0x55, 0x0a, 0x10, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, - 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x5a, 0x0a, 0x12, 0x70, 0x72, 0x65, 0x5f, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x11, 0x70, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0x5e, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, - 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0xa5, 0x01, 0x0a, 0x10, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x07, 0x65, 0x64, 0x32, 0x35, - 0x35, 0x31, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x65, 0x6e, 0x75, - 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x64, 0x32, 0x35, 0x35, 0x31, 0x39, 0x48, 0x00, - 0x52, 0x07, 0x65, 0x64, 0x32, 0x35, 0x35, 0x31, 0x39, 0x1a, 0x2b, 0x0a, 0x07, 0x45, 0x64, 0x32, - 0x35, 0x35, 0x31, 0x39, 0x12, 0x0e, 0x0a, 0x02, 0x76, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x02, 0x76, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x03, 0x73, 0x69, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x80, 0x01, 0x0a, 0x16, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x66, 0x0a, 0x09, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x65, 0x12, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2c, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x75, 0x73, 0x74, + 0x12, 0x42, 0x0a, 0x09, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x52, 0x08, 0x77, 0x61, 0x6c, 0x6c, + 0x65, 0x74, 0x49, 0x64, 0x12, 0x5a, 0x0a, 0x12, 0x70, 0x72, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x64, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x65, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x70, + 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0x5e, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x22, 0xa5, 0x01, 0x0a, 0x10, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x07, 0x65, 0x64, 0x32, 0x35, 0x35, 0x31, 0x39, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x61, 0x2e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x64, 0x32, 0x35, 0x35, 0x31, 0x39, 0x48, 0x00, 0x52, 0x07, 0x65, + 0x64, 0x32, 0x35, 0x35, 0x31, 0x39, 0x1a, 0x2b, 0x0a, 0x07, 0x45, 0x64, 0x32, 0x35, 0x35, 0x31, + 0x39, 0x12, 0x0e, 0x0a, 0x02, 0x76, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x76, + 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, + 0x73, 0x69, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x80, 0x01, 0x0a, 0x16, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x64, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x66, 0x0a, 0x09, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, + 0x12, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x8d, - 0x02, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x42, 0x0c, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, - 0x5a, 0x58, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x6e, - 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2d, 0x7a, 0x6f, 0x6e, 0x65, 0x2f, 0x70, 0x65, 0x6e, 0x75, 0x6d, - 0x62, 0x72, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, - 0x2f, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x64, - 0x79, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x64, 0x79, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x43, 0x58, - 0xaa, 0x02, 0x19, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x64, 0x79, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x19, 0x50, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x5c, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x5c, - 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x25, 0x50, 0x65, 0x6e, 0x75, 0x6d, - 0x62, 0x72, 0x61, 0x5c, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x5c, 0x56, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x1b, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x3a, 0x3a, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x64, 0x79, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, + 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x8d, 0x02, 0x0a, 0x1d, + 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x64, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0c, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x58, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, + 0x72, 0x61, 0x2d, 0x7a, 0x6f, 0x6e, 0x65, 0x2f, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x65, + 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x2f, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x43, 0x58, 0xaa, 0x02, 0x19, + 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, + 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x19, 0x50, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x72, 0x61, 0x5c, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x5c, 0x56, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x25, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, + 0x5c, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1b, + 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x3a, 0x3a, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x64, + 0x79, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -362,12 +361,12 @@ var file_penumbra_custody_v1alpha1_custody_proto_goTypes = []interface{}{ (*PreAuthorization)(nil), // 2: penumbra.custody.v1alpha1.PreAuthorization (*PreAuthorization_Ed25519)(nil), // 3: penumbra.custody.v1alpha1.PreAuthorization.Ed25519 (*v1alpha1.TransactionPlan)(nil), // 4: penumbra.core.transaction.v1alpha1.TransactionPlan - (*v1alpha11.AccountGroupId)(nil), // 5: penumbra.core.keys.v1alpha1.AccountGroupId + (*v1alpha11.WalletId)(nil), // 5: penumbra.core.keys.v1alpha1.WalletId (*v1alpha1.AuthorizationData)(nil), // 6: penumbra.core.transaction.v1alpha1.AuthorizationData } var file_penumbra_custody_v1alpha1_custody_proto_depIdxs = []int32{ 4, // 0: penumbra.custody.v1alpha1.AuthorizeRequest.plan:type_name -> penumbra.core.transaction.v1alpha1.TransactionPlan - 5, // 1: penumbra.custody.v1alpha1.AuthorizeRequest.account_group_id:type_name -> penumbra.core.keys.v1alpha1.AccountGroupId + 5, // 1: penumbra.custody.v1alpha1.AuthorizeRequest.wallet_id:type_name -> penumbra.core.keys.v1alpha1.WalletId 2, // 2: penumbra.custody.v1alpha1.AuthorizeRequest.pre_authorizations:type_name -> penumbra.custody.v1alpha1.PreAuthorization 6, // 3: penumbra.custody.v1alpha1.AuthorizeResponse.data:type_name -> penumbra.core.transaction.v1alpha1.AuthorizationData 3, // 4: penumbra.custody.v1alpha1.PreAuthorization.ed25519:type_name -> penumbra.custody.v1alpha1.PreAuthorization.Ed25519 diff --git a/proto/go/gen/penumbra/narsil/ledger/v1alpha1/ledger.pb.go b/proto/go/gen/penumbra/narsil/ledger/v1alpha1/ledger.pb.go index 639247ec7c..9fbddfa372 100644 --- a/proto/go/gen/penumbra/narsil/ledger/v1alpha1/ledger.pb.go +++ b/proto/go/gen/penumbra/narsil/ledger/v1alpha1/ledger.pb.go @@ -632,8 +632,8 @@ func (x *GenesisData) GetThreshold() uint32 { return 0 } -// Describes the Penumbra account group jointly controlled by the Narsil instance. -type AccountGroupInfo struct { +// Describes the Penumbra wallet id jointly controlled by the Narsil instance. +type WalletInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -642,16 +642,16 @@ type AccountGroupInfo struct { // // In the Penumbra key hierarchy, this is the highest-authority key below // spend authority, and allows deriving all subkeys for all accounts in the - // account group. It is replicated across all shards. + // wallet id. It is replicated across all shards. // // The spend verification key component is the `PK` in the FROST I-D. FullViewingKey *v1alpha1.FullViewingKey `protobuf:"bytes,1,opt,name=full_viewing_key,json=fullViewingKey,proto3" json:"full_viewing_key,omitempty"` - // Describes the participants in the account group. + // Describes the participants in the wallet id. Participants []*ShardInfo `protobuf:"bytes,2,rep,name=participants,proto3" json:"participants,omitempty"` } -func (x *AccountGroupInfo) Reset() { - *x = AccountGroupInfo{} +func (x *WalletInfo) Reset() { + *x = WalletInfo{} if protoimpl.UnsafeEnabled { mi := &file_penumbra_narsil_ledger_v1alpha1_ledger_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -659,13 +659,13 @@ func (x *AccountGroupInfo) Reset() { } } -func (x *AccountGroupInfo) String() string { +func (x *WalletInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AccountGroupInfo) ProtoMessage() {} +func (*WalletInfo) ProtoMessage() {} -func (x *AccountGroupInfo) ProtoReflect() protoreflect.Message { +func (x *WalletInfo) ProtoReflect() protoreflect.Message { mi := &file_penumbra_narsil_ledger_v1alpha1_ledger_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -677,19 +677,19 @@ func (x *AccountGroupInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AccountGroupInfo.ProtoReflect.Descriptor instead. -func (*AccountGroupInfo) Descriptor() ([]byte, []int) { +// Deprecated: Use WalletInfo.ProtoReflect.Descriptor instead. +func (*WalletInfo) Descriptor() ([]byte, []int) { return file_penumbra_narsil_ledger_v1alpha1_ledger_proto_rawDescGZIP(), []int{10} } -func (x *AccountGroupInfo) GetFullViewingKey() *v1alpha1.FullViewingKey { +func (x *WalletInfo) GetFullViewingKey() *v1alpha1.FullViewingKey { if x != nil { return x.FullViewingKey } return nil } -func (x *AccountGroupInfo) GetParticipants() []*ShardInfo { +func (x *WalletInfo) GetParticipants() []*ShardInfo { if x != nil { return x.Participants } @@ -2427,7 +2427,7 @@ func (x *DkgState_StartedRound2) GetRound_2Messages() []*DkgRound2 { return nil } -// The DKG has finished successfully, producing the jointly-controlled `AccountGroupInfo`. +// The DKG has finished successfully, producing the jointly-controlled `WalletInfo`. // // Unlike the signing ceremony, we don't record a failure case here: if the DKG fails, we abort the entire ledger. type DkgState_Finished struct { @@ -2439,8 +2439,8 @@ type DkgState_Finished struct { Round_1Messages []*DkgRound1 `protobuf:"bytes,1,rep,name=round_1_messages,json=round1Messages,proto3" json:"round_1_messages,omitempty"` // A list of messages received during round 2. Round_2Messages []*DkgRound2 `protobuf:"bytes,2,rep,name=round_2_messages,json=round2Messages,proto3" json:"round_2_messages,omitempty"` - // The jointly-controlled `AccountGroupInfo` resulting from the DKG. - AccountGroupInfo *AccountGroupInfo `protobuf:"bytes,3,opt,name=account_group_info,json=accountGroupInfo,proto3" json:"account_group_info,omitempty"` + // The jointly-controlled `WalletInfo` resulting from the DKG. + WalletInfo *WalletInfo `protobuf:"bytes,3,opt,name=wallet_info,json=walletInfo,proto3" json:"wallet_info,omitempty"` } func (x *DkgState_Finished) Reset() { @@ -2489,9 +2489,9 @@ func (x *DkgState_Finished) GetRound_2Messages() []*DkgRound2 { return nil } -func (x *DkgState_Finished) GetAccountGroupInfo() *AccountGroupInfo { +func (x *DkgState_Finished) GetWalletInfo() *WalletInfo { if x != nil { - return x.AccountGroupInfo + return x.WalletInfo } return nil } @@ -2582,166 +2582,145 @@ var file_penumbra_narsil_ledger_v1alpha1_ledger_proto_rawDesc = []byte{ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0xb9, 0x01, - 0x0a, 0x10, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x55, 0x0a, 0x10, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x69, - 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, - 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x75, 0x6c, 0x6c, 0x56, - 0x69, 0x65, 0x77, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x52, 0x0e, 0x66, 0x75, 0x6c, 0x6c, 0x56, - 0x69, 0x65, 0x77, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x4e, 0x0a, 0x0c, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, - 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x22, 0xe0, 0x01, 0x0a, 0x09, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x67, 0x0a, - 0x16, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, - 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, - 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x70, 0x65, 0x6e, + 0x28, 0x0d, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0xb3, 0x01, + 0x0a, 0x0a, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x55, 0x0a, 0x10, + 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x75, 0x6c, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x69, 0x6e, 0x67, + 0x4b, 0x65, 0x79, 0x52, 0x0e, 0x66, 0x75, 0x6c, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x69, 0x6e, 0x67, + 0x4b, 0x65, 0x79, 0x12, 0x4e, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x73, 0x22, 0xe0, 0x01, 0x0a, 0x09, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x67, 0x0a, 0x16, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, + 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x14, 0x73, 0x68, 0x61, 0x72, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, - 0x52, 0x14, 0x73, 0x68, 0x61, 0x72, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x54, 0x0a, 0x0c, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, - 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4b, 0x65, 0x79, 0x52, - 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4b, 0x65, 0x79, 0x22, 0x63, 0x0a, 0x0c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x53, 0x0a, 0x0b, - 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x32, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0a, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x48, 0x61, 0x73, - 0x68, 0x22, 0x8a, 0x01, 0x0a, 0x0d, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x52, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x65, 0x6e, - 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x65, 0x72, 0x65, 0x6d, - 0x6f, 0x6e, 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0d, 0x63, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xa7, - 0x01, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x12, 0x4a, 0x0a, 0x08, - 0x63, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, - 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, - 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x08, - 0x63, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x12, 0x4e, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, - 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, - 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, - 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74, - 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x22, 0xc2, 0x03, 0x0a, 0x0f, 0x43, 0x65, 0x72, - 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x54, 0x0a, 0x07, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, - 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, - 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x12, 0x67, 0x0a, 0x0e, 0x62, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x70, 0x65, 0x6e, - 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, - 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x64, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x61, - 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x09, 0x62, - 0x61, 0x64, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, - 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, - 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x2e, 0x42, 0x61, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x48, 0x00, 0x52, 0x08, 0x62, 0x61, 0x64, - 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x57, 0x0a, 0x08, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x65, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, + 0x12, 0x54, 0x0a, 0x0c, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x4b, 0x65, 0x79, 0x22, 0x63, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x53, 0x0a, 0x0b, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, + 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x70, 0x65, + 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, + 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x48, 0x61, 0x73, 0x68, 0x52, + 0x0a, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0x8a, 0x01, 0x0a, 0x0d, + 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x52, 0x0a, + 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, + 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x63, 0x65, 0x72, 0x65, 0x6d, + 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xa7, 0x01, 0x0a, 0x09, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x12, 0x4a, 0x0a, 0x08, 0x63, 0x65, 0x72, 0x65, 0x6d, 0x6f, + 0x6e, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, + 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, + 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x08, 0x63, 0x65, 0x72, 0x65, 0x6d, 0x6f, + 0x6e, 0x79, 0x12, 0x4e, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, + 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, + 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, + 0x74, 0x73, 0x22, 0xc2, 0x03, 0x0a, 0x0f, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x46, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x54, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, - 0x6e, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, - 0x65, 0x64, 0x48, 0x00, 0x52, 0x08, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x65, 0x64, 0x1a, 0x09, - 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x1a, 0x0f, 0x0a, 0x0d, 0x42, 0x61, 0x64, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x0a, 0x0a, 0x08, 0x42, 0x61, - 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x1a, 0x0a, 0x0a, 0x08, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, - 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x22, 0xae, 0x0c, - 0x0a, 0x0d, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x52, 0x0a, 0x07, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x36, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, - 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, 0x70, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x12, 0x66, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x72, - 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x70, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, - 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, - 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x12, 0x66, 0x0a, 0x0f, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x32, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, + 0x6e, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x67, 0x0a, 0x0e, + 0x62, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x6e, - 0x64, 0x32, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, - 0x6e, 0x64, 0x32, 0x12, 0x55, 0x0a, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, - 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x48, 0x00, - 0x52, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x4f, 0x0a, 0x06, 0x66, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x70, 0x65, 0x6e, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x46, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x61, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x09, 0x62, 0x61, 0x64, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, + 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, + 0x6f, 0x6e, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x42, 0x61, 0x64, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x48, 0x00, 0x52, 0x08, 0x62, 0x61, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, + 0x57, 0x0a, 0x08, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x39, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, + 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x46, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, 0x08, + 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x65, 0x64, 0x1a, 0x09, 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x1a, 0x0f, 0x0a, 0x0d, 0x42, 0x61, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x0a, 0x0a, 0x08, 0x42, 0x61, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, + 0x1a, 0x0a, 0x0a, 0x08, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, + 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x22, 0xae, 0x0c, 0x0a, 0x0d, 0x43, 0x65, 0x72, 0x65, + 0x6d, 0x6f, 0x6e, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x52, 0x0a, 0x07, 0x70, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, - 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x48, 0x00, 0x52, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x1a, 0x09, 0x0a, 0x07, 0x50, - 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x1a, 0xb1, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x65, 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x12, 0x48, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, - 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, - 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, - 0x65, 0x65, 0x12, 0x56, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x63, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0xfa, 0x01, 0x0a, 0x0d, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x12, 0x48, 0x0a, 0x09, - 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, - 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x52, 0x09, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x12, 0x56, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x65, - 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, - 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x47, - 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, + 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x66, 0x0a, + 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x31, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, + 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x6f, + 0x75, 0x6e, 0x64, 0x31, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, + 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x12, 0x66, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, + 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, - 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x1a, 0xc9, 0x02, 0x0a, 0x08, 0x46, 0x69, 0x6e, 0x69, - 0x73, 0x68, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x74, 0x65, 0x65, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x12, 0x56, - 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, - 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x43, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, - 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, - 0x52, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, + 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x48, 0x00, 0x52, 0x0d, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x12, 0x55, 0x0a, + 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x37, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, + 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, + 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x48, 0x00, 0x52, 0x08, 0x66, 0x69, 0x6e, 0x69, + 0x73, 0x68, 0x65, 0x64, 0x12, 0x4f, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, + 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, 0x06, 0x66, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x1a, 0x09, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x1a, 0xb1, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x6e, + 0x64, 0x31, 0x12, 0x48, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, + 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, + 0x65, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x12, 0x56, 0x0a, 0x0b, + 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, + 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x1a, 0xfa, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, + 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x12, 0x48, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x74, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x74, 0x65, 0x65, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, + 0x12, 0x56, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, + 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x44, - 0x61, 0x74, 0x61, 0x1a, 0xbf, 0x02, 0x0a, 0x06, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x48, + 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, + 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x73, 0x1a, 0xc9, 0x02, 0x0a, 0x08, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, @@ -2756,192 +2735,211 @@ var file_penumbra_narsil_ledger_v1alpha1_ledger_proto_rawDesc = []byte{ 0x32, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, - 0x65, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x07, 0x66, 0x61, 0x69, - 0x6c, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, + 0x65, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x09, 0x61, 0x75, 0x74, + 0x68, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x70, + 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x44, 0x61, 0x74, 0x61, 0x1a, 0xbf, 0x02, + 0x0a, 0x06, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, + 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, + 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, + 0x65, 0x65, 0x12, 0x56, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, + 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x06, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, - 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x07, 0x66, 0x61, - 0x69, 0x6c, 0x75, 0x72, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xd9, - 0x03, 0x0a, 0x0c, 0x4e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, - 0x5a, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x5f, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, - 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x10, 0x61, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x69, 0x0a, 0x14, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x65, 0x6e, 0x75, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x06, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, + 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x46, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x42, + 0x07, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xd9, 0x03, 0x0a, 0x0c, 0x4e, 0x61, 0x72, + 0x73, 0x69, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x5a, 0x0a, 0x11, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x64, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x48, 0x00, 0x52, 0x10, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x69, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, + 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x13, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x5a, 0x0a, 0x0f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x13, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x5a, 0x0a, 0x0f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, - 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, - 0x48, 0x00, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, - 0x72, 0x65, 0x12, 0x4d, 0x0a, 0x0b, 0x64, 0x6b, 0x67, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, - 0x31, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, + 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x4d, 0x0a, 0x0b, + 0x64, 0x6b, 0x67, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x31, 0x18, 0xe8, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, + 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x48, 0x00, + 0x52, 0x09, 0x64, 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x12, 0x4d, 0x0a, 0x0b, 0x64, + 0x6b, 0x67, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x32, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, + 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x44, 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x48, 0x00, 0x52, + 0x09, 0x64, 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x42, 0x08, 0x0a, 0x06, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x22, 0x2b, 0x0a, 0x0f, 0x46, 0x72, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x22, 0x2f, 0x0a, 0x13, 0x46, 0x72, 0x6f, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x22, 0xb8, 0x03, 0x0a, 0x13, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, + 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x04, 0x62, 0x6f, + 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x6b, 0x67, 0x52, 0x6f, - 0x75, 0x6e, 0x64, 0x31, 0x48, 0x00, 0x52, 0x09, 0x64, 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, 0x64, - 0x31, 0x12, 0x4d, 0x0a, 0x0b, 0x64, 0x6b, 0x67, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x32, - 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x6b, 0x67, 0x52, 0x6f, 0x75, - 0x6e, 0x64, 0x32, 0x48, 0x00, 0x52, 0x09, 0x64, 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, - 0x42, 0x08, 0x0a, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x2b, 0x0a, 0x0f, 0x46, 0x72, - 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x2f, 0x0a, 0x13, 0x46, 0x72, 0x6f, 0x73, 0x74, - 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xb8, 0x03, 0x0a, 0x13, 0x41, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x4d, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, + 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x42, + 0x6f, 0x64, 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x48, 0x0a, 0x06, 0x73, 0x69, 0x67, + 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x73, 0x69, 0x67, + 0x6e, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x1a, 0xb1, 0x01, 0x0a, 0x04, 0x42, 0x6f, + 0x64, 0x79, 0x12, 0x55, 0x0a, 0x0e, 0x63, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x5f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x65, 0x6e, + 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, + 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0d, 0x63, 0x65, 0x72, 0x65, + 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x52, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, - 0x48, 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2e, 0x46, 0x72, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xae, 0x03, + 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, + 0x12, 0x48, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, + 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, + 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x42, 0x6f, 0x64, 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x48, 0x0a, 0x06, 0x73, 0x69, + 0x67, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, + 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x73, 0x69, + 0x67, 0x6e, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, + 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, + 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x1a, 0xb1, 0x01, 0x0a, 0x04, 0x42, + 0x6f, 0x64, 0x79, 0x12, 0x55, 0x0a, 0x0e, 0x63, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x65, + 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, + 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x65, + 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0d, 0x63, 0x65, 0x72, + 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x52, 0x0a, 0x0b, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, - 0x79, 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x09, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, - 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x1a, - 0xb1, 0x01, 0x0a, 0x04, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x55, 0x0a, 0x0e, 0x63, 0x65, 0x72, 0x65, - 0x6d, 0x6f, 0x6e, 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, - 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x52, 0x0d, 0x63, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, - 0x52, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, - 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x22, 0xae, 0x03, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x48, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, - 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, - 0x53, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, - 0x12, 0x48, 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, - 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, - 0x65, 0x79, 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x09, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, - 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, - 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x1a, 0xb1, 0x01, 0x0a, 0x04, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x55, 0x0a, 0x0e, 0x63, 0x65, 0x72, - 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, - 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x43, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x52, 0x0d, 0x63, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x6e, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x12, 0x52, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, - 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x09, 0x44, 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, - 0x64, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x48, 0x0a, 0x06, - 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, - 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x06, - 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70, 0x65, 0x6e, 0x75, - 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xc5, 0x01, 0x0a, - 0x09, 0x44, 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x48, 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, - 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x12, 0x54, - 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x36, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, - 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x22, 0xc9, 0x04, 0x0a, 0x08, 0x44, 0x6b, 0x67, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x1a, 0x65, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x6e, - 0x64, 0x31, 0x12, 0x54, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x31, 0x5f, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, - 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x31, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x1a, 0xbb, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x12, 0x54, 0x0a, 0x10, 0x72, 0x6f, - 0x75, 0x6e, 0x64, 0x5f, 0x31, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, + 0x31, 0x2e, 0x46, 0x72, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xc5, + 0x01, 0x0a, 0x09, 0x44, 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x48, 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, + 0x12, 0x54, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, + 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xc5, 0x01, 0x0a, 0x09, 0x44, 0x6b, 0x67, 0x52, 0x6f, + 0x75, 0x6e, 0x64, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x48, + 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, + 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, + 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, + 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70, 0x65, + 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, + 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xb6, + 0x04, 0x0a, 0x08, 0x44, 0x6b, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x1a, 0x65, 0x0a, 0x0d, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x12, 0x54, 0x0a, 0x10, + 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x31, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, + 0x64, 0x31, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x1a, 0xbb, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x6f, + 0x75, 0x6e, 0x64, 0x32, 0x12, 0x54, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x31, 0x5f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, + 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, + 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x44, 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x6e, + 0x64, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x10, 0x72, 0x6f, + 0x75, 0x6e, 0x64, 0x5f, 0x32, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x31, - 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, - 0x12, 0x54, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x32, 0x5f, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, 0x6e, - 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x6b, 0x67, - 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x97, 0x02, 0x0a, 0x08, 0x46, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x12, 0x54, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x31, 0x5f, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, + 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x1a, 0x84, 0x02, 0x0a, 0x08, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x54, 0x0a, + 0x10, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x31, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, + 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x6b, 0x67, 0x52, 0x6f, 0x75, + 0x6e, 0x64, 0x31, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x32, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x44, 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x6e, 0x64, - 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x10, 0x72, 0x6f, 0x75, - 0x6e, 0x64, 0x5f, 0x32, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, + 0x44, 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x6e, 0x64, + 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x77, 0x61, 0x6c, + 0x6c, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, + 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, + 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x77, 0x61, 0x6c, + 0x6c, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x32, 0x74, 0x0a, 0x0d, 0x4c, 0x65, 0x64, 0x67, 0x65, + 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x63, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x2c, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, + 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, + 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, + 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0xb0, 0x02, + 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x6b, 0x67, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x52, - 0x0e, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, - 0x5f, 0x0a, 0x12, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x65, - 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, - 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, - 0x32, 0x74, 0x0a, 0x0d, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x63, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x2e, 0x70, 0x65, 0x6e, 0x75, - 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0xb0, 0x02, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x70, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x6c, - 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0b, - 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x5d, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2d, 0x7a, 0x6f, 0x6e, 0x65, 0x2f, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x65, - 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2f, 0x6e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2f, 0x6c, 0x65, - 0x64, 0x67, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x6c, 0x65, - 0x64, 0x67, 0x65, 0x72, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x50, - 0x4e, 0x4c, 0xaa, 0x02, 0x1f, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x4e, 0x61, - 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x56, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x1f, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x5c, - 0x4e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x5c, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x5c, 0x56, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x2b, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, - 0x61, 0x5c, 0x4e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x5c, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x5c, - 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x22, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x3a, - 0x3a, 0x4e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x3a, 0x3a, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x3a, - 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0b, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x5d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2d, 0x7a, 0x6f, 0x6e, 0x65, 0x2f, 0x70, + 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, + 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2f, 0x6e, 0x61, + 0x72, 0x73, 0x69, 0x6c, 0x2f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x3b, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x4e, 0x4c, 0xaa, 0x02, 0x1f, 0x50, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x4e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x2e, 0x4c, 0x65, 0x64, 0x67, + 0x65, 0x72, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x1f, 0x50, 0x65, + 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x5c, 0x4e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x5c, 0x4c, 0x65, + 0x64, 0x67, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x2b, + 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x5c, 0x4e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x5c, + 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, + 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x22, 0x50, 0x65, + 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x3a, 0x3a, 0x4e, 0x61, 0x72, 0x73, 0x69, 0x6c, 0x3a, 0x3a, + 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2968,7 +2966,7 @@ var file_penumbra_narsil_ledger_v1alpha1_ledger_proto_goTypes = []interface{}{ (*ShardDescription)(nil), // 7: penumbra.narsil.ledger.v1alpha1.ShardDescription (*ShardOperator)(nil), // 8: penumbra.narsil.ledger.v1alpha1.ShardOperator (*GenesisData)(nil), // 9: penumbra.narsil.ledger.v1alpha1.GenesisData - (*AccountGroupInfo)(nil), // 10: penumbra.narsil.ledger.v1alpha1.AccountGroupInfo + (*WalletInfo)(nil), // 10: penumbra.narsil.ledger.v1alpha1.WalletInfo (*ShardInfo)(nil), // 11: penumbra.narsil.ledger.v1alpha1.ShardInfo (*RequestIndex)(nil), // 12: penumbra.narsil.ledger.v1alpha1.RequestIndex (*CeremonyIndex)(nil), // 13: penumbra.narsil.ledger.v1alpha1.CeremonyIndex @@ -3009,8 +3007,8 @@ var file_penumbra_narsil_ledger_v1alpha1_ledger_proto_depIdxs = []int32{ 3, // 2: penumbra.narsil.ledger.v1alpha1.ShardDescription.consensus_key:type_name -> penumbra.narsil.ledger.v1alpha1.ConsensusKey 7, // 3: penumbra.narsil.ledger.v1alpha1.ShardOperator.description:type_name -> penumbra.narsil.ledger.v1alpha1.ShardDescription 8, // 4: penumbra.narsil.ledger.v1alpha1.GenesisData.operators:type_name -> penumbra.narsil.ledger.v1alpha1.ShardOperator - 39, // 5: penumbra.narsil.ledger.v1alpha1.AccountGroupInfo.full_viewing_key:type_name -> penumbra.core.keys.v1alpha1.FullViewingKey - 11, // 6: penumbra.narsil.ledger.v1alpha1.AccountGroupInfo.participants:type_name -> penumbra.narsil.ledger.v1alpha1.ShardInfo + 39, // 5: penumbra.narsil.ledger.v1alpha1.WalletInfo.full_viewing_key:type_name -> penumbra.core.keys.v1alpha1.FullViewingKey + 11, // 6: penumbra.narsil.ledger.v1alpha1.WalletInfo.participants:type_name -> penumbra.narsil.ledger.v1alpha1.ShardInfo 40, // 7: penumbra.narsil.ledger.v1alpha1.ShardInfo.shard_verification_key:type_name -> penumbra.core.keys.v1alpha1.SpendVerificationKey 2, // 8: penumbra.narsil.ledger.v1alpha1.ShardInfo.identity_key:type_name -> penumbra.narsil.ledger.v1alpha1.ShardIdentityKey 41, // 9: penumbra.narsil.ledger.v1alpha1.RequestIndex.effect_hash:type_name -> penumbra.core.component.chain.v1alpha1.EffectHash @@ -3063,7 +3061,7 @@ var file_penumbra_narsil_ledger_v1alpha1_ledger_proto_depIdxs = []int32{ 23, // 56: penumbra.narsil.ledger.v1alpha1.DkgState.StartedRound2.round_2_messages:type_name -> penumbra.narsil.ledger.v1alpha1.DkgRound2 22, // 57: penumbra.narsil.ledger.v1alpha1.DkgState.Finished.round_1_messages:type_name -> penumbra.narsil.ledger.v1alpha1.DkgRound1 23, // 58: penumbra.narsil.ledger.v1alpha1.DkgState.Finished.round_2_messages:type_name -> penumbra.narsil.ledger.v1alpha1.DkgRound2 - 10, // 59: penumbra.narsil.ledger.v1alpha1.DkgState.Finished.account_group_info:type_name -> penumbra.narsil.ledger.v1alpha1.AccountGroupInfo + 10, // 59: penumbra.narsil.ledger.v1alpha1.DkgState.Finished.wallet_info:type_name -> penumbra.narsil.ledger.v1alpha1.WalletInfo 0, // 60: penumbra.narsil.ledger.v1alpha1.LedgerService.Info:input_type -> penumbra.narsil.ledger.v1alpha1.InfoRequest 1, // 61: penumbra.narsil.ledger.v1alpha1.LedgerService.Info:output_type -> penumbra.narsil.ledger.v1alpha1.InfoResponse 61, // [61:62] is the sub-list for method output_type @@ -3200,7 +3198,7 @@ func file_penumbra_narsil_ledger_v1alpha1_ledger_proto_init() { } } file_penumbra_narsil_ledger_v1alpha1_ledger_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountGroupInfo); i { + switch v := v.(*WalletInfo); i { case 0: return &v.state case 1: diff --git a/proto/go/gen/penumbra/view/v1alpha1/view.pb.go b/proto/go/gen/penumbra/view/v1alpha1/view.pb.go index e7e88d9c82..e9bc2a0ed7 100644 --- a/proto/go/gen/penumbra/view/v1alpha1/view.pb.go +++ b/proto/go/gen/penumbra/view/v1alpha1/view.pb.go @@ -267,8 +267,8 @@ type TransactionPlannerRequest struct { Memo *v1alpha1.MemoPlaintext `protobuf:"bytes,3,opt,name=memo,proto3" json:"memo,omitempty"` // If present, only spends funds from the given account. Source *v1alpha12.AddressIndex `protobuf:"bytes,4,opt,name=source,proto3" json:"source,omitempty"` - // Optionally identifies the account group to query. - AccountGroupId *v1alpha12.AccountGroupId `protobuf:"bytes,14,opt,name=account_group_id,json=accountGroupId,proto3" json:"account_group_id,omitempty"` + // Optionally identifies the wallet id to query. + WalletId *v1alpha12.WalletId `protobuf:"bytes,14,opt,name=wallet_id,json=walletId,proto3" json:"wallet_id,omitempty"` // Request contents Outputs []*TransactionPlannerRequest_Output `protobuf:"bytes,20,rep,name=outputs,proto3" json:"outputs,omitempty"` Swaps []*TransactionPlannerRequest_Swap `protobuf:"bytes,30,rep,name=swaps,proto3" json:"swaps,omitempty"` @@ -341,9 +341,9 @@ func (x *TransactionPlannerRequest) GetSource() *v1alpha12.AddressIndex { return nil } -func (x *TransactionPlannerRequest) GetAccountGroupId() *v1alpha12.AccountGroupId { +func (x *TransactionPlannerRequest) GetWalletId() *v1alpha12.WalletId { if x != nil { - return x.AccountGroupId + return x.WalletId } return nil } @@ -1017,8 +1017,8 @@ type StatusRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Identifies the account group to query. - AccountGroupId *v1alpha12.AccountGroupId `protobuf:"bytes,14,opt,name=account_group_id,json=accountGroupId,proto3" json:"account_group_id,omitempty"` + // Identifies the wallet id to query. + WalletId *v1alpha12.WalletId `protobuf:"bytes,14,opt,name=wallet_id,json=walletId,proto3" json:"wallet_id,omitempty"` } func (x *StatusRequest) Reset() { @@ -1053,9 +1053,9 @@ func (*StatusRequest) Descriptor() ([]byte, []int) { return file_penumbra_view_v1alpha1_view_proto_rawDescGZIP(), []int{17} } -func (x *StatusRequest) GetAccountGroupId() *v1alpha12.AccountGroupId { +func (x *StatusRequest) GetWalletId() *v1alpha12.WalletId { if x != nil { - return x.AccountGroupId + return x.WalletId } return nil } @@ -1124,8 +1124,8 @@ type StatusStreamRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Identifies the account group to query. - AccountGroupId *v1alpha12.AccountGroupId `protobuf:"bytes,14,opt,name=account_group_id,json=accountGroupId,proto3" json:"account_group_id,omitempty"` + // Identifies the wallet id to query. + WalletId *v1alpha12.WalletId `protobuf:"bytes,14,opt,name=wallet_id,json=walletId,proto3" json:"wallet_id,omitempty"` } func (x *StatusStreamRequest) Reset() { @@ -1160,9 +1160,9 @@ func (*StatusStreamRequest) Descriptor() ([]byte, []int) { return file_penumbra_view_v1alpha1_view_proto_rawDescGZIP(), []int{19} } -func (x *StatusStreamRequest) GetAccountGroupId() *v1alpha12.AccountGroupId { +func (x *StatusStreamRequest) GetWalletId() *v1alpha12.WalletId { if x != nil { - return x.AccountGroupId + return x.WalletId } return nil } @@ -1242,8 +1242,8 @@ type NotesRequest struct { // // Ignored if `asset_id` is unset or if `include_spent` is set. AmountToSpend *v1alpha15.Amount `protobuf:"bytes,6,opt,name=amount_to_spend,json=amountToSpend,proto3" json:"amount_to_spend,omitempty"` - // Identifies the account group to query. - AccountGroupId *v1alpha12.AccountGroupId `protobuf:"bytes,14,opt,name=account_group_id,json=accountGroupId,proto3" json:"account_group_id,omitempty"` + // Identifies the wallet id to query. + WalletId *v1alpha12.WalletId `protobuf:"bytes,14,opt,name=wallet_id,json=walletId,proto3" json:"wallet_id,omitempty"` } func (x *NotesRequest) Reset() { @@ -1306,9 +1306,9 @@ func (x *NotesRequest) GetAmountToSpend() *v1alpha15.Amount { return nil } -func (x *NotesRequest) GetAccountGroupId() *v1alpha12.AccountGroupId { +func (x *NotesRequest) GetWalletId() *v1alpha12.WalletId { if x != nil { - return x.AccountGroupId + return x.WalletId } return nil } @@ -1323,8 +1323,8 @@ type NotesForVotingRequest struct { VotableAtHeight uint64 `protobuf:"varint,1,opt,name=votable_at_height,json=votableAtHeight,proto3" json:"votable_at_height,omitempty"` // If set, only return notes with the specified asset id. AddressIndex *v1alpha12.AddressIndex `protobuf:"bytes,3,opt,name=address_index,json=addressIndex,proto3" json:"address_index,omitempty"` - // Identifies the account group to query. - AccountGroupId *v1alpha12.AccountGroupId `protobuf:"bytes,14,opt,name=account_group_id,json=accountGroupId,proto3" json:"account_group_id,omitempty"` + // Identifies the wallet id to query. + WalletId *v1alpha12.WalletId `protobuf:"bytes,14,opt,name=wallet_id,json=walletId,proto3" json:"wallet_id,omitempty"` } func (x *NotesForVotingRequest) Reset() { @@ -1373,9 +1373,9 @@ func (x *NotesForVotingRequest) GetAddressIndex() *v1alpha12.AddressIndex { return nil } -func (x *NotesForVotingRequest) GetAccountGroupId() *v1alpha12.AccountGroupId { +func (x *NotesForVotingRequest) GetWalletId() *v1alpha12.WalletId { if x != nil { - return x.AccountGroupId + return x.WalletId } return nil } @@ -1389,8 +1389,8 @@ type WitnessRequest struct { NoteCommitments []*v1alpha16.StateCommitment `protobuf:"bytes,2,rep,name=note_commitments,json=noteCommitments,proto3" json:"note_commitments,omitempty"` // The transaction plan to witness TransactionPlan *v1alpha1.TransactionPlan `protobuf:"bytes,3,opt,name=transaction_plan,json=transactionPlan,proto3" json:"transaction_plan,omitempty"` - // Identifies the account group to query. - AccountGroupId *v1alpha12.AccountGroupId `protobuf:"bytes,14,opt,name=account_group_id,json=accountGroupId,proto3" json:"account_group_id,omitempty"` + // Identifies the wallet id to query. + WalletId *v1alpha12.WalletId `protobuf:"bytes,14,opt,name=wallet_id,json=walletId,proto3" json:"wallet_id,omitempty"` } func (x *WitnessRequest) Reset() { @@ -1439,9 +1439,9 @@ func (x *WitnessRequest) GetTransactionPlan() *v1alpha1.TransactionPlan { return nil } -func (x *WitnessRequest) GetAccountGroupId() *v1alpha12.AccountGroupId { +func (x *WitnessRequest) GetWalletId() *v1alpha12.WalletId { if x != nil { - return x.AccountGroupId + return x.WalletId } return nil } @@ -1927,8 +1927,8 @@ type NoteByCommitmentRequest struct { NoteCommitment *v1alpha16.StateCommitment `protobuf:"bytes,2,opt,name=note_commitment,json=noteCommitment,proto3" json:"note_commitment,omitempty"` // If set to true, waits to return until the requested note is detected. AwaitDetection bool `protobuf:"varint,3,opt,name=await_detection,json=awaitDetection,proto3" json:"await_detection,omitempty"` - // Identifies the account group to query. - AccountGroupId *v1alpha12.AccountGroupId `protobuf:"bytes,14,opt,name=account_group_id,json=accountGroupId,proto3" json:"account_group_id,omitempty"` + // Identifies the wallet id to query. + WalletId *v1alpha12.WalletId `protobuf:"bytes,14,opt,name=wallet_id,json=walletId,proto3" json:"wallet_id,omitempty"` } func (x *NoteByCommitmentRequest) Reset() { @@ -1977,9 +1977,9 @@ func (x *NoteByCommitmentRequest) GetAwaitDetection() bool { return false } -func (x *NoteByCommitmentRequest) GetAccountGroupId() *v1alpha12.AccountGroupId { +func (x *NoteByCommitmentRequest) GetWalletId() *v1alpha12.WalletId { if x != nil { - return x.AccountGroupId + return x.WalletId } return nil } @@ -2039,8 +2039,8 @@ type SwapByCommitmentRequest struct { SwapCommitment *v1alpha16.StateCommitment `protobuf:"bytes,2,opt,name=swap_commitment,json=swapCommitment,proto3" json:"swap_commitment,omitempty"` // If set to true, waits to return until the requested swap is detected. AwaitDetection bool `protobuf:"varint,3,opt,name=await_detection,json=awaitDetection,proto3" json:"await_detection,omitempty"` - // Identifies the account group to query. - AccountGroupId *v1alpha12.AccountGroupId `protobuf:"bytes,14,opt,name=account_group_id,json=accountGroupId,proto3" json:"account_group_id,omitempty"` + // Identifies the wallet id to query. + WalletId *v1alpha12.WalletId `protobuf:"bytes,14,opt,name=wallet_id,json=walletId,proto3" json:"wallet_id,omitempty"` } func (x *SwapByCommitmentRequest) Reset() { @@ -2089,9 +2089,9 @@ func (x *SwapByCommitmentRequest) GetAwaitDetection() bool { return false } -func (x *SwapByCommitmentRequest) GetAccountGroupId() *v1alpha12.AccountGroupId { +func (x *SwapByCommitmentRequest) GetWalletId() *v1alpha12.WalletId { if x != nil { - return x.AccountGroupId + return x.WalletId } return nil } @@ -2148,8 +2148,8 @@ type UnclaimedSwapsRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Identifies the account group to query. - AccountGroupId *v1alpha12.AccountGroupId `protobuf:"bytes,1,opt,name=account_group_id,json=accountGroupId,proto3" json:"account_group_id,omitempty"` + // Identifies the wallet id to query. + WalletId *v1alpha12.WalletId `protobuf:"bytes,1,opt,name=wallet_id,json=walletId,proto3" json:"wallet_id,omitempty"` } func (x *UnclaimedSwapsRequest) Reset() { @@ -2184,9 +2184,9 @@ func (*UnclaimedSwapsRequest) Descriptor() ([]byte, []int) { return file_penumbra_view_v1alpha1_view_proto_rawDescGZIP(), []int{37} } -func (x *UnclaimedSwapsRequest) GetAccountGroupId() *v1alpha12.AccountGroupId { +func (x *UnclaimedSwapsRequest) GetWalletId() *v1alpha12.WalletId { if x != nil { - return x.AccountGroupId + return x.WalletId } return nil } @@ -2245,8 +2245,8 @@ type NullifierStatusRequest struct { Nullifier *v1alpha19.Nullifier `protobuf:"bytes,2,opt,name=nullifier,proto3" json:"nullifier,omitempty"` AwaitDetection bool `protobuf:"varint,3,opt,name=await_detection,json=awaitDetection,proto3" json:"await_detection,omitempty"` - // Identifies the account group to query. - AccountGroupId *v1alpha12.AccountGroupId `protobuf:"bytes,14,opt,name=account_group_id,json=accountGroupId,proto3" json:"account_group_id,omitempty"` + // Identifies the wallet id to query. + WalletId *v1alpha12.WalletId `protobuf:"bytes,14,opt,name=wallet_id,json=walletId,proto3" json:"wallet_id,omitempty"` } func (x *NullifierStatusRequest) Reset() { @@ -2295,9 +2295,9 @@ func (x *NullifierStatusRequest) GetAwaitDetection() bool { return false } -func (x *NullifierStatusRequest) GetAccountGroupId() *v1alpha12.AccountGroupId { +func (x *NullifierStatusRequest) GetWalletId() *v1alpha12.WalletId { if x != nil { - return x.AccountGroupId + return x.WalletId } return nil } @@ -3587,7 +3587,7 @@ var file_penumbra_view_v1alpha1_view_proto_rawDesc = []byte{ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xb2, 0x13, 0x0a, 0x19, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x9f, 0x13, 0x0a, 0x19, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x65, 0x78, 0x70, @@ -3604,790 +3604,778 @@ var file_penumbra_view_v1alpha1_view_proto_rawDesc = []byte{ 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x55, 0x0a, 0x10, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, - 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x52, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, - 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, - 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x4c, 0x0a, 0x05, 0x73, - 0x77, 0x61, 0x70, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70, 0x65, 0x6e, - 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, - 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x77, - 0x61, 0x70, 0x52, 0x05, 0x73, 0x77, 0x61, 0x70, 0x73, 0x12, 0x5c, 0x0a, 0x0b, 0x73, 0x77, 0x61, - 0x70, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, - 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x0a, 0x73, 0x77, 0x61, - 0x70, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x5c, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x28, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x70, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x62, 0x0a, 0x0d, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x70, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x75, 0x6e, 0x64, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x0b, 0x69, 0x62, 0x63, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, - 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, - 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x62, 0x63, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x62, 0x63, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0a, 0x69, 0x62, 0x63, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x65, 0x0a, 0x0e, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x18, 0x46, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, - 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4f, - 0x70, 0x65, 0x6e, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, - 0x6e, 0x73, 0x12, 0x68, 0x0a, 0x0f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, - 0x6c, 0x6f, 0x73, 0x65, 0x73, 0x18, 0x47, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x70, 0x65, + 0x12, 0x42, 0x0a, 0x09, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x52, 0x08, 0x77, 0x61, 0x6c, 0x6c, + 0x65, 0x74, 0x49, 0x64, 0x12, 0x52, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, + 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, + 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, + 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x4c, 0x0a, 0x05, 0x73, 0x77, 0x61, 0x70, + 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, + 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, + 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x52, + 0x05, 0x73, 0x77, 0x61, 0x70, 0x73, 0x12, 0x5c, 0x0a, 0x0b, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x63, + 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x52, 0x0e, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x73, 0x12, 0x71, 0x0a, 0x12, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x73, 0x18, 0x48, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, + 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, + 0x77, 0x61, 0x70, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x0a, 0x73, 0x77, 0x61, 0x70, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x73, 0x12, 0x5c, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x28, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x70, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, + 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x62, 0x0a, 0x0d, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x70, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, + 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x6e, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x0b, 0x69, 0x62, 0x63, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x65, + 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, + 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x62, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x49, 0x62, 0x63, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x69, 0x62, + 0x63, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x65, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x18, 0x46, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x6e, + 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x6e, 0x73, 0x12, + 0x68, 0x0a, 0x0f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x6f, 0x73, + 0x65, 0x73, 0x18, 0x47, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x11, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x1a, - 0x83, 0x01, 0x0a, 0x06, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x65, 0x6e, 0x75, - 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, - 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x93, 0x02, 0x0a, 0x04, 0x53, 0x77, 0x61, 0x70, 0x12, 0x39, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, - 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x48, 0x0a, 0x0c, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, - 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x73, - 0x73, 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x66, 0x65, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x52, 0x03, 0x66, 0x65, 0x65, - 0x12, 0x49, 0x0a, 0x0d, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0c, 0x63, - 0x6c, 0x61, 0x69, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x63, 0x0a, 0x09, 0x53, - 0x77, 0x61, 0x70, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x56, 0x0a, 0x0f, 0x73, 0x77, 0x61, 0x70, - 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x6f, 0x2e, 0x74, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x0e, 0x73, 0x77, 0x61, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, - 0x1a, 0x95, 0x01, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6e, 0x75, - 0x6d, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x09, 0x72, 0x61, 0x74, - 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, - 0x72, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x96, 0x01, 0x0a, 0x0a, 0x55, 0x6e, 0x64, - 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x73, 0x12, 0x71, 0x0a, 0x12, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x18, + 0x48, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, + 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x11, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x1a, 0x83, 0x01, 0x0a, + 0x06, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, - 0x73, 0x74, 0x61, 0x6b, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, - 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x72, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x1a, 0x5a, 0x0a, 0x0c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, - 0x6e, 0x12, 0x4a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x65, - 0x78, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x62, 0x0a, - 0x0d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x12, 0x51, - 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x65, - 0x78, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x1a, 0x87, 0x02, 0x0a, 0x10, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, - 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x12, 0x51, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, - 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, - 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x65, - 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, - 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x52, 0x08, 0x72, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, - 0x5f, 0x70, 0x61, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x65, - 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, - 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0b, - 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x22, 0x65, 0x0a, 0x1a, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x04, 0x70, 0x6c, 0x61, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x04, 0x70, 0x6c, - 0x61, 0x6e, 0x22, 0x90, 0x01, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x79, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4e, 0x0a, 0x0d, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, + 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0c, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x27, 0x0a, 0x0f, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x22, 0x58, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x3e, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, - 0x57, 0x0a, 0x15, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x65, 0x6e, 0x75, - 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, - 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x68, 0x0a, 0x16, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, - 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x22, 0x92, 0x01, 0x0a, 0x17, 0x45, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4e, - 0x0a, 0x0d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x52, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x27, - 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, - 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x22, 0x5a, 0x0a, 0x18, 0x45, 0x70, 0x68, 0x65, 0x6d, - 0x65, 0x72, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, + 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x1a, 0x93, 0x02, 0x0a, 0x04, 0x53, 0x77, 0x61, 0x70, 0x12, 0x39, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x65, 0x6e, + 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x48, 0x0a, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, + 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x73, 0x73, + 0x65, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x49, 0x64, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, + 0x12, 0x3b, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, + 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x66, 0x65, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x49, 0x0a, + 0x0d, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x0f, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x0f, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x52, 0x0d, 0x61, 0x73, 0x73, 0x65, 0x74, - 0x49, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x96, 0x01, 0x0a, 0x10, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, - 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, - 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, - 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, + 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0c, 0x63, 0x6c, 0x61, 0x69, + 0x6d, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x63, 0x0a, 0x09, 0x53, 0x77, 0x61, 0x70, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x56, 0x0a, 0x0f, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, + 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, + 0x2e, 0x74, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x73, + 0x77, 0x61, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x95, 0x01, + 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x65, 0x6e, + 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6e, 0x75, 0x6d, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, + 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x09, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x72, 0x61, 0x74, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x96, 0x01, 0x0a, 0x0a, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x22, 0x25, 0x0a, 0x0d, 0x56, 0x69, 0x65, 0x77, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x22, 0x50, 0x0a, 0x0f, 0x56, 0x69, 0x65, 0x77, - 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x03, 0x66, - 0x76, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, - 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x75, 0x6c, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x69, - 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x66, 0x76, 0x6b, 0x22, 0x4f, 0x0a, 0x10, 0x56, 0x69, - 0x65, 0x77, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, - 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, - 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x41, 0x75, 0x74, 0x68, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x66, 0x0a, 0x0d, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x55, 0x0a, 0x10, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x4d, 0x0a, 0x09, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x74, 0x61, + 0x6b, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x74, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x72, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x5a, + 0x0a, 0x0c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x4a, + 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x62, 0x0a, 0x0d, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0b, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x1a, 0x87, + 0x02, 0x0a, 0x10, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, + 0x72, 0x61, 0x77, 0x12, 0x51, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, + 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x2e, 0x64, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, + 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x2e, 0x64, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x73, 0x12, 0x54, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, + 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, + 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x2e, 0x64, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0b, 0x74, 0x72, 0x61, + 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x22, 0x65, 0x0a, 0x1a, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x22, + 0x90, 0x01, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4e, 0x0a, 0x0d, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0c, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x72, 0x6d, 0x22, 0x58, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x79, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, + 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x57, 0x0a, 0x15, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x22, 0x52, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x68, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x73, 0x79, 0x6e, 0x63, - 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x63, 0x68, 0x69, - 0x6e, 0x67, 0x5f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x61, 0x74, - 0x63, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x70, 0x22, 0x6c, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x55, - 0x0a, 0x10, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, - 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, - 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x72, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, - 0x19, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x16, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x63, - 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x73, - 0x79, 0x6e, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xe8, 0x02, 0x0a, 0x0c, 0x4e, 0x6f, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x70, 0x65, 0x6e, 0x74, 0x12, - 0x40, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, - 0x64, 0x12, 0x4e, 0x0a, 0x0d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, - 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x52, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x12, 0x4a, 0x0a, 0x0f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x73, - 0x70, 0x65, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x65, 0x6e, - 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6e, 0x75, 0x6d, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0d, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x55, 0x0a, - 0x10, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, - 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x68, 0x0a, 0x16, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x79, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x4e, 0x0a, 0x0d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x52, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, + 0x92, 0x01, 0x0a, 0x17, 0x45, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4e, 0x0a, 0x0d, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0c, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x27, 0x0a, 0x0f, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x72, 0x6d, 0x22, 0x5a, 0x0a, 0x18, 0x45, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, + 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3e, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x22, 0xb2, 0x01, 0x0a, 0x0f, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, + 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, + 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x0f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, + 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x52, 0x0d, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x96, 0x01, 0x0a, 0x10, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x07, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x65, + 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x3d, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x25, + 0x0a, 0x0d, 0x56, 0x69, 0x65, 0x77, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, + 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x22, 0x50, 0x0a, 0x0f, 0x56, 0x69, 0x65, 0x77, 0x41, 0x75, 0x74, + 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x76, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x46, 0x75, 0x6c, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x69, 0x6e, 0x67, 0x4b, + 0x65, 0x79, 0x52, 0x03, 0x66, 0x76, 0x6b, 0x22, 0x4f, 0x0a, 0x10, 0x56, 0x69, 0x65, 0x77, 0x41, + 0x75, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x65, 0x6e, + 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x53, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x77, 0x61, 0x6c, + 0x6c, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, + 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, + 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, + 0x74, 0x49, 0x64, 0x52, 0x08, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x22, 0x52, 0x0a, + 0x0e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x73, 0x79, 0x6e, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x55, + 0x70, 0x22, 0x59, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x77, 0x61, 0x6c, 0x6c, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x65, + 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, + 0x49, 0x64, 0x52, 0x08, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x22, 0x72, 0x0a, 0x14, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x19, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6b, + 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4b, + 0x6e, 0x6f, 0x77, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, + 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x73, 0x79, 0x6e, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x22, 0xd5, 0x02, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x70, 0x65, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x53, 0x70, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, + 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x52, + 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x4e, 0x0a, 0x0d, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0c, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x4a, 0x0a, 0x0f, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6e, 0x75, 0x6d, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0d, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x53, + 0x70, 0x65, 0x6e, 0x64, 0x12, 0x42, 0x0a, 0x09, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x64, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x64, 0x22, 0xea, 0x01, 0x0a, 0x15, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x46, 0x6f, - 0x72, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, - 0x0a, 0x11, 0x76, 0x6f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x74, 0x5f, 0x68, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x76, 0x6f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x41, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x4e, 0x0a, 0x0d, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x52, 0x08, + 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x22, 0xd7, 0x01, 0x0a, 0x15, 0x4e, 0x6f, 0x74, + 0x65, 0x73, 0x46, 0x6f, 0x72, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x6f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x74, + 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x76, + 0x6f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x4e, + 0x0a, 0x0d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x42, + 0x0a, 0x09, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0c, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x55, 0x0a, 0x10, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x64, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x64, 0x22, 0xa1, 0x02, 0x0a, 0x0e, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x58, 0x0a, 0x10, 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, - 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, - 0x2e, 0x74, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x6e, - 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x5e, - 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6c, - 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, - 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x0f, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x55, - 0x0a, 0x10, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, - 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, - 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x65, 0x0a, 0x0f, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x6e, - 0x65, 0x73, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, - 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x0b, 0x77, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x22, 0xde, 0x01, 0x0a, - 0x16, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x64, 0x0a, 0x12, 0x61, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x11, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0x6c, 0x0a, - 0x17, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, - 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xab, 0x03, 0x0a, 0x0d, - 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x08, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x12, 0x69, 0x0a, 0x1e, 0x69, 0x6e, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x5f, 0x64, 0x65, - 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x52, 0x1c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0x12, 0x38, 0x0a, 0x18, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x75, 0x6e, 0x62, 0x6f, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x55, 0x6e, 0x62, 0x6f, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6c, 0x70, 0x5f, 0x6e, 0x66, 0x74, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4c, 0x70, 0x4e, 0x66, - 0x74, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x70, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x6e, 0x66, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x4e, 0x66, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x1d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x5f, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x65, - 0x69, 0x70, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0x64, 0x0a, 0x0e, 0x41, 0x73, 0x73, - 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0e, 0x64, - 0x65, 0x6e, 0x6f, 0x6d, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x0d, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, - 0x16, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x62, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x49, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x41, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, - 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x46, - 0x4d, 0x44, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x6e, 0x0a, 0x15, 0x46, 0x4d, 0x44, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x0a, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x35, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x6d, 0x64, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x22, 0xf1, 0x01, 0x0a, 0x17, 0x4e, 0x6f, 0x74, 0x65, 0x42, 0x79, 0x43, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x56, 0x0a, 0x0f, 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, - 0x62, 0x72, 0x61, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x74, 0x63, 0x74, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x77, 0x61, 0x69, 0x74, - 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0e, 0x61, 0x77, 0x61, 0x69, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x55, 0x0a, 0x10, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, - 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x6e, 0x0a, 0x18, 0x4e, 0x6f, 0x74, 0x65, 0x42, - 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0e, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, - 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, - 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0d, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x61, - 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x22, 0xf1, 0x01, 0x0a, 0x17, 0x53, 0x77, 0x61, 0x70, - 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x0f, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x74, - 0x63, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x73, 0x77, 0x61, - 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, - 0x77, 0x61, 0x69, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x77, 0x61, 0x69, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x10, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, - 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, - 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x52, 0x0e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x52, 0x0a, 0x18, 0x53, - 0x77, 0x61, 0x70, 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x73, 0x77, 0x61, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, - 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, - 0x77, 0x61, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x04, 0x73, 0x77, 0x61, 0x70, 0x22, - 0x6e, 0x0a, 0x15, 0x55, 0x6e, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x53, 0x77, 0x61, 0x70, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x55, 0x0a, 0x10, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x52, - 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, - 0x50, 0x0a, 0x16, 0x55, 0x6e, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x53, 0x77, 0x61, 0x70, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x73, 0x77, 0x61, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x53, 0x77, 0x61, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x04, 0x73, 0x77, 0x61, - 0x70, 0x22, 0xe7, 0x01, 0x0a, 0x16, 0x4e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x09, - 0x6e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x63, 0x74, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x52, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x61, - 0x77, 0x61, 0x69, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x77, 0x61, 0x69, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x10, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, - 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, - 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x52, 0x0e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x17, 0x4e, - 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x70, 0x65, 0x6e, 0x74, 0x22, 0x56, 0x0a, 0x1c, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x42, - 0x79, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, - 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x64, - 0x52, 0x02, 0x69, 0x64, 0x22, 0x5a, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, - 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x22, 0xdb, 0x02, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x36, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, - 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x64, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x51, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, + 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x52, 0x08, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, + 0x49, 0x64, 0x22, 0x8e, 0x02, 0x0a, 0x0e, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x58, 0x0a, 0x10, 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x6f, 0x2e, 0x74, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0f, + 0x6e, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x5e, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, + 0x6c, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x70, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x0f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x12, + 0x42, 0x0a, 0x09, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x52, 0x08, 0x77, 0x61, 0x6c, 0x6c, 0x65, + 0x74, 0x49, 0x64, 0x22, 0x65, 0x0a, 0x0f, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x6e, 0x65, 0x73, + 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x47, 0x0a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x69, 0x65, 0x77, 0x52, 0x04, 0x76, 0x69, 0x65, 0x77, 0x22, 0x5b, - 0x0a, 0x17, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x07, 0x74, 0x78, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x65, 0x6e, - 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x61, 0x0a, 0x1d, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, - 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x07, - 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x5d, - 0x0a, 0x0d, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x4c, 0x0a, 0x0b, 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, - 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x70, - 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0xb3, 0x01, - 0x0a, 0x16, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0b, 0x6e, 0x6f, 0x74, 0x65, - 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x31, 0x2e, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x77, + 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x22, 0xde, 0x01, 0x0a, 0x16, 0x57, + 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x64, 0x0a, 0x12, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x35, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x11, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0x6c, 0x0a, 0x17, 0x57, + 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x65, + 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xab, 0x03, 0x0a, 0x0d, 0x41, 0x73, + 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x12, 0x69, 0x0a, 0x1e, 0x69, 0x6e, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x5f, 0x64, 0x65, 0x6e, 0x6f, + 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, + 0x65, 0x6e, 0x6f, 0x6d, 0x52, 0x1c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x63, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x38, + 0x0a, 0x18, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x5f, 0x6c, 0x70, 0x5f, 0x6e, 0x66, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4c, 0x70, 0x4e, 0x66, 0x74, 0x73, + 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x6e, 0x66, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x4e, 0x66, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x1d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, + 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, + 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0x64, 0x0a, 0x0e, 0x41, 0x73, 0x73, 0x65, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0e, 0x64, 0x65, 0x6e, + 0x6f, 0x6d, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, + 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x16, 0x0a, + 0x14, 0x41, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x62, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, + 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x41, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x46, 0x4d, 0x44, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x6e, 0x0a, 0x15, 0x46, 0x4d, 0x44, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x0a, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, + 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, + 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x6d, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x22, 0xde, 0x01, 0x0a, 0x17, 0x4e, 0x6f, 0x74, 0x65, 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x56, 0x0a, + 0x0f, 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x61, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x74, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x64, + 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, + 0x61, 0x77, 0x61, 0x69, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, + 0x0a, 0x09, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x52, 0x08, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, + 0x49, 0x64, 0x22, 0x6e, 0x0a, 0x18, 0x4e, 0x6f, 0x74, 0x65, 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, + 0x0a, 0x0e, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x53, 0x70, 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x52, 0x0d, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, + 0x74, 0x65, 0x22, 0xde, 0x01, 0x0a, 0x17, 0x53, 0x77, 0x61, 0x70, 0x42, 0x79, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x56, + 0x0a, 0x0f, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, + 0x72, 0x61, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x74, 0x63, 0x74, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x73, 0x77, 0x61, 0x70, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x77, 0x61, 0x69, 0x74, 0x5f, + 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0e, 0x61, 0x77, 0x61, 0x69, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x42, 0x0a, 0x09, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x52, 0x08, 0x77, 0x61, 0x6c, 0x6c, 0x65, + 0x74, 0x49, 0x64, 0x22, 0x52, 0x0a, 0x18, 0x53, 0x77, 0x61, 0x70, 0x42, 0x79, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x36, 0x0a, 0x04, 0x73, 0x77, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, - 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x65, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x4b, 0x0a, 0x0c, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x52, 0x04, 0x73, 0x77, 0x61, 0x70, 0x22, 0x5b, 0x0a, 0x15, 0x55, 0x6e, 0x63, 0x6c, 0x61, + 0x69, 0x6d, 0x65, 0x64, 0x53, 0x77, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x42, 0x0a, 0x09, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x52, 0x08, 0x77, 0x61, 0x6c, 0x6c, + 0x65, 0x74, 0x49, 0x64, 0x22, 0x50, 0x0a, 0x16, 0x55, 0x6e, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, + 0x64, 0x53, 0x77, 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, + 0x0a, 0x04, 0x73, 0x77, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, + 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x52, 0x04, 0x73, 0x77, 0x61, 0x70, 0x22, 0xd4, 0x01, 0x0a, 0x16, 0x4e, 0x75, 0x6c, 0x6c, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x4d, 0x0a, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x73, + 0x63, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x77, 0x61, 0x69, 0x74, + 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x09, 0x77, 0x61, 0x6c, + 0x6c, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, - 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x4b, 0x65, 0x79, 0x22, 0x88, 0x04, 0x0a, 0x13, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c, - 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x56, 0x0a, 0x0f, 0x6e, - 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x74, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x68, 0x69, 0x65, - 0x6c, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x12, 0x4e, 0x0a, - 0x0d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, - 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x4d, 0x0a, - 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x63, 0x74, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x52, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, - 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x70, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x68, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x53, 0x70, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x63, 0x68, 0x61, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xe7, - 0x03, 0x0a, 0x0a, 0x53, 0x77, 0x61, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x56, 0x0a, - 0x0f, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, + 0x74, 0x49, 0x64, 0x52, 0x08, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x22, 0x2f, 0x0a, + 0x17, 0x4e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x70, 0x65, 0x6e, 0x74, 0x22, 0x56, + 0x0a, 0x1c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x65, 0x6e, + 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5a, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x48, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x22, 0xdb, 0x02, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x36, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x65, 0x6e, + 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x51, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x65, + 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x0b, 0x70, 0x65, 0x72, + 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, + 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x73, + 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x47, 0x0a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x69, 0x65, 0x77, 0x52, 0x04, 0x76, 0x69, 0x65, 0x77, + 0x22, 0x5b, 0x0a, 0x17, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x07, 0x74, + 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, + 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x61, 0x0a, + 0x1d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, + 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, + 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x78, 0x49, 0x6e, 0x66, 0x6f, + 0x22, 0x5d, 0x0a, 0x0d, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x4c, 0x0a, 0x0b, 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x53, 0x70, 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, + 0xb3, 0x01, 0x0a, 0x16, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x56, 0x6f, 0x74, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0b, 0x6e, 0x6f, + 0x74, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x61, 0x62, + 0x6c, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0a, 0x6e, 0x6f, + 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x4b, 0x0a, 0x0c, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, + 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, + 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x4b, 0x65, 0x79, 0x22, 0x88, 0x04, 0x0a, 0x13, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x61, + 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x56, 0x0a, + 0x0f, 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x74, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x73, 0x77, 0x61, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x04, 0x73, 0x77, 0x61, 0x70, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x65, - 0x78, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x50, - 0x6c, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x04, 0x73, 0x77, 0x61, 0x70, 0x12, 0x1a, - 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x09, 0x6e, 0x75, - 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, - 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, - 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x09, - 0x6e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x5a, 0x0a, 0x0b, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, + 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x68, + 0x69, 0x65, 0x6c, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x12, + 0x4e, 0x0a, 0x0d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x52, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, + 0x4d, 0x0a, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x63, 0x74, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x52, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x25, + 0x0a, 0x0e, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, + 0x73, 0x70, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x53, 0x70, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x63, + 0x68, 0x61, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x6f, + 0x74, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x22, 0xe7, 0x03, 0x0a, 0x0a, 0x53, 0x77, 0x61, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, + 0x56, 0x0a, 0x0f, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, + 0x62, 0x72, 0x61, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x74, 0x63, 0x74, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x73, 0x77, 0x61, 0x70, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x04, 0x73, 0x77, 0x61, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, + 0x64, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x77, 0x61, + 0x70, 0x50, 0x6c, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x04, 0x73, 0x77, 0x61, 0x70, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x09, + 0x6e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x63, 0x74, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x52, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x5a, 0x0a, 0x0b, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x39, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x77, 0x61, + 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0d, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x12, 0x4a, + 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, + 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, + 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xcb, 0x01, 0x0a, 0x17, 0x4f, + 0x77, 0x6e, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5a, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x77, 0x61, 0x70, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, - 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x68, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x06, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x70, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xcb, 0x01, 0x0a, 0x17, 0x4f, 0x77, 0x6e, - 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x5a, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x54, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x69, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, - 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, - 0x2e, 0x64, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, - 0x61, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x64, 0x69, - 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x22, 0x6d, 0x0a, 0x18, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, - 0x74, 0x2e, 0x64, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x32, 0xad, 0x14, 0x0a, 0x13, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x57, 0x0a, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, - 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, - 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, - 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x30, 0x01, 0x12, 0x56, 0x0a, 0x05, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x70, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, - 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x71, 0x0a, 0x0e, 0x4e, - 0x6f, 0x74, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x2d, 0x2e, - 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x56, - 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x56, 0x6f, - 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x5a, - 0x0a, 0x07, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x26, 0x2e, 0x70, 0x65, 0x6e, 0x75, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x54, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, + 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, + 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x2e, 0x64, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0b, 0x74, 0x72, 0x61, + 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x22, 0x6d, 0x0a, 0x18, 0x4f, 0x77, 0x6e, 0x65, + 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x32, 0xad, 0x14, 0x0a, 0x13, 0x56, 0x69, 0x65, 0x77, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x57, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, - 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x6e, 0x65, - 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x0f, 0x57, 0x69, - 0x74, 0x6e, 0x65, 0x73, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x2e, 0x2e, - 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x41, 0x6e, - 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, - 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x41, 0x6e, - 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, - 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, + 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x26, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x2b, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x26, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x6c, 0x0a, 0x0d, 0x41, 0x70, 0x70, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x2e, 0x70, 0x65, 0x6e, + 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, + 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x56, 0x0a, 0x05, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x24, + 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, + 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x6f, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x71, 0x0a, + 0x0e, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x12, + 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x46, 0x6f, + 0x72, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, + 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x46, 0x6f, 0x72, + 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, + 0x12, 0x5a, 0x0a, 0x07, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x26, 0x2e, 0x70, 0x65, + 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, + 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x69, 0x74, + 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x0f, + 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x41, 0x6e, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, + 0x2e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, + 0x41, 0x6e, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, + 0x41, 0x6e, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x59, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x65, 0x6e, + 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, + 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x6c, 0x0a, 0x0d, 0x41, + 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x2e, 0x70, + 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x0d, 0x46, 0x4d, 0x44, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x2e, 0x70, 0x65, 0x6e, + 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x46, 0x4d, 0x44, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x41, 0x70, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x0d, 0x46, 0x4d, 0x44, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, - 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x4d, 0x44, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, - 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x46, 0x4d, 0x44, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, - 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, - 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, 0x45, 0x70, 0x68, 0x65, 0x6d, - 0x65, 0x72, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2f, 0x2e, 0x70, 0x65, - 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, - 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, - 0x0a, 0x08, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x65, 0x6e, - 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, - 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, - 0x75, 0x0a, 0x10, 0x4e, 0x6f, 0x74, 0x65, 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, - 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, - 0x65, 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, - 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x6f, - 0x74, 0x65, 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, 0x53, 0x77, 0x61, 0x70, 0x42, 0x79, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x2e, 0x70, 0x65, 0x6e, + 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0e, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, 0x65, - 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, - 0x0e, 0x55, 0x6e, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x53, 0x77, 0x61, 0x70, 0x73, 0x12, - 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x6e, 0x63, 0x6c, 0x61, 0x69, 0x6d, - 0x65, 0x64, 0x53, 0x77, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, - 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x6e, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, - 0x64, 0x53, 0x77, 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, - 0x12, 0x72, 0x0a, 0x0f, 0x4e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x2e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, - 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x75, 0x6c, - 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, - 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x75, 0x6c, - 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x12, 0x34, - 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, - 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x48, - 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x0f, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, - 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, + 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, 0x45, 0x70, 0x68, + 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2f, 0x2e, + 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, - 0x01, 0x12, 0x7b, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x31, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, - 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x70, 0x65, 0x6e, - 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, - 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x81, - 0x01, 0x0a, 0x14, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x70, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, + 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x5f, 0x0a, 0x08, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x77, 0x0a, 0x10, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, + 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, + 0x01, 0x12, 0x75, 0x0a, 0x10, 0x4e, 0x6f, 0x74, 0x65, 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, + 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, + 0x6f, 0x74, 0x65, 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, - 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x78, 0x0a, 0x11, 0x41, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x6e, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, - 0x12, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x65, 0x41, 0x6e, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, - 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x6e, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x70, 0x0a, 0x0f, 0x56, 0x69, 0x65, 0x77, 0x41, 0x75, 0x74, - 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5d, 0x0a, 0x08, 0x56, 0x69, 0x65, 0x77, - 0x41, 0x75, 0x74, 0x68, 0x12, 0x27, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, - 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x69, - 0x65, 0x77, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, - 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x41, 0x75, 0x74, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0xf5, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, + 0x4e, 0x6f, 0x74, 0x65, 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, 0x53, 0x77, 0x61, 0x70, + 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x2e, 0x70, + 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x09, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2d, 0x7a, 0x6f, 0x6e, 0x65, 0x2f, 0x70, 0x65, - 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, - 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2f, 0x76, 0x69, 0x65, - 0x77, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x76, 0x69, 0x65, 0x77, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x56, 0x58, 0xaa, 0x02, 0x16, - 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x2e, 0x56, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x16, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, - 0x61, 0x5c, 0x56, 0x69, 0x65, 0x77, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, - 0x02, 0x22, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x5c, 0x56, 0x69, 0x65, 0x77, 0x5c, - 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x3a, - 0x3a, 0x56, 0x69, 0x65, 0x77, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x42, 0x79, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x71, 0x0a, 0x0e, 0x55, 0x6e, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x53, 0x77, 0x61, 0x70, + 0x73, 0x12, 0x2d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, + 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x6e, 0x63, 0x6c, 0x61, + 0x69, 0x6d, 0x65, 0x64, 0x53, 0x77, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x6e, 0x63, 0x6c, 0x61, 0x69, + 0x6d, 0x65, 0x64, 0x53, 0x77, 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x30, 0x01, 0x12, 0x72, 0x0a, 0x0f, 0x4e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, + 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, + 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, + 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, + 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, + 0x12, 0x34, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x42, + 0x79, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, + 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x2e, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x30, 0x01, 0x12, 0x7b, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x31, 0x2e, 0x70, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, + 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x70, + 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x81, 0x01, 0x0a, 0x14, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x70, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, + 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x10, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x2f, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, + 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x78, 0x0a, + 0x11, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x6e, 0x64, 0x42, 0x75, 0x69, + 0x6c, 0x64, 0x12, 0x30, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, + 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x6e, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, + 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x6e, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x70, 0x0a, 0x0f, 0x56, 0x69, 0x65, 0x77, 0x41, + 0x75, 0x74, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5d, 0x0a, 0x08, 0x56, 0x69, + 0x65, 0x77, 0x41, 0x75, 0x74, 0x68, 0x12, 0x27, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x56, 0x69, 0x65, 0x77, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x28, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x41, 0x75, 0x74, + 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0xf5, 0x01, 0x0a, 0x1a, 0x63, 0x6f, + 0x6d, 0x2e, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x09, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2d, 0x7a, 0x6f, 0x6e, 0x65, 0x2f, + 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, + 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2f, 0x76, + 0x69, 0x65, 0x77, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x76, 0x69, 0x65, + 0x77, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x56, 0x58, 0xaa, + 0x02, 0x16, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x2e, + 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x16, 0x50, 0x65, 0x6e, 0x75, 0x6d, + 0x62, 0x72, 0x61, 0x5c, 0x56, 0x69, 0x65, 0x77, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0xe2, 0x02, 0x22, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x5c, 0x56, 0x69, 0x65, + 0x77, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, + 0x61, 0x3a, 0x3a, 0x56, 0x69, 0x65, 0x77, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4471,7 +4459,7 @@ var file_penumbra_view_v1alpha1_view_proto_goTypes = []interface{}{ (*v1alpha11.Fee)(nil), // 64: penumbra.core.component.fee.v1alpha1.Fee (*v1alpha1.MemoPlaintext)(nil), // 65: penumbra.core.transaction.v1alpha1.MemoPlaintext (*v1alpha12.AddressIndex)(nil), // 66: penumbra.core.keys.v1alpha1.AddressIndex - (*v1alpha12.AccountGroupId)(nil), // 67: penumbra.core.keys.v1alpha1.AccountGroupId + (*v1alpha12.WalletId)(nil), // 67: penumbra.core.keys.v1alpha1.WalletId (*v1alpha13.IbcAction)(nil), // 68: penumbra.core.component.ibc.v1alpha1.IbcAction (*v1alpha12.Address)(nil), // 69: penumbra.core.keys.v1alpha1.Address (*v1alpha14.AssetId)(nil), // 70: penumbra.core.asset.v1alpha1.AssetId @@ -4508,7 +4496,7 @@ var file_penumbra_view_v1alpha1_view_proto_depIdxs = []int32{ 64, // 5: penumbra.view.v1alpha1.TransactionPlannerRequest.fee:type_name -> penumbra.core.component.fee.v1alpha1.Fee 65, // 6: penumbra.view.v1alpha1.TransactionPlannerRequest.memo:type_name -> penumbra.core.transaction.v1alpha1.MemoPlaintext 66, // 7: penumbra.view.v1alpha1.TransactionPlannerRequest.source:type_name -> penumbra.core.keys.v1alpha1.AddressIndex - 67, // 8: penumbra.view.v1alpha1.TransactionPlannerRequest.account_group_id:type_name -> penumbra.core.keys.v1alpha1.AccountGroupId + 67, // 8: penumbra.view.v1alpha1.TransactionPlannerRequest.wallet_id:type_name -> penumbra.core.keys.v1alpha1.WalletId 52, // 9: penumbra.view.v1alpha1.TransactionPlannerRequest.outputs:type_name -> penumbra.view.v1alpha1.TransactionPlannerRequest.Output 53, // 10: penumbra.view.v1alpha1.TransactionPlannerRequest.swaps:type_name -> penumbra.view.v1alpha1.TransactionPlannerRequest.Swap 54, // 11: penumbra.view.v1alpha1.TransactionPlannerRequest.swap_claims:type_name -> penumbra.view.v1alpha1.TransactionPlannerRequest.SwapClaim @@ -4531,17 +4519,17 @@ var file_penumbra_view_v1alpha1_view_proto_depIdxs = []int32{ 71, // 28: penumbra.view.v1alpha1.BalancesResponse.balance:type_name -> penumbra.core.asset.v1alpha1.Value 72, // 29: penumbra.view.v1alpha1.ViewAuthRequest.fvk:type_name -> penumbra.core.keys.v1alpha1.FullViewingKey 14, // 30: penumbra.view.v1alpha1.ViewAuthResponse.token:type_name -> penumbra.view.v1alpha1.ViewAuthToken - 67, // 31: penumbra.view.v1alpha1.StatusRequest.account_group_id:type_name -> penumbra.core.keys.v1alpha1.AccountGroupId - 67, // 32: penumbra.view.v1alpha1.StatusStreamRequest.account_group_id:type_name -> penumbra.core.keys.v1alpha1.AccountGroupId + 67, // 31: penumbra.view.v1alpha1.StatusRequest.wallet_id:type_name -> penumbra.core.keys.v1alpha1.WalletId + 67, // 32: penumbra.view.v1alpha1.StatusStreamRequest.wallet_id:type_name -> penumbra.core.keys.v1alpha1.WalletId 70, // 33: penumbra.view.v1alpha1.NotesRequest.asset_id:type_name -> penumbra.core.asset.v1alpha1.AssetId 66, // 34: penumbra.view.v1alpha1.NotesRequest.address_index:type_name -> penumbra.core.keys.v1alpha1.AddressIndex 73, // 35: penumbra.view.v1alpha1.NotesRequest.amount_to_spend:type_name -> penumbra.core.num.v1alpha1.Amount - 67, // 36: penumbra.view.v1alpha1.NotesRequest.account_group_id:type_name -> penumbra.core.keys.v1alpha1.AccountGroupId + 67, // 36: penumbra.view.v1alpha1.NotesRequest.wallet_id:type_name -> penumbra.core.keys.v1alpha1.WalletId 66, // 37: penumbra.view.v1alpha1.NotesForVotingRequest.address_index:type_name -> penumbra.core.keys.v1alpha1.AddressIndex - 67, // 38: penumbra.view.v1alpha1.NotesForVotingRequest.account_group_id:type_name -> penumbra.core.keys.v1alpha1.AccountGroupId + 67, // 38: penumbra.view.v1alpha1.NotesForVotingRequest.wallet_id:type_name -> penumbra.core.keys.v1alpha1.WalletId 74, // 39: penumbra.view.v1alpha1.WitnessRequest.note_commitments:type_name -> penumbra.crypto.tct.v1alpha1.StateCommitment 60, // 40: penumbra.view.v1alpha1.WitnessRequest.transaction_plan:type_name -> penumbra.core.transaction.v1alpha1.TransactionPlan - 67, // 41: penumbra.view.v1alpha1.WitnessRequest.account_group_id:type_name -> penumbra.core.keys.v1alpha1.AccountGroupId + 67, // 41: penumbra.view.v1alpha1.WitnessRequest.wallet_id:type_name -> penumbra.core.keys.v1alpha1.WalletId 75, // 42: penumbra.view.v1alpha1.WitnessResponse.witness_data:type_name -> penumbra.core.transaction.v1alpha1.WitnessData 60, // 43: penumbra.view.v1alpha1.WitnessAndBuildRequest.transaction_plan:type_name -> penumbra.core.transaction.v1alpha1.TransactionPlan 61, // 44: penumbra.view.v1alpha1.WitnessAndBuildRequest.authorization_data:type_name -> penumbra.core.transaction.v1alpha1.AuthorizationData @@ -4551,15 +4539,15 @@ var file_penumbra_view_v1alpha1_view_proto_depIdxs = []int32{ 78, // 48: penumbra.view.v1alpha1.AppParametersResponse.parameters:type_name -> penumbra.core.app.v1alpha1.AppParameters 79, // 49: penumbra.view.v1alpha1.FMDParametersResponse.parameters:type_name -> penumbra.core.component.chain.v1alpha1.FmdParameters 74, // 50: penumbra.view.v1alpha1.NoteByCommitmentRequest.note_commitment:type_name -> penumbra.crypto.tct.v1alpha1.StateCommitment - 67, // 51: penumbra.view.v1alpha1.NoteByCommitmentRequest.account_group_id:type_name -> penumbra.core.keys.v1alpha1.AccountGroupId + 67, // 51: penumbra.view.v1alpha1.NoteByCommitmentRequest.wallet_id:type_name -> penumbra.core.keys.v1alpha1.WalletId 48, // 52: penumbra.view.v1alpha1.NoteByCommitmentResponse.spendable_note:type_name -> penumbra.view.v1alpha1.SpendableNoteRecord 74, // 53: penumbra.view.v1alpha1.SwapByCommitmentRequest.swap_commitment:type_name -> penumbra.crypto.tct.v1alpha1.StateCommitment - 67, // 54: penumbra.view.v1alpha1.SwapByCommitmentRequest.account_group_id:type_name -> penumbra.core.keys.v1alpha1.AccountGroupId + 67, // 54: penumbra.view.v1alpha1.SwapByCommitmentRequest.wallet_id:type_name -> penumbra.core.keys.v1alpha1.WalletId 49, // 55: penumbra.view.v1alpha1.SwapByCommitmentResponse.swap:type_name -> penumbra.view.v1alpha1.SwapRecord - 67, // 56: penumbra.view.v1alpha1.UnclaimedSwapsRequest.account_group_id:type_name -> penumbra.core.keys.v1alpha1.AccountGroupId + 67, // 56: penumbra.view.v1alpha1.UnclaimedSwapsRequest.wallet_id:type_name -> penumbra.core.keys.v1alpha1.WalletId 49, // 57: penumbra.view.v1alpha1.UnclaimedSwapsResponse.swap:type_name -> penumbra.view.v1alpha1.SwapRecord 80, // 58: penumbra.view.v1alpha1.NullifierStatusRequest.nullifier:type_name -> penumbra.core.component.sct.v1alpha1.Nullifier - 67, // 59: penumbra.view.v1alpha1.NullifierStatusRequest.account_group_id:type_name -> penumbra.core.keys.v1alpha1.AccountGroupId + 67, // 59: penumbra.view.v1alpha1.NullifierStatusRequest.wallet_id:type_name -> penumbra.core.keys.v1alpha1.WalletId 63, // 60: penumbra.view.v1alpha1.TransactionInfoByHashRequest.id:type_name -> penumbra.core.transaction.v1alpha1.Id 63, // 61: penumbra.view.v1alpha1.TransactionInfo.id:type_name -> penumbra.core.transaction.v1alpha1.Id 62, // 62: penumbra.view.v1alpha1.TransactionInfo.transaction:type_name -> penumbra.core.transaction.v1alpha1.Transaction diff --git a/proto/penumbra/penumbra/core/keys/v1alpha1/keys.proto b/proto/penumbra/penumbra/core/keys/v1alpha1/keys.proto index 10b61da7e3..8f1f5f828b 100644 --- a/proto/penumbra/penumbra/core/keys/v1alpha1/keys.proto +++ b/proto/penumbra/penumbra/core/keys/v1alpha1/keys.proto @@ -22,7 +22,7 @@ message AddressView { message Visible { Address address = 1; AddressIndex index = 2; - AccountGroupId account_group_id = 3; + WalletId wallet_id = 3; } message Opaque { Address address = 1; @@ -49,7 +49,7 @@ message FullViewingKey { bytes inner = 1; } -message AccountGroupId { +message WalletId { bytes inner = 1; } diff --git a/proto/penumbra/penumbra/custody/v1alpha1/custody.proto b/proto/penumbra/penumbra/custody/v1alpha1/custody.proto index 77255d6ea8..1a48685621 100644 --- a/proto/penumbra/penumbra/custody/v1alpha1/custody.proto +++ b/proto/penumbra/penumbra/custody/v1alpha1/custody.proto @@ -25,7 +25,7 @@ message AuthorizeRequest { // The transaction plan to authorize. core.transaction.v1alpha1.TransactionPlan plan = 1; // Identifies the FVK (and hence the spend authorization key) to use for signing. - core.keys.v1alpha1.AccountGroupId account_group_id = 2; + core.keys.v1alpha1.WalletId wallet_id = 2; // Optionally, pre-authorization data, if required by the custodian. // diff --git a/proto/penumbra/penumbra/narsil/ledger/v1alpha1/ledger.proto b/proto/penumbra/penumbra/narsil/ledger/v1alpha1/ledger.proto index d50056ad8c..2831c03837 100644 --- a/proto/penumbra/penumbra/narsil/ledger/v1alpha1/ledger.proto +++ b/proto/penumbra/penumbra/narsil/ledger/v1alpha1/ledger.proto @@ -106,17 +106,17 @@ message GenesisData { uint32 threshold = 2; } -// Describes the Penumbra account group jointly controlled by the Narsil instance. -message AccountGroupInfo { +// Describes the Penumbra wallet id jointly controlled by the Narsil instance. +message WalletInfo { // The full viewing key for the shared account. // // In the Penumbra key hierarchy, this is the highest-authority key below // spend authority, and allows deriving all subkeys for all accounts in the - // account group. It is replicated across all shards. + // wallet id. It is replicated across all shards. // // The spend verification key component is the `PK` in the FROST I-D. core.keys.v1alpha1.FullViewingKey full_viewing_key = 1; - // Describes the participants in the account group. + // Describes the participants in the wallet id. repeated ShardInfo participants = 2; } @@ -352,7 +352,7 @@ message DkgState { // A list of round 2 messages received so far (begins empty). repeated DkgRound2 round_2_messages = 2; } - // The DKG has finished successfully, producing the jointly-controlled `AccountGroupInfo`. + // The DKG has finished successfully, producing the jointly-controlled `WalletInfo`. // // Unlike the signing ceremony, we don't record a failure case here: if the DKG fails, we abort the entire ledger. message Finished { @@ -360,7 +360,7 @@ message DkgState { repeated DkgRound1 round_1_messages = 1; // A list of messages received during round 2. repeated DkgRound2 round_2_messages = 2; - // The jointly-controlled `AccountGroupInfo` resulting from the DKG. - AccountGroupInfo account_group_info = 3; + // The jointly-controlled `WalletInfo` resulting from the DKG. + WalletInfo wallet_info = 3; } } diff --git a/proto/penumbra/penumbra/view/v1alpha1/view.proto b/proto/penumbra/penumbra/view/v1alpha1/view.proto index 2f91409b50..ab4297235c 100644 --- a/proto/penumbra/penumbra/view/v1alpha1/view.proto +++ b/proto/penumbra/penumbra/view/v1alpha1/view.proto @@ -21,7 +21,7 @@ import "penumbra/core/component/stake/v1alpha1/stake.proto"; // responsible for synchronizing and scanning the public chain state with one or // more full viewing keys. // -// View protocol requests optionally include the account group ID, used to +// View protocol requests optionally include the wallet id, used to // identify which set of data to query. service ViewProtocolService { // Get current status of chain sync @@ -141,8 +141,8 @@ message TransactionPlannerRequest { // If present, only spends funds from the given account. core.keys.v1alpha1.AddressIndex source = 4; - // Optionally identifies the account group to query. - core.keys.v1alpha1.AccountGroupId account_group_id = 14; + // Optionally identifies the wallet id to query. + core.keys.v1alpha1.WalletId wallet_id = 14; // Request contents repeated Output outputs = 20; @@ -269,8 +269,8 @@ service ViewAuthService { // Requests sync status of the view service. message StatusRequest { - // Identifies the account group to query. - core.keys.v1alpha1.AccountGroupId account_group_id = 14; + // Identifies the wallet id to query. + core.keys.v1alpha1.WalletId wallet_id = 14; } // Returns the status of the view service and whether it is synchronized with the chain state. @@ -283,8 +283,8 @@ message StatusResponse { // Requests streaming updates on the sync height until the view service is synchronized. message StatusStreamRequest { - // Identifies the account group to query. - core.keys.v1alpha1.AccountGroupId account_group_id = 14; + // Identifies the wallet id to query. + core.keys.v1alpha1.WalletId wallet_id = 14; } // A streaming sync status update @@ -312,8 +312,8 @@ message NotesRequest { // Ignored if `asset_id` is unset or if `include_spent` is set. core.num.v1alpha1.Amount amount_to_spend = 6; - // Identifies the account group to query. - core.keys.v1alpha1.AccountGroupId account_group_id = 14; + // Identifies the wallet id to query. + core.keys.v1alpha1.WalletId wallet_id = 14; } // A query for notes to be used for voting on a proposal. @@ -324,8 +324,8 @@ message NotesForVotingRequest { // If set, only return notes with the specified asset id. core.keys.v1alpha1.AddressIndex address_index = 3; - // Identifies the account group to query. - core.keys.v1alpha1.AccountGroupId account_group_id = 14; + // Identifies the wallet id to query. + core.keys.v1alpha1.WalletId wallet_id = 14; } message WitnessRequest { @@ -335,8 +335,8 @@ message WitnessRequest { // The transaction plan to witness core.transaction.v1alpha1.TransactionPlan transaction_plan = 3; - // Identifies the account group to query. - core.keys.v1alpha1.AccountGroupId account_group_id = 14; + // Identifies the wallet id to query. + core.keys.v1alpha1.WalletId wallet_id = 14; } message WitnessResponse { @@ -394,8 +394,8 @@ message NoteByCommitmentRequest { crypto.tct.v1alpha1.StateCommitment note_commitment = 2; // If set to true, waits to return until the requested note is detected. bool await_detection = 3; - // Identifies the account group to query. - core.keys.v1alpha1.AccountGroupId account_group_id = 14; + // Identifies the wallet id to query. + core.keys.v1alpha1.WalletId wallet_id = 14; } message NoteByCommitmentResponse { @@ -406,8 +406,8 @@ message SwapByCommitmentRequest { crypto.tct.v1alpha1.StateCommitment swap_commitment = 2; // If set to true, waits to return until the requested swap is detected. bool await_detection = 3; - // Identifies the account group to query. - core.keys.v1alpha1.AccountGroupId account_group_id = 14; + // Identifies the wallet id to query. + core.keys.v1alpha1.WalletId wallet_id = 14; } message SwapByCommitmentResponse { @@ -415,8 +415,8 @@ message SwapByCommitmentResponse { } message UnclaimedSwapsRequest { - // Identifies the account group to query. - core.keys.v1alpha1.AccountGroupId account_group_id = 1; + // Identifies the wallet id to query. + core.keys.v1alpha1.WalletId wallet_id = 1; } message UnclaimedSwapsResponse { @@ -426,8 +426,8 @@ message UnclaimedSwapsResponse { message NullifierStatusRequest { core.component.sct.v1alpha1.Nullifier nullifier = 2; bool await_detection = 3; - // Identifies the account group to query. - core.keys.v1alpha1.AccountGroupId account_group_id = 14; + // Identifies the wallet id to query. + core.keys.v1alpha1.WalletId wallet_id = 14; } message NullifierStatusResponse {