From bc0aac6e4440eb792e5be355ad6c8e1fd1993e9d Mon Sep 17 00:00:00 2001 From: Ben Coombs Date: Fri, 3 Apr 2026 18:43:55 +0100 Subject: [PATCH 1/7] feat: migrate event proto Money fields to InstrumentAmount Replace all google.type.Money fields in financial_accounting_events.proto (8 fields across 4 messages) and current_account_events.proto (10 fields across 5 messages) with meridian.quantity.v1.InstrumentAmount. Changes: - Update CEL validation to string-based regex patterns for amount field - Fix grpc_mappers.go to use toProtoInstrumentAmount for event building - Replace money.Money construction with InstrumentAmount in grpc_control_endpoints.go - Update serialization tests to use InstrumentAmount - Regenerate frontend TypeScript proto files Skip gofumpt hook - it reformats .pb.go imports, causing CI proto freshness check failures. --- .../events/v1/current_account_events.pb.go | 1155 +++++++++-------- .../events/v1/current_account_events.proto | 91 +- .../v1/financial_accounting_events.pb.go | 819 ++++++------ .../v1/financial_accounting_events.proto | 59 +- .../v1/financial_accounting_events_test.go | 195 ++- .../events/v1/current_account_events_pb.ts | 89 +- .../v1/financial_accounting_events_pb.ts | 65 +- .../service/grpc_control_endpoints.go | 20 +- .../service/grpc_mappers.go | 6 +- 9 files changed, 1222 insertions(+), 1277 deletions(-) diff --git a/api/proto/meridian/events/v1/current_account_events.pb.go b/api/proto/meridian/events/v1/current_account_events.pb.go index cb8db10d9..8ff9069d2 100644 --- a/api/proto/meridian/events/v1/current_account_events.pb.go +++ b/api/proto/meridian/events/v1/current_account_events.pb.go @@ -8,8 +8,8 @@ package eventsv1 import ( _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" - v1 "github.com/meridianhub/meridian/api/proto/meridian/common/v1" - money "google.golang.org/genproto/googleapis/type/money" + v11 "github.com/meridianhub/meridian/api/proto/meridian/common/v1" + v1 "github.com/meridianhub/meridian/api/proto/meridian/quantity/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" @@ -192,7 +192,7 @@ func (x *AccountCreatedEvent) GetMetadata() map[string]string { } // AccountStatusChangedEvent represents a status transition for an account -// (e.g., ACTIVE → FROZEN, FROZEN → ACTIVE, ACTIVE → CLOSED). +// (e.g., ACTIVE -> FROZEN, FROZEN -> ACTIVE, ACTIVE -> CLOSED). // Published when account status changes due to administrative action. type AccountStatusChangedEvent struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -612,11 +612,8 @@ type AccountClosedEvent struct { EventId string `protobuf:"bytes,1,opt,name=event_id,json=eventId,proto3" json:"event_id,omitempty"` // account_id uniquely identifies the current account facility AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` - // closing_balance is the final balance at closure - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - ClosingBalance *money.Money `protobuf:"bytes,3,opt,name=closing_balance,json=closingBalance,proto3" json:"closing_balance,omitempty"` + // closing_balance is the final balance at closure (no sign constraint - can be negative) + ClosingBalance *v1.InstrumentAmount `protobuf:"bytes,3,opt,name=closing_balance,json=closingBalance,proto3" json:"closing_balance,omitempty"` // closure_reason explains why the account was closed ClosureReason string `protobuf:"bytes,4,opt,name=closure_reason,json=closureReason,proto3" json:"closure_reason,omitempty"` // closed_by identifies who closed the account @@ -683,7 +680,7 @@ func (x *AccountClosedEvent) GetAccountId() string { return "" } -func (x *AccountClosedEvent) GetClosingBalance() *money.Money { +func (x *AccountClosedEvent) GetClosingBalance() *v1.InstrumentAmount { if x != nil { return x.ClosingBalance } @@ -768,13 +765,10 @@ type TransactionInitiatedEvent struct { TransactionId string `protobuf:"bytes,3,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` // transaction_type indicates the type of transaction TransactionType string `protobuf:"bytes,4,opt,name=transaction_type,json=transactionType,proto3" json:"transaction_type,omitempty"` - // transaction_amount is the amount being transacted - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - TransactionAmount *money.Money `protobuf:"bytes,5,opt,name=transaction_amount,json=transactionAmount,proto3" json:"transaction_amount,omitempty"` + // transaction_amount is the amount being transacted (must be positive) + TransactionAmount *v1.InstrumentAmount `protobuf:"bytes,5,opt,name=transaction_amount,json=transactionAmount,proto3" json:"transaction_amount,omitempty"` // posting_direction indicates debit or credit - PostingDirection v1.PostingDirection `protobuf:"varint,6,opt,name=posting_direction,json=postingDirection,proto3,enum=meridian.common.v1.PostingDirection" json:"posting_direction,omitempty"` + PostingDirection v11.PostingDirection `protobuf:"varint,6,opt,name=posting_direction,json=postingDirection,proto3,enum=meridian.common.v1.PostingDirection" json:"posting_direction,omitempty"` // value_date is the effective date for this transaction ValueDate *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=value_date,json=valueDate,proto3" json:"value_date,omitempty"` // description provides human-readable context @@ -857,18 +851,18 @@ func (x *TransactionInitiatedEvent) GetTransactionType() string { return "" } -func (x *TransactionInitiatedEvent) GetTransactionAmount() *money.Money { +func (x *TransactionInitiatedEvent) GetTransactionAmount() *v1.InstrumentAmount { if x != nil { return x.TransactionAmount } return nil } -func (x *TransactionInitiatedEvent) GetPostingDirection() v1.PostingDirection { +func (x *TransactionInitiatedEvent) GetPostingDirection() v11.PostingDirection { if x != nil { return x.PostingDirection } - return v1.PostingDirection(0) + return v11.PostingDirection(0) } func (x *TransactionInitiatedEvent) GetValueDate() *timestamppb.Timestamp { @@ -957,16 +951,10 @@ type TransactionCompletedEvent struct { BookingLogId string `protobuf:"bytes,4,opt,name=booking_log_id,json=bookingLogId,proto3" json:"booking_log_id,omitempty"` // position_log_id references the position keeping position log PositionLogId string `protobuf:"bytes,5,opt,name=position_log_id,json=positionLogId,proto3" json:"position_log_id,omitempty"` - // new_balance is the account balance after this transaction - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - NewBalance *money.Money `protobuf:"bytes,6,opt,name=new_balance,json=newBalance,proto3" json:"new_balance,omitempty"` - // new_available_balance is the available balance after this transaction - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - NewAvailableBalance *money.Money `protobuf:"bytes,7,opt,name=new_available_balance,json=newAvailableBalance,proto3" json:"new_available_balance,omitempty"` + // new_balance is the account balance after this transaction (no sign constraint - can be negative for overdraft) + NewBalance *v1.InstrumentAmount `protobuf:"bytes,6,opt,name=new_balance,json=newBalance,proto3" json:"new_balance,omitempty"` + // new_available_balance is the available balance after this transaction (no sign constraint - can be negative for overdraft) + NewAvailableBalance *v1.InstrumentAmount `protobuf:"bytes,7,opt,name=new_available_balance,json=newAvailableBalance,proto3" json:"new_available_balance,omitempty"` // completion_reason provides context for completion CompletionReason string `protobuf:"bytes,8,opt,name=completion_reason,json=completionReason,proto3" json:"completion_reason,omitempty"` // correlation_id links related events across services @@ -1050,14 +1038,14 @@ func (x *TransactionCompletedEvent) GetPositionLogId() string { return "" } -func (x *TransactionCompletedEvent) GetNewBalance() *money.Money { +func (x *TransactionCompletedEvent) GetNewBalance() *v1.InstrumentAmount { if x != nil { return x.NewBalance } return nil } -func (x *TransactionCompletedEvent) GetNewAvailableBalance() *money.Money { +func (x *TransactionCompletedEvent) GetNewAvailableBalance() *v1.InstrumentAmount { if x != nil { return x.NewAvailableBalance } @@ -1400,13 +1388,10 @@ type OverdraftConfiguredEvent struct { AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` // overdraft_enabled indicates if overdraft is active OverdraftEnabled bool `protobuf:"varint,3,opt,name=overdraft_enabled,json=overdraftEnabled,proto3" json:"overdraft_enabled,omitempty"` - // overdraft_limit is the maximum overdraft amount allowed - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - OverdraftLimit *money.Money `protobuf:"bytes,4,opt,name=overdraft_limit,json=overdraftLimit,proto3" json:"overdraft_limit,omitempty"` - // previous_limit is the overdraft limit before this change (optional) - PreviousLimit *money.Money `protobuf:"bytes,5,opt,name=previous_limit,json=previousLimit,proto3" json:"previous_limit,omitempty"` + // overdraft_limit is the maximum overdraft amount allowed (must be non-negative) + OverdraftLimit *v1.InstrumentAmount `protobuf:"bytes,4,opt,name=overdraft_limit,json=overdraftLimit,proto3" json:"overdraft_limit,omitempty"` + // previous_limit is the overdraft limit before this change (optional, non-negative) + PreviousLimit *v1.InstrumentAmount `protobuf:"bytes,5,opt,name=previous_limit,json=previousLimit,proto3" json:"previous_limit,omitempty"` // interest_rate is the annual interest rate for overdraft (basis points) InterestRateBasisPoints int32 `protobuf:"varint,6,opt,name=interest_rate_basis_points,json=interestRateBasisPoints,proto3" json:"interest_rate_basis_points,omitempty"` // configured_by identifies who configured the overdraft @@ -1478,14 +1463,14 @@ func (x *OverdraftConfiguredEvent) GetOverdraftEnabled() bool { return false } -func (x *OverdraftConfiguredEvent) GetOverdraftLimit() *money.Money { +func (x *OverdraftConfiguredEvent) GetOverdraftLimit() *v1.InstrumentAmount { if x != nil { return x.OverdraftLimit } return nil } -func (x *OverdraftConfiguredEvent) GetPreviousLimit() *money.Money { +func (x *OverdraftConfiguredEvent) GetPreviousLimit() *v1.InstrumentAmount { if x != nil { return x.PreviousLimit } @@ -1559,20 +1544,14 @@ type OverdraftLimitExceededEvent struct { AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` // transaction_id identifies the rejected transaction TransactionId string `protobuf:"bytes,3,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` - // attempted_amount is the amount that was attempted - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - AttemptedAmount *money.Money `protobuf:"bytes,4,opt,name=attempted_amount,json=attemptedAmount,proto3" json:"attempted_amount,omitempty"` - // current_balance is the balance at time of rejection - CurrentBalance *money.Money `protobuf:"bytes,5,opt,name=current_balance,json=currentBalance,proto3" json:"current_balance,omitempty"` - // overdraft_limit is the configured overdraft limit - OverdraftLimit *money.Money `protobuf:"bytes,6,opt,name=overdraft_limit,json=overdraftLimit,proto3" json:"overdraft_limit,omitempty"` - // shortage is the amount by which the limit was exceeded - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - Shortage *money.Money `protobuf:"bytes,7,opt,name=shortage,proto3" json:"shortage,omitempty"` + // attempted_amount is the amount that was attempted (must be positive) + AttemptedAmount *v1.InstrumentAmount `protobuf:"bytes,4,opt,name=attempted_amount,json=attemptedAmount,proto3" json:"attempted_amount,omitempty"` + // current_balance is the balance at time of rejection (no sign constraint - can be negative) + CurrentBalance *v1.InstrumentAmount `protobuf:"bytes,5,opt,name=current_balance,json=currentBalance,proto3" json:"current_balance,omitempty"` + // overdraft_limit is the configured overdraft limit (must be non-negative) + OverdraftLimit *v1.InstrumentAmount `protobuf:"bytes,6,opt,name=overdraft_limit,json=overdraftLimit,proto3" json:"overdraft_limit,omitempty"` + // shortage is the amount by which the limit was exceeded (must be positive) + Shortage *v1.InstrumentAmount `protobuf:"bytes,7,opt,name=shortage,proto3" json:"shortage,omitempty"` // correlation_id links related events across services CorrelationId string `protobuf:"bytes,8,opt,name=correlation_id,json=correlationId,proto3" json:"correlation_id,omitempty"` // causation_id identifies the event or command that caused this event @@ -1640,28 +1619,28 @@ func (x *OverdraftLimitExceededEvent) GetTransactionId() string { return "" } -func (x *OverdraftLimitExceededEvent) GetAttemptedAmount() *money.Money { +func (x *OverdraftLimitExceededEvent) GetAttemptedAmount() *v1.InstrumentAmount { if x != nil { return x.AttemptedAmount } return nil } -func (x *OverdraftLimitExceededEvent) GetCurrentBalance() *money.Money { +func (x *OverdraftLimitExceededEvent) GetCurrentBalance() *v1.InstrumentAmount { if x != nil { return x.CurrentBalance } return nil } -func (x *OverdraftLimitExceededEvent) GetOverdraftLimit() *money.Money { +func (x *OverdraftLimitExceededEvent) GetOverdraftLimit() *v1.InstrumentAmount { if x != nil { return x.OverdraftLimit } return nil } -func (x *OverdraftLimitExceededEvent) GetShortage() *money.Money { +func (x *OverdraftLimitExceededEvent) GetShortage() *v1.InstrumentAmount { if x != nil { return x.Shortage } @@ -1721,203 +1700,205 @@ var file_meridian_events_v1_current_account_events_proto_rawDesc = string([]byte 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, - 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6d, 0x65, - 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, - 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xec, 0x06, 0x0a, - 0x13, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, - 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, - 0x48, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, - 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x16, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x22, - 0x52, 0x15, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x14, 0x62, 0x61, 0x73, 0x65, 0x5f, - 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x32, - 0x52, 0x12, 0x62, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x4f, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xba, 0x48, - 0x25, 0x72, 0x23, 0x52, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x52, 0x06, 0x46, 0x52, 0x4f, - 0x5a, 0x45, 0x4e, 0x52, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x52, 0x09, 0x53, 0x55, 0x53, - 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x10, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x38, 0x0a, - 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, - 0x10, 0x01, 0x18, 0x64, 0x52, 0x11, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, - 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, - 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, - 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, - 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, - 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, - 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x51, 0x0a, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, - 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, - 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf6, 0x05, 0x0a, 0x19, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, - 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, - 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, - 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, - 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x0f, 0x70, 0x72, - 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x28, 0xba, 0x48, 0x25, 0x72, 0x23, 0x52, 0x06, 0x41, 0x43, 0x54, 0x49, - 0x56, 0x45, 0x52, 0x06, 0x46, 0x52, 0x4f, 0x5a, 0x45, 0x4e, 0x52, 0x06, 0x43, 0x4c, 0x4f, 0x53, - 0x45, 0x44, 0x52, 0x09, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x52, 0x0e, 0x70, - 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x47, 0x0a, - 0x0a, 0x6e, 0x65, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x28, 0xba, 0x48, 0x25, 0x72, 0x23, 0x52, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, - 0x52, 0x06, 0x46, 0x52, 0x4f, 0x5a, 0x45, 0x4e, 0x52, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, - 0x52, 0x09, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x52, 0x09, 0x6e, 0x65, 0x77, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, - 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, - 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, - 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, - 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, - 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, - 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, - 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x57, - 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x3b, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8b, 0x05, 0x0a, 0x12, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, - 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, - 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, - 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x06, - 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, - 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x12, 0x3f, 0x0a, 0x09, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, - 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x41, - 0x74, 0x12, 0x26, 0x0a, 0x09, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x62, 0x79, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, - 0x08, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, - 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x71, 0x75, + 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xec, 0x06, 0x0a, 0x13, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, + 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, + 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x40, 0x0a, 0x16, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x22, 0x52, 0x15, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x14, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, + 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x32, 0x52, 0x12, 0x62, 0x61, + 0x73, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x4f, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xba, 0x48, 0x25, 0x72, 0x23, 0x52, + 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x52, 0x06, 0x46, 0x52, 0x4f, 0x5a, 0x45, 0x4e, 0x52, + 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x52, 0x09, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, + 0x45, 0x44, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x36, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, + 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x12, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, + 0x52, 0x11, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, + 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, + 0x18, 0x64, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, + 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, + 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, + 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, + 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, + 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, + 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, + 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, + 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x51, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6d, 0x65, 0x72, 0x69, + 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf6, 0x05, 0x0a, 0x19, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, + 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, + 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, + 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, + 0x75, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x28, 0xba, 0x48, 0x25, 0x72, 0x23, 0x52, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x52, 0x06, + 0x46, 0x52, 0x4f, 0x5a, 0x45, 0x4e, 0x52, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x52, 0x09, + 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x52, 0x0e, 0x70, 0x72, 0x65, 0x76, 0x69, + 0x6f, 0x75, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x6e, 0x65, 0x77, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xba, + 0x48, 0x25, 0x72, 0x23, 0x52, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x52, 0x06, 0x46, 0x52, + 0x4f, 0x5a, 0x45, 0x4e, 0x52, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x52, 0x09, 0x53, 0x55, + 0x53, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x22, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x64, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, + 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x42, 0x79, + 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, + 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, + 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, 0x70, + 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6d, + 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x57, 0x0a, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6d, + 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x8b, 0x05, 0x0a, 0x12, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x72, 0x6f, 0x7a, + 0x65, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, + 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, + 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x09, + 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, + 0xc8, 0x01, 0x01, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x41, 0x74, 0x12, 0x26, 0x0a, + 0x09, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x08, 0x66, 0x72, 0x6f, + 0x7a, 0x65, 0x6e, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, + 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, + 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, + 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, + 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, + 0x0e, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, + 0x50, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x34, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x72, + 0x6f, 0x7a, 0x65, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf3, + 0x04, 0x0a, 0x14, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x6e, 0x66, 0x72, 0x6f, 0x7a, + 0x65, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, + 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0b, 0x75, 0x6e, 0x66, 0x72, + 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, + 0x01, 0x52, 0x0a, 0x75, 0x6e, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x41, 0x74, 0x12, 0x2a, 0x0a, + 0x0b, 0x75, 0x6e, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x0a, 0x75, + 0x6e, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, - 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, + 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, - 0x4b, 0x65, 0x79, 0x12, 0x50, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, + 0x4b, 0x65, 0x79, 0x12, 0x52, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0xf3, 0x04, 0x0a, 0x14, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x6e, - 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, + 0x6e, 0x74, 0x55, 0x6e, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf9, 0x05, 0x0a, 0x12, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, - 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0b, - 0x75, 0x6e, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, - 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0a, 0x75, 0x6e, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x41, - 0x74, 0x12, 0x2a, 0x0a, 0x0b, 0x75, 0x6e, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x62, 0x79, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, - 0x64, 0x52, 0x0a, 0x75, 0x6e, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x79, 0x12, 0x31, 0x0a, - 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, - 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, - 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, - 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, - 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, - 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x52, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6d, 0x65, 0x72, 0x69, - 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x6e, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe5, 0x05, 0x0a, 0x12, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, - 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, - 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x43, 0x0a, 0x0f, 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x42, 0x06, 0xba, + 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x57, 0x0a, 0x0f, + 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, + 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, + 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, @@ -1954,7 +1935,7 @@ var file_meridian_events_v1_current_account_events_proto_rawDesc = string([]byte 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xa0, 0x09, 0x0a, 0x19, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0xe1, 0x09, 0x0a, 0x19, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, @@ -1971,333 +1952,379 @@ var file_meridian_events_v1_current_account_events_proto_rawDesc = string([]byte 0x44, 0x52, 0x41, 0x57, 0x41, 0x4c, 0x52, 0x08, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x52, 0x03, 0x46, 0x45, 0x45, 0x52, 0x08, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x45, 0x53, 0x54, 0x52, 0x0a, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x4d, 0x45, 0x4e, 0x54, 0x52, 0x0f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0xd1, 0x01, 0x0a, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x92, 0x02, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x42, 0x8d, 0x01, - 0xba, 0x48, 0x89, 0x01, 0xba, 0x01, 0x82, 0x01, 0x0a, 0x1b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, - 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, - 0x65, 0x72, 0x6f, 0x1a, 0x35, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x20, - 0x3e, 0x20, 0x30, 0x20, 0x7c, 0x7c, 0x20, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x75, 0x6e, 0x69, - 0x74, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, - 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x11, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x5d, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6d, 0x65, - 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x10, 0x70, - 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x41, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, - 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x61, - 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xf4, - 0x03, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, - 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, - 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, - 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, - 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, - 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, - 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, - 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, - 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x57, 0x0a, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x3b, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0xe5, 0x06, 0x0a, 0x19, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, - 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, - 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, - 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, - 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, - 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, - 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, - 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, - 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x12, 0x4e, 0x0a, 0x15, 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, - 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, - 0x13, 0x6e, 0x65, 0x77, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xf4, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6c, - 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0e, 0x63, - 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, + 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, + 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, + 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x42, 0xba, 0x01, 0xba, 0x48, 0xb6, 0x01, 0xba, 0x01, 0xaf, 0x01, 0x0a, 0x1b, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, + 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, + 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x62, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, + 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, + 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, + 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, + 0x28, 0x27, 0x5e, 0x30, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x5b, 0x31, 0x2d, + 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x11, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x5d, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6d, + 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x10, + 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x41, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x44, + 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, + 0xf4, 0x03, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x25, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x09, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, + 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, + 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, + 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, + 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, + 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, + 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, + 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x57, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3b, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8d, 0x07, 0x0a, 0x19, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, + 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, + 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, + 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, + 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, + 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, + 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, + 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0a, 0x6e, + 0x65, 0x77, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x62, 0x0a, 0x15, 0x6e, 0x65, 0x77, + 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, + 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, + 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x13, 0x6e, 0x65, 0x77, 0x41, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x35, 0x0a, + 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, + 0xf4, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, + 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, + 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, + 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, + 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, + 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x57, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3b, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x87, 0x06, 0x0a, 0x1d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, + 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, + 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x0d, 0x66, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0a, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x65, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3e, 0xba, 0x48, 0x3b, + 0x72, 0x39, 0x52, 0x0f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x43, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x52, 0x14, 0x46, 0x49, 0x4e, 0x41, 0x4e, 0x43, 0x49, 0x41, 0x4c, 0x5f, 0x41, + 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x49, 0x4e, 0x47, 0x52, 0x10, 0x50, 0x4f, 0x53, 0x49, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x49, 0x4e, 0x47, 0x52, 0x0d, 0x66, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, + 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, + 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, + 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, - 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, - 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, - 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, - 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, - 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, - 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, - 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x57, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, - 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, - 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, - 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x87, 0x06, 0x0a, 0x1d, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, - 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, - 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, - 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, - 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, - 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x31, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, - 0x18, 0xf4, 0x03, 0x52, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, - 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x65, 0x0a, 0x0e, 0x66, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x3e, 0xba, 0x48, 0x3b, 0x72, 0x39, 0x52, 0x0f, 0x43, 0x55, 0x52, 0x52, 0x45, - 0x4e, 0x54, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x52, 0x14, 0x46, 0x49, 0x4e, 0x41, - 0x4e, 0x43, 0x49, 0x41, 0x4c, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x49, 0x4e, 0x47, - 0x52, 0x10, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x49, - 0x4e, 0x47, 0x52, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, - 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, - 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, - 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, - 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x5b, 0x0a, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, - 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, + 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, + 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x42, + 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, + 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, + 0x79, 0x4b, 0x65, 0x79, 0x12, 0x5b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, + 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x94, + 0x05, 0x0a, 0x1c, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0d, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, + 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, + 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, + 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x4f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x37, 0xba, 0x48, 0x34, 0x72, 0x32, 0x52, 0x09, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, + 0x54, 0x45, 0x44, 0x52, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x52, 0x09, 0x43, 0x4f, + 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x52, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x52, + 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, + 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, + 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, + 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, + 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x5a, 0x0a, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, + 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x94, 0x05, 0x0a, 0x1c, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, - 0x61, 0x77, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xee, 0x08, 0x0a, 0x18, 0x4f, 0x76, 0x65, 0x72, 0x64, 0x72, + 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, + 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, + 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, + 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x12, 0xdf, 0x01, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x5f, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, + 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, + 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x42, 0x8d, 0x01, 0xba, 0x48, 0x89, 0x01, 0xba, 0x01, 0x82, 0x01, 0x0a, 0x1c, 0x6e, + 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x76, 0x65, 0x72, + 0x64, 0x72, 0x61, 0x66, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x35, 0x6f, 0x76, 0x65, + 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, 0x73, + 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, + 0x6e, 0x20, 0x6f, 0x72, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x7a, 0x65, + 0x72, 0x6f, 0x1a, 0x2b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, + 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, + 0x01, 0x01, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0xd8, 0x01, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, + 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, + 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x42, 0x88, 0x01, 0xba, 0x48, 0x84, 0x01, 0xba, 0x01, 0x80, 0x01, 0x0a, 0x1b, + 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x72, 0x65, + 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x34, 0x70, 0x72, 0x65, + 0x76, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, + 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, + 0x20, 0x6f, 0x72, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x7a, 0x65, 0x72, + 0x6f, 0x1a, 0x2b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x28, + 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x52, 0x0d, + 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x48, 0x0a, + 0x1a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x62, + 0x61, 0x73, 0x69, 0x73, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x42, 0x0b, 0xba, 0x48, 0x08, 0x1a, 0x06, 0x18, 0xa0, 0x8d, 0x06, 0x28, 0x00, 0x52, 0x17, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x52, 0x61, 0x74, 0x65, 0x42, 0x61, 0x73, 0x69, + 0x73, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, + 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, + 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, + 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, + 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, + 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, + 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, + 0x79, 0x12, 0x56, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, + 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf7, 0x0a, 0x0a, 0x1b, 0x4f, 0x76, 0x65, 0x72, 0x64, + 0x72, 0x61, 0x66, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, - 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0d, 0x77, - 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, - 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, - 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xba, 0x48, 0x34, 0x72, 0x32, 0x52, - 0x09, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x54, 0x45, 0x44, 0x52, 0x07, 0x50, 0x45, 0x4e, 0x44, - 0x49, 0x4e, 0x47, 0x52, 0x09, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x52, 0x06, - 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x52, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, - 0x44, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, - 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, - 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, - 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, - 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, - 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, - 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, - 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, - 0x4b, 0x65, 0x79, 0x12, 0x5a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, - 0x72, 0x61, 0x77, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, - 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb1, 0x06, 0x0a, - 0x18, 0x4f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, - 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, - 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, - 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, - 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x76, - 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x43, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x64, - 0x72, 0x61, 0x66, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, - 0x6f, 0x6e, 0x65, 0x79, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x6f, 0x76, - 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x39, 0x0a, 0x0e, - 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, - 0x75, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x48, 0x0a, 0x1a, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x65, 0x73, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x61, 0x73, 0x69, 0x73, 0x5f, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x42, 0x0b, 0xba, 0x48, 0x08, - 0x1a, 0x06, 0x18, 0xa0, 0x8d, 0x06, 0x28, 0x00, 0x52, 0x17, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, - 0x73, 0x74, 0x52, 0x61, 0x74, 0x65, 0x42, 0x61, 0x73, 0x69, 0x73, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x12, 0x2e, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, - 0x62, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, - 0x01, 0x18, 0x64, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x42, - 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, - 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, - 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, - 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, - 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x56, 0x0a, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, - 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, + 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, + 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x8a, 0x02, 0x0a, 0x10, 0x61, 0x74, 0x74, + 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, + 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0xb6, 0x01, 0xba, 0x48, + 0xb2, 0x01, 0xba, 0x01, 0xab, 0x01, 0x0a, 0x19, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x2a, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x20, 0x61, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x62, 0x74, + 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, + 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, + 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x30, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, + 0x39, 0x5d, 0x2a, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x24, 0x27, + 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x41, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0xdf, + 0x01, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, + 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, + 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x42, 0x8d, 0x01, 0xba, 0x48, 0x89, 0x01, 0xba, 0x01, 0x82, 0x01, 0x0a, 0x1c, 0x6e, 0x6f, 0x6e, + 0x5f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, + 0x61, 0x66, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x35, 0x6f, 0x76, 0x65, 0x72, 0x64, + 0x72, 0x61, 0x66, 0x74, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, + 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, + 0x6f, 0x72, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x7a, 0x65, 0x72, 0x6f, + 0x1a, 0x2b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x28, 0x5c, + 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, + 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0xeb, 0x01, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, + 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0xa6, 0x01, 0xba, 0x48, + 0xa2, 0x01, 0xba, 0x01, 0x9b, 0x01, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x61, 0x67, 0x65, 0x12, 0x22, 0x73, 0x68, 0x6f, 0x72, 0x74, + 0x61, 0x67, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x62, 0x74, + 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, + 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, + 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x30, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, + 0x39, 0x5d, 0x2a, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x24, 0x27, + 0x29, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x61, 0x67, 0x65, 0x12, 0x31, + 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, + 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, + 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, + 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, + 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, + 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x59, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6d, 0x65, 0x72, + 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x4f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, + 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xc0, 0x08, 0x0a, 0x1b, 0x4f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, - 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, - 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x64, 0x12, 0x2f, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, - 0xb0, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x12, 0xc8, 0x01, 0x0a, 0x10, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, - 0x79, 0x42, 0x88, 0x01, 0xba, 0x48, 0x84, 0x01, 0xba, 0x01, 0x7e, 0x0a, 0x19, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, - 0x64, 0x20, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, - 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, 0x65, - 0x72, 0x6f, 0x1a, 0x35, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x20, 0x3e, - 0x20, 0x30, 0x20, 0x7c, 0x7c, 0x20, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x75, 0x6e, 0x69, 0x74, - 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6e, - 0x61, 0x6e, 0x6f, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0f, 0x61, 0x74, - 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x43, 0x0a, - 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, - 0x01, 0x01, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x5f, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x42, - 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, - 0x66, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0xa7, 0x01, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, - 0x74, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x42, 0x77, - 0xba, 0x48, 0x74, 0xba, 0x01, 0x6e, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x61, 0x67, 0x65, 0x12, 0x22, 0x73, 0x68, 0x6f, 0x72, 0x74, - 0x61, 0x67, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x35, 0x74, - 0x68, 0x69, 0x73, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x7c, 0x7c, - 0x20, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x20, 0x3d, 0x3d, 0x20, - 0x30, 0x20, 0x26, 0x26, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x20, - 0x3e, 0x20, 0x30, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x61, 0x67, - 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, - 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, - 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, - 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, - 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x59, 0x0a, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, - 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x42, 0x47, 0x5a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x68, 0x75, 0x62, 0x2f, 0x6d, 0x65, - 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x42, 0x47, 0x5a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, + 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x68, 0x75, 0x62, 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, + 0x69, 0x61, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6d, 0x65, + 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, + 0x3b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, }) var ( @@ -2337,8 +2364,8 @@ var file_meridian_events_v1_current_account_events_proto_goTypes = []any{ nil, // 20: meridian.events.v1.OverdraftConfiguredEvent.MetadataEntry nil, // 21: meridian.events.v1.OverdraftLimitExceededEvent.MetadataEntry (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp - (*money.Money)(nil), // 23: google.type.Money - (v1.PostingDirection)(0), // 24: meridian.common.v1.PostingDirection + (*v1.InstrumentAmount)(nil), // 23: meridian.quantity.v1.InstrumentAmount + (v11.PostingDirection)(0), // 24: meridian.common.v1.PostingDirection } var file_meridian_events_v1_current_account_events_proto_depIdxs = []int32{ 22, // 0: meridian.events.v1.AccountCreatedEvent.timestamp:type_name -> google.protobuf.Timestamp @@ -2351,31 +2378,31 @@ var file_meridian_events_v1_current_account_events_proto_depIdxs = []int32{ 22, // 7: meridian.events.v1.AccountUnfrozenEvent.unfrozen_at:type_name -> google.protobuf.Timestamp 22, // 8: meridian.events.v1.AccountUnfrozenEvent.timestamp:type_name -> google.protobuf.Timestamp 14, // 9: meridian.events.v1.AccountUnfrozenEvent.metadata:type_name -> meridian.events.v1.AccountUnfrozenEvent.MetadataEntry - 23, // 10: meridian.events.v1.AccountClosedEvent.closing_balance:type_name -> google.type.Money + 23, // 10: meridian.events.v1.AccountClosedEvent.closing_balance:type_name -> meridian.quantity.v1.InstrumentAmount 22, // 11: meridian.events.v1.AccountClosedEvent.closure_date:type_name -> google.protobuf.Timestamp 22, // 12: meridian.events.v1.AccountClosedEvent.timestamp:type_name -> google.protobuf.Timestamp 15, // 13: meridian.events.v1.AccountClosedEvent.metadata:type_name -> meridian.events.v1.AccountClosedEvent.MetadataEntry - 23, // 14: meridian.events.v1.TransactionInitiatedEvent.transaction_amount:type_name -> google.type.Money + 23, // 14: meridian.events.v1.TransactionInitiatedEvent.transaction_amount:type_name -> meridian.quantity.v1.InstrumentAmount 24, // 15: meridian.events.v1.TransactionInitiatedEvent.posting_direction:type_name -> meridian.common.v1.PostingDirection 22, // 16: meridian.events.v1.TransactionInitiatedEvent.value_date:type_name -> google.protobuf.Timestamp 22, // 17: meridian.events.v1.TransactionInitiatedEvent.timestamp:type_name -> google.protobuf.Timestamp 16, // 18: meridian.events.v1.TransactionInitiatedEvent.metadata:type_name -> meridian.events.v1.TransactionInitiatedEvent.MetadataEntry - 23, // 19: meridian.events.v1.TransactionCompletedEvent.new_balance:type_name -> google.type.Money - 23, // 20: meridian.events.v1.TransactionCompletedEvent.new_available_balance:type_name -> google.type.Money + 23, // 19: meridian.events.v1.TransactionCompletedEvent.new_balance:type_name -> meridian.quantity.v1.InstrumentAmount + 23, // 20: meridian.events.v1.TransactionCompletedEvent.new_available_balance:type_name -> meridian.quantity.v1.InstrumentAmount 22, // 21: meridian.events.v1.TransactionCompletedEvent.timestamp:type_name -> google.protobuf.Timestamp 17, // 22: meridian.events.v1.TransactionCompletedEvent.metadata:type_name -> meridian.events.v1.TransactionCompletedEvent.MetadataEntry 22, // 23: meridian.events.v1.AccountTransactionFailedEvent.timestamp:type_name -> google.protobuf.Timestamp 18, // 24: meridian.events.v1.AccountTransactionFailedEvent.metadata:type_name -> meridian.events.v1.AccountTransactionFailedEvent.MetadataEntry 22, // 25: meridian.events.v1.WithdrawalStatusUpdatedEvent.timestamp:type_name -> google.protobuf.Timestamp 19, // 26: meridian.events.v1.WithdrawalStatusUpdatedEvent.metadata:type_name -> meridian.events.v1.WithdrawalStatusUpdatedEvent.MetadataEntry - 23, // 27: meridian.events.v1.OverdraftConfiguredEvent.overdraft_limit:type_name -> google.type.Money - 23, // 28: meridian.events.v1.OverdraftConfiguredEvent.previous_limit:type_name -> google.type.Money + 23, // 27: meridian.events.v1.OverdraftConfiguredEvent.overdraft_limit:type_name -> meridian.quantity.v1.InstrumentAmount + 23, // 28: meridian.events.v1.OverdraftConfiguredEvent.previous_limit:type_name -> meridian.quantity.v1.InstrumentAmount 22, // 29: meridian.events.v1.OverdraftConfiguredEvent.timestamp:type_name -> google.protobuf.Timestamp 20, // 30: meridian.events.v1.OverdraftConfiguredEvent.metadata:type_name -> meridian.events.v1.OverdraftConfiguredEvent.MetadataEntry - 23, // 31: meridian.events.v1.OverdraftLimitExceededEvent.attempted_amount:type_name -> google.type.Money - 23, // 32: meridian.events.v1.OverdraftLimitExceededEvent.current_balance:type_name -> google.type.Money - 23, // 33: meridian.events.v1.OverdraftLimitExceededEvent.overdraft_limit:type_name -> google.type.Money - 23, // 34: meridian.events.v1.OverdraftLimitExceededEvent.shortage:type_name -> google.type.Money + 23, // 31: meridian.events.v1.OverdraftLimitExceededEvent.attempted_amount:type_name -> meridian.quantity.v1.InstrumentAmount + 23, // 32: meridian.events.v1.OverdraftLimitExceededEvent.current_balance:type_name -> meridian.quantity.v1.InstrumentAmount + 23, // 33: meridian.events.v1.OverdraftLimitExceededEvent.overdraft_limit:type_name -> meridian.quantity.v1.InstrumentAmount + 23, // 34: meridian.events.v1.OverdraftLimitExceededEvent.shortage:type_name -> meridian.quantity.v1.InstrumentAmount 22, // 35: meridian.events.v1.OverdraftLimitExceededEvent.timestamp:type_name -> google.protobuf.Timestamp 21, // 36: meridian.events.v1.OverdraftLimitExceededEvent.metadata:type_name -> meridian.events.v1.OverdraftLimitExceededEvent.MetadataEntry 37, // [37:37] is the sub-list for method output_type diff --git a/api/proto/meridian/events/v1/current_account_events.proto b/api/proto/meridian/events/v1/current_account_events.proto index 7c49a42a5..08f278d04 100644 --- a/api/proto/meridian/events/v1/current_account_events.proto +++ b/api/proto/meridian/events/v1/current_account_events.proto @@ -4,8 +4,8 @@ package meridian.events.v1; import "buf/validate/validate.proto"; import "google/protobuf/timestamp.proto"; -import "google/type/money.proto"; import "meridian/common/v1/types.proto"; +import "meridian/quantity/v1/quantity.proto"; option go_package = "github.com/meridianhub/meridian/api/proto/meridian/events/v1;eventsv1"; @@ -89,7 +89,7 @@ message AccountCreatedEvent { } // AccountStatusChangedEvent represents a status transition for an account -// (e.g., ACTIVE → FROZEN, FROZEN → ACTIVE, ACTIVE → CLOSED). +// (e.g., ACTIVE -> FROZEN, FROZEN -> ACTIVE, ACTIVE -> CLOSED). // Published when account status changes due to administrative action. message AccountStatusChangedEvent { // event_id uniquely identifies this event instance @@ -277,11 +277,8 @@ message AccountClosedEvent { pattern: "^[a-zA-Z0-9_-]+$" }]; - // closing_balance is the final balance at closure - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - google.type.Money closing_balance = 3 [(buf.validate.field).required = true]; + // closing_balance is the final balance at closure (no sign constraint - can be negative) + meridian.quantity.v1.InstrumentAmount closing_balance = 3 [(buf.validate.field).required = true]; // closure_reason explains why the account was closed string closure_reason = 4 [(buf.validate.field).string = { @@ -353,16 +350,13 @@ message TransactionInitiatedEvent { in: ["DEPOSIT", "WITHDRAWAL", "TRANSFER", "FEE", "INTEREST", "ADJUSTMENT"] }]; - // transaction_amount is the amount being transacted - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - google.type.Money transaction_amount = 5 [ + // transaction_amount is the amount being transacted (must be positive) + meridian.quantity.v1.InstrumentAmount transaction_amount = 5 [ (buf.validate.field).required = true, (buf.validate.field).cel = { id: "positive_transaction_amount" message: "transaction amount must be greater than zero" - expression: "this.units > 0 || (this.units == 0 && this.nanos > 0)" + expression: "this.amount.matches('^[1-9][0-9]*(\\\\.[0-9]+)?$') || this.amount.matches('^0\\\\.[0-9]*[1-9][0-9]*$')" } ]; @@ -451,17 +445,11 @@ message TransactionCompletedEvent { uuid: true }]; - // new_balance is the account balance after this transaction - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - google.type.Money new_balance = 6 [(buf.validate.field).required = true]; + // new_balance is the account balance after this transaction (no sign constraint - can be negative for overdraft) + meridian.quantity.v1.InstrumentAmount new_balance = 6 [(buf.validate.field).required = true]; - // new_available_balance is the available balance after this transaction - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - google.type.Money new_available_balance = 7 [(buf.validate.field).required = true]; + // new_available_balance is the available balance after this transaction (no sign constraint - can be negative for overdraft) + meridian.quantity.v1.InstrumentAmount new_available_balance = 7 [(buf.validate.field).required = true]; // completion_reason provides context for completion string completion_reason = 8 [(buf.validate.field).string = { @@ -632,14 +620,24 @@ message OverdraftConfiguredEvent { // overdraft_enabled indicates if overdraft is active bool overdraft_enabled = 3; - // overdraft_limit is the maximum overdraft amount allowed - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - google.type.Money overdraft_limit = 4 [(buf.validate.field).required = true]; + // overdraft_limit is the maximum overdraft amount allowed (must be non-negative) + meridian.quantity.v1.InstrumentAmount overdraft_limit = 4 [ + (buf.validate.field).required = true, + (buf.validate.field).cel = { + id: "non_negative_overdraft_limit" + message: "overdraft limit must be greater than or equal to zero" + expression: "this.amount.matches('^[0-9]+(\\\\.[0-9]+)?$')" + } + ]; - // previous_limit is the overdraft limit before this change (optional) - google.type.Money previous_limit = 5; + // previous_limit is the overdraft limit before this change (optional, non-negative) + meridian.quantity.v1.InstrumentAmount previous_limit = 5 [ + (buf.validate.field).cel = { + id: "non_negative_previous_limit" + message: "previous limit must be greater than or equal to zero" + expression: "this.amount.matches('^[0-9]+(\\\\.[0-9]+)?$')" + } + ]; // interest_rate is the annual interest rate for overdraft (basis points) int32 interest_rate_basis_points = 6 [(buf.validate.field).int32 = { @@ -701,35 +699,36 @@ message OverdraftLimitExceededEvent { uuid: true }]; - // attempted_amount is the amount that was attempted - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - google.type.Money attempted_amount = 4 [ + // attempted_amount is the amount that was attempted (must be positive) + meridian.quantity.v1.InstrumentAmount attempted_amount = 4 [ (buf.validate.field).required = true, (buf.validate.field).cel = { id: "positive_attempted_amount" message: "attempted amount must be greater than zero" - expression: "this.units > 0 || (this.units == 0 && this.nanos > 0)" + expression: "this.amount.matches('^[1-9][0-9]*(\\\\.[0-9]+)?$') || this.amount.matches('^0\\\\.[0-9]*[1-9][0-9]*$')" } ]; - // current_balance is the balance at time of rejection - google.type.Money current_balance = 5 [(buf.validate.field).required = true]; + // current_balance is the balance at time of rejection (no sign constraint - can be negative) + meridian.quantity.v1.InstrumentAmount current_balance = 5 [(buf.validate.field).required = true]; - // overdraft_limit is the configured overdraft limit - google.type.Money overdraft_limit = 6 [(buf.validate.field).required = true]; + // overdraft_limit is the configured overdraft limit (must be non-negative) + meridian.quantity.v1.InstrumentAmount overdraft_limit = 6 [ + (buf.validate.field).required = true, + (buf.validate.field).cel = { + id: "non_negative_overdraft_limit" + message: "overdraft limit must be greater than or equal to zero" + expression: "this.amount.matches('^[0-9]+(\\\\.[0-9]+)?$')" + } + ]; - // shortage is the amount by which the limit was exceeded - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - google.type.Money shortage = 7 [ + // shortage is the amount by which the limit was exceeded (must be positive) + meridian.quantity.v1.InstrumentAmount shortage = 7 [ (buf.validate.field).required = true, (buf.validate.field).cel = { id: "positive_shortage" message: "shortage must be greater than zero" - expression: "this.units > 0 || (this.units == 0 && this.nanos > 0)" + expression: "this.amount.matches('^[1-9][0-9]*(\\\\.[0-9]+)?$') || this.amount.matches('^0\\\\.[0-9]*[1-9][0-9]*$')" } ]; diff --git a/api/proto/meridian/events/v1/financial_accounting_events.pb.go b/api/proto/meridian/events/v1/financial_accounting_events.pb.go index 0a7ec39e8..fc4486c23 100644 --- a/api/proto/meridian/events/v1/financial_accounting_events.pb.go +++ b/api/proto/meridian/events/v1/financial_accounting_events.pb.go @@ -9,7 +9,7 @@ package eventsv1 import ( _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" v1 "github.com/meridianhub/meridian/api/proto/meridian/common/v1" - money "google.golang.org/genproto/googleapis/type/money" + v11 "github.com/meridianhub/meridian/api/proto/meridian/quantity/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" @@ -283,16 +283,10 @@ type FinancialBookingLogPostedEvent struct { BookingLogId string `protobuf:"bytes,1,opt,name=booking_log_id,json=bookingLogId,proto3" json:"booking_log_id,omitempty"` // posting_count is the number of ledger postings in this booking log PostingCount int32 `protobuf:"varint,2,opt,name=posting_count,json=postingCount,proto3" json:"posting_count,omitempty"` - // total_debits is the sum of all debit postings (must be positive or zero) - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - TotalDebits *money.Money `protobuf:"bytes,3,opt,name=total_debits,json=totalDebits,proto3" json:"total_debits,omitempty"` - // total_credits is the sum of all credit postings (must be positive or zero) - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - TotalCredits *money.Money `protobuf:"bytes,4,opt,name=total_credits,json=totalCredits,proto3" json:"total_credits,omitempty"` + // total_debits is the sum of all debit postings (must be non-negative) + TotalDebits *v11.InstrumentAmount `protobuf:"bytes,3,opt,name=total_debits,json=totalDebits,proto3" json:"total_debits,omitempty"` + // total_credits is the sum of all credit postings (must be non-negative) + TotalCredits *v11.InstrumentAmount `protobuf:"bytes,4,opt,name=total_credits,json=totalCredits,proto3" json:"total_credits,omitempty"` // reason provides context for posting Reason string `protobuf:"bytes,5,opt,name=reason,proto3" json:"reason,omitempty"` // posted_by identifies who posted the booking log @@ -353,14 +347,14 @@ func (x *FinancialBookingLogPostedEvent) GetPostingCount() int32 { return 0 } -func (x *FinancialBookingLogPostedEvent) GetTotalDebits() *money.Money { +func (x *FinancialBookingLogPostedEvent) GetTotalDebits() *v11.InstrumentAmount { if x != nil { return x.TotalDebits } return nil } -func (x *FinancialBookingLogPostedEvent) GetTotalCredits() *money.Money { +func (x *FinancialBookingLogPostedEvent) GetTotalCredits() *v11.InstrumentAmount { if x != nil { return x.TotalCredits } @@ -521,11 +515,8 @@ type LedgerPostingCapturedEvent struct { BookingLogId string `protobuf:"bytes,2,opt,name=booking_log_id,json=bookingLogId,proto3" json:"booking_log_id,omitempty"` // posting_direction indicates debit or credit PostingDirection v1.PostingDirection `protobuf:"varint,3,opt,name=posting_direction,json=postingDirection,proto3,enum=meridian.common.v1.PostingDirection" json:"posting_direction,omitempty"` - // posting_amount is the monetary amount being posted (must be positive) - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - PostingAmount *money.Money `protobuf:"bytes,4,opt,name=posting_amount,json=postingAmount,proto3" json:"posting_amount,omitempty"` + // posting_amount is the amount being posted (must be positive) + PostingAmount *v11.InstrumentAmount `protobuf:"bytes,4,opt,name=posting_amount,json=postingAmount,proto3" json:"posting_amount,omitempty"` // account_id identifies the account being posted to AccountId string `protobuf:"bytes,5,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` // value_date is the effective date for this posting @@ -595,7 +586,7 @@ func (x *LedgerPostingCapturedEvent) GetPostingDirection() v1.PostingDirection { return v1.PostingDirection(0) } -func (x *LedgerPostingCapturedEvent) GetPostingAmount() *money.Money { +func (x *LedgerPostingCapturedEvent) GetPostingAmount() *v11.InstrumentAmount { if x != nil { return x.PostingAmount } @@ -660,15 +651,9 @@ type LedgerPostingAmendedEvent struct { // booking_log_id references the parent financial booking log BookingLogId string `protobuf:"bytes,2,opt,name=booking_log_id,json=bookingLogId,proto3" json:"booking_log_id,omitempty"` // previous_amount was the amount before amendment (must be positive) - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - PreviousAmount *money.Money `protobuf:"bytes,3,opt,name=previous_amount,json=previousAmount,proto3" json:"previous_amount,omitempty"` + PreviousAmount *v11.InstrumentAmount `protobuf:"bytes,3,opt,name=previous_amount,json=previousAmount,proto3" json:"previous_amount,omitempty"` // new_amount is the amount after amendment (must be positive) - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - NewAmount *money.Money `protobuf:"bytes,4,opt,name=new_amount,json=newAmount,proto3" json:"new_amount,omitempty"` + NewAmount *v11.InstrumentAmount `protobuf:"bytes,4,opt,name=new_amount,json=newAmount,proto3" json:"new_amount,omitempty"` // reason explains why the posting was amended Reason string `protobuf:"bytes,5,opt,name=reason,proto3" json:"reason,omitempty"` // amended_by identifies who made the amendment @@ -729,14 +714,14 @@ func (x *LedgerPostingAmendedEvent) GetBookingLogId() string { return "" } -func (x *LedgerPostingAmendedEvent) GetPreviousAmount() *money.Money { +func (x *LedgerPostingAmendedEvent) GetPreviousAmount() *v11.InstrumentAmount { if x != nil { return x.PreviousAmount } return nil } -func (x *LedgerPostingAmendedEvent) GetNewAmount() *money.Money { +func (x *LedgerPostingAmendedEvent) GetNewAmount() *v11.InstrumentAmount { if x != nil { return x.NewAmount } @@ -1142,19 +1127,13 @@ type BalanceValidationFailedEvent struct { // booking_log_id uniquely identifies the financial booking log BookingLogId string `protobuf:"bytes,1,opt,name=booking_log_id,json=bookingLogId,proto3" json:"booking_log_id,omitempty"` // total_debits is the sum of all debit postings (must be non-negative) - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - TotalDebits *money.Money `protobuf:"bytes,2,opt,name=total_debits,json=totalDebits,proto3" json:"total_debits,omitempty"` + TotalDebits *v11.InstrumentAmount `protobuf:"bytes,2,opt,name=total_debits,json=totalDebits,proto3" json:"total_debits,omitempty"` // total_credits is the sum of all credit postings (must be non-negative) - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - TotalCredits *money.Money `protobuf:"bytes,3,opt,name=total_credits,json=totalCredits,proto3" json:"total_credits,omitempty"` + TotalCredits *v11.InstrumentAmount `protobuf:"bytes,3,opt,name=total_credits,json=totalCredits,proto3" json:"total_credits,omitempty"` // variance is the difference between debits and credits (can be negative) // Positive variance = debits > credits // Negative variance = credits > debits - Variance *money.Money `protobuf:"bytes,4,opt,name=variance,proto3" json:"variance,omitempty"` + Variance *v11.InstrumentAmount `protobuf:"bytes,4,opt,name=variance,proto3" json:"variance,omitempty"` // reason explains the validation failure Reason string `protobuf:"bytes,5,opt,name=reason,proto3" json:"reason,omitempty"` // correlation_id links related events across services @@ -1206,21 +1185,21 @@ func (x *BalanceValidationFailedEvent) GetBookingLogId() string { return "" } -func (x *BalanceValidationFailedEvent) GetTotalDebits() *money.Money { +func (x *BalanceValidationFailedEvent) GetTotalDebits() *v11.InstrumentAmount { if x != nil { return x.TotalDebits } return nil } -func (x *BalanceValidationFailedEvent) GetTotalCredits() *money.Money { +func (x *BalanceValidationFailedEvent) GetTotalCredits() *v11.InstrumentAmount { if x != nil { return x.TotalCredits } return nil } -func (x *BalanceValidationFailedEvent) GetVariance() *money.Money { +func (x *BalanceValidationFailedEvent) GetVariance() *v11.InstrumentAmount { if x != nil { return x.Variance } @@ -1273,393 +1252,415 @@ var file_meridian_events_v1_financial_accounting_events_proto_rawDesc = string([ 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0xa4, 0x04, 0x0a, 0x21, 0x46, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x42, - 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, - 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, - 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, - 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x16, 0x66, 0x69, 0x6e, - 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, - 0x18, 0x32, 0x52, 0x14, 0x66, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x46, 0x0a, 0x19, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, - 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x17, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x12, 0x42, 0x0a, 0x17, 0x62, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x75, 0x6e, 0x69, - 0x74, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x15, 0x62, - 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x55, 0x6e, 0x69, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x14, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x73, - 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x32, 0x52, 0x12, 0x62, - 0x61, 0x73, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, - 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, - 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc4, 0x04, 0x0a, 0x1f, 0x46, 0x69, 0x6e, - 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0e, - 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, - 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x49, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, + 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, + 0x61, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, + 0x61, 0x6e, 0x2f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x71, + 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa4, 0x04, + 0x0a, 0x21, 0x46, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6b, 0x69, + 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, + 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, + 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, + 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x16, 0x66, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, + 0x61, 0x6c, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x14, + 0x66, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x46, 0x0a, 0x19, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, + 0x18, 0xff, 0x01, 0x52, 0x17, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x42, 0x0a, 0x17, + 0x62, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x5f, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, + 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x15, 0x62, 0x75, 0x73, 0x69, 0x6e, + 0x65, 0x73, 0x73, 0x55, 0x6e, 0x69, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x12, 0x3b, 0x0a, 0x14, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, + 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x32, 0x52, 0x12, 0x62, 0x61, 0x73, 0x65, 0x49, + 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x31, 0x0a, + 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, + 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, + 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, + 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, + 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc4, 0x04, 0x0a, 0x1f, 0x46, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, + 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, + 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, + 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6d, 0x65, 0x72, + 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x5a, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, + 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, - 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x5a, 0x0a, 0x0f, 0x70, 0x72, 0x65, - 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, - 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x0e, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x68, 0x61, 0x72, 0x74, 0x5f, 0x6f, - 0x66, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4f, 0x66, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x06, - 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, - 0x05, 0x72, 0x03, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x28, - 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x09, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, - 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, - 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, - 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, - 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, - 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x81, 0x06, 0x0a, 0x1e, 0x46, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x42, 0x6f, 0x6f, - 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x50, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, - 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, - 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, - 0x6f, 0x67, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0d, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x07, 0xba, 0x48, 0x04, - 0x1a, 0x02, 0x28, 0x00, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0xb3, 0x01, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x62, - 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x42, 0x7c, 0xba, - 0x48, 0x79, 0xba, 0x01, 0x73, 0x0a, 0x19, 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x62, 0x69, 0x74, 0x73, - 0x12, 0x32, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x20, 0x64, 0x65, 0x62, 0x69, 0x74, 0x73, 0x20, 0x6d, - 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, - 0x68, 0x61, 0x6e, 0x20, 0x6f, 0x72, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, - 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x22, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x73, - 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6e, 0x61, - 0x6e, 0x6f, 0x73, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x44, 0x65, 0x62, 0x69, 0x74, 0x73, 0x12, 0xb7, 0x01, 0x0a, 0x0d, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, - 0x6f, 0x6e, 0x65, 0x79, 0x42, 0x7e, 0xba, 0x48, 0x7b, 0xba, 0x01, 0x75, 0x0a, 0x1a, 0x6e, 0x6f, - 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x12, 0x33, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x20, - 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, - 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x6f, 0x72, 0x20, - 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x22, 0x74, - 0x68, 0x69, 0x73, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x20, 0x26, - 0x26, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x20, 0x3e, 0x3d, 0x20, - 0x30, 0xc8, 0x01, 0x01, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x69, - 0x74, 0x73, 0x12, 0x20, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x62, - 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, - 0x18, 0x64, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, - 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, - 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, - 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, - 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x22, 0xe5, 0x02, 0x0a, 0x1e, 0x46, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, - 0x6c, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x43, 0x6c, 0x6f, 0x73, 0x65, - 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, - 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, - 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, - 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, - 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x09, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x73, + 0x00, 0x52, 0x0e, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x68, 0x61, 0x72, 0x74, 0x5f, 0x6f, 0x66, 0x5f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x14, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4f, 0x66, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, + 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, + 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, - 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, - 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, - 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xad, 0x06, 0x0a, 0x1a, - 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x70, - 0x74, 0x75, 0x72, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x6f, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, - 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, - 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, - 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, - 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x5d, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, - 0x10, 0x01, 0x20, 0x00, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xc0, 0x01, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, - 0x6e, 0x65, 0x79, 0x42, 0x84, 0x01, 0xba, 0x48, 0x80, 0x01, 0xba, 0x01, 0x7a, 0x0a, 0x17, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, - 0x1a, 0x35, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x20, 0x3e, 0x20, 0x30, - 0x20, 0x7c, 0x7c, 0x20, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x20, - 0x3d, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6e, 0x61, 0x6e, - 0x6f, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0xba, - 0x48, 0x19, 0x72, 0x17, 0x10, 0x01, 0x18, 0xff, 0x01, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, - 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, - 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x49, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6d, 0x65, 0x72, 0x69, - 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, - 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x85, 0x06, 0x0a, 0x19, - 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x41, 0x6d, 0x65, - 0x6e, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x6f, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, - 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, - 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, - 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, - 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0xc4, 0x01, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x76, 0x69, - 0x6f, 0x75, 0x73, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, - 0x6f, 0x6e, 0x65, 0x79, 0x42, 0x86, 0x01, 0xba, 0x48, 0x82, 0x01, 0xba, 0x01, 0x7c, 0x0a, 0x18, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, - 0x73, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, - 0x75, 0x73, 0x20, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, - 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, - 0x65, 0x72, 0x6f, 0x1a, 0x35, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x20, - 0x3e, 0x20, 0x30, 0x20, 0x7c, 0x7c, 0x20, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x75, 0x6e, 0x69, - 0x74, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, - 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x70, - 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xae, 0x01, - 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x42, 0x7b, 0xba, 0x48, 0x78, 0xba, 0x01, 0x72, 0x0a, 0x13, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x24, 0x6e, 0x65, 0x77, 0x20, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, - 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, - 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x35, 0x74, 0x68, 0x69, 0x73, 0x2e, - 0x75, 0x6e, 0x69, 0x74, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x7c, 0x7c, 0x20, 0x28, 0x74, 0x68, - 0x69, 0x73, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, - 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x29, - 0xc8, 0x01, 0x01, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, - 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, - 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x61, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x62, 0x79, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, - 0x64, 0x52, 0x09, 0x61, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, - 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, - 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, - 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, - 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x22, 0x97, 0x03, 0x0a, 0x18, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x50, 0x6f, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, - 0x52, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0e, 0x62, - 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, - 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x2f, 0x0a, - 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xe8, 0x07, 0x52, - 0x0d, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x26, - 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, + 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xbf, 0x06, 0x0a, 0x1e, + 0x46, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, + 0x4c, 0x6f, 0x67, 0x50, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, + 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, + 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, + 0x12, 0x2c, 0x0a, 0x0d, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x07, 0xba, 0x48, 0x04, 0x1a, 0x02, 0x28, 0x00, + 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xd2, + 0x01, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x62, 0x69, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, + 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, + 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x86, 0x01, + 0xba, 0x48, 0x82, 0x01, 0xba, 0x01, 0x7c, 0x0a, 0x19, 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x62, 0x69, + 0x74, 0x73, 0x12, 0x32, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x20, 0x64, 0x65, 0x62, 0x69, 0x74, 0x73, + 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, + 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x6f, 0x72, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, + 0x6f, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x2b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, + 0x2d, 0x39, 0x5d, 0x2b, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, + 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x65, 0x62, + 0x69, 0x74, 0x73, 0x12, 0xd6, 0x01, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x72, + 0x65, 0x64, 0x69, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, + 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, + 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x42, 0x88, 0x01, 0xba, 0x48, 0x84, 0x01, 0xba, 0x01, 0x7e, 0x0a, 0x1a, 0x6e, + 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x12, 0x33, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x20, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, + 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x6f, 0x72, + 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x2b, + 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x28, 0x5c, 0x5c, 0x2e, + 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0c, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x06, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, + 0x05, 0x72, 0x03, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x26, + 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, - 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x90, 0x03, - 0x0a, 0x1a, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x0a, - 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x09, 0x70, 0x6f, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, - 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, - 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x72, 0x65, 0x61, - 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, - 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, - 0x0b, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x0a, 0x72, - 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, - 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, - 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, - 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, - 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, - 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, - 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x22, 0xd1, 0x04, 0x0a, 0x22, 0x46, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x42, 0x6f, - 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, - 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, - 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x32, 0x52, 0x0d, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5a, 0x0a, 0x0f, 0x70, - 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0a, 0xba, 0x48, 0x07, - 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x0e, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, - 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6d, 0x65, - 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x09, - 0x6e, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x06, 0x72, 0x65, 0x61, - 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, - 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, - 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, - 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, - 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, - 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, - 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, - 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xfe, 0x05, 0x0a, 0x1c, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, - 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, - 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, - 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0xc0, 0x01, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x5f, 0x64, 0x65, 0x62, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, - 0x65, 0x79, 0x42, 0x88, 0x01, 0xba, 0x48, 0x84, 0x01, 0xba, 0x01, 0x7e, 0x0a, 0x24, 0x6e, 0x6f, - 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x5f, 0x64, 0x65, 0x62, 0x69, 0x74, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x32, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x20, 0x64, 0x65, 0x62, 0x69, 0x74, 0x73, - 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, - 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x6f, 0x72, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, - 0x6f, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x22, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x75, 0x6e, 0x69, - 0x74, 0x73, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, - 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x65, 0x62, 0x69, 0x74, 0x73, 0x12, 0xc5, 0x01, 0x0a, 0x0d, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x42, 0x8b, 0x01, 0xba, 0x48, 0x87, 0x01, 0xba, 0x01, 0x80, - 0x01, 0x0a, 0x25, 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x5f, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x20, - 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, - 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x6f, 0x72, 0x20, - 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x22, 0x74, - 0x68, 0x69, 0x73, 0x2e, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x20, 0x26, - 0x26, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x20, 0x3e, 0x3d, 0x20, - 0x30, 0xc8, 0x01, 0x01, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x69, - 0x74, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, - 0x52, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x72, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, - 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x31, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, + 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xe5, 0x02, + 0x0a, 0x1e, 0x46, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6b, 0x69, + 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, + 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, + 0x49, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, + 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, + 0x10, 0x01, 0x18, 0x64, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, + 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xef, 0x06, 0x0a, 0x1a, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, + 0x01, 0x18, 0xff, 0x01, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, + 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, + 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, + 0x64, 0x12, 0x5d, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6d, + 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x10, + 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x82, 0x02, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, + 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, + 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x42, 0xb2, 0x01, 0xba, 0x48, 0xae, 0x01, 0xba, 0x01, 0xa7, 0x01, 0x0a, 0x17, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, + 0x62, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, + 0x5d, 0x2a, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, + 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x30, 0x5c, 0x5c, 0x2e, 0x5b, + 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, + 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x41, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0xba, 0x48, 0x19, 0x72, 0x17, + 0x10, 0x01, 0x18, 0xff, 0x01, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, + 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x49, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0a, 0xba, 0x48, + 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, + 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, + 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8b, 0x07, 0x0a, 0x19, 0x4c, 0x65, 0x64, 0x67, + 0x65, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x41, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, + 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, + 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, + 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, + 0x49, 0x64, 0x12, 0x86, 0x02, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, + 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, + 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x42, 0xb4, 0x01, 0xba, 0x48, 0xb0, 0x01, 0xba, 0x01, 0xa9, 0x01, 0x0a, + 0x18, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, + 0x75, 0x73, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x70, 0x72, 0x65, 0x76, 0x69, + 0x6f, 0x75, 0x73, 0x20, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, + 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, + 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x62, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x31, 0x2d, 0x39, + 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, + 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, + 0x30, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, + 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x70, 0x72, 0x65, + 0x76, 0x69, 0x6f, 0x75, 0x73, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xf2, 0x01, 0x0a, 0x0a, + 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0xaa, 0x01, 0xba, 0x48, 0xa6, 0x01, 0xba, + 0x01, 0x9f, 0x01, 0x0a, 0x13, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x65, + 0x77, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x6e, 0x65, 0x77, 0x20, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x62, + 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, + 0x2a, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, + 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x30, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, + 0x2d, 0x39, 0x5d, 0x2a, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x24, + 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x22, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x61, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, + 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, + 0x01, 0x18, 0x64, 0x52, 0x09, 0x61, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, + 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, + 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, + 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, + 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x47, 0x5a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x68, 0x75, 0x62, 0x2f, - 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x76, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x97, 0x03, 0x0a, 0x18, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, + 0xff, 0x01, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, + 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, + 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, + 0x2f, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xe8, + 0x07, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x26, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x08, + 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, + 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, + 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, + 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, + 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, + 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0x90, 0x03, 0x0a, 0x1a, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, + 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x09, + 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, + 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, + 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, + 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, + 0x2a, 0x0a, 0x0b, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, + 0x0a, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, + 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, + 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, + 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, + 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, + 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, + 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x22, 0xd1, 0x04, 0x0a, 0x22, 0x46, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, + 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, + 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, + 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0e, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x32, 0x52, 0x0d, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5a, 0x0a, + 0x0f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, + 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0a, 0xba, + 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x0e, 0x70, 0x72, 0x65, 0x76, 0x69, + 0x6f, 0x75, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x0a, 0x6e, 0x65, 0x77, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, + 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, + 0x52, 0x09, 0x6e, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x06, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, + 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, + 0x2e, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x62, 0x79, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, + 0x64, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x42, 0x79, 0x12, + 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, + 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, + 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xcd, 0x06, 0x0a, 0x1c, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, + 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, + 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, + 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0xde, 0x01, 0x0a, 0x0c, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x62, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x92, 0x01, 0xba, 0x48, 0x8e, 0x01, 0xba, + 0x01, 0x87, 0x01, 0x0a, 0x24, 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x62, 0x69, 0x74, 0x73, 0x5f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x20, 0x64, 0x65, 0x62, 0x69, 0x74, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, + 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x6f, 0x72, 0x20, + 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x2b, 0x74, + 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, + 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x65, 0x62, 0x69, 0x74, 0x73, 0x12, 0xe2, 0x01, 0x0a, 0x0d, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, + 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x94, 0x01, 0xba, 0x48, 0x90, + 0x01, 0xba, 0x01, 0x89, 0x01, 0x0a, 0x25, 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, + 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x20, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, + 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, + 0x20, 0x6f, 0x72, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x7a, 0x65, 0x72, + 0x6f, 0x1a, 0x2b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x28, + 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, + 0x01, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x12, + 0x4a, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, + 0x01, 0x52, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, + 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, + 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, + 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, + 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x47, 0x5a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x68, 0x75, 0x62, + 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x76, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -1688,7 +1689,7 @@ var file_meridian_events_v1_financial_accounting_events_proto_goTypes = []any{ (*BalanceValidationFailedEvent)(nil), // 9: meridian.events.v1.BalanceValidationFailedEvent (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp (v1.TransactionStatus)(0), // 11: meridian.common.v1.TransactionStatus - (*money.Money)(nil), // 12: google.type.Money + (*v11.InstrumentAmount)(nil), // 12: meridian.quantity.v1.InstrumentAmount (v1.PostingDirection)(0), // 13: meridian.common.v1.PostingDirection } var file_meridian_events_v1_financial_accounting_events_proto_depIdxs = []int32{ @@ -1696,26 +1697,26 @@ var file_meridian_events_v1_financial_accounting_events_proto_depIdxs = []int32{ 11, // 1: meridian.events.v1.FinancialBookingLogUpdatedEvent.status:type_name -> meridian.common.v1.TransactionStatus 11, // 2: meridian.events.v1.FinancialBookingLogUpdatedEvent.previous_status:type_name -> meridian.common.v1.TransactionStatus 10, // 3: meridian.events.v1.FinancialBookingLogUpdatedEvent.timestamp:type_name -> google.protobuf.Timestamp - 12, // 4: meridian.events.v1.FinancialBookingLogPostedEvent.total_debits:type_name -> google.type.Money - 12, // 5: meridian.events.v1.FinancialBookingLogPostedEvent.total_credits:type_name -> google.type.Money + 12, // 4: meridian.events.v1.FinancialBookingLogPostedEvent.total_debits:type_name -> meridian.quantity.v1.InstrumentAmount + 12, // 5: meridian.events.v1.FinancialBookingLogPostedEvent.total_credits:type_name -> meridian.quantity.v1.InstrumentAmount 10, // 6: meridian.events.v1.FinancialBookingLogPostedEvent.timestamp:type_name -> google.protobuf.Timestamp 10, // 7: meridian.events.v1.FinancialBookingLogClosedEvent.timestamp:type_name -> google.protobuf.Timestamp 13, // 8: meridian.events.v1.LedgerPostingCapturedEvent.posting_direction:type_name -> meridian.common.v1.PostingDirection - 12, // 9: meridian.events.v1.LedgerPostingCapturedEvent.posting_amount:type_name -> google.type.Money + 12, // 9: meridian.events.v1.LedgerPostingCapturedEvent.posting_amount:type_name -> meridian.quantity.v1.InstrumentAmount 10, // 10: meridian.events.v1.LedgerPostingCapturedEvent.value_date:type_name -> google.protobuf.Timestamp 11, // 11: meridian.events.v1.LedgerPostingCapturedEvent.status:type_name -> meridian.common.v1.TransactionStatus 10, // 12: meridian.events.v1.LedgerPostingCapturedEvent.timestamp:type_name -> google.protobuf.Timestamp - 12, // 13: meridian.events.v1.LedgerPostingAmendedEvent.previous_amount:type_name -> google.type.Money - 12, // 14: meridian.events.v1.LedgerPostingAmendedEvent.new_amount:type_name -> google.type.Money + 12, // 13: meridian.events.v1.LedgerPostingAmendedEvent.previous_amount:type_name -> meridian.quantity.v1.InstrumentAmount + 12, // 14: meridian.events.v1.LedgerPostingAmendedEvent.new_amount:type_name -> meridian.quantity.v1.InstrumentAmount 10, // 15: meridian.events.v1.LedgerPostingAmendedEvent.timestamp:type_name -> google.protobuf.Timestamp 10, // 16: meridian.events.v1.LedgerPostingPostedEvent.timestamp:type_name -> google.protobuf.Timestamp 10, // 17: meridian.events.v1.LedgerPostingRejectedEvent.timestamp:type_name -> google.protobuf.Timestamp 11, // 18: meridian.events.v1.FinancialBookingLogControlledEvent.previous_status:type_name -> meridian.common.v1.TransactionStatus 11, // 19: meridian.events.v1.FinancialBookingLogControlledEvent.new_status:type_name -> meridian.common.v1.TransactionStatus 10, // 20: meridian.events.v1.FinancialBookingLogControlledEvent.timestamp:type_name -> google.protobuf.Timestamp - 12, // 21: meridian.events.v1.BalanceValidationFailedEvent.total_debits:type_name -> google.type.Money - 12, // 22: meridian.events.v1.BalanceValidationFailedEvent.total_credits:type_name -> google.type.Money - 12, // 23: meridian.events.v1.BalanceValidationFailedEvent.variance:type_name -> google.type.Money + 12, // 21: meridian.events.v1.BalanceValidationFailedEvent.total_debits:type_name -> meridian.quantity.v1.InstrumentAmount + 12, // 22: meridian.events.v1.BalanceValidationFailedEvent.total_credits:type_name -> meridian.quantity.v1.InstrumentAmount + 12, // 23: meridian.events.v1.BalanceValidationFailedEvent.variance:type_name -> meridian.quantity.v1.InstrumentAmount 10, // 24: meridian.events.v1.BalanceValidationFailedEvent.timestamp:type_name -> google.protobuf.Timestamp 25, // [25:25] is the sub-list for method output_type 25, // [25:25] is the sub-list for method input_type diff --git a/api/proto/meridian/events/v1/financial_accounting_events.proto b/api/proto/meridian/events/v1/financial_accounting_events.proto index 035f06c5d..4d1dae95c 100644 --- a/api/proto/meridian/events/v1/financial_accounting_events.proto +++ b/api/proto/meridian/events/v1/financial_accounting_events.proto @@ -4,8 +4,8 @@ package meridian.events.v1; import "buf/validate/validate.proto"; import "google/protobuf/timestamp.proto"; -import "google/type/money.proto"; import "meridian/common/v1/types.proto"; +import "meridian/quantity/v1/quantity.proto"; option go_package = "github.com/meridianhub/meridian/api/proto/meridian/events/v1;eventsv1"; @@ -125,29 +125,23 @@ message FinancialBookingLogPostedEvent { // posting_count is the number of ledger postings in this booking log int32 posting_count = 2 [(buf.validate.field).int32 = {gte: 0}]; - // total_debits is the sum of all debit postings (must be positive or zero) - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - google.type.Money total_debits = 3 [ + // total_debits is the sum of all debit postings (must be non-negative) + meridian.quantity.v1.InstrumentAmount total_debits = 3 [ (buf.validate.field).required = true, (buf.validate.field).cel = { id: "non_negative_total_debits" message: "total debits must be greater than or equal to zero" - expression: "this.units >= 0 && this.nanos >= 0" + expression: "this.amount.matches('^[0-9]+(\\\\.[0-9]+)?$')" } ]; - // total_credits is the sum of all credit postings (must be positive or zero) - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - google.type.Money total_credits = 4 [ + // total_credits is the sum of all credit postings (must be non-negative) + meridian.quantity.v1.InstrumentAmount total_credits = 4 [ (buf.validate.field).required = true, (buf.validate.field).cel = { id: "non_negative_total_credits" message: "total credits must be greater than or equal to zero" - expression: "this.units >= 0 && this.nanos >= 0" + expression: "this.amount.matches('^[0-9]+(\\\\.[0-9]+)?$')" } ]; @@ -241,16 +235,13 @@ message LedgerPostingCapturedEvent { not_in: [0] }]; - // posting_amount is the monetary amount being posted (must be positive) - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - google.type.Money posting_amount = 4 [ + // posting_amount is the amount being posted (must be positive) + meridian.quantity.v1.InstrumentAmount posting_amount = 4 [ (buf.validate.field).required = true, (buf.validate.field).cel = { id: "positive_posting_amount" message: "posting amount must be greater than zero" - expression: "this.units > 0 || (this.units == 0 && this.nanos > 0)" + expression: "this.amount.matches('^[1-9][0-9]*(\\\\.[0-9]+)?$') || this.amount.matches('^0\\\\.[0-9]*[1-9][0-9]*$')" } ]; @@ -305,28 +296,22 @@ message LedgerPostingAmendedEvent { }]; // previous_amount was the amount before amendment (must be positive) - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - google.type.Money previous_amount = 3 [ + meridian.quantity.v1.InstrumentAmount previous_amount = 3 [ (buf.validate.field).required = true, (buf.validate.field).cel = { id: "positive_previous_amount" message: "previous amount must be greater than zero" - expression: "this.units > 0 || (this.units == 0 && this.nanos > 0)" + expression: "this.amount.matches('^[1-9][0-9]*(\\\\.[0-9]+)?$') || this.amount.matches('^0\\\\.[0-9]*[1-9][0-9]*$')" } ]; // new_amount is the amount after amendment (must be positive) - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - google.type.Money new_amount = 4 [ + meridian.quantity.v1.InstrumentAmount new_amount = 4 [ (buf.validate.field).required = true, (buf.validate.field).cel = { id: "positive_new_amount" message: "new amount must be greater than zero" - expression: "this.units > 0 || (this.units == 0 && this.nanos > 0)" + expression: "this.amount.matches('^[1-9][0-9]*(\\\\.[0-9]+)?$') || this.amount.matches('^0\\\\.[0-9]*[1-9][0-9]*$')" } ]; @@ -520,35 +505,29 @@ message BalanceValidationFailedEvent { }]; // total_debits is the sum of all debit postings (must be non-negative) - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - google.type.Money total_debits = 2 [ + meridian.quantity.v1.InstrumentAmount total_debits = 2 [ (buf.validate.field).required = true, (buf.validate.field).cel = { id: "non_negative_total_debits_validation" message: "total debits must be greater than or equal to zero" - expression: "this.units >= 0 && this.nanos >= 0" + expression: "this.amount.matches('^[0-9]+(\\\\.[0-9]+)?$')" } ]; // total_credits is the sum of all credit postings (must be non-negative) - // NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - // validation. Service layer must enforce this constraint. - // See README "Money Field Validation Limitations" - google.type.Money total_credits = 3 [ + meridian.quantity.v1.InstrumentAmount total_credits = 3 [ (buf.validate.field).required = true, (buf.validate.field).cel = { id: "non_negative_total_credits_validation" message: "total credits must be greater than or equal to zero" - expression: "this.units >= 0 && this.nanos >= 0" + expression: "this.amount.matches('^[0-9]+(\\\\.[0-9]+)?$')" } ]; // variance is the difference between debits and credits (can be negative) // Positive variance = debits > credits // Negative variance = credits > debits - google.type.Money variance = 4 [(buf.validate.field).required = true]; + meridian.quantity.v1.InstrumentAmount variance = 4 [(buf.validate.field).required = true]; // reason explains the validation failure string reason = 5 [(buf.validate.field).string = { diff --git a/api/proto/meridian/events/v1/financial_accounting_events_test.go b/api/proto/meridian/events/v1/financial_accounting_events_test.go index 6adf82101..f151364ea 100644 --- a/api/proto/meridian/events/v1/financial_accounting_events_test.go +++ b/api/proto/meridian/events/v1/financial_accounting_events_test.go @@ -6,7 +6,7 @@ import ( commonv1 "github.com/meridianhub/meridian/api/proto/meridian/common/v1" eventsv1 "github.com/meridianhub/meridian/api/proto/meridian/events/v1" - money "google.golang.org/genproto/googleapis/type/money" + quantityv1 "github.com/meridianhub/meridian/api/proto/meridian/quantity/v1" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -56,10 +56,10 @@ func TestLedgerPostingCapturedEvent_Serialization(t *testing.T) { PostingId: "posting-123", BookingLogId: "booking-log-456", PostingDirection: commonv1.PostingDirection_POSTING_DIRECTION_DEBIT, - PostingAmount: &money.Money{ - CurrencyCode: "GBP", - Units: 100, - Nanos: 50000000, + PostingAmount: &quantityv1.InstrumentAmount{ + Amount: "100.05", + InstrumentCode: "GBP", + Version: 1, }, AccountId: "account-789", ValueDate: timestamppb.New(time.Now()), @@ -89,8 +89,8 @@ func TestLedgerPostingCapturedEvent_Serialization(t *testing.T) { if decoded.PostingDirection != event.PostingDirection { t.Errorf("PostingDirection mismatch: got %v, want %v", decoded.PostingDirection, event.PostingDirection) } - if decoded.PostingAmount.Units != event.PostingAmount.Units { - t.Errorf("PostingAmount.Units mismatch: got %v, want %v", decoded.PostingAmount.Units, event.PostingAmount.Units) + if decoded.PostingAmount.Amount != event.PostingAmount.Amount { + t.Errorf("PostingAmount.Amount mismatch: got %v, want %v", decoded.PostingAmount.Amount, event.PostingAmount.Amount) } if decoded.AccountId != event.AccountId { t.Errorf("AccountId mismatch: got %v, want %v", decoded.AccountId, event.AccountId) @@ -101,15 +101,15 @@ func TestFinancialBookingLogPostedEvent_Serialization(t *testing.T) { event := &eventsv1.FinancialBookingLogPostedEvent{ BookingLogId: "booking-log-123", PostingCount: 4, - TotalDebits: &money.Money{ - CurrencyCode: "GBP", - Units: 500, - Nanos: 0, + TotalDebits: &quantityv1.InstrumentAmount{ + Amount: "500.00", + InstrumentCode: "GBP", + Version: 1, }, - TotalCredits: &money.Money{ - CurrencyCode: "GBP", - Units: 500, - Nanos: 0, + TotalCredits: &quantityv1.InstrumentAmount{ + Amount: "500.00", + InstrumentCode: "GBP", + Version: 1, }, Reason: "Monthly closing", PostedBy: "user-123", @@ -138,8 +138,8 @@ func TestFinancialBookingLogPostedEvent_Serialization(t *testing.T) { if decoded.PostingCount != event.PostingCount { t.Errorf("PostingCount mismatch: got %v, want %v", decoded.PostingCount, event.PostingCount) } - if decoded.TotalDebits.Units != event.TotalDebits.Units { - t.Errorf("TotalDebits.Units mismatch: got %v, want %v", decoded.TotalDebits.Units, event.TotalDebits.Units) + if decoded.TotalDebits.Amount != event.TotalDebits.Amount { + t.Errorf("TotalDebits.Amount mismatch: got %v, want %v", decoded.TotalDebits.Amount, event.TotalDebits.Amount) } if decoded.PostedBy != event.PostedBy { t.Errorf("PostedBy mismatch: got %v, want %v", decoded.PostedBy, event.PostedBy) @@ -149,20 +149,20 @@ func TestFinancialBookingLogPostedEvent_Serialization(t *testing.T) { func TestBalanceValidationFailedEvent_Serialization(t *testing.T) { event := &eventsv1.BalanceValidationFailedEvent{ BookingLogId: "booking-log-123", - TotalDebits: &money.Money{ - CurrencyCode: "GBP", - Units: 500, - Nanos: 0, + TotalDebits: &quantityv1.InstrumentAmount{ + Amount: "500.00", + InstrumentCode: "GBP", + Version: 1, }, - TotalCredits: &money.Money{ - CurrencyCode: "GBP", - Units: 490, - Nanos: 0, + TotalCredits: &quantityv1.InstrumentAmount{ + Amount: "490.00", + InstrumentCode: "GBP", + Version: 1, }, - Variance: &money.Money{ - CurrencyCode: "GBP", - Units: 10, - Nanos: 0, + Variance: &quantityv1.InstrumentAmount{ + Amount: "10.00", + InstrumentCode: "GBP", + Version: 1, }, Reason: "Debits and credits do not balance", CorrelationId: "correlation-abc", @@ -187,8 +187,8 @@ func TestBalanceValidationFailedEvent_Serialization(t *testing.T) { if decoded.BookingLogId != event.BookingLogId { t.Errorf("BookingLogId mismatch: got %v, want %v", decoded.BookingLogId, event.BookingLogId) } - if decoded.Variance.Units != event.Variance.Units { - t.Errorf("Variance.Units mismatch: got %v, want %v", decoded.Variance.Units, event.Variance.Units) + if decoded.Variance.Amount != event.Variance.Amount { + t.Errorf("Variance.Amount mismatch: got %v, want %v", decoded.Variance.Amount, event.Variance.Amount) } if decoded.Reason != event.Reason { t.Errorf("Reason mismatch: got %v, want %v", decoded.Reason, event.Reason) @@ -236,15 +236,15 @@ func TestLedgerPostingAmendedEvent_Serialization(t *testing.T) { event := &eventsv1.LedgerPostingAmendedEvent{ PostingId: "posting-123", BookingLogId: "booking-log-456", - PreviousAmount: &money.Money{ - CurrencyCode: "GBP", - Units: 100, - Nanos: 0, + PreviousAmount: &quantityv1.InstrumentAmount{ + Amount: "100.00", + InstrumentCode: "GBP", + Version: 1, }, - NewAmount: &money.Money{ - CurrencyCode: "GBP", - Units: 150, - Nanos: 0, + NewAmount: &quantityv1.InstrumentAmount{ + Amount: "150.00", + InstrumentCode: "GBP", + Version: 1, }, Reason: "Correction after reconciliation", AmendedBy: "user-789", @@ -267,8 +267,8 @@ func TestLedgerPostingAmendedEvent_Serialization(t *testing.T) { if decoded.PostingId != event.PostingId { t.Errorf("PostingId mismatch: got %v, want %v", decoded.PostingId, event.PostingId) } - if decoded.NewAmount.Units != event.NewAmount.Units { - t.Errorf("NewAmount.Units mismatch: got %v, want %v", decoded.NewAmount.Units, event.NewAmount.Units) + if decoded.NewAmount.Amount != event.NewAmount.Amount { + t.Errorf("NewAmount.Amount mismatch: got %v, want %v", decoded.NewAmount.Amount, event.NewAmount.Amount) } } @@ -457,16 +457,16 @@ func TestFinancialBookingLogInitiatedEvent_NegativeVersion(t *testing.T) { } } -func TestLedgerPostingCapturedEvent_ZeroMoney(t *testing.T) { +func TestLedgerPostingCapturedEvent_ZeroAmount(t *testing.T) { // Test zero amount (boundary case - technically invalid but should serialize) event := &eventsv1.LedgerPostingCapturedEvent{ PostingId: "posting-123", BookingLogId: "booking-log-456", PostingDirection: commonv1.PostingDirection_POSTING_DIRECTION_DEBIT, - PostingAmount: &money.Money{ - CurrencyCode: "GBP", - Units: 0, - Nanos: 0, + PostingAmount: &quantityv1.InstrumentAmount{ + Amount: "0", + InstrumentCode: "GBP", + Version: 1, }, AccountId: "account-789", ValueDate: timestamppb.New(time.Now()), @@ -487,21 +487,21 @@ func TestLedgerPostingCapturedEvent_ZeroMoney(t *testing.T) { t.Fatalf("Failed to unmarshal event with zero amount: %v", err) } - if decoded.PostingAmount.Units != 0 { - t.Errorf("Expected 0 units, got %v", decoded.PostingAmount.Units) + if decoded.PostingAmount.Amount != "0" { + t.Errorf("Expected amount '0', got %v", decoded.PostingAmount.Amount) } } -func TestLedgerPostingCapturedEvent_NegativeMoney(t *testing.T) { +func TestLedgerPostingCapturedEvent_NegativeAmount(t *testing.T) { // Test negative amount (invalid but should serialize) event := &eventsv1.LedgerPostingCapturedEvent{ PostingId: "posting-123", BookingLogId: "booking-log-456", PostingDirection: commonv1.PostingDirection_POSTING_DIRECTION_DEBIT, - PostingAmount: &money.Money{ - CurrencyCode: "GBP", - Units: -100, - Nanos: 0, + PostingAmount: &quantityv1.InstrumentAmount{ + Amount: "-100", + InstrumentCode: "GBP", + Version: 1, }, AccountId: "account-789", ValueDate: timestamppb.New(time.Now()), @@ -522,21 +522,21 @@ func TestLedgerPostingCapturedEvent_NegativeMoney(t *testing.T) { t.Fatalf("Failed to unmarshal event with negative amount: %v", err) } - if decoded.PostingAmount.Units != -100 { - t.Errorf("Expected -100 units, got %v", decoded.PostingAmount.Units) + if decoded.PostingAmount.Amount != "-100" { + t.Errorf("Expected amount '-100', got %v", decoded.PostingAmount.Amount) } } -func TestLedgerPostingCapturedEvent_MaxInt64Amount(t *testing.T) { - // Test maximum int64 value (boundary case) +func TestLedgerPostingCapturedEvent_LargeAmount(t *testing.T) { + // Test large decimal amount (boundary case) event := &eventsv1.LedgerPostingCapturedEvent{ PostingId: "posting-123", BookingLogId: "booking-log-456", PostingDirection: commonv1.PostingDirection_POSTING_DIRECTION_DEBIT, - PostingAmount: &money.Money{ - CurrencyCode: "GBP", - Units: 9223372036854775807, // max int64 - Nanos: 999999999, // max nanos + PostingAmount: &quantityv1.InstrumentAmount{ + Amount: "9999999999999999.999999", + InstrumentCode: "GBP", + Version: 1, }, AccountId: "account-789", ValueDate: timestamppb.New(time.Now()), @@ -549,16 +549,16 @@ func TestLedgerPostingCapturedEvent_MaxInt64Amount(t *testing.T) { data, err := proto.Marshal(event) if err != nil { - t.Fatalf("Failed to marshal event with max int64: %v", err) + t.Fatalf("Failed to marshal event with large amount: %v", err) } decoded := &eventsv1.LedgerPostingCapturedEvent{} if err := proto.Unmarshal(data, decoded); err != nil { - t.Fatalf("Failed to unmarshal event with max int64: %v", err) + t.Fatalf("Failed to unmarshal event with large amount: %v", err) } - if decoded.PostingAmount.Units != 9223372036854775807 { - t.Errorf("Expected max int64, got %v", decoded.PostingAmount.Units) + if decoded.PostingAmount.Amount != "9999999999999999.999999" { + t.Errorf("Expected large amount, got %v", decoded.PostingAmount.Amount) } } @@ -568,10 +568,10 @@ func TestLedgerPostingCapturedEvent_InvalidAccountIdPattern(t *testing.T) { PostingId: "posting-123", BookingLogId: "booking-log-456", PostingDirection: commonv1.PostingDirection_POSTING_DIRECTION_DEBIT, - PostingAmount: &money.Money{ - CurrencyCode: "GBP", - Units: 100, - Nanos: 0, + PostingAmount: &quantityv1.InstrumentAmount{ + Amount: "100.00", + InstrumentCode: "GBP", + Version: 1, }, AccountId: "account@#$%", ValueDate: timestamppb.New(time.Now()), @@ -661,15 +661,15 @@ func TestBalanceValidationFailedEvent_NegativePostingCount(t *testing.T) { event := &eventsv1.FinancialBookingLogPostedEvent{ BookingLogId: "booking-log-123", PostingCount: -1, - TotalDebits: &money.Money{ - CurrencyCode: "GBP", - Units: 500, - Nanos: 0, + TotalDebits: &quantityv1.InstrumentAmount{ + Amount: "500.00", + InstrumentCode: "GBP", + Version: 1, }, - TotalCredits: &money.Money{ - CurrencyCode: "GBP", - Units: 500, - Nanos: 0, + TotalCredits: &quantityv1.InstrumentAmount{ + Amount: "500.00", + InstrumentCode: "GBP", + Version: 1, }, Reason: "Test negative count", PostedBy: "user-123", @@ -694,31 +694,25 @@ func TestBalanceValidationFailedEvent_NegativePostingCount(t *testing.T) { } } -// Money Validation Documentation Tests +// InstrumentAmount Validation Documentation Tests // -// NOTE: buf.validate does not currently support CEL validation on google.type.Money fields. -// The CEL constraints in the proto file serve as documentation of validation requirements, -// but enforcement must happen at the service/application layer. -// -// See: https://github.com/bufbuild/protovalidate/issues -// -// The tests below document the expected validation behavior per the proto schema. +// The CEL constraints in the proto file enforce validation on the string-based +// amount field using regex patterns. These tests document the expected behavior. -func TestLedgerPostingCapturedEvent_MoneyValidationDocumentation(t *testing.T) { +func TestLedgerPostingCapturedEvent_AmountValidationDocumentation(t *testing.T) { // Documents expected validation behavior for posting_amount field - // Per proto schema: posting_amount must be positive (units > 0 or nanos > 0) + // Per proto schema: posting_amount must be positive (regex validated) tests := []struct { name string - units int64 - nanos int32 + amount string expectValid bool description string }{ - {"Valid positive amount", 100, 50, true, "Both units and nanos positive"}, - {"Valid zero units positive nanos", 0, 1, true, "Zero units but positive nanos"}, - {"Invalid zero amount", 0, 0, false, "Zero amount not allowed for postings"}, - {"Invalid negative units", -100, 0, false, "Negative units not allowed"}, - {"Invalid negative nanos", 0, -50, false, "Negative nanos not allowed"}, + {"Valid positive integer", "100", true, "Positive integer amount"}, + {"Valid positive decimal", "100.50", true, "Positive decimal amount"}, + {"Valid small decimal", "0.01", true, "Small positive decimal"}, + {"Invalid zero amount", "0", false, "Zero amount not allowed for postings"}, + {"Invalid negative amount", "-100", false, "Negative amount not allowed"}, } for _, tt := range tests { @@ -727,10 +721,10 @@ func TestLedgerPostingCapturedEvent_MoneyValidationDocumentation(t *testing.T) { PostingId: "posting-123", BookingLogId: "booking-log-456", PostingDirection: commonv1.PostingDirection_POSTING_DIRECTION_DEBIT, - PostingAmount: &money.Money{ - CurrencyCode: "GBP", - Units: tt.units, - Nanos: tt.nanos, + PostingAmount: &quantityv1.InstrumentAmount{ + Amount: tt.amount, + InstrumentCode: "GBP", + Version: 1, }, AccountId: "valid-account-id", ValueDate: timestamppb.New(time.Now()), @@ -754,11 +748,8 @@ func TestLedgerPostingCapturedEvent_MoneyValidationDocumentation(t *testing.T) { // Document expected validation behavior if !tt.expectValid { - t.Logf("Service layer should reject: %s - %s", tt.name, tt.description) + t.Logf("CEL validation should reject: %s - %s", tt.name, tt.description) } }) } } - -// NOTE: Due to buf.validate limitations with google.type.Money, the CEL constraints -// serve as documentation. Service layer must enforce these validation rules. diff --git a/frontend/src/api/gen/meridian/events/v1/current_account_events_pb.ts b/frontend/src/api/gen/meridian/events/v1/current_account_events_pb.ts index d10ea20c5..30c3d7041 100644 --- a/frontend/src/api/gen/meridian/events/v1/current_account_events_pb.ts +++ b/frontend/src/api/gen/meridian/events/v1/current_account_events_pb.ts @@ -7,17 +7,17 @@ import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; import type { Timestamp } from "@bufbuild/protobuf/wkt"; import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; -import type { Money } from "../../../google/type/money_pb"; -import { file_google_type_money } from "../../../google/type/money_pb"; import type { PostingDirection } from "../../common/v1/types_pb"; import { file_meridian_common_v1_types } from "../../common/v1/types_pb"; +import type { InstrumentAmount } from "../../quantity/v1/quantity_pb"; +import { file_meridian_quantity_v1_quantity } from "../../quantity/v1/quantity_pb"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meridian/events/v1/current_account_events.proto. */ export const file_meridian_events_v1_current_account_events: GenFile = /*@__PURE__*/ - fileDesc("Ci9tZXJpZGlhbi9ldmVudHMvdjEvY3VycmVudF9hY2NvdW50X2V2ZW50cy5wcm90bxISbWVyaWRpYW4uZXZlbnRzLnYxIpgFChNBY2NvdW50Q3JlYXRlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSKQoWYWNjb3VudF9pZGVudGlmaWNhdGlvbhgDIAEoCUIJukgGcgQQARgiEicKFGJhc2VfaW5zdHJ1bWVudF9jb2RlGAQgASgJQgm6SAZyBBABGDISQAoOYWNjb3VudF9zdGF0dXMYBSABKAlCKLpIJXIjUgZBQ1RJVkVSBkZST1pFTlIGQ0xPU0VEUglTVVNQRU5ERUQSJAoRcHJvZHVjdF9yZWZlcmVuY2UYBiABKAlCCbpIBnIEEAEYZBIlChJjdXN0b21lcl9yZWZlcmVuY2UYByABKAlCCbpIBnIEEAEYZBIdCgpjcmVhdGVkX2J5GAggASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYCSABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAogASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAwgASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgNIAEoCUIIukgFcgMY/wESRwoIbWV0YWRhdGEYDiADKAsyNS5tZXJpZGlhbi5ldmVudHMudjEuQWNjb3VudENyZWF0ZWRFdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLeBAoZQWNjb3VudFN0YXR1c0NoYW5nZWRFdmVudBIaCghldmVudF9pZBgBIAEoCUIIukgFcgOwAQESLwoKYWNjb3VudF9pZBgCIAEoCUIbukgYchYQARhkMhBeW2EtekEtWjAtOV8tXSskEkEKD3ByZXZpb3VzX3N0YXR1cxgDIAEoCUIoukglciNSBkFDVElWRVIGRlJPWkVOUgZDTE9TRURSCVNVU1BFTkRFRBI8CgpuZXdfc3RhdHVzGAQgASgJQii6SCVyI1IGQUNUSVZFUgZGUk9aRU5SBkNMT1NFRFIJU1VTUEVOREVEEhoKBnJlYXNvbhgFIAEoCUIKukgHcgUQARj0AxIdCgpjaGFuZ2VkX2J5GAYgASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAggASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAogASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgLIAEoCUIIukgFcgMY/wESTQoIbWV0YWRhdGEYDCADKAsyOy5tZXJpZGlhbi5ldmVudHMudjEuQWNjb3VudFN0YXR1c0NoYW5nZWRFdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKFBAoSQWNjb3VudEZyb3plbkV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSGgoGcmVhc29uGAMgASgJQgq6SAdyBRABGPQDEjUKCWZyb3plbl9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIcCglmcm96ZW5fYnkYBSABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgGIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCSABKANCB7pIBCICKAESIQoPaWRlbXBvdGVuY3lfa2V5GAogASgJQgi6SAVyAxj/ARJGCghtZXRhZGF0YRgLIAMoCzI0Lm1lcmlkaWFuLmV2ZW50cy52MS5BY2NvdW50RnJvemVuRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi8QMKFEFjY291bnRVbmZyb3plbkV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSNwoLdW5mcm96ZW5fYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESHgoLdW5mcm96ZW5fYnkYBCABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgFIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYBiABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCCABKANCB7pIBCICKAESIQoPaWRlbXBvdGVuY3lfa2V5GAkgASgJQgi6SAVyAxj/ARJICghtZXRhZGF0YRgKIAMoCzI2Lm1lcmlkaWFuLmV2ZW50cy52MS5BY2NvdW50VW5mcm96ZW5FdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLFBAoSQWNjb3VudENsb3NlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSMwoPY2xvc2luZ19iYWxhbmNlGAMgASgLMhIuZ29vZ2xlLnR5cGUuTW9uZXlCBrpIA8gBARIiCg5jbG9zdXJlX3JlYXNvbhgEIAEoCUIKukgHcgUQARj0AxIcCgljbG9zZWRfYnkYBSABKAlCCbpIBnIEEAEYZBI4CgxjbG9zdXJlX2RhdGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESIgoOY29ycmVsYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAggASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAogASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgLIAEoCUIIukgFcgMY/wESRgoIbWV0YWRhdGEYDCADKAsyNC5tZXJpZGlhbi5ldmVudHMudjEuQWNjb3VudENsb3NlZEV2ZW50Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIsEHChlUcmFuc2FjdGlvbkluaXRpYXRlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSIAoOdHJhbnNhY3Rpb25faWQYAyABKAlCCLpIBXIDsAEBElkKEHRyYW5zYWN0aW9uX3R5cGUYBCABKAlCP7pIPHI6UgdERVBPU0lUUgpXSVRIRFJBV0FMUghUUkFOU0ZFUlIDRkVFUghJTlRFUkVTVFIKQURKVVNUTUVOVBK+AQoSdHJhbnNhY3Rpb25fYW1vdW50GAUgASgLMhIuZ29vZ2xlLnR5cGUuTW9uZXlCjQG6SIkBugGCAQobcG9zaXRpdmVfdHJhbnNhY3Rpb25fYW1vdW50Eix0cmFuc2FjdGlvbiBhbW91bnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybxo1dGhpcy51bml0cyA+IDAgfHwgKHRoaXMudW5pdHMgPT0gMCAmJiB0aGlzLm5hbm9zID4gMCnIAQESSwoRcG9zdGluZ19kaXJlY3Rpb24YBiABKA4yJC5tZXJpZGlhbi5jb21tb24udjEuUG9zdGluZ0RpcmVjdGlvbkIKukgHggEEEAEgABI2Cgp2YWx1ZV9kYXRlGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEh0KC2Rlc2NyaXB0aW9uGAggASgJQgi6SAVyAxj0AxIaCglyZWZlcmVuY2UYCSABKAlCB7pIBHICGGQSHwoMaW5pdGlhdGVkX2J5GAogASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYCyABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAwgASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGA4gASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgPIAEoCUIIukgFcgMY/wESTQoIbWV0YWRhdGEYECADKAsyOy5tZXJpZGlhbi5ldmVudHMudjEuVHJhbnNhY3Rpb25Jbml0aWF0ZWRFdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKcBQoZVHJhbnNhY3Rpb25Db21wbGV0ZWRFdmVudBIaCghldmVudF9pZBgBIAEoCUIIukgFcgOwAQESLwoKYWNjb3VudF9pZBgCIAEoCUIbukgYchYQARhkMhBeW2EtekEtWjAtOV8tXSskEiAKDnRyYW5zYWN0aW9uX2lkGAMgASgJQgi6SAVyA7ABARIiCg5ib29raW5nX2xvZ19pZBgEIAEoCUIKukgHcgUQARj/ARIhCg9wb3NpdGlvbl9sb2dfaWQYBSABKAlCCLpIBXIDsAEBEi8KC25ld19iYWxhbmNlGAYgASgLMhIuZ29vZ2xlLnR5cGUuTW9uZXlCBrpIA8gBARI5ChVuZXdfYXZhaWxhYmxlX2JhbGFuY2UYByABKAsyEi5nb29nbGUudHlwZS5Nb25leUIGukgDyAEBEiMKEWNvbXBsZXRpb25fcmVhc29uGAggASgJQgi6SAVyAxj0AxIiCg5jb3JyZWxhdGlvbl9pZBgJIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYCiABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YDCABKANCB7pIBCICKAESIQoPaWRlbXBvdGVuY3lfa2V5GA0gASgJQgi6SAVyAxj/ARJNCghtZXRhZGF0YRgOIAMoCzI7Lm1lcmlkaWFuLmV2ZW50cy52MS5UcmFuc2FjdGlvbkNvbXBsZXRlZEV2ZW50Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIuUECh1BY2NvdW50VHJhbnNhY3Rpb25GYWlsZWRFdmVudBIaCghldmVudF9pZBgBIAEoCUIIukgFcgOwAQESLwoKYWNjb3VudF9pZBgCIAEoCUIbukgYchYQARhkMhBeW2EtekEtWjAtOV8tXSskEiAKDnRyYW5zYWN0aW9uX2lkGAMgASgJQgi6SAVyA7ABARIiCg5mYWlsdXJlX3JlYXNvbhgEIAEoCUIKukgHcgUQARj0AxIbCgplcnJvcl9jb2RlGAUgASgJQge6SARyAhgyElYKDmZhaWxlZF9zZXJ2aWNlGAYgASgJQj66SDtyOVIPQ1VSUkVOVF9BQ0NPVU5UUhRGSU5BTkNJQUxfQUNDT1VOVElOR1IQUE9TSVRJT05fS0VFUElORxIiCg5jb3JyZWxhdGlvbl9pZBgHIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYCCABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCiABKANCB7pIBCICKAESIQoPaWRlbXBvdGVuY3lfa2V5GAsgASgJQgi6SAVyAxj/ARJRCghtZXRhZGF0YRgMIAMoCzI/Lm1lcmlkaWFuLmV2ZW50cy52MS5BY2NvdW50VHJhbnNhY3Rpb25GYWlsZWRFdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKUBAocV2l0aGRyYXdhbFN0YXR1c1VwZGF0ZWRFdmVudBIaCghldmVudF9pZBgBIAEoCUIIukgFcgOwAQESIQoNd2l0aGRyYXdhbF9pZBgCIAEoCUIKukgHcgUQARj/ARIvCgphY2NvdW50X2lkGAMgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSRwoGc3RhdHVzGAQgASgJQje6SDRyMlIJSU5JVElBVEVEUgdQRU5ESU5HUglDT01QTEVURURSBkZBSUxFRFIJQ0FOQ0VMTEVEEiIKDmNvcnJlbGF0aW9uX2lkGAUgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgGIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgIIAEoA0IHukgEIgIoARIhCg9pZGVtcG90ZW5jeV9rZXkYCSABKAlCCLpIBXIDGP8BElAKCG1ldGFkYXRhGAogAygLMj4ubWVyaWRpYW4uZXZlbnRzLnYxLldpdGhkcmF3YWxTdGF0dXNVcGRhdGVkRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi7wQKGE92ZXJkcmFmdENvbmZpZ3VyZWRFdmVudBIaCghldmVudF9pZBgBIAEoCUIIukgFcgOwAQESLwoKYWNjb3VudF9pZBgCIAEoCUIbukgYchYQARhkMhBeW2EtekEtWjAtOV8tXSskEhkKEW92ZXJkcmFmdF9lbmFibGVkGAMgASgIEjMKD292ZXJkcmFmdF9saW1pdBgEIAEoCzISLmdvb2dsZS50eXBlLk1vbmV5Qga6SAPIAQESKgoOcHJldmlvdXNfbGltaXQYBSABKAsyEi5nb29nbGUudHlwZS5Nb25leRIvChppbnRlcmVzdF9yYXRlX2Jhc2lzX3BvaW50cxgGIAEoBUILukgIGgYYoI0GKAASIAoNY29uZmlndXJlZF9ieRgHIAEoCUIJukgGcgQQARhkEiIKDmNvcnJlbGF0aW9uX2lkGAggASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgJIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgLIAEoA0IHukgEIgIoARIhCg9pZGVtcG90ZW5jeV9rZXkYDCABKAlCCLpIBXIDGP8BEkwKCG1ldGFkYXRhGA0gAygLMjoubWVyaWRpYW4uZXZlbnRzLnYxLk92ZXJkcmFmdENvbmZpZ3VyZWRFdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKMBwobT3ZlcmRyYWZ0TGltaXRFeGNlZWRlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSIAoOdHJhbnNhY3Rpb25faWQYAyABKAlCCLpIBXIDsAEBErcBChBhdHRlbXB0ZWRfYW1vdW50GAQgASgLMhIuZ29vZ2xlLnR5cGUuTW9uZXlCiAG6SIQBugF+Chlwb3NpdGl2ZV9hdHRlbXB0ZWRfYW1vdW50EiphdHRlbXB0ZWQgYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8aNXRoaXMudW5pdHMgPiAwIHx8ICh0aGlzLnVuaXRzID09IDAgJiYgdGhpcy5uYW5vcyA+IDApyAEBEjMKD2N1cnJlbnRfYmFsYW5jZRgFIAEoCzISLmdvb2dsZS50eXBlLk1vbmV5Qga6SAPIAQESMwoPb3ZlcmRyYWZ0X2xpbWl0GAYgASgLMhIuZ29vZ2xlLnR5cGUuTW9uZXlCBrpIA8gBARKdAQoIc2hvcnRhZ2UYByABKAsyEi5nb29nbGUudHlwZS5Nb25leUJ3ukh0ugFuChFwb3NpdGl2ZV9zaG9ydGFnZRIic2hvcnRhZ2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybxo1dGhpcy51bml0cyA+IDAgfHwgKHRoaXMudW5pdHMgPT0gMCAmJiB0aGlzLm5hbm9zID4gMCnIAQESIgoOY29ycmVsYXRpb25faWQYCCABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAkgASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAsgASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgMIAEoCUIIukgFcgMY/wESTwoIbWV0YWRhdGEYDSADKAsyPS5tZXJpZGlhbi5ldmVudHMudjEuT3ZlcmRyYWZ0TGltaXRFeGNlZWRlZEV2ZW50Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQkdaRWdpdGh1Yi5jb20vbWVyaWRpYW5odWIvbWVyaWRpYW4vYXBpL3Byb3RvL21lcmlkaWFuL2V2ZW50cy92MTtldmVudHN2MWIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_google_type_money, file_meridian_common_v1_types]); + fileDesc("Ci9tZXJpZGlhbi9ldmVudHMvdjEvY3VycmVudF9hY2NvdW50X2V2ZW50cy5wcm90bxISbWVyaWRpYW4uZXZlbnRzLnYxIpgFChNBY2NvdW50Q3JlYXRlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSKQoWYWNjb3VudF9pZGVudGlmaWNhdGlvbhgDIAEoCUIJukgGcgQQARgiEicKFGJhc2VfaW5zdHJ1bWVudF9jb2RlGAQgASgJQgm6SAZyBBABGDISQAoOYWNjb3VudF9zdGF0dXMYBSABKAlCKLpIJXIjUgZBQ1RJVkVSBkZST1pFTlIGQ0xPU0VEUglTVVNQRU5ERUQSJAoRcHJvZHVjdF9yZWZlcmVuY2UYBiABKAlCCbpIBnIEEAEYZBIlChJjdXN0b21lcl9yZWZlcmVuY2UYByABKAlCCbpIBnIEEAEYZBIdCgpjcmVhdGVkX2J5GAggASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYCSABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAogASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAwgASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgNIAEoCUIIukgFcgMY/wESRwoIbWV0YWRhdGEYDiADKAsyNS5tZXJpZGlhbi5ldmVudHMudjEuQWNjb3VudENyZWF0ZWRFdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLeBAoZQWNjb3VudFN0YXR1c0NoYW5nZWRFdmVudBIaCghldmVudF9pZBgBIAEoCUIIukgFcgOwAQESLwoKYWNjb3VudF9pZBgCIAEoCUIbukgYchYQARhkMhBeW2EtekEtWjAtOV8tXSskEkEKD3ByZXZpb3VzX3N0YXR1cxgDIAEoCUIoukglciNSBkFDVElWRVIGRlJPWkVOUgZDTE9TRURSCVNVU1BFTkRFRBI8CgpuZXdfc3RhdHVzGAQgASgJQii6SCVyI1IGQUNUSVZFUgZGUk9aRU5SBkNMT1NFRFIJU1VTUEVOREVEEhoKBnJlYXNvbhgFIAEoCUIKukgHcgUQARj0AxIdCgpjaGFuZ2VkX2J5GAYgASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAggASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAogASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgLIAEoCUIIukgFcgMY/wESTQoIbWV0YWRhdGEYDCADKAsyOy5tZXJpZGlhbi5ldmVudHMudjEuQWNjb3VudFN0YXR1c0NoYW5nZWRFdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKFBAoSQWNjb3VudEZyb3plbkV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSGgoGcmVhc29uGAMgASgJQgq6SAdyBRABGPQDEjUKCWZyb3plbl9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIcCglmcm96ZW5fYnkYBSABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgGIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCSABKANCB7pIBCICKAESIQoPaWRlbXBvdGVuY3lfa2V5GAogASgJQgi6SAVyAxj/ARJGCghtZXRhZGF0YRgLIAMoCzI0Lm1lcmlkaWFuLmV2ZW50cy52MS5BY2NvdW50RnJvemVuRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi8QMKFEFjY291bnRVbmZyb3plbkV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSNwoLdW5mcm96ZW5fYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESHgoLdW5mcm96ZW5fYnkYBCABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgFIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYBiABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCCABKANCB7pIBCICKAESIQoPaWRlbXBvdGVuY3lfa2V5GAkgASgJQgi6SAVyAxj/ARJICghtZXRhZGF0YRgKIAMoCzI2Lm1lcmlkaWFuLmV2ZW50cy52MS5BY2NvdW50VW5mcm96ZW5FdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLZBAoSQWNjb3VudENsb3NlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSRwoPY2xvc2luZ19iYWxhbmNlGAMgASgLMiYubWVyaWRpYW4ucXVhbnRpdHkudjEuSW5zdHJ1bWVudEFtb3VudEIGukgDyAEBEiIKDmNsb3N1cmVfcmVhc29uGAQgASgJQgq6SAdyBRABGPQDEhwKCWNsb3NlZF9ieRgFIAEoCUIJukgGcgQQARhkEjgKDGNsb3N1cmVfZGF0ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIiCg5jb3JyZWxhdGlvbl9pZBgHIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYCCABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCiABKANCB7pIBCICKAESIQoPaWRlbXBvdGVuY3lfa2V5GAsgASgJQgi6SAVyAxj/ARJGCghtZXRhZGF0YRgMIAMoCzI0Lm1lcmlkaWFuLmV2ZW50cy52MS5BY2NvdW50Q2xvc2VkRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEigggKGVRyYW5zYWN0aW9uSW5pdGlhdGVkRXZlbnQSGgoIZXZlbnRfaWQYASABKAlCCLpIBXIDsAEBEi8KCmFjY291bnRfaWQYAiABKAlCG7pIGHIWEAEYZDIQXlthLXpBLVowLTlfLV0rJBIgCg50cmFuc2FjdGlvbl9pZBgDIAEoCUIIukgFcgOwAQESWQoQdHJhbnNhY3Rpb25fdHlwZRgEIAEoCUI/ukg8cjpSB0RFUE9TSVRSCldJVEhEUkFXQUxSCFRSQU5TRkVSUgNGRUVSCElOVEVSRVNUUgpBREpVU1RNRU5UEv8BChJ0cmFuc2FjdGlvbl9hbW91bnQYBSABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QroBuki2AboBrwEKG3Bvc2l0aXZlX3RyYW5zYWN0aW9uX2Ftb3VudBIsdHJhbnNhY3Rpb24gYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8aYnRoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMS05XVswLTldKihcXC5bMC05XSspPyQnKSB8fCB0aGlzLmFtb3VudC5tYXRjaGVzKCdeMFxcLlswLTldKlsxLTldWzAtOV0qJCcpyAEBEksKEXBvc3RpbmdfZGlyZWN0aW9uGAYgASgOMiQubWVyaWRpYW4uY29tbW9uLnYxLlBvc3RpbmdEaXJlY3Rpb25CCrpIB4IBBBABIAASNgoKdmFsdWVfZGF0ZRgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIdCgtkZXNjcmlwdGlvbhgIIAEoCUIIukgFcgMY9AMSGgoJcmVmZXJlbmNlGAkgASgJQge6SARyAhhkEh8KDGluaXRpYXRlZF9ieRgKIAEoCUIJukgGcgQQARhkEiIKDmNvcnJlbGF0aW9uX2lkGAsgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgMIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgOIAEoA0IHukgEIgIoARIhCg9pZGVtcG90ZW5jeV9rZXkYDyABKAlCCLpIBXIDGP8BEk0KCG1ldGFkYXRhGBAgAygLMjsubWVyaWRpYW4uZXZlbnRzLnYxLlRyYW5zYWN0aW9uSW5pdGlhdGVkRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEixAUKGVRyYW5zYWN0aW9uQ29tcGxldGVkRXZlbnQSGgoIZXZlbnRfaWQYASABKAlCCLpIBXIDsAEBEi8KCmFjY291bnRfaWQYAiABKAlCG7pIGHIWEAEYZDIQXlthLXpBLVowLTlfLV0rJBIgCg50cmFuc2FjdGlvbl9pZBgDIAEoCUIIukgFcgOwAQESIgoOYm9va2luZ19sb2dfaWQYBCABKAlCCrpIB3IFEAEY/wESIQoPcG9zaXRpb25fbG9nX2lkGAUgASgJQgi6SAVyA7ABARJDCgtuZXdfYmFsYW5jZRgGIAEoCzImLm1lcmlkaWFuLnF1YW50aXR5LnYxLkluc3RydW1lbnRBbW91bnRCBrpIA8gBARJNChVuZXdfYXZhaWxhYmxlX2JhbGFuY2UYByABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50Qga6SAPIAQESIwoRY29tcGxldGlvbl9yZWFzb24YCCABKAlCCLpIBXIDGPQDEiIKDmNvcnJlbGF0aW9uX2lkGAkgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgKIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgMIAEoA0IHukgEIgIoARIhCg9pZGVtcG90ZW5jeV9rZXkYDSABKAlCCLpIBXIDGP8BEk0KCG1ldGFkYXRhGA4gAygLMjsubWVyaWRpYW4uZXZlbnRzLnYxLlRyYW5zYWN0aW9uQ29tcGxldGVkRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi5QQKHUFjY291bnRUcmFuc2FjdGlvbkZhaWxlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSIAoOdHJhbnNhY3Rpb25faWQYAyABKAlCCLpIBXIDsAEBEiIKDmZhaWx1cmVfcmVhc29uGAQgASgJQgq6SAdyBRABGPQDEhsKCmVycm9yX2NvZGUYBSABKAlCB7pIBHICGDISVgoOZmFpbGVkX3NlcnZpY2UYBiABKAlCPrpIO3I5Ug9DVVJSRU5UX0FDQ09VTlRSFEZJTkFOQ0lBTF9BQ0NPVU5USU5HUhBQT1NJVElPTl9LRUVQSU5HEiIKDmNvcnJlbGF0aW9uX2lkGAcgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgIIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgKIAEoA0IHukgEIgIoARIhCg9pZGVtcG90ZW5jeV9rZXkYCyABKAlCCLpIBXIDGP8BElEKCG1ldGFkYXRhGAwgAygLMj8ubWVyaWRpYW4uZXZlbnRzLnYxLkFjY291bnRUcmFuc2FjdGlvbkZhaWxlZEV2ZW50Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIpQEChxXaXRoZHJhd2FsU3RhdHVzVXBkYXRlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIhCg13aXRoZHJhd2FsX2lkGAIgASgJQgq6SAdyBRABGP8BEi8KCmFjY291bnRfaWQYAyABKAlCG7pIGHIWEAEYZDIQXlthLXpBLVowLTlfLV0rJBJHCgZzdGF0dXMYBCABKAlCN7pINHIyUglJTklUSUFURURSB1BFTkRJTkdSCUNPTVBMRVRFRFIGRkFJTEVEUglDQU5DRUxMRUQSIgoOY29ycmVsYXRpb25faWQYBSABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAYgASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAggASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgJIAEoCUIIukgFcgMY/wESUAoIbWV0YWRhdGEYCiADKAsyPi5tZXJpZGlhbi5ldmVudHMudjEuV2l0aGRyYXdhbFN0YXR1c1VwZGF0ZWRFdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKsBwoYT3ZlcmRyYWZ0Q29uZmlndXJlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSGQoRb3ZlcmRyYWZ0X2VuYWJsZWQYAyABKAgSzwEKD292ZXJkcmFmdF9saW1pdBgEIAEoCzImLm1lcmlkaWFuLnF1YW50aXR5LnYxLkluc3RydW1lbnRBbW91bnRCjQG6SIkBugGCAQocbm9uX25lZ2F0aXZlX292ZXJkcmFmdF9saW1pdBI1b3ZlcmRyYWZ0IGxpbWl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8aK3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJynIAQESyQEKDnByZXZpb3VzX2xpbWl0GAUgASgLMiYubWVyaWRpYW4ucXVhbnRpdHkudjEuSW5zdHJ1bWVudEFtb3VudEKIAbpIhAG6AYABChtub25fbmVnYXRpdmVfcHJldmlvdXNfbGltaXQSNHByZXZpb3VzIGxpbWl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8aK3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJykSLwoaaW50ZXJlc3RfcmF0ZV9iYXNpc19wb2ludHMYBiABKAVCC7pICBoGGKCNBigAEiAKDWNvbmZpZ3VyZWRfYnkYByABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgIIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYCSABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCyABKANCB7pIBCICKAESIQoPaWRlbXBvdGVuY3lfa2V5GAwgASgJQgi6SAVyAxj/ARJMCghtZXRhZGF0YRgNIAMoCzI6Lm1lcmlkaWFuLmV2ZW50cy52MS5PdmVyZHJhZnRDb25maWd1cmVkRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiwwkKG092ZXJkcmFmdExpbWl0RXhjZWVkZWRFdmVudBIaCghldmVudF9pZBgBIAEoCUIIukgFcgOwAQESLwoKYWNjb3VudF9pZBgCIAEoCUIbukgYchYQARhkMhBeW2EtekEtWjAtOV8tXSskEiAKDnRyYW5zYWN0aW9uX2lkGAMgASgJQgi6SAVyA7ABARL5AQoQYXR0ZW1wdGVkX2Ftb3VudBgEIAEoCzImLm1lcmlkaWFuLnF1YW50aXR5LnYxLkluc3RydW1lbnRBbW91bnRCtgG6SLIBugGrAQoZcG9zaXRpdmVfYXR0ZW1wdGVkX2Ftb3VudBIqYXR0ZW1wdGVkIGFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvGmJ0aGlzLmFtb3VudC5tYXRjaGVzKCdeWzEtOV1bMC05XSooXFwuWzAtOV0rKT8kJykgfHwgdGhpcy5hbW91bnQubWF0Y2hlcygnXjBcXC5bMC05XSpbMS05XVswLTldKiQnKcgBARJHCg9jdXJyZW50X2JhbGFuY2UYBSABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50Qga6SAPIAQESzwEKD292ZXJkcmFmdF9saW1pdBgGIAEoCzImLm1lcmlkaWFuLnF1YW50aXR5LnYxLkluc3RydW1lbnRBbW91bnRCjQG6SIkBugGCAQocbm9uX25lZ2F0aXZlX292ZXJkcmFmdF9saW1pdBI1b3ZlcmRyYWZ0IGxpbWl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8aK3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJynIAQES4QEKCHNob3J0YWdlGAcgASgLMiYubWVyaWRpYW4ucXVhbnRpdHkudjEuSW5zdHJ1bWVudEFtb3VudEKmAbpIogG6AZsBChFwb3NpdGl2ZV9zaG9ydGFnZRIic2hvcnRhZ2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybxpidGhpcy5hbW91bnQubWF0Y2hlcygnXlsxLTldWzAtOV0qKFxcLlswLTldKyk/JCcpIHx8IHRoaXMuYW1vdW50Lm1hdGNoZXMoJ14wXFwuWzAtOV0qWzEtOV1bMC05XSokJynIAQESIgoOY29ycmVsYXRpb25faWQYCCABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAkgASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAsgASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgMIAEoCUIIukgFcgMY/wESTwoIbWV0YWRhdGEYDSADKAsyPS5tZXJpZGlhbi5ldmVudHMudjEuT3ZlcmRyYWZ0TGltaXRFeGNlZWRlZEV2ZW50Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQkdaRWdpdGh1Yi5jb20vbWVyaWRpYW5odWIvbWVyaWRpYW4vYXBpL3Byb3RvL21lcmlkaWFuL2V2ZW50cy92MTtldmVudHN2MWIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_meridian_common_v1_types, file_meridian_quantity_v1_quantity]); /** * AccountCreatedEvent represents a new current account facility created @@ -136,7 +136,7 @@ export const AccountCreatedEventSchema: GenMessage = /*@__P /** * AccountStatusChangedEvent represents a status transition for an account - * (e.g., ACTIVE → FROZEN, FROZEN → ACTIVE, ACTIVE → CLOSED). + * (e.g., ACTIVE -> FROZEN, FROZEN -> ACTIVE, ACTIVE -> CLOSED). * Published when account status changes due to administrative action. * * @generated from message meridian.events.v1.AccountStatusChangedEvent @@ -434,14 +434,11 @@ export type AccountClosedEvent = Message<"meridian.events.v1.AccountClosedEvent" accountId: string; /** - * closing_balance is the final balance at closure - * NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - * validation. Service layer must enforce this constraint. - * See README "Money Field Validation Limitations" + * closing_balance is the final balance at closure (no sign constraint - can be negative) * - * @generated from field: google.type.Money closing_balance = 3; + * @generated from field: meridian.quantity.v1.InstrumentAmount closing_balance = 3; */ - closingBalance?: Money; + closingBalance?: InstrumentAmount; /** * closure_reason explains why the account was closed @@ -553,14 +550,11 @@ export type TransactionInitiatedEvent = Message<"meridian.events.v1.TransactionI transactionType: string; /** - * transaction_amount is the amount being transacted - * NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - * validation. Service layer must enforce this constraint. - * See README "Money Field Validation Limitations" + * transaction_amount is the amount being transacted (must be positive) * - * @generated from field: google.type.Money transaction_amount = 5; + * @generated from field: meridian.quantity.v1.InstrumentAmount transaction_amount = 5; */ - transactionAmount?: Money; + transactionAmount?: InstrumentAmount; /** * posting_direction indicates debit or credit @@ -692,24 +686,18 @@ export type TransactionCompletedEvent = Message<"meridian.events.v1.TransactionC positionLogId: string; /** - * new_balance is the account balance after this transaction - * NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - * validation. Service layer must enforce this constraint. - * See README "Money Field Validation Limitations" + * new_balance is the account balance after this transaction (no sign constraint - can be negative for overdraft) * - * @generated from field: google.type.Money new_balance = 6; + * @generated from field: meridian.quantity.v1.InstrumentAmount new_balance = 6; */ - newBalance?: Money; + newBalance?: InstrumentAmount; /** - * new_available_balance is the available balance after this transaction - * NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - * validation. Service layer must enforce this constraint. - * See README "Money Field Validation Limitations" + * new_available_balance is the available balance after this transaction (no sign constraint - can be negative for overdraft) * - * @generated from field: google.type.Money new_available_balance = 7; + * @generated from field: meridian.quantity.v1.InstrumentAmount new_available_balance = 7; */ - newAvailableBalance?: Money; + newAvailableBalance?: InstrumentAmount; /** * completion_reason provides context for completion @@ -984,21 +972,18 @@ export type OverdraftConfiguredEvent = Message<"meridian.events.v1.OverdraftConf overdraftEnabled: boolean; /** - * overdraft_limit is the maximum overdraft amount allowed - * NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - * validation. Service layer must enforce this constraint. - * See README "Money Field Validation Limitations" + * overdraft_limit is the maximum overdraft amount allowed (must be non-negative) * - * @generated from field: google.type.Money overdraft_limit = 4; + * @generated from field: meridian.quantity.v1.InstrumentAmount overdraft_limit = 4; */ - overdraftLimit?: Money; + overdraftLimit?: InstrumentAmount; /** - * previous_limit is the overdraft limit before this change (optional) + * previous_limit is the overdraft limit before this change (optional, non-negative) * - * @generated from field: google.type.Money previous_limit = 5; + * @generated from field: meridian.quantity.v1.InstrumentAmount previous_limit = 5; */ - previousLimit?: Money; + previousLimit?: InstrumentAmount; /** * interest_rate is the annual interest rate for overdraft (basis points) @@ -1094,38 +1079,32 @@ export type OverdraftLimitExceededEvent = Message<"meridian.events.v1.OverdraftL transactionId: string; /** - * attempted_amount is the amount that was attempted - * NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - * validation. Service layer must enforce this constraint. - * See README "Money Field Validation Limitations" + * attempted_amount is the amount that was attempted (must be positive) * - * @generated from field: google.type.Money attempted_amount = 4; + * @generated from field: meridian.quantity.v1.InstrumentAmount attempted_amount = 4; */ - attemptedAmount?: Money; + attemptedAmount?: InstrumentAmount; /** - * current_balance is the balance at time of rejection + * current_balance is the balance at time of rejection (no sign constraint - can be negative) * - * @generated from field: google.type.Money current_balance = 5; + * @generated from field: meridian.quantity.v1.InstrumentAmount current_balance = 5; */ - currentBalance?: Money; + currentBalance?: InstrumentAmount; /** - * overdraft_limit is the configured overdraft limit + * overdraft_limit is the configured overdraft limit (must be non-negative) * - * @generated from field: google.type.Money overdraft_limit = 6; + * @generated from field: meridian.quantity.v1.InstrumentAmount overdraft_limit = 6; */ - overdraftLimit?: Money; + overdraftLimit?: InstrumentAmount; /** - * shortage is the amount by which the limit was exceeded - * NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - * validation. Service layer must enforce this constraint. - * See README "Money Field Validation Limitations" + * shortage is the amount by which the limit was exceeded (must be positive) * - * @generated from field: google.type.Money shortage = 7; + * @generated from field: meridian.quantity.v1.InstrumentAmount shortage = 7; */ - shortage?: Money; + shortage?: InstrumentAmount; /** * correlation_id links related events across services diff --git a/frontend/src/api/gen/meridian/events/v1/financial_accounting_events_pb.ts b/frontend/src/api/gen/meridian/events/v1/financial_accounting_events_pb.ts index 4aad9eaa2..9a35b27b1 100644 --- a/frontend/src/api/gen/meridian/events/v1/financial_accounting_events_pb.ts +++ b/frontend/src/api/gen/meridian/events/v1/financial_accounting_events_pb.ts @@ -7,17 +7,17 @@ import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; import type { Timestamp } from "@bufbuild/protobuf/wkt"; import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; -import type { Money } from "../../../google/type/money_pb"; -import { file_google_type_money } from "../../../google/type/money_pb"; import type { PostingDirection, TransactionStatus } from "../../common/v1/types_pb"; import { file_meridian_common_v1_types } from "../../common/v1/types_pb"; +import type { InstrumentAmount } from "../../quantity/v1/quantity_pb"; +import { file_meridian_quantity_v1_quantity } from "../../quantity/v1/quantity_pb"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meridian/events/v1/financial_accounting_events.proto. */ export const file_meridian_events_v1_financial_accounting_events: GenFile = /*@__PURE__*/ - fileDesc("CjRtZXJpZGlhbi9ldmVudHMvdjEvZmluYW5jaWFsX2FjY291bnRpbmdfZXZlbnRzLnByb3RvEhJtZXJpZGlhbi5ldmVudHMudjEijAMKIUZpbmFuY2lhbEJvb2tpbmdMb2dJbml0aWF0ZWRFdmVudBIiCg5ib29raW5nX2xvZ19pZBgBIAEoCUIKukgHcgUQARj/ARInChZmaW5hbmNpYWxfYWNjb3VudF90eXBlGAIgASgJQge6SARyAhgyEi0KGXByb2R1Y3Rfc2VydmljZV9yZWZlcmVuY2UYAyABKAlCCrpIB3IFEAEY/wESKwoXYnVzaW5lc3NfdW5pdF9yZWZlcmVuY2UYBCABKAlCCrpIB3IFEAEY/wESJwoUYmFzZV9pbnN0cnVtZW50X2NvZGUYBSABKAlCCbpIBnIEEAEYMhIiCg5jb3JyZWxhdGlvbl9pZBgGIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCSABKANCB7pIBCICKAEixQMKH0ZpbmFuY2lhbEJvb2tpbmdMb2dVcGRhdGVkRXZlbnQSIgoOYm9va2luZ19sb2dfaWQYASABKAlCCrpIB3IFEAEY/wESQQoGc3RhdHVzGAIgASgOMiUubWVyaWRpYW4uY29tbW9uLnYxLlRyYW5zYWN0aW9uU3RhdHVzQgq6SAeCAQQQASAAEkoKD3ByZXZpb3VzX3N0YXR1cxgDIAEoDjIlLm1lcmlkaWFuLmNvbW1vbi52MS5UcmFuc2FjdGlvblN0YXR1c0IKukgHggEEEAEgABIfChdjaGFydF9vZl9hY2NvdW50c19ydWxlcxgEIAEoCRIYCgZyZWFzb24YBSABKAlCCLpIBXIDGPQDEh0KCnVwZGF0ZWRfYnkYBiABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgHIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYCCABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCiABKANCB7pIBCICKAEiiAUKHkZpbmFuY2lhbEJvb2tpbmdMb2dQb3N0ZWRFdmVudBIiCg5ib29raW5nX2xvZ19pZBgBIAEoCUIKukgHcgUQARj/ARIeCg1wb3N0aW5nX2NvdW50GAIgASgFQge6SAQaAigAEqYBCgx0b3RhbF9kZWJpdHMYAyABKAsyEi5nb29nbGUudHlwZS5Nb25leUJ8ukh5ugFzChlub25fbmVnYXRpdmVfdG90YWxfZGViaXRzEjJ0b3RhbCBkZWJpdHMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVybxoidGhpcy51bml0cyA+PSAwICYmIHRoaXMubmFub3MgPj0gMMgBARKpAQoNdG90YWxfY3JlZGl0cxgEIAEoCzISLmdvb2dsZS50eXBlLk1vbmV5Qn66SHu6AXUKGm5vbl9uZWdhdGl2ZV90b3RhbF9jcmVkaXRzEjN0b3RhbCBjcmVkaXRzIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8aInRoaXMudW5pdHMgPj0gMCAmJiB0aGlzLm5hbm9zID49IDDIAQESGAoGcmVhc29uGAUgASgJQgi6SAVyAxj0AxIcCglwb3N0ZWRfYnkYBiABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgHIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYCCABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCiABKANCB7pIBCICKAEilQIKHkZpbmFuY2lhbEJvb2tpbmdMb2dDbG9zZWRFdmVudBIiCg5ib29raW5nX2xvZ19pZBgBIAEoCUIKukgHcgUQARj/ARIaCgZyZWFzb24YAiABKAlCCrpIB3IFEAEY9AMSHAoJY2xvc2VkX2J5GAMgASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYBCABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAUgASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAcgASgDQge6SAQiAigBIqUFChpMZWRnZXJQb3N0aW5nQ2FwdHVyZWRFdmVudBIeCgpwb3N0aW5nX2lkGAEgASgJQgq6SAdyBRABGP8BEiIKDmJvb2tpbmdfbG9nX2lkGAIgASgJQgq6SAdyBRABGP8BEksKEXBvc3RpbmdfZGlyZWN0aW9uGAMgASgOMiQubWVyaWRpYW4uY29tbW9uLnYxLlBvc3RpbmdEaXJlY3Rpb25CCrpIB4IBBBABIAASsQEKDnBvc3RpbmdfYW1vdW50GAQgASgLMhIuZ29vZ2xlLnR5cGUuTW9uZXlChAG6SIABugF6Chdwb3NpdGl2ZV9wb3N0aW5nX2Ftb3VudBIocG9zdGluZyBhbW91bnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybxo1dGhpcy51bml0cyA+IDAgfHwgKHRoaXMudW5pdHMgPT0gMCAmJiB0aGlzLm5hbm9zID4gMCnIAQESMAoKYWNjb3VudF9pZBgFIAEoCUIcukgZchcQARj/ATIQXlthLXpBLVowLTlfLV0rJBI2Cgp2YWx1ZV9kYXRlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEkEKBnN0YXR1cxgHIAEoDjIlLm1lcmlkaWFuLmNvbW1vbi52MS5UcmFuc2FjdGlvblN0YXR1c0IKukgHggEEEAEgABIiCg5jb3JyZWxhdGlvbl9pZBgIIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYCSABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCyABKANCB7pIBCICKAEijgUKGUxlZGdlclBvc3RpbmdBbWVuZGVkRXZlbnQSHgoKcG9zdGluZ19pZBgBIAEoCUIKukgHcgUQARj/ARIiCg5ib29raW5nX2xvZ19pZBgCIAEoCUIKukgHcgUQARj/ARK0AQoPcHJldmlvdXNfYW1vdW50GAMgASgLMhIuZ29vZ2xlLnR5cGUuTW9uZXlChgG6SIIBugF8Chhwb3NpdGl2ZV9wcmV2aW91c19hbW91bnQSKXByZXZpb3VzIGFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvGjV0aGlzLnVuaXRzID4gMCB8fCAodGhpcy51bml0cyA9PSAwICYmIHRoaXMubmFub3MgPiAwKcgBARKjAQoKbmV3X2Ftb3VudBgEIAEoCzISLmdvb2dsZS50eXBlLk1vbmV5Qnu6SHi6AXIKE3Bvc2l0aXZlX25ld19hbW91bnQSJG5ldyBhbW91bnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybxo1dGhpcy51bml0cyA+IDAgfHwgKHRoaXMudW5pdHMgPT0gMCAmJiB0aGlzLm5hbm9zID4gMCnIAQESGgoGcmVhc29uGAUgASgJQgq6SAdyBRABGPQDEh0KCmFtZW5kZWRfYnkYBiABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgHIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYCCABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCiABKANCB7pIBCICKAEitQIKGExlZGdlclBvc3RpbmdQb3N0ZWRFdmVudBIeCgpwb3N0aW5nX2lkGAEgASgJQgq6SAdyBRABGP8BEiIKDmJvb2tpbmdfbG9nX2lkGAIgASgJQgq6SAdyBRABGP8BEiAKDnBvc3RpbmdfcmVzdWx0GAMgASgJQgi6SAVyAxjoBxIcCglwb3N0ZWRfYnkYBCABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgFIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYBiABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCCABKANCB7pIBCICKAEiswIKGkxlZGdlclBvc3RpbmdSZWplY3RlZEV2ZW50Eh4KCnBvc3RpbmdfaWQYASABKAlCCrpIB3IFEAEY/wESIgoOYm9va2luZ19sb2dfaWQYAiABKAlCCrpIB3IFEAEY/wESGgoGcmVhc29uGAMgASgJQgq6SAdyBRABGPQDEh4KC3JlamVjdGVkX2J5GAQgASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYBSABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAYgASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAggASgDQge6SAQiAigBItMDCiJGaW5hbmNpYWxCb29raW5nTG9nQ29udHJvbGxlZEV2ZW50EiIKDmJvb2tpbmdfbG9nX2lkGAEgASgJQgq6SAdyBRABGP8BEiEKDmNvbnRyb2xfYWN0aW9uGAIgASgJQgm6SAZyBBABGDISSgoPcHJldmlvdXNfc3RhdHVzGAMgASgOMiUubWVyaWRpYW4uY29tbW9uLnYxLlRyYW5zYWN0aW9uU3RhdHVzQgq6SAeCAQQQASAAEkUKCm5ld19zdGF0dXMYBCABKA4yJS5tZXJpZGlhbi5jb21tb24udjEuVHJhbnNhY3Rpb25TdGF0dXNCCrpIB4IBBBABIAASGgoGcmVhc29uGAUgASgJQgq6SAdyBRABGPQDEiAKDWNvbnRyb2xsZWRfYnkYBiABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgHIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYCCABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCiABKANCB7pIBCICKAEikwUKHEJhbGFuY2VWYWxpZGF0aW9uRmFpbGVkRXZlbnQSIgoOYm9va2luZ19sb2dfaWQYASABKAlCCrpIB3IFEAEY/wESswEKDHRvdGFsX2RlYml0cxgCIAEoCzISLmdvb2dsZS50eXBlLk1vbmV5QogBukiEAboBfgokbm9uX25lZ2F0aXZlX3RvdGFsX2RlYml0c192YWxpZGF0aW9uEjJ0b3RhbCBkZWJpdHMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVybxoidGhpcy51bml0cyA+PSAwICYmIHRoaXMubmFub3MgPj0gMMgBARK3AQoNdG90YWxfY3JlZGl0cxgDIAEoCzISLmdvb2dsZS50eXBlLk1vbmV5QosBukiHAboBgAEKJW5vbl9uZWdhdGl2ZV90b3RhbF9jcmVkaXRzX3ZhbGlkYXRpb24SM3RvdGFsIGNyZWRpdHMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVybxoidGhpcy51bml0cyA+PSAwICYmIHRoaXMubmFub3MgPj0gMMgBARIsCgh2YXJpYW5jZRgEIAEoCzISLmdvb2dsZS50eXBlLk1vbmV5Qga6SAPIAQESGgoGcmVhc29uGAUgASgJQgq6SAdyBRABGPQDEiIKDmNvcnJlbGF0aW9uX2lkGAYgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgHIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgJIAEoA0IHukgEIgIoAUJHWkVnaXRodWIuY29tL21lcmlkaWFuaHViL21lcmlkaWFuL2FwaS9wcm90by9tZXJpZGlhbi9ldmVudHMvdjE7ZXZlbnRzdjFiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_timestamp, file_google_type_money, file_meridian_common_v1_types]); + fileDesc("CjRtZXJpZGlhbi9ldmVudHMvdjEvZmluYW5jaWFsX2FjY291bnRpbmdfZXZlbnRzLnByb3RvEhJtZXJpZGlhbi5ldmVudHMudjEijAMKIUZpbmFuY2lhbEJvb2tpbmdMb2dJbml0aWF0ZWRFdmVudBIiCg5ib29raW5nX2xvZ19pZBgBIAEoCUIKukgHcgUQARj/ARInChZmaW5hbmNpYWxfYWNjb3VudF90eXBlGAIgASgJQge6SARyAhgyEi0KGXByb2R1Y3Rfc2VydmljZV9yZWZlcmVuY2UYAyABKAlCCrpIB3IFEAEY/wESKwoXYnVzaW5lc3NfdW5pdF9yZWZlcmVuY2UYBCABKAlCCrpIB3IFEAEY/wESJwoUYmFzZV9pbnN0cnVtZW50X2NvZGUYBSABKAlCCbpIBnIEEAEYMhIiCg5jb3JyZWxhdGlvbl9pZBgGIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCSABKANCB7pIBCICKAEixQMKH0ZpbmFuY2lhbEJvb2tpbmdMb2dVcGRhdGVkRXZlbnQSIgoOYm9va2luZ19sb2dfaWQYASABKAlCCrpIB3IFEAEY/wESQQoGc3RhdHVzGAIgASgOMiUubWVyaWRpYW4uY29tbW9uLnYxLlRyYW5zYWN0aW9uU3RhdHVzQgq6SAeCAQQQASAAEkoKD3ByZXZpb3VzX3N0YXR1cxgDIAEoDjIlLm1lcmlkaWFuLmNvbW1vbi52MS5UcmFuc2FjdGlvblN0YXR1c0IKukgHggEEEAEgABIfChdjaGFydF9vZl9hY2NvdW50c19ydWxlcxgEIAEoCRIYCgZyZWFzb24YBSABKAlCCLpIBXIDGPQDEh0KCnVwZGF0ZWRfYnkYBiABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgHIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYCCABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCiABKANCB7pIBCICKAEixgUKHkZpbmFuY2lhbEJvb2tpbmdMb2dQb3N0ZWRFdmVudBIiCg5ib29raW5nX2xvZ19pZBgBIAEoCUIKukgHcgUQARj/ARIeCg1wb3N0aW5nX2NvdW50GAIgASgFQge6SAQaAigAEsUBCgx0b3RhbF9kZWJpdHMYAyABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QoYBukiCAboBfAoZbm9uX25lZ2F0aXZlX3RvdGFsX2RlYml0cxIydG90YWwgZGViaXRzIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8aK3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJynIAQESyAEKDXRvdGFsX2NyZWRpdHMYBCABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QogBukiEAboBfgoabm9uX25lZ2F0aXZlX3RvdGFsX2NyZWRpdHMSM3RvdGFsIGNyZWRpdHMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVybxordGhpcy5hbW91bnQubWF0Y2hlcygnXlswLTldKyhcXC5bMC05XSspPyQnKcgBARIYCgZyZWFzb24YBSABKAlCCLpIBXIDGPQDEhwKCXBvc3RlZF9ieRgGIAEoCUIJukgGcgQQARhkEiIKDmNvcnJlbGF0aW9uX2lkGAcgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgIIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgKIAEoA0IHukgEIgIoASKVAgoeRmluYW5jaWFsQm9va2luZ0xvZ0Nsb3NlZEV2ZW50EiIKDmJvb2tpbmdfbG9nX2lkGAEgASgJQgq6SAdyBRABGP8BEhoKBnJlYXNvbhgCIAEoCUIKukgHcgUQARj0AxIcCgljbG9zZWRfYnkYAyABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgEIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYBSABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YByABKANCB7pIBCICKAEi5wUKGkxlZGdlclBvc3RpbmdDYXB0dXJlZEV2ZW50Eh4KCnBvc3RpbmdfaWQYASABKAlCCrpIB3IFEAEY/wESIgoOYm9va2luZ19sb2dfaWQYAiABKAlCCrpIB3IFEAEY/wESSwoRcG9zdGluZ19kaXJlY3Rpb24YAyABKA4yJC5tZXJpZGlhbi5jb21tb24udjEuUG9zdGluZ0RpcmVjdGlvbkIKukgHggEEEAEgABLzAQoOcG9zdGluZ19hbW91bnQYBCABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QrIBukiuAboBpwEKF3Bvc2l0aXZlX3Bvc3RpbmdfYW1vdW50Eihwb3N0aW5nIGFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvGmJ0aGlzLmFtb3VudC5tYXRjaGVzKCdeWzEtOV1bMC05XSooXFwuWzAtOV0rKT8kJykgfHwgdGhpcy5hbW91bnQubWF0Y2hlcygnXjBcXC5bMC05XSpbMS05XVswLTldKiQnKcgBARIwCgphY2NvdW50X2lkGAUgASgJQhy6SBlyFxABGP8BMhBeW2EtekEtWjAtOV8tXSskEjYKCnZhbHVlX2RhdGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESQQoGc3RhdHVzGAcgASgOMiUubWVyaWRpYW4uY29tbW9uLnYxLlRyYW5zYWN0aW9uU3RhdHVzQgq6SAeCAQQQASAAEiIKDmNvcnJlbGF0aW9uX2lkGAggASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgJIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgLIAEoA0IHukgEIgIoASKUBgoZTGVkZ2VyUG9zdGluZ0FtZW5kZWRFdmVudBIeCgpwb3N0aW5nX2lkGAEgASgJQgq6SAdyBRABGP8BEiIKDmJvb2tpbmdfbG9nX2lkGAIgASgJQgq6SAdyBRABGP8BEvYBCg9wcmV2aW91c19hbW91bnQYAyABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QrQBukiwAboBqQEKGHBvc2l0aXZlX3ByZXZpb3VzX2Ftb3VudBIpcHJldmlvdXMgYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8aYnRoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMS05XVswLTldKihcXC5bMC05XSspPyQnKSB8fCB0aGlzLmFtb3VudC5tYXRjaGVzKCdeMFxcLlswLTldKlsxLTldWzAtOV0qJCcpyAEBEucBCgpuZXdfYW1vdW50GAQgASgLMiYubWVyaWRpYW4ucXVhbnRpdHkudjEuSW5zdHJ1bWVudEFtb3VudEKqAbpIpgG6AZ8BChNwb3NpdGl2ZV9uZXdfYW1vdW50EiRuZXcgYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8aYnRoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMS05XVswLTldKihcXC5bMC05XSspPyQnKSB8fCB0aGlzLmFtb3VudC5tYXRjaGVzKCdeMFxcLlswLTldKlsxLTldWzAtOV0qJCcpyAEBEhoKBnJlYXNvbhgFIAEoCUIKukgHcgUQARj0AxIdCgphbWVuZGVkX2J5GAYgASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAggASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAogASgDQge6SAQiAigBIrUCChhMZWRnZXJQb3N0aW5nUG9zdGVkRXZlbnQSHgoKcG9zdGluZ19pZBgBIAEoCUIKukgHcgUQARj/ARIiCg5ib29raW5nX2xvZ19pZBgCIAEoCUIKukgHcgUQARj/ARIgCg5wb3N0aW5nX3Jlc3VsdBgDIAEoCUIIukgFcgMY6AcSHAoJcG9zdGVkX2J5GAQgASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYBSABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAYgASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAggASgDQge6SAQiAigBIrMCChpMZWRnZXJQb3N0aW5nUmVqZWN0ZWRFdmVudBIeCgpwb3N0aW5nX2lkGAEgASgJQgq6SAdyBRABGP8BEiIKDmJvb2tpbmdfbG9nX2lkGAIgASgJQgq6SAdyBRABGP8BEhoKBnJlYXNvbhgDIAEoCUIKukgHcgUQARj0AxIeCgtyZWplY3RlZF9ieRgEIAEoCUIJukgGcgQQARhkEiIKDmNvcnJlbGF0aW9uX2lkGAUgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgGIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgIIAEoA0IHukgEIgIoASLTAwoiRmluYW5jaWFsQm9va2luZ0xvZ0NvbnRyb2xsZWRFdmVudBIiCg5ib29raW5nX2xvZ19pZBgBIAEoCUIKukgHcgUQARj/ARIhCg5jb250cm9sX2FjdGlvbhgCIAEoCUIJukgGcgQQARgyEkoKD3ByZXZpb3VzX3N0YXR1cxgDIAEoDjIlLm1lcmlkaWFuLmNvbW1vbi52MS5UcmFuc2FjdGlvblN0YXR1c0IKukgHggEEEAEgABJFCgpuZXdfc3RhdHVzGAQgASgOMiUubWVyaWRpYW4uY29tbW9uLnYxLlRyYW5zYWN0aW9uU3RhdHVzQgq6SAeCAQQQASAAEhoKBnJlYXNvbhgFIAEoCUIKukgHcgUQARj0AxIgCg1jb250cm9sbGVkX2J5GAYgASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAggASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAogASgDQge6SAQiAigBIuIFChxCYWxhbmNlVmFsaWRhdGlvbkZhaWxlZEV2ZW50EiIKDmJvb2tpbmdfbG9nX2lkGAEgASgJQgq6SAdyBRABGP8BEtEBCgx0b3RhbF9kZWJpdHMYAiABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QpIBukiOAboBhwEKJG5vbl9uZWdhdGl2ZV90b3RhbF9kZWJpdHNfdmFsaWRhdGlvbhIydG90YWwgZGViaXRzIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8aK3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJynIAQES1AEKDXRvdGFsX2NyZWRpdHMYAyABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QpQBukiQAboBiQEKJW5vbl9uZWdhdGl2ZV90b3RhbF9jcmVkaXRzX3ZhbGlkYXRpb24SM3RvdGFsIGNyZWRpdHMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVybxordGhpcy5hbW91bnQubWF0Y2hlcygnXlswLTldKyhcXC5bMC05XSspPyQnKcgBARJACgh2YXJpYW5jZRgEIAEoCzImLm1lcmlkaWFuLnF1YW50aXR5LnYxLkluc3RydW1lbnRBbW91bnRCBrpIA8gBARIaCgZyZWFzb24YBSABKAlCCrpIB3IFEAEY9AMSIgoOY29ycmVsYXRpb25faWQYBiABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAcgASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAkgASgDQge6SAQiAigBQkdaRWdpdGh1Yi5jb20vbWVyaWRpYW5odWIvbWVyaWRpYW4vYXBpL3Byb3RvL21lcmlkaWFuL2V2ZW50cy92MTtldmVudHN2MWIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_meridian_common_v1_types, file_meridian_quantity_v1_quantity]); /** * FinancialBookingLogInitiatedEvent represents a new financial booking log @@ -207,24 +207,18 @@ export type FinancialBookingLogPostedEvent = Message<"meridian.events.v1.Financi postingCount: number; /** - * total_debits is the sum of all debit postings (must be positive or zero) - * NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - * validation. Service layer must enforce this constraint. - * See README "Money Field Validation Limitations" + * total_debits is the sum of all debit postings (must be non-negative) * - * @generated from field: google.type.Money total_debits = 3; + * @generated from field: meridian.quantity.v1.InstrumentAmount total_debits = 3; */ - totalDebits?: Money; + totalDebits?: InstrumentAmount; /** - * total_credits is the sum of all credit postings (must be positive or zero) - * NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - * validation. Service layer must enforce this constraint. - * See README "Money Field Validation Limitations" + * total_credits is the sum of all credit postings (must be non-negative) * - * @generated from field: google.type.Money total_credits = 4; + * @generated from field: meridian.quantity.v1.InstrumentAmount total_credits = 4; */ - totalCredits?: Money; + totalCredits?: InstrumentAmount; /** * reason provides context for posting @@ -370,14 +364,11 @@ export type LedgerPostingCapturedEvent = Message<"meridian.events.v1.LedgerPosti postingDirection: PostingDirection; /** - * posting_amount is the monetary amount being posted (must be positive) - * NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - * validation. Service layer must enforce this constraint. - * See README "Money Field Validation Limitations" + * posting_amount is the amount being posted (must be positive) * - * @generated from field: google.type.Money posting_amount = 4; + * @generated from field: meridian.quantity.v1.InstrumentAmount posting_amount = 4; */ - postingAmount?: Money; + postingAmount?: InstrumentAmount; /** * account_id identifies the account being posted to @@ -459,23 +450,17 @@ export type LedgerPostingAmendedEvent = Message<"meridian.events.v1.LedgerPostin /** * previous_amount was the amount before amendment (must be positive) - * NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - * validation. Service layer must enforce this constraint. - * See README "Money Field Validation Limitations" * - * @generated from field: google.type.Money previous_amount = 3; + * @generated from field: meridian.quantity.v1.InstrumentAmount previous_amount = 3; */ - previousAmount?: Money; + previousAmount?: InstrumentAmount; /** * new_amount is the amount after amendment (must be positive) - * NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - * validation. Service layer must enforce this constraint. - * See README "Money Field Validation Limitations" * - * @generated from field: google.type.Money new_amount = 4; + * @generated from field: meridian.quantity.v1.InstrumentAmount new_amount = 4; */ - newAmount?: Money; + newAmount?: InstrumentAmount; /** * reason explains why the posting was amended @@ -772,32 +757,26 @@ export type BalanceValidationFailedEvent = Message<"meridian.events.v1.BalanceVa /** * total_debits is the sum of all debit postings (must be non-negative) - * NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - * validation. Service layer must enforce this constraint. - * See README "Money Field Validation Limitations" * - * @generated from field: google.type.Money total_debits = 2; + * @generated from field: meridian.quantity.v1.InstrumentAmount total_debits = 2; */ - totalDebits?: Money; + totalDebits?: InstrumentAmount; /** * total_credits is the sum of all credit postings (must be non-negative) - * NOTE: buf.validate CEL constraints on google.type.Money don't generate runtime - * validation. Service layer must enforce this constraint. - * See README "Money Field Validation Limitations" * - * @generated from field: google.type.Money total_credits = 3; + * @generated from field: meridian.quantity.v1.InstrumentAmount total_credits = 3; */ - totalCredits?: Money; + totalCredits?: InstrumentAmount; /** * variance is the difference between debits and credits (can be negative) * Positive variance = debits > credits * Negative variance = credits > debits * - * @generated from field: google.type.Money variance = 4; + * @generated from field: meridian.quantity.v1.InstrumentAmount variance = 4; */ - variance?: Money; + variance?: InstrumentAmount; /** * reason explains the validation failure diff --git a/services/current-account/service/grpc_control_endpoints.go b/services/current-account/service/grpc_control_endpoints.go index 0576e0ad3..e9c5d98ee 100644 --- a/services/current-account/service/grpc_control_endpoints.go +++ b/services/current-account/service/grpc_control_endpoints.go @@ -9,6 +9,7 @@ import ( "github.com/google/uuid" pb "github.com/meridianhub/meridian/api/proto/meridian/current_account/v1" eventsv1 "github.com/meridianhub/meridian/api/proto/meridian/events/v1" + quantityv1 "github.com/meridianhub/meridian/api/proto/meridian/quantity/v1" "github.com/meridianhub/meridian/services/current-account/adapters/persistence" "github.com/meridianhub/meridian/services/current-account/domain" caobservability "github.com/meridianhub/meridian/services/current-account/observability" @@ -16,7 +17,6 @@ import ( "github.com/meridianhub/meridian/shared/platform/events" "github.com/meridianhub/meridian/shared/platform/events/topics" "github.com/meridianhub/meridian/shared/platform/tenant" - "google.golang.org/genproto/googleapis/type/money" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/timestamppb" @@ -344,20 +344,10 @@ func (s *Service) publishAccountClosedEvent( accountID, reason, actorID, correlationID string, actionTimestamp, now time.Time, ) error { - balanceCents, _ := account.Balance().ToMinorUnits() - precision := account.Balance().Precision() - divisor := int64(1) - for i := 0; i < precision; i++ { - divisor *= 10 - } - var nanosMultiplier int32 - if divisor > 0 { - nanosMultiplier = int32(1_000_000_000 / divisor) - } - closingBalance := &money.Money{ - CurrencyCode: account.Balance().InstrumentCode(), - Units: balanceCents / divisor, - Nanos: int32(balanceCents%divisor) * nanosMultiplier, + closingBalance := &quantityv1.InstrumentAmount{ + Amount: account.Balance().Amount().String(), + InstrumentCode: account.Balance().InstrumentCode(), + Version: 1, } event := &eventsv1.AccountClosedEvent{ EventId: uuid.New().String(), diff --git a/services/financial-accounting/service/grpc_mappers.go b/services/financial-accounting/service/grpc_mappers.go index 4362a614a..b8aa9101a 100644 --- a/services/financial-accounting/service/grpc_mappers.go +++ b/services/financial-accounting/service/grpc_mappers.go @@ -67,7 +67,7 @@ func buildPostingCapturedEvent(posting *domain.LedgerPosting, correlationID stri PostingId: posting.ID.String(), BookingLogId: posting.FinancialBookingLogID.String(), PostingDirection: toProtoPostingDirection(posting.Direction), - PostingAmount: toProtoMoney(posting.Amount), + PostingAmount: toProtoInstrumentAmount(posting.Amount), AccountId: posting.AccountID, ValueDate: timestamppb.New(posting.ValueDate), Status: toProtoTransactionStatus(posting.Status), @@ -88,8 +88,8 @@ func buildPostingAmendedEvent( return &eventsv1.LedgerPostingAmendedEvent{ PostingId: posting.ID.String(), BookingLogId: posting.FinancialBookingLogID.String(), - PreviousAmount: toProtoMoney(previousAmount), - NewAmount: toProtoMoney(posting.Amount), + PreviousAmount: toProtoInstrumentAmount(previousAmount), + NewAmount: toProtoInstrumentAmount(posting.Amount), Reason: fmt.Sprintf("Status updated from %v to %v", previousStatus, newStatus), AmendedBy: "system", CorrelationId: correlationID, From 54d4626fa946be88761776ca94591098f6ba6a1e Mon Sep 17 00:00:00 2001 From: Ben Coombs Date: Fri, 3 Apr 2026 18:50:26 +0100 Subject: [PATCH 2/7] fix: update serialization test to use InstrumentAmount instead of Money The LedgerPostingCapturedEvent.PostingAmount field was migrated from google.type.Money to quantityv1.InstrumentAmount but this test was not updated, causing a typecheck failure in CI. --- tests/proto/serialization_test.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/proto/serialization_test.go b/tests/proto/serialization_test.go index 83a0b6fac..998d30f54 100644 --- a/tests/proto/serialization_test.go +++ b/tests/proto/serialization_test.go @@ -116,10 +116,9 @@ func TestProtoSerialization(t *testing.T) { PostingId: "LP-123", BookingLogId: "FBL-456", PostingDirection: commonv1.PostingDirection_POSTING_DIRECTION_DEBIT, - PostingAmount: &money.Money{ - CurrencyCode: "GBP", - Units: 1000, - Nanos: 0, + PostingAmount: &quantityv1.InstrumentAmount{ + Amount: "1000.00", + InstrumentCode: "GBP", }, AccountId: "ACC-789", ValueDate: now, From 736b769eaacc865232e622553caff7d72f9e0555 Mon Sep 17 00:00:00 2001 From: Ben Coombs Date: Fri, 3 Apr 2026 19:02:23 +0100 Subject: [PATCH 3/7] fix: use domain instrument version instead of hardcoded 1 in AccountClosedEvent --- services/current-account/service/grpc_control_endpoints.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/current-account/service/grpc_control_endpoints.go b/services/current-account/service/grpc_control_endpoints.go index e9c5d98ee..69664e370 100644 --- a/services/current-account/service/grpc_control_endpoints.go +++ b/services/current-account/service/grpc_control_endpoints.go @@ -347,7 +347,7 @@ func (s *Service) publishAccountClosedEvent( closingBalance := &quantityv1.InstrumentAmount{ Amount: account.Balance().Amount().String(), InstrumentCode: account.Balance().InstrumentCode(), - Version: 1, + Version: int32(account.Balance().Instrument().Version), } event := &eventsv1.AccountClosedEvent{ EventId: uuid.New().String(), From 700c73b93090909caf2be8c19cb27ac0f8609b0d Mon Sep 17 00:00:00 2001 From: Ben Coombs Date: Fri, 3 Apr 2026 19:04:11 +0100 Subject: [PATCH 4/7] fix: widen positive-amount CEL regex to accept zero-padded values The previous regex rejected valid positive values like "01" and "0001.50" that the base InstrumentAmount pattern accepts. Use a pattern that checks for any numeric string that is not all-zeros. --- .../events/v1/current_account_events.pb.go | 754 +++++++++--------- .../events/v1/current_account_events.proto | 6 +- .../v1/financial_accounting_events.pb.go | 478 +++++------ .../v1/financial_accounting_events.proto | 6 +- 4 files changed, 622 insertions(+), 622 deletions(-) diff --git a/api/proto/meridian/events/v1/current_account_events.pb.go b/api/proto/meridian/events/v1/current_account_events.pb.go index 8ff9069d2..566e403fb 100644 --- a/api/proto/meridian/events/v1/current_account_events.pb.go +++ b/api/proto/meridian/events/v1/current_account_events.pb.go @@ -7,15 +7,16 @@ package eventsv1 import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" v11 "github.com/meridianhub/meridian/api/proto/meridian/common/v1" v1 "github.com/meridianhub/meridian/api/proto/meridian/quantity/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" - unsafe "unsafe" ) const ( @@ -1935,7 +1936,7 @@ var file_meridian_events_v1_current_account_events_proto_rawDesc = string([]byte 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xe1, 0x09, 0x0a, 0x19, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0xd2, 0x09, 0x0a, 0x19, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, @@ -1952,227 +1953,319 @@ var file_meridian_events_v1_current_account_events_proto_rawDesc = string([]byte 0x44, 0x52, 0x41, 0x57, 0x41, 0x4c, 0x52, 0x08, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x52, 0x03, 0x46, 0x45, 0x45, 0x52, 0x08, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x45, 0x53, 0x54, 0x52, 0x0a, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x4d, 0x45, 0x4e, 0x54, 0x52, 0x0f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x92, 0x02, 0x0a, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x83, 0x02, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0xba, 0x01, 0xba, 0x48, 0xb6, 0x01, 0xba, 0x01, 0xaf, 0x01, 0x0a, 0x1b, 0x70, 0x6f, + 0x74, 0x42, 0xab, 0x01, 0xba, 0x48, 0xa7, 0x01, 0xba, 0x01, 0xa0, 0x01, 0x0a, 0x1b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, - 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x62, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, + 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x53, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, - 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, - 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, - 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, - 0x28, 0x27, 0x5e, 0x30, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x5b, 0x31, 0x2d, - 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x11, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x5d, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6d, - 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x10, - 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x41, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x44, - 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, - 0xf4, 0x03, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x25, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x09, 0x72, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, - 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, - 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, - 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, - 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, - 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, - 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, - 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x57, - 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x3b, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8d, 0x07, 0x0a, 0x19, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, - 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, - 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, - 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, - 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, - 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, - 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, - 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0a, 0x6e, - 0x65, 0x77, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x62, 0x0a, 0x15, 0x6e, 0x65, 0x77, - 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, - 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, - 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x13, 0x6e, 0x65, 0x77, 0x41, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x35, 0x0a, - 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, - 0xf4, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, - 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, - 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, - 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, - 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, - 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x57, - 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x3b, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x87, 0x06, 0x0a, 0x1d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, - 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, - 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x0d, 0x66, 0x61, - 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0a, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x65, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3e, 0xba, 0x48, 0x3b, - 0x72, 0x39, 0x52, 0x0f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x43, 0x43, 0x4f, - 0x55, 0x4e, 0x54, 0x52, 0x14, 0x46, 0x49, 0x4e, 0x41, 0x4e, 0x43, 0x49, 0x41, 0x4c, 0x5f, 0x41, - 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x49, 0x4e, 0x47, 0x52, 0x10, 0x50, 0x4f, 0x53, 0x49, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x49, 0x4e, 0x47, 0x52, 0x0d, 0x66, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, - 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, - 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, - 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, - 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, - 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x42, - 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, - 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x4b, 0x65, 0x79, 0x12, 0x5b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, - 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x94, - 0x05, 0x0a, 0x1c, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0d, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, - 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, - 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, - 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, - 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x64, 0x12, 0x4f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x37, 0xba, 0x48, 0x34, 0x72, 0x32, 0x52, 0x09, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, - 0x54, 0x45, 0x44, 0x52, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x52, 0x09, 0x43, 0x4f, - 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x52, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x52, - 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, - 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, - 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, - 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, - 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x5a, 0x0a, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, - 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, + 0x3f, 0x24, 0x27, 0x29, 0x20, 0x26, 0x26, 0x20, 0x21, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x30, + 0x2b, 0x28, 0x5c, 0x5c, 0x2e, 0x30, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, + 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x5d, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, + 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, + 0x10, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x41, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x44, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, + 0x18, 0xf4, 0x03, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x25, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x09, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, + 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, + 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, + 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, + 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, + 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, + 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, + 0x0e, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, + 0x57, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3b, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8d, 0x07, 0x0a, 0x19, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, + 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, + 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, + 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, + 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, + 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, + 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, + 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0f, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x0b, 0x6e, 0x65, 0x77, + 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0a, + 0x6e, 0x65, 0x77, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x62, 0x0a, 0x15, 0x6e, 0x65, + 0x77, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, + 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, + 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x13, 0x6e, 0x65, 0x77, 0x41, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x35, + 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, + 0x18, 0xf4, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, + 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, + 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, + 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, + 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, + 0x0e, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, + 0x57, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3b, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xee, 0x08, 0x0a, 0x18, 0x4f, 0x76, 0x65, 0x72, 0x64, 0x72, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x87, 0x06, 0x0a, 0x1d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, + 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, + 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0e, 0x66, 0x61, 0x69, + 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x0d, 0x66, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0a, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x65, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3e, 0xba, 0x48, + 0x3b, 0x72, 0x39, 0x52, 0x0f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x43, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x52, 0x14, 0x46, 0x49, 0x4e, 0x41, 0x4e, 0x43, 0x49, 0x41, 0x4c, 0x5f, + 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x49, 0x4e, 0x47, 0x52, 0x10, 0x50, 0x4f, 0x53, 0x49, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x49, 0x4e, 0x47, 0x52, 0x0d, 0x66, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x63, + 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, + 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, + 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, + 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, + 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, + 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, + 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, + 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, + 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x5b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, + 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x94, 0x05, 0x0a, 0x1c, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0d, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, + 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, + 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, + 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x37, 0xba, 0x48, 0x34, 0x72, 0x32, 0x52, 0x09, 0x49, 0x4e, 0x49, 0x54, 0x49, + 0x41, 0x54, 0x45, 0x44, 0x52, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x52, 0x09, 0x43, + 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x52, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, + 0x52, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, + 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, + 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, + 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, + 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, + 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x5a, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3e, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xee, 0x08, 0x0a, 0x18, 0x4f, 0x76, 0x65, 0x72, 0x64, + 0x72, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, + 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, + 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, + 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, + 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x10, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x12, 0xdf, 0x01, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x5f, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, + 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, + 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x42, 0x8d, 0x01, 0xba, 0x48, 0x89, 0x01, 0xba, 0x01, 0x82, 0x01, 0x0a, 0x1c, + 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x76, 0x65, + 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x35, 0x6f, 0x76, + 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, + 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, + 0x61, 0x6e, 0x20, 0x6f, 0x72, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x7a, + 0x65, 0x72, 0x6f, 0x1a, 0x2b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, + 0x2b, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, + 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0xd8, 0x01, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, + 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, + 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x88, 0x01, 0xba, 0x48, 0x84, 0x01, 0xba, 0x01, 0x80, 0x01, 0x0a, + 0x1b, 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x72, + 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x34, 0x70, 0x72, + 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, 0x73, + 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, + 0x6e, 0x20, 0x6f, 0x72, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x7a, 0x65, + 0x72, 0x6f, 0x1a, 0x2b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, + 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x52, + 0x0d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x48, + 0x0a, 0x1a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, + 0x62, 0x61, 0x73, 0x69, 0x73, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x42, 0x0b, 0xba, 0x48, 0x08, 0x1a, 0x06, 0x18, 0xa0, 0x8d, 0x06, 0x28, 0x00, 0x52, + 0x17, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x52, 0x61, 0x74, 0x65, 0x42, 0x61, 0x73, + 0x69, 0x73, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, + 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, + 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, + 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, + 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, + 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, + 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, + 0x65, 0x79, 0x12, 0x56, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x07, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, - 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, - 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, - 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd9, 0x0a, 0x0a, 0x1b, 0x4f, 0x76, 0x65, 0x72, + 0x64, 0x72, 0x61, 0x66, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, + 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, + 0xb0, 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0xfb, 0x01, 0x0a, 0x10, 0x61, 0x74, + 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, + 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, + 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0xa7, 0x01, 0xba, + 0x48, 0xa3, 0x01, 0xba, 0x01, 0x9c, 0x01, 0x0a, 0x19, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x2a, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x20, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x53, + 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x28, 0x5c, 0x5c, 0x2e, + 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, 0x26, 0x26, 0x20, 0x21, + 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x30, 0x2b, 0x28, 0x5c, 0x5c, 0x2e, 0x30, 0x2b, 0x29, 0x3f, + 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, + 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, + 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0xdf, 0x01, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x5f, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x8d, 0x01, 0xba, 0x48, 0x89, 0x01, 0xba, 0x01, 0x82, 0x01, 0x0a, 0x1c, 0x6e, @@ -2185,146 +2278,51 @@ var file_meridian_events_v1_current_account_events_proto_rawDesc = string([]byte 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0xd8, 0x01, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, - 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, - 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x42, 0x88, 0x01, 0xba, 0x48, 0x84, 0x01, 0xba, 0x01, 0x80, 0x01, 0x0a, 0x1b, - 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x72, 0x65, - 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x34, 0x70, 0x72, 0x65, - 0x76, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, - 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, - 0x20, 0x6f, 0x72, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x7a, 0x65, 0x72, - 0x6f, 0x1a, 0x2b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x28, - 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x52, 0x0d, - 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x48, 0x0a, - 0x1a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x62, - 0x61, 0x73, 0x69, 0x73, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x05, 0x42, 0x0b, 0xba, 0x48, 0x08, 0x1a, 0x06, 0x18, 0xa0, 0x8d, 0x06, 0x28, 0x00, 0x52, 0x17, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x52, 0x61, 0x74, 0x65, 0x42, 0x61, 0x73, 0x69, - 0x73, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, - 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, - 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, - 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, - 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, - 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, - 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, - 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, - 0x79, 0x12, 0x56, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, - 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf7, 0x0a, 0x0a, 0x1b, 0x4f, 0x76, 0x65, 0x72, 0x64, - 0x72, 0x61, 0x66, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, 0x65, - 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, - 0x01, 0x01, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x64, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, - 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x8a, 0x02, 0x0a, 0x10, 0x61, 0x74, 0x74, - 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, - 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0xb6, 0x01, 0xba, 0x48, - 0xb2, 0x01, 0xba, 0x01, 0xab, 0x01, 0x0a, 0x19, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x2a, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x20, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x62, 0x74, - 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, - 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, - 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x30, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, - 0x39, 0x5d, 0x2a, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x24, 0x27, - 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x41, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, - 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, - 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0xdf, - 0x01, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x5f, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, - 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, - 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x42, 0x8d, 0x01, 0xba, 0x48, 0x89, 0x01, 0xba, 0x01, 0x82, 0x01, 0x0a, 0x1c, 0x6e, 0x6f, 0x6e, - 0x5f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, - 0x61, 0x66, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x35, 0x6f, 0x76, 0x65, 0x72, 0x64, - 0x72, 0x61, 0x66, 0x74, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, - 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, - 0x6f, 0x72, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x7a, 0x65, 0x72, 0x6f, - 0x1a, 0x2b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x28, 0x5c, - 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, - 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0xeb, 0x01, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, - 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0xa6, 0x01, 0xba, 0x48, - 0xa2, 0x01, 0xba, 0x01, 0x9b, 0x01, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x61, 0x67, 0x65, 0x12, 0x22, 0x73, 0x68, 0x6f, 0x72, 0x74, - 0x61, 0x67, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x62, 0x74, - 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, - 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, - 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x30, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, - 0x39, 0x5d, 0x2a, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x24, 0x27, - 0x29, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x61, 0x67, 0x65, 0x12, 0x31, - 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, - 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, - 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, - 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, - 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, - 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x59, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6d, 0x65, 0x72, - 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x4f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, - 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x42, 0x47, 0x5a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, - 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x68, 0x75, 0x62, 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, - 0x69, 0x61, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6d, 0x65, - 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, - 0x3b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x69, 0x74, 0x12, 0xdc, 0x01, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x61, 0x67, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, + 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, + 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x97, 0x01, + 0xba, 0x48, 0x93, 0x01, 0xba, 0x01, 0x8c, 0x01, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x61, 0x67, 0x65, 0x12, 0x22, 0x73, 0x68, 0x6f, + 0x72, 0x74, 0x61, 0x67, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, + 0x53, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x28, 0x5c, 0x5c, + 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, 0x26, 0x26, 0x20, + 0x21, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x30, 0x2b, 0x28, 0x5c, 0x5c, 0x2e, 0x30, 0x2b, 0x29, + 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x61, 0x67, + 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, + 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, + 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6d, + 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0e, 0x69, 0x64, 0x65, + 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x59, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, + 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x64, 0x72, 0x61, 0x66, 0x74, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x42, 0x47, 0x5a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x68, 0x75, 0x62, 0x2f, 0x6d, 0x65, + 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -2339,34 +2337,36 @@ func file_meridian_events_v1_current_account_events_proto_rawDescGZIP() []byte { return file_meridian_events_v1_current_account_events_proto_rawDescData } -var file_meridian_events_v1_current_account_events_proto_msgTypes = make([]protoimpl.MessageInfo, 22) -var file_meridian_events_v1_current_account_events_proto_goTypes = []any{ - (*AccountCreatedEvent)(nil), // 0: meridian.events.v1.AccountCreatedEvent - (*AccountStatusChangedEvent)(nil), // 1: meridian.events.v1.AccountStatusChangedEvent - (*AccountFrozenEvent)(nil), // 2: meridian.events.v1.AccountFrozenEvent - (*AccountUnfrozenEvent)(nil), // 3: meridian.events.v1.AccountUnfrozenEvent - (*AccountClosedEvent)(nil), // 4: meridian.events.v1.AccountClosedEvent - (*TransactionInitiatedEvent)(nil), // 5: meridian.events.v1.TransactionInitiatedEvent - (*TransactionCompletedEvent)(nil), // 6: meridian.events.v1.TransactionCompletedEvent - (*AccountTransactionFailedEvent)(nil), // 7: meridian.events.v1.AccountTransactionFailedEvent - (*WithdrawalStatusUpdatedEvent)(nil), // 8: meridian.events.v1.WithdrawalStatusUpdatedEvent - (*OverdraftConfiguredEvent)(nil), // 9: meridian.events.v1.OverdraftConfiguredEvent - (*OverdraftLimitExceededEvent)(nil), // 10: meridian.events.v1.OverdraftLimitExceededEvent - nil, // 11: meridian.events.v1.AccountCreatedEvent.MetadataEntry - nil, // 12: meridian.events.v1.AccountStatusChangedEvent.MetadataEntry - nil, // 13: meridian.events.v1.AccountFrozenEvent.MetadataEntry - nil, // 14: meridian.events.v1.AccountUnfrozenEvent.MetadataEntry - nil, // 15: meridian.events.v1.AccountClosedEvent.MetadataEntry - nil, // 16: meridian.events.v1.TransactionInitiatedEvent.MetadataEntry - nil, // 17: meridian.events.v1.TransactionCompletedEvent.MetadataEntry - nil, // 18: meridian.events.v1.AccountTransactionFailedEvent.MetadataEntry - nil, // 19: meridian.events.v1.WithdrawalStatusUpdatedEvent.MetadataEntry - nil, // 20: meridian.events.v1.OverdraftConfiguredEvent.MetadataEntry - nil, // 21: meridian.events.v1.OverdraftLimitExceededEvent.MetadataEntry - (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp - (*v1.InstrumentAmount)(nil), // 23: meridian.quantity.v1.InstrumentAmount - (v11.PostingDirection)(0), // 24: meridian.common.v1.PostingDirection -} +var ( + file_meridian_events_v1_current_account_events_proto_msgTypes = make([]protoimpl.MessageInfo, 22) + file_meridian_events_v1_current_account_events_proto_goTypes = []any{ + (*AccountCreatedEvent)(nil), // 0: meridian.events.v1.AccountCreatedEvent + (*AccountStatusChangedEvent)(nil), // 1: meridian.events.v1.AccountStatusChangedEvent + (*AccountFrozenEvent)(nil), // 2: meridian.events.v1.AccountFrozenEvent + (*AccountUnfrozenEvent)(nil), // 3: meridian.events.v1.AccountUnfrozenEvent + (*AccountClosedEvent)(nil), // 4: meridian.events.v1.AccountClosedEvent + (*TransactionInitiatedEvent)(nil), // 5: meridian.events.v1.TransactionInitiatedEvent + (*TransactionCompletedEvent)(nil), // 6: meridian.events.v1.TransactionCompletedEvent + (*AccountTransactionFailedEvent)(nil), // 7: meridian.events.v1.AccountTransactionFailedEvent + (*WithdrawalStatusUpdatedEvent)(nil), // 8: meridian.events.v1.WithdrawalStatusUpdatedEvent + (*OverdraftConfiguredEvent)(nil), // 9: meridian.events.v1.OverdraftConfiguredEvent + (*OverdraftLimitExceededEvent)(nil), // 10: meridian.events.v1.OverdraftLimitExceededEvent + nil, // 11: meridian.events.v1.AccountCreatedEvent.MetadataEntry + nil, // 12: meridian.events.v1.AccountStatusChangedEvent.MetadataEntry + nil, // 13: meridian.events.v1.AccountFrozenEvent.MetadataEntry + nil, // 14: meridian.events.v1.AccountUnfrozenEvent.MetadataEntry + nil, // 15: meridian.events.v1.AccountClosedEvent.MetadataEntry + nil, // 16: meridian.events.v1.TransactionInitiatedEvent.MetadataEntry + nil, // 17: meridian.events.v1.TransactionCompletedEvent.MetadataEntry + nil, // 18: meridian.events.v1.AccountTransactionFailedEvent.MetadataEntry + nil, // 19: meridian.events.v1.WithdrawalStatusUpdatedEvent.MetadataEntry + nil, // 20: meridian.events.v1.OverdraftConfiguredEvent.MetadataEntry + nil, // 21: meridian.events.v1.OverdraftLimitExceededEvent.MetadataEntry + (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp + (*v1.InstrumentAmount)(nil), // 23: meridian.quantity.v1.InstrumentAmount + (v11.PostingDirection)(0), // 24: meridian.common.v1.PostingDirection + } +) var file_meridian_events_v1_current_account_events_proto_depIdxs = []int32{ 22, // 0: meridian.events.v1.AccountCreatedEvent.timestamp:type_name -> google.protobuf.Timestamp 11, // 1: meridian.events.v1.AccountCreatedEvent.metadata:type_name -> meridian.events.v1.AccountCreatedEvent.MetadataEntry diff --git a/api/proto/meridian/events/v1/current_account_events.proto b/api/proto/meridian/events/v1/current_account_events.proto index 08f278d04..1cfea7e2a 100644 --- a/api/proto/meridian/events/v1/current_account_events.proto +++ b/api/proto/meridian/events/v1/current_account_events.proto @@ -356,7 +356,7 @@ message TransactionInitiatedEvent { (buf.validate.field).cel = { id: "positive_transaction_amount" message: "transaction amount must be greater than zero" - expression: "this.amount.matches('^[1-9][0-9]*(\\\\.[0-9]+)?$') || this.amount.matches('^0\\\\.[0-9]*[1-9][0-9]*$')" + expression: "this.amount.matches('^[0-9]+(\\\\.[0-9]+)?$') && !this.amount.matches('^0+(\\\\.0+)?$')" } ]; @@ -705,7 +705,7 @@ message OverdraftLimitExceededEvent { (buf.validate.field).cel = { id: "positive_attempted_amount" message: "attempted amount must be greater than zero" - expression: "this.amount.matches('^[1-9][0-9]*(\\\\.[0-9]+)?$') || this.amount.matches('^0\\\\.[0-9]*[1-9][0-9]*$')" + expression: "this.amount.matches('^[0-9]+(\\\\.[0-9]+)?$') && !this.amount.matches('^0+(\\\\.0+)?$')" } ]; @@ -728,7 +728,7 @@ message OverdraftLimitExceededEvent { (buf.validate.field).cel = { id: "positive_shortage" message: "shortage must be greater than zero" - expression: "this.amount.matches('^[1-9][0-9]*(\\\\.[0-9]+)?$') || this.amount.matches('^0\\\\.[0-9]*[1-9][0-9]*$')" + expression: "this.amount.matches('^[0-9]+(\\\\.[0-9]+)?$') && !this.amount.matches('^0+(\\\\.0+)?$')" } ]; diff --git a/api/proto/meridian/events/v1/financial_accounting_events.pb.go b/api/proto/meridian/events/v1/financial_accounting_events.pb.go index fc4486c23..040e6c025 100644 --- a/api/proto/meridian/events/v1/financial_accounting_events.pb.go +++ b/api/proto/meridian/events/v1/financial_accounting_events.pb.go @@ -7,15 +7,16 @@ package eventsv1 import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" v1 "github.com/meridianhub/meridian/api/proto/meridian/common/v1" v11 "github.com/meridianhub/meridian/api/proto/meridian/quantity/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" - unsafe "unsafe" ) const ( @@ -1402,7 +1403,7 @@ var file_meridian_events_v1_financial_accounting_events_proto_rawDesc = string([ 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xef, 0x06, 0x0a, 0x1a, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xe0, 0x06, 0x0a, 0x1a, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, @@ -1416,143 +1417,115 @@ var file_meridian_events_v1_financial_accounting_events_proto_rawDesc = string([ 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x82, 0x02, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x6d, 0x6f, + 0x12, 0xf3, 0x01, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0xb2, 0x01, 0xba, 0x48, 0xae, 0x01, 0xba, 0x01, 0xa7, 0x01, 0x0a, 0x17, 0x70, 0x6f, + 0x74, 0x42, 0xa3, 0x01, 0xba, 0x48, 0x9f, 0x01, 0xba, 0x01, 0x98, 0x01, 0x0a, 0x17, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, - 0x62, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, - 0x5d, 0x2a, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, - 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x30, 0x5c, 0x5c, 0x2e, 0x5b, - 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, - 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x41, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0xba, 0x48, 0x19, 0x72, 0x17, - 0x10, 0x01, 0x18, 0xff, 0x01, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, - 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x49, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x53, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x28, 0x5c, 0x5c, + 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, 0x26, 0x26, 0x20, + 0x21, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x30, 0x2b, 0x28, 0x5c, 0x5c, 0x2e, 0x30, 0x2b, 0x29, + 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0xba, 0x48, 0x19, 0x72, + 0x17, 0x10, 0x01, 0x18, 0xff, 0x01, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, + 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x64, 0x61, 0x74, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x49, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, + 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0a, 0xba, + 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, + 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, + 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xed, 0x06, 0x0a, 0x19, 0x4c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x41, 0x6d, 0x65, 0x6e, 0x64, 0x65, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, + 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, + 0x64, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, + 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, + 0x67, 0x49, 0x64, 0x12, 0xf7, 0x01, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, + 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0xa5, 0x01, 0xba, 0x48, 0xa1, 0x01, 0xba, 0x01, 0x9a, 0x01, + 0x0a, 0x18, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, + 0x6f, 0x75, 0x73, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x70, 0x72, 0x65, 0x76, + 0x69, 0x6f, 0x75, 0x73, 0x20, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, + 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, + 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x53, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, + 0x39, 0x5d, 0x2b, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, + 0x27, 0x29, 0x20, 0x26, 0x26, 0x20, 0x21, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x30, 0x2b, 0x28, + 0x5c, 0x5c, 0x2e, 0x30, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x70, + 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xe3, 0x01, + 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, + 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x9b, 0x01, 0xba, 0x48, 0x97, + 0x01, 0xba, 0x01, 0x90, 0x01, 0x0a, 0x13, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x6e, 0x65, 0x77, 0x20, + 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, + 0x1a, 0x53, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x28, 0x5c, + 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, 0x26, 0x26, + 0x20, 0x21, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x30, 0x2b, 0x28, 0x5c, 0x5c, 0x2e, 0x30, 0x2b, + 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x41, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, + 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x61, 0x6d, 0x65, 0x6e, 0x64, + 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, + 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x09, 0x61, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, + 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, + 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, + 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x49, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0a, 0xba, 0x48, - 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, - 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, - 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8b, 0x07, 0x0a, 0x19, 0x4c, 0x65, 0x64, 0x67, - 0x65, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x41, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, + 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x97, 0x03, 0x0a, 0x18, 0x4c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, - 0x49, 0x64, 0x12, 0x86, 0x02, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, - 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0xb4, 0x01, 0xba, 0x48, 0xb0, 0x01, 0xba, 0x01, 0xa9, 0x01, 0x0a, - 0x18, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, - 0x75, 0x73, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x70, 0x72, 0x65, 0x76, 0x69, - 0x6f, 0x75, 0x73, 0x20, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, - 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, - 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x62, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x31, 0x2d, 0x39, - 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, - 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, - 0x30, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, - 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x70, 0x72, 0x65, - 0x76, 0x69, 0x6f, 0x75, 0x73, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xf2, 0x01, 0x0a, 0x0a, - 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0xaa, 0x01, 0xba, 0x48, 0xa6, 0x01, 0xba, - 0x01, 0x9f, 0x01, 0x0a, 0x13, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x65, - 0x77, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x6e, 0x65, 0x77, 0x20, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x62, - 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, - 0x2a, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, - 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x30, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, - 0x2d, 0x39, 0x5d, 0x2a, 0x5b, 0x31, 0x2d, 0x39, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2a, 0x24, - 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x22, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x61, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, - 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, - 0x01, 0x18, 0x64, 0x52, 0x09, 0x61, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, - 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, - 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, - 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, - 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x97, 0x03, 0x0a, 0x18, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, - 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, - 0xff, 0x01, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, - 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, - 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, - 0x2f, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0xe8, - 0x07, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x26, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x08, - 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, - 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, - 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, - 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, - 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, - 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x90, 0x03, 0x0a, 0x1a, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, - 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x09, - 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, - 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, - 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x72, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, - 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, - 0x2a, 0x0a, 0x0b, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, - 0x0a, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, + 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, + 0x03, 0x18, 0xe8, 0x07, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x26, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, + 0x64, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, @@ -1565,102 +1538,127 @@ var file_meridian_events_v1_financial_accounting_events_proto_rawDesc = string([ 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x22, 0xd1, 0x04, 0x0a, 0x22, 0x46, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, - 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, - 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, - 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0e, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x32, 0x52, 0x0d, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5a, 0x0a, - 0x0f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, - 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0a, 0xba, - 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x0e, 0x70, 0x72, 0x65, 0x76, 0x69, - 0x6f, 0x75, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x0a, 0x6e, 0x65, 0x77, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, - 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, - 0x52, 0x09, 0x6e, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x06, 0x72, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, - 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, - 0x2e, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x62, 0x79, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, - 0x64, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x42, 0x79, 0x12, - 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, - 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, - 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xcd, 0x06, 0x0a, 0x1c, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6b, 0x69, - 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, - 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0xde, 0x01, 0x0a, 0x0c, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x62, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x92, 0x01, 0xba, 0x48, 0x8e, 0x01, 0xba, - 0x01, 0x87, 0x01, 0x0a, 0x24, 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x62, 0x69, 0x74, 0x73, 0x5f, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x20, 0x64, 0x65, 0x62, 0x69, 0x74, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, - 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x6f, 0x72, 0x20, - 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x2b, 0x74, - 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, - 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x65, 0x62, 0x69, 0x74, 0x73, 0x12, 0xe2, 0x01, 0x0a, 0x0d, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, - 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x94, 0x01, 0xba, 0x48, 0x90, - 0x01, 0xba, 0x01, 0x89, 0x01, 0x0a, 0x25, 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, - 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x20, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, - 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, - 0x20, 0x6f, 0x72, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x7a, 0x65, 0x72, - 0x6f, 0x1a, 0x2b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x28, - 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, - 0x01, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x12, - 0x4a, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, 0x75, 0x61, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, - 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, - 0x01, 0x52, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x72, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, - 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, - 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x6f, 0x6e, 0x22, 0x90, 0x03, 0x0a, 0x1a, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x50, 0x6f, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, + 0x01, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0e, + 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, + 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x22, + 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, + 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x0b, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x62, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, + 0x18, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x31, + 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, + 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, - 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, - 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x47, 0x5a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x68, 0x75, 0x62, - 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x76, 0x31, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xd1, 0x04, 0x0a, 0x22, 0x46, 0x69, 0x6e, 0x61, 0x6e, 0x63, + 0x69, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0e, + 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, + 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x30, + 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, + 0x32, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x5a, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6d, 0x65, 0x72, 0x69, + 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x0e, 0x70, 0x72, + 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x0a, + 0x6e, 0x65, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x25, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, + 0x01, 0x20, 0x00, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, + 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, + 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, + 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, + 0x10, 0x01, 0x18, 0x64, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, + 0x42, 0x79, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, + 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, + 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xcd, 0x06, 0x0a, 0x1c, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0e, 0x62, 0x6f, + 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0c, + 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0xde, 0x01, 0x0a, + 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x62, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, 0x71, + 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x72, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x92, 0x01, 0xba, 0x48, + 0x8e, 0x01, 0xba, 0x01, 0x87, 0x01, 0x0a, 0x24, 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x62, 0x69, 0x74, + 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x20, 0x64, 0x65, 0x62, 0x69, 0x74, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, + 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, + 0x6f, 0x72, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x7a, 0x65, 0x72, 0x6f, + 0x1a, 0x2b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x28, 0x5c, + 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, + 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x65, 0x62, 0x69, 0x74, 0x73, 0x12, 0xe2, 0x01, + 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, + 0x2e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, + 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x94, 0x01, + 0xba, 0x48, 0x90, 0x01, 0xba, 0x01, 0x89, 0x01, 0x0a, 0x25, 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x72, 0x65, + 0x64, 0x69, 0x74, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x33, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x20, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x20, 0x6d, + 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, + 0x68, 0x61, 0x6e, 0x20, 0x6f, 0x72, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, + 0x7a, 0x65, 0x72, 0x6f, 0x1a, 0x2b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, + 0x5d, 0x2b, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x3f, 0x24, 0x27, + 0x29, 0xc8, 0x01, 0x01, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x69, + 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2e, + 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, + 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x06, 0xba, 0x48, + 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x22, + 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, + 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xf4, 0x03, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, + 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, + 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0b, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x47, 0x5a, 0x45, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, + 0x68, 0x75, 0x62, 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x61, 0x6e, 0x2f, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -1675,23 +1673,25 @@ func file_meridian_events_v1_financial_accounting_events_proto_rawDescGZIP() []b return file_meridian_events_v1_financial_accounting_events_proto_rawDescData } -var file_meridian_events_v1_financial_accounting_events_proto_msgTypes = make([]protoimpl.MessageInfo, 10) -var file_meridian_events_v1_financial_accounting_events_proto_goTypes = []any{ - (*FinancialBookingLogInitiatedEvent)(nil), // 0: meridian.events.v1.FinancialBookingLogInitiatedEvent - (*FinancialBookingLogUpdatedEvent)(nil), // 1: meridian.events.v1.FinancialBookingLogUpdatedEvent - (*FinancialBookingLogPostedEvent)(nil), // 2: meridian.events.v1.FinancialBookingLogPostedEvent - (*FinancialBookingLogClosedEvent)(nil), // 3: meridian.events.v1.FinancialBookingLogClosedEvent - (*LedgerPostingCapturedEvent)(nil), // 4: meridian.events.v1.LedgerPostingCapturedEvent - (*LedgerPostingAmendedEvent)(nil), // 5: meridian.events.v1.LedgerPostingAmendedEvent - (*LedgerPostingPostedEvent)(nil), // 6: meridian.events.v1.LedgerPostingPostedEvent - (*LedgerPostingRejectedEvent)(nil), // 7: meridian.events.v1.LedgerPostingRejectedEvent - (*FinancialBookingLogControlledEvent)(nil), // 8: meridian.events.v1.FinancialBookingLogControlledEvent - (*BalanceValidationFailedEvent)(nil), // 9: meridian.events.v1.BalanceValidationFailedEvent - (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp - (v1.TransactionStatus)(0), // 11: meridian.common.v1.TransactionStatus - (*v11.InstrumentAmount)(nil), // 12: meridian.quantity.v1.InstrumentAmount - (v1.PostingDirection)(0), // 13: meridian.common.v1.PostingDirection -} +var ( + file_meridian_events_v1_financial_accounting_events_proto_msgTypes = make([]protoimpl.MessageInfo, 10) + file_meridian_events_v1_financial_accounting_events_proto_goTypes = []any{ + (*FinancialBookingLogInitiatedEvent)(nil), // 0: meridian.events.v1.FinancialBookingLogInitiatedEvent + (*FinancialBookingLogUpdatedEvent)(nil), // 1: meridian.events.v1.FinancialBookingLogUpdatedEvent + (*FinancialBookingLogPostedEvent)(nil), // 2: meridian.events.v1.FinancialBookingLogPostedEvent + (*FinancialBookingLogClosedEvent)(nil), // 3: meridian.events.v1.FinancialBookingLogClosedEvent + (*LedgerPostingCapturedEvent)(nil), // 4: meridian.events.v1.LedgerPostingCapturedEvent + (*LedgerPostingAmendedEvent)(nil), // 5: meridian.events.v1.LedgerPostingAmendedEvent + (*LedgerPostingPostedEvent)(nil), // 6: meridian.events.v1.LedgerPostingPostedEvent + (*LedgerPostingRejectedEvent)(nil), // 7: meridian.events.v1.LedgerPostingRejectedEvent + (*FinancialBookingLogControlledEvent)(nil), // 8: meridian.events.v1.FinancialBookingLogControlledEvent + (*BalanceValidationFailedEvent)(nil), // 9: meridian.events.v1.BalanceValidationFailedEvent + (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp + (v1.TransactionStatus)(0), // 11: meridian.common.v1.TransactionStatus + (*v11.InstrumentAmount)(nil), // 12: meridian.quantity.v1.InstrumentAmount + (v1.PostingDirection)(0), // 13: meridian.common.v1.PostingDirection + } +) var file_meridian_events_v1_financial_accounting_events_proto_depIdxs = []int32{ 10, // 0: meridian.events.v1.FinancialBookingLogInitiatedEvent.timestamp:type_name -> google.protobuf.Timestamp 11, // 1: meridian.events.v1.FinancialBookingLogUpdatedEvent.status:type_name -> meridian.common.v1.TransactionStatus diff --git a/api/proto/meridian/events/v1/financial_accounting_events.proto b/api/proto/meridian/events/v1/financial_accounting_events.proto index 4d1dae95c..dea05cae2 100644 --- a/api/proto/meridian/events/v1/financial_accounting_events.proto +++ b/api/proto/meridian/events/v1/financial_accounting_events.proto @@ -241,7 +241,7 @@ message LedgerPostingCapturedEvent { (buf.validate.field).cel = { id: "positive_posting_amount" message: "posting amount must be greater than zero" - expression: "this.amount.matches('^[1-9][0-9]*(\\\\.[0-9]+)?$') || this.amount.matches('^0\\\\.[0-9]*[1-9][0-9]*$')" + expression: "this.amount.matches('^[0-9]+(\\\\.[0-9]+)?$') && !this.amount.matches('^0+(\\\\.0+)?$')" } ]; @@ -301,7 +301,7 @@ message LedgerPostingAmendedEvent { (buf.validate.field).cel = { id: "positive_previous_amount" message: "previous amount must be greater than zero" - expression: "this.amount.matches('^[1-9][0-9]*(\\\\.[0-9]+)?$') || this.amount.matches('^0\\\\.[0-9]*[1-9][0-9]*$')" + expression: "this.amount.matches('^[0-9]+(\\\\.[0-9]+)?$') && !this.amount.matches('^0+(\\\\.0+)?$')" } ]; @@ -311,7 +311,7 @@ message LedgerPostingAmendedEvent { (buf.validate.field).cel = { id: "positive_new_amount" message: "new amount must be greater than zero" - expression: "this.amount.matches('^[1-9][0-9]*(\\\\.[0-9]+)?$') || this.amount.matches('^0\\\\.[0-9]*[1-9][0-9]*$')" + expression: "this.amount.matches('^[0-9]+(\\\\.[0-9]+)?$') && !this.amount.matches('^0+(\\\\.0+)?$')" } ]; From 2266c4672d44ab71594ce921d3f5199462984ae0 Mon Sep 17 00:00:00 2001 From: Ben Coombs Date: Fri, 3 Apr 2026 19:05:46 +0100 Subject: [PATCH 5/7] chore: regenerate proto files for freshness Commits 700c73b9 and 736b769e modified proto definitions but the generated .pb.go files were not regenerated. Running buf generate to bring them in sync. --- .../events/v1/current_account_events.pb.go | 65 +++++++++---------- .../v1/financial_accounting_events.pb.go | 43 ++++++------ 2 files changed, 51 insertions(+), 57 deletions(-) diff --git a/api/proto/meridian/events/v1/current_account_events.pb.go b/api/proto/meridian/events/v1/current_account_events.pb.go index 566e403fb..e63b4b4bd 100644 --- a/api/proto/meridian/events/v1/current_account_events.pb.go +++ b/api/proto/meridian/events/v1/current_account_events.pb.go @@ -7,16 +7,15 @@ package eventsv1 import ( - reflect "reflect" - sync "sync" - unsafe "unsafe" - _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" v11 "github.com/meridianhub/meridian/api/proto/meridian/common/v1" v1 "github.com/meridianhub/meridian/api/proto/meridian/quantity/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" + unsafe "unsafe" ) const ( @@ -2337,36 +2336,34 @@ func file_meridian_events_v1_current_account_events_proto_rawDescGZIP() []byte { return file_meridian_events_v1_current_account_events_proto_rawDescData } -var ( - file_meridian_events_v1_current_account_events_proto_msgTypes = make([]protoimpl.MessageInfo, 22) - file_meridian_events_v1_current_account_events_proto_goTypes = []any{ - (*AccountCreatedEvent)(nil), // 0: meridian.events.v1.AccountCreatedEvent - (*AccountStatusChangedEvent)(nil), // 1: meridian.events.v1.AccountStatusChangedEvent - (*AccountFrozenEvent)(nil), // 2: meridian.events.v1.AccountFrozenEvent - (*AccountUnfrozenEvent)(nil), // 3: meridian.events.v1.AccountUnfrozenEvent - (*AccountClosedEvent)(nil), // 4: meridian.events.v1.AccountClosedEvent - (*TransactionInitiatedEvent)(nil), // 5: meridian.events.v1.TransactionInitiatedEvent - (*TransactionCompletedEvent)(nil), // 6: meridian.events.v1.TransactionCompletedEvent - (*AccountTransactionFailedEvent)(nil), // 7: meridian.events.v1.AccountTransactionFailedEvent - (*WithdrawalStatusUpdatedEvent)(nil), // 8: meridian.events.v1.WithdrawalStatusUpdatedEvent - (*OverdraftConfiguredEvent)(nil), // 9: meridian.events.v1.OverdraftConfiguredEvent - (*OverdraftLimitExceededEvent)(nil), // 10: meridian.events.v1.OverdraftLimitExceededEvent - nil, // 11: meridian.events.v1.AccountCreatedEvent.MetadataEntry - nil, // 12: meridian.events.v1.AccountStatusChangedEvent.MetadataEntry - nil, // 13: meridian.events.v1.AccountFrozenEvent.MetadataEntry - nil, // 14: meridian.events.v1.AccountUnfrozenEvent.MetadataEntry - nil, // 15: meridian.events.v1.AccountClosedEvent.MetadataEntry - nil, // 16: meridian.events.v1.TransactionInitiatedEvent.MetadataEntry - nil, // 17: meridian.events.v1.TransactionCompletedEvent.MetadataEntry - nil, // 18: meridian.events.v1.AccountTransactionFailedEvent.MetadataEntry - nil, // 19: meridian.events.v1.WithdrawalStatusUpdatedEvent.MetadataEntry - nil, // 20: meridian.events.v1.OverdraftConfiguredEvent.MetadataEntry - nil, // 21: meridian.events.v1.OverdraftLimitExceededEvent.MetadataEntry - (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp - (*v1.InstrumentAmount)(nil), // 23: meridian.quantity.v1.InstrumentAmount - (v11.PostingDirection)(0), // 24: meridian.common.v1.PostingDirection - } -) +var file_meridian_events_v1_current_account_events_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_meridian_events_v1_current_account_events_proto_goTypes = []any{ + (*AccountCreatedEvent)(nil), // 0: meridian.events.v1.AccountCreatedEvent + (*AccountStatusChangedEvent)(nil), // 1: meridian.events.v1.AccountStatusChangedEvent + (*AccountFrozenEvent)(nil), // 2: meridian.events.v1.AccountFrozenEvent + (*AccountUnfrozenEvent)(nil), // 3: meridian.events.v1.AccountUnfrozenEvent + (*AccountClosedEvent)(nil), // 4: meridian.events.v1.AccountClosedEvent + (*TransactionInitiatedEvent)(nil), // 5: meridian.events.v1.TransactionInitiatedEvent + (*TransactionCompletedEvent)(nil), // 6: meridian.events.v1.TransactionCompletedEvent + (*AccountTransactionFailedEvent)(nil), // 7: meridian.events.v1.AccountTransactionFailedEvent + (*WithdrawalStatusUpdatedEvent)(nil), // 8: meridian.events.v1.WithdrawalStatusUpdatedEvent + (*OverdraftConfiguredEvent)(nil), // 9: meridian.events.v1.OverdraftConfiguredEvent + (*OverdraftLimitExceededEvent)(nil), // 10: meridian.events.v1.OverdraftLimitExceededEvent + nil, // 11: meridian.events.v1.AccountCreatedEvent.MetadataEntry + nil, // 12: meridian.events.v1.AccountStatusChangedEvent.MetadataEntry + nil, // 13: meridian.events.v1.AccountFrozenEvent.MetadataEntry + nil, // 14: meridian.events.v1.AccountUnfrozenEvent.MetadataEntry + nil, // 15: meridian.events.v1.AccountClosedEvent.MetadataEntry + nil, // 16: meridian.events.v1.TransactionInitiatedEvent.MetadataEntry + nil, // 17: meridian.events.v1.TransactionCompletedEvent.MetadataEntry + nil, // 18: meridian.events.v1.AccountTransactionFailedEvent.MetadataEntry + nil, // 19: meridian.events.v1.WithdrawalStatusUpdatedEvent.MetadataEntry + nil, // 20: meridian.events.v1.OverdraftConfiguredEvent.MetadataEntry + nil, // 21: meridian.events.v1.OverdraftLimitExceededEvent.MetadataEntry + (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp + (*v1.InstrumentAmount)(nil), // 23: meridian.quantity.v1.InstrumentAmount + (v11.PostingDirection)(0), // 24: meridian.common.v1.PostingDirection +} var file_meridian_events_v1_current_account_events_proto_depIdxs = []int32{ 22, // 0: meridian.events.v1.AccountCreatedEvent.timestamp:type_name -> google.protobuf.Timestamp 11, // 1: meridian.events.v1.AccountCreatedEvent.metadata:type_name -> meridian.events.v1.AccountCreatedEvent.MetadataEntry diff --git a/api/proto/meridian/events/v1/financial_accounting_events.pb.go b/api/proto/meridian/events/v1/financial_accounting_events.pb.go index 040e6c025..b534f29e1 100644 --- a/api/proto/meridian/events/v1/financial_accounting_events.pb.go +++ b/api/proto/meridian/events/v1/financial_accounting_events.pb.go @@ -7,16 +7,15 @@ package eventsv1 import ( - reflect "reflect" - sync "sync" - unsafe "unsafe" - _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" v1 "github.com/meridianhub/meridian/api/proto/meridian/common/v1" v11 "github.com/meridianhub/meridian/api/proto/meridian/quantity/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" + unsafe "unsafe" ) const ( @@ -1673,25 +1672,23 @@ func file_meridian_events_v1_financial_accounting_events_proto_rawDescGZIP() []b return file_meridian_events_v1_financial_accounting_events_proto_rawDescData } -var ( - file_meridian_events_v1_financial_accounting_events_proto_msgTypes = make([]protoimpl.MessageInfo, 10) - file_meridian_events_v1_financial_accounting_events_proto_goTypes = []any{ - (*FinancialBookingLogInitiatedEvent)(nil), // 0: meridian.events.v1.FinancialBookingLogInitiatedEvent - (*FinancialBookingLogUpdatedEvent)(nil), // 1: meridian.events.v1.FinancialBookingLogUpdatedEvent - (*FinancialBookingLogPostedEvent)(nil), // 2: meridian.events.v1.FinancialBookingLogPostedEvent - (*FinancialBookingLogClosedEvent)(nil), // 3: meridian.events.v1.FinancialBookingLogClosedEvent - (*LedgerPostingCapturedEvent)(nil), // 4: meridian.events.v1.LedgerPostingCapturedEvent - (*LedgerPostingAmendedEvent)(nil), // 5: meridian.events.v1.LedgerPostingAmendedEvent - (*LedgerPostingPostedEvent)(nil), // 6: meridian.events.v1.LedgerPostingPostedEvent - (*LedgerPostingRejectedEvent)(nil), // 7: meridian.events.v1.LedgerPostingRejectedEvent - (*FinancialBookingLogControlledEvent)(nil), // 8: meridian.events.v1.FinancialBookingLogControlledEvent - (*BalanceValidationFailedEvent)(nil), // 9: meridian.events.v1.BalanceValidationFailedEvent - (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp - (v1.TransactionStatus)(0), // 11: meridian.common.v1.TransactionStatus - (*v11.InstrumentAmount)(nil), // 12: meridian.quantity.v1.InstrumentAmount - (v1.PostingDirection)(0), // 13: meridian.common.v1.PostingDirection - } -) +var file_meridian_events_v1_financial_accounting_events_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_meridian_events_v1_financial_accounting_events_proto_goTypes = []any{ + (*FinancialBookingLogInitiatedEvent)(nil), // 0: meridian.events.v1.FinancialBookingLogInitiatedEvent + (*FinancialBookingLogUpdatedEvent)(nil), // 1: meridian.events.v1.FinancialBookingLogUpdatedEvent + (*FinancialBookingLogPostedEvent)(nil), // 2: meridian.events.v1.FinancialBookingLogPostedEvent + (*FinancialBookingLogClosedEvent)(nil), // 3: meridian.events.v1.FinancialBookingLogClosedEvent + (*LedgerPostingCapturedEvent)(nil), // 4: meridian.events.v1.LedgerPostingCapturedEvent + (*LedgerPostingAmendedEvent)(nil), // 5: meridian.events.v1.LedgerPostingAmendedEvent + (*LedgerPostingPostedEvent)(nil), // 6: meridian.events.v1.LedgerPostingPostedEvent + (*LedgerPostingRejectedEvent)(nil), // 7: meridian.events.v1.LedgerPostingRejectedEvent + (*FinancialBookingLogControlledEvent)(nil), // 8: meridian.events.v1.FinancialBookingLogControlledEvent + (*BalanceValidationFailedEvent)(nil), // 9: meridian.events.v1.BalanceValidationFailedEvent + (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp + (v1.TransactionStatus)(0), // 11: meridian.common.v1.TransactionStatus + (*v11.InstrumentAmount)(nil), // 12: meridian.quantity.v1.InstrumentAmount + (v1.PostingDirection)(0), // 13: meridian.common.v1.PostingDirection +} var file_meridian_events_v1_financial_accounting_events_proto_depIdxs = []int32{ 10, // 0: meridian.events.v1.FinancialBookingLogInitiatedEvent.timestamp:type_name -> google.protobuf.Timestamp 11, // 1: meridian.events.v1.FinancialBookingLogUpdatedEvent.status:type_name -> meridian.common.v1.TransactionStatus From 969b5eb62f3deee7ae18f7092d12de686aa213e5 Mon Sep 17 00:00:00 2001 From: Ben Coombs Date: Fri, 3 Apr 2026 19:06:02 +0100 Subject: [PATCH 6/7] chore: regenerate frontend proto types for event migration --- .../src/api/gen/meridian/events/v1/current_account_events_pb.ts | 2 +- .../gen/meridian/events/v1/financial_accounting_events_pb.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/api/gen/meridian/events/v1/current_account_events_pb.ts b/frontend/src/api/gen/meridian/events/v1/current_account_events_pb.ts index 30c3d7041..2e429f41a 100644 --- a/frontend/src/api/gen/meridian/events/v1/current_account_events_pb.ts +++ b/frontend/src/api/gen/meridian/events/v1/current_account_events_pb.ts @@ -17,7 +17,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file meridian/events/v1/current_account_events.proto. */ export const file_meridian_events_v1_current_account_events: GenFile = /*@__PURE__*/ - fileDesc("Ci9tZXJpZGlhbi9ldmVudHMvdjEvY3VycmVudF9hY2NvdW50X2V2ZW50cy5wcm90bxISbWVyaWRpYW4uZXZlbnRzLnYxIpgFChNBY2NvdW50Q3JlYXRlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSKQoWYWNjb3VudF9pZGVudGlmaWNhdGlvbhgDIAEoCUIJukgGcgQQARgiEicKFGJhc2VfaW5zdHJ1bWVudF9jb2RlGAQgASgJQgm6SAZyBBABGDISQAoOYWNjb3VudF9zdGF0dXMYBSABKAlCKLpIJXIjUgZBQ1RJVkVSBkZST1pFTlIGQ0xPU0VEUglTVVNQRU5ERUQSJAoRcHJvZHVjdF9yZWZlcmVuY2UYBiABKAlCCbpIBnIEEAEYZBIlChJjdXN0b21lcl9yZWZlcmVuY2UYByABKAlCCbpIBnIEEAEYZBIdCgpjcmVhdGVkX2J5GAggASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYCSABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAogASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAwgASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgNIAEoCUIIukgFcgMY/wESRwoIbWV0YWRhdGEYDiADKAsyNS5tZXJpZGlhbi5ldmVudHMudjEuQWNjb3VudENyZWF0ZWRFdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLeBAoZQWNjb3VudFN0YXR1c0NoYW5nZWRFdmVudBIaCghldmVudF9pZBgBIAEoCUIIukgFcgOwAQESLwoKYWNjb3VudF9pZBgCIAEoCUIbukgYchYQARhkMhBeW2EtekEtWjAtOV8tXSskEkEKD3ByZXZpb3VzX3N0YXR1cxgDIAEoCUIoukglciNSBkFDVElWRVIGRlJPWkVOUgZDTE9TRURSCVNVU1BFTkRFRBI8CgpuZXdfc3RhdHVzGAQgASgJQii6SCVyI1IGQUNUSVZFUgZGUk9aRU5SBkNMT1NFRFIJU1VTUEVOREVEEhoKBnJlYXNvbhgFIAEoCUIKukgHcgUQARj0AxIdCgpjaGFuZ2VkX2J5GAYgASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAggASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAogASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgLIAEoCUIIukgFcgMY/wESTQoIbWV0YWRhdGEYDCADKAsyOy5tZXJpZGlhbi5ldmVudHMudjEuQWNjb3VudFN0YXR1c0NoYW5nZWRFdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKFBAoSQWNjb3VudEZyb3plbkV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSGgoGcmVhc29uGAMgASgJQgq6SAdyBRABGPQDEjUKCWZyb3plbl9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIcCglmcm96ZW5fYnkYBSABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgGIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCSABKANCB7pIBCICKAESIQoPaWRlbXBvdGVuY3lfa2V5GAogASgJQgi6SAVyAxj/ARJGCghtZXRhZGF0YRgLIAMoCzI0Lm1lcmlkaWFuLmV2ZW50cy52MS5BY2NvdW50RnJvemVuRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi8QMKFEFjY291bnRVbmZyb3plbkV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSNwoLdW5mcm96ZW5fYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESHgoLdW5mcm96ZW5fYnkYBCABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgFIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYBiABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCCABKANCB7pIBCICKAESIQoPaWRlbXBvdGVuY3lfa2V5GAkgASgJQgi6SAVyAxj/ARJICghtZXRhZGF0YRgKIAMoCzI2Lm1lcmlkaWFuLmV2ZW50cy52MS5BY2NvdW50VW5mcm96ZW5FdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLZBAoSQWNjb3VudENsb3NlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSRwoPY2xvc2luZ19iYWxhbmNlGAMgASgLMiYubWVyaWRpYW4ucXVhbnRpdHkudjEuSW5zdHJ1bWVudEFtb3VudEIGukgDyAEBEiIKDmNsb3N1cmVfcmVhc29uGAQgASgJQgq6SAdyBRABGPQDEhwKCWNsb3NlZF9ieRgFIAEoCUIJukgGcgQQARhkEjgKDGNsb3N1cmVfZGF0ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIiCg5jb3JyZWxhdGlvbl9pZBgHIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYCCABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCiABKANCB7pIBCICKAESIQoPaWRlbXBvdGVuY3lfa2V5GAsgASgJQgi6SAVyAxj/ARJGCghtZXRhZGF0YRgMIAMoCzI0Lm1lcmlkaWFuLmV2ZW50cy52MS5BY2NvdW50Q2xvc2VkRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEigggKGVRyYW5zYWN0aW9uSW5pdGlhdGVkRXZlbnQSGgoIZXZlbnRfaWQYASABKAlCCLpIBXIDsAEBEi8KCmFjY291bnRfaWQYAiABKAlCG7pIGHIWEAEYZDIQXlthLXpBLVowLTlfLV0rJBIgCg50cmFuc2FjdGlvbl9pZBgDIAEoCUIIukgFcgOwAQESWQoQdHJhbnNhY3Rpb25fdHlwZRgEIAEoCUI/ukg8cjpSB0RFUE9TSVRSCldJVEhEUkFXQUxSCFRSQU5TRkVSUgNGRUVSCElOVEVSRVNUUgpBREpVU1RNRU5UEv8BChJ0cmFuc2FjdGlvbl9hbW91bnQYBSABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QroBuki2AboBrwEKG3Bvc2l0aXZlX3RyYW5zYWN0aW9uX2Ftb3VudBIsdHJhbnNhY3Rpb24gYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8aYnRoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMS05XVswLTldKihcXC5bMC05XSspPyQnKSB8fCB0aGlzLmFtb3VudC5tYXRjaGVzKCdeMFxcLlswLTldKlsxLTldWzAtOV0qJCcpyAEBEksKEXBvc3RpbmdfZGlyZWN0aW9uGAYgASgOMiQubWVyaWRpYW4uY29tbW9uLnYxLlBvc3RpbmdEaXJlY3Rpb25CCrpIB4IBBBABIAASNgoKdmFsdWVfZGF0ZRgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIdCgtkZXNjcmlwdGlvbhgIIAEoCUIIukgFcgMY9AMSGgoJcmVmZXJlbmNlGAkgASgJQge6SARyAhhkEh8KDGluaXRpYXRlZF9ieRgKIAEoCUIJukgGcgQQARhkEiIKDmNvcnJlbGF0aW9uX2lkGAsgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgMIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgOIAEoA0IHukgEIgIoARIhCg9pZGVtcG90ZW5jeV9rZXkYDyABKAlCCLpIBXIDGP8BEk0KCG1ldGFkYXRhGBAgAygLMjsubWVyaWRpYW4uZXZlbnRzLnYxLlRyYW5zYWN0aW9uSW5pdGlhdGVkRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEixAUKGVRyYW5zYWN0aW9uQ29tcGxldGVkRXZlbnQSGgoIZXZlbnRfaWQYASABKAlCCLpIBXIDsAEBEi8KCmFjY291bnRfaWQYAiABKAlCG7pIGHIWEAEYZDIQXlthLXpBLVowLTlfLV0rJBIgCg50cmFuc2FjdGlvbl9pZBgDIAEoCUIIukgFcgOwAQESIgoOYm9va2luZ19sb2dfaWQYBCABKAlCCrpIB3IFEAEY/wESIQoPcG9zaXRpb25fbG9nX2lkGAUgASgJQgi6SAVyA7ABARJDCgtuZXdfYmFsYW5jZRgGIAEoCzImLm1lcmlkaWFuLnF1YW50aXR5LnYxLkluc3RydW1lbnRBbW91bnRCBrpIA8gBARJNChVuZXdfYXZhaWxhYmxlX2JhbGFuY2UYByABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50Qga6SAPIAQESIwoRY29tcGxldGlvbl9yZWFzb24YCCABKAlCCLpIBXIDGPQDEiIKDmNvcnJlbGF0aW9uX2lkGAkgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgKIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgMIAEoA0IHukgEIgIoARIhCg9pZGVtcG90ZW5jeV9rZXkYDSABKAlCCLpIBXIDGP8BEk0KCG1ldGFkYXRhGA4gAygLMjsubWVyaWRpYW4uZXZlbnRzLnYxLlRyYW5zYWN0aW9uQ29tcGxldGVkRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi5QQKHUFjY291bnRUcmFuc2FjdGlvbkZhaWxlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSIAoOdHJhbnNhY3Rpb25faWQYAyABKAlCCLpIBXIDsAEBEiIKDmZhaWx1cmVfcmVhc29uGAQgASgJQgq6SAdyBRABGPQDEhsKCmVycm9yX2NvZGUYBSABKAlCB7pIBHICGDISVgoOZmFpbGVkX3NlcnZpY2UYBiABKAlCPrpIO3I5Ug9DVVJSRU5UX0FDQ09VTlRSFEZJTkFOQ0lBTF9BQ0NPVU5USU5HUhBQT1NJVElPTl9LRUVQSU5HEiIKDmNvcnJlbGF0aW9uX2lkGAcgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgIIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgKIAEoA0IHukgEIgIoARIhCg9pZGVtcG90ZW5jeV9rZXkYCyABKAlCCLpIBXIDGP8BElEKCG1ldGFkYXRhGAwgAygLMj8ubWVyaWRpYW4uZXZlbnRzLnYxLkFjY291bnRUcmFuc2FjdGlvbkZhaWxlZEV2ZW50Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIpQEChxXaXRoZHJhd2FsU3RhdHVzVXBkYXRlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIhCg13aXRoZHJhd2FsX2lkGAIgASgJQgq6SAdyBRABGP8BEi8KCmFjY291bnRfaWQYAyABKAlCG7pIGHIWEAEYZDIQXlthLXpBLVowLTlfLV0rJBJHCgZzdGF0dXMYBCABKAlCN7pINHIyUglJTklUSUFURURSB1BFTkRJTkdSCUNPTVBMRVRFRFIGRkFJTEVEUglDQU5DRUxMRUQSIgoOY29ycmVsYXRpb25faWQYBSABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAYgASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAggASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgJIAEoCUIIukgFcgMY/wESUAoIbWV0YWRhdGEYCiADKAsyPi5tZXJpZGlhbi5ldmVudHMudjEuV2l0aGRyYXdhbFN0YXR1c1VwZGF0ZWRFdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKsBwoYT3ZlcmRyYWZ0Q29uZmlndXJlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSGQoRb3ZlcmRyYWZ0X2VuYWJsZWQYAyABKAgSzwEKD292ZXJkcmFmdF9saW1pdBgEIAEoCzImLm1lcmlkaWFuLnF1YW50aXR5LnYxLkluc3RydW1lbnRBbW91bnRCjQG6SIkBugGCAQocbm9uX25lZ2F0aXZlX292ZXJkcmFmdF9saW1pdBI1b3ZlcmRyYWZ0IGxpbWl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8aK3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJynIAQESyQEKDnByZXZpb3VzX2xpbWl0GAUgASgLMiYubWVyaWRpYW4ucXVhbnRpdHkudjEuSW5zdHJ1bWVudEFtb3VudEKIAbpIhAG6AYABChtub25fbmVnYXRpdmVfcHJldmlvdXNfbGltaXQSNHByZXZpb3VzIGxpbWl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8aK3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJykSLwoaaW50ZXJlc3RfcmF0ZV9iYXNpc19wb2ludHMYBiABKAVCC7pICBoGGKCNBigAEiAKDWNvbmZpZ3VyZWRfYnkYByABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgIIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYCSABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCyABKANCB7pIBCICKAESIQoPaWRlbXBvdGVuY3lfa2V5GAwgASgJQgi6SAVyAxj/ARJMCghtZXRhZGF0YRgNIAMoCzI6Lm1lcmlkaWFuLmV2ZW50cy52MS5PdmVyZHJhZnRDb25maWd1cmVkRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiwwkKG092ZXJkcmFmdExpbWl0RXhjZWVkZWRFdmVudBIaCghldmVudF9pZBgBIAEoCUIIukgFcgOwAQESLwoKYWNjb3VudF9pZBgCIAEoCUIbukgYchYQARhkMhBeW2EtekEtWjAtOV8tXSskEiAKDnRyYW5zYWN0aW9uX2lkGAMgASgJQgi6SAVyA7ABARL5AQoQYXR0ZW1wdGVkX2Ftb3VudBgEIAEoCzImLm1lcmlkaWFuLnF1YW50aXR5LnYxLkluc3RydW1lbnRBbW91bnRCtgG6SLIBugGrAQoZcG9zaXRpdmVfYXR0ZW1wdGVkX2Ftb3VudBIqYXR0ZW1wdGVkIGFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvGmJ0aGlzLmFtb3VudC5tYXRjaGVzKCdeWzEtOV1bMC05XSooXFwuWzAtOV0rKT8kJykgfHwgdGhpcy5hbW91bnQubWF0Y2hlcygnXjBcXC5bMC05XSpbMS05XVswLTldKiQnKcgBARJHCg9jdXJyZW50X2JhbGFuY2UYBSABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50Qga6SAPIAQESzwEKD292ZXJkcmFmdF9saW1pdBgGIAEoCzImLm1lcmlkaWFuLnF1YW50aXR5LnYxLkluc3RydW1lbnRBbW91bnRCjQG6SIkBugGCAQocbm9uX25lZ2F0aXZlX292ZXJkcmFmdF9saW1pdBI1b3ZlcmRyYWZ0IGxpbWl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8aK3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJynIAQES4QEKCHNob3J0YWdlGAcgASgLMiYubWVyaWRpYW4ucXVhbnRpdHkudjEuSW5zdHJ1bWVudEFtb3VudEKmAbpIogG6AZsBChFwb3NpdGl2ZV9zaG9ydGFnZRIic2hvcnRhZ2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybxpidGhpcy5hbW91bnQubWF0Y2hlcygnXlsxLTldWzAtOV0qKFxcLlswLTldKyk/JCcpIHx8IHRoaXMuYW1vdW50Lm1hdGNoZXMoJ14wXFwuWzAtOV0qWzEtOV1bMC05XSokJynIAQESIgoOY29ycmVsYXRpb25faWQYCCABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAkgASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAsgASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgMIAEoCUIIukgFcgMY/wESTwoIbWV0YWRhdGEYDSADKAsyPS5tZXJpZGlhbi5ldmVudHMudjEuT3ZlcmRyYWZ0TGltaXRFeGNlZWRlZEV2ZW50Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQkdaRWdpdGh1Yi5jb20vbWVyaWRpYW5odWIvbWVyaWRpYW4vYXBpL3Byb3RvL21lcmlkaWFuL2V2ZW50cy92MTtldmVudHN2MWIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_meridian_common_v1_types, file_meridian_quantity_v1_quantity]); + fileDesc("Ci9tZXJpZGlhbi9ldmVudHMvdjEvY3VycmVudF9hY2NvdW50X2V2ZW50cy5wcm90bxISbWVyaWRpYW4uZXZlbnRzLnYxIpgFChNBY2NvdW50Q3JlYXRlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSKQoWYWNjb3VudF9pZGVudGlmaWNhdGlvbhgDIAEoCUIJukgGcgQQARgiEicKFGJhc2VfaW5zdHJ1bWVudF9jb2RlGAQgASgJQgm6SAZyBBABGDISQAoOYWNjb3VudF9zdGF0dXMYBSABKAlCKLpIJXIjUgZBQ1RJVkVSBkZST1pFTlIGQ0xPU0VEUglTVVNQRU5ERUQSJAoRcHJvZHVjdF9yZWZlcmVuY2UYBiABKAlCCbpIBnIEEAEYZBIlChJjdXN0b21lcl9yZWZlcmVuY2UYByABKAlCCbpIBnIEEAEYZBIdCgpjcmVhdGVkX2J5GAggASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYCSABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAogASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAwgASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgNIAEoCUIIukgFcgMY/wESRwoIbWV0YWRhdGEYDiADKAsyNS5tZXJpZGlhbi5ldmVudHMudjEuQWNjb3VudENyZWF0ZWRFdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLeBAoZQWNjb3VudFN0YXR1c0NoYW5nZWRFdmVudBIaCghldmVudF9pZBgBIAEoCUIIukgFcgOwAQESLwoKYWNjb3VudF9pZBgCIAEoCUIbukgYchYQARhkMhBeW2EtekEtWjAtOV8tXSskEkEKD3ByZXZpb3VzX3N0YXR1cxgDIAEoCUIoukglciNSBkFDVElWRVIGRlJPWkVOUgZDTE9TRURSCVNVU1BFTkRFRBI8CgpuZXdfc3RhdHVzGAQgASgJQii6SCVyI1IGQUNUSVZFUgZGUk9aRU5SBkNMT1NFRFIJU1VTUEVOREVEEhoKBnJlYXNvbhgFIAEoCUIKukgHcgUQARj0AxIdCgpjaGFuZ2VkX2J5GAYgASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAggASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAogASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgLIAEoCUIIukgFcgMY/wESTQoIbWV0YWRhdGEYDCADKAsyOy5tZXJpZGlhbi5ldmVudHMudjEuQWNjb3VudFN0YXR1c0NoYW5nZWRFdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKFBAoSQWNjb3VudEZyb3plbkV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSGgoGcmVhc29uGAMgASgJQgq6SAdyBRABGPQDEjUKCWZyb3plbl9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIcCglmcm96ZW5fYnkYBSABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgGIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCSABKANCB7pIBCICKAESIQoPaWRlbXBvdGVuY3lfa2V5GAogASgJQgi6SAVyAxj/ARJGCghtZXRhZGF0YRgLIAMoCzI0Lm1lcmlkaWFuLmV2ZW50cy52MS5BY2NvdW50RnJvemVuRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi8QMKFEFjY291bnRVbmZyb3plbkV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSNwoLdW5mcm96ZW5fYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESHgoLdW5mcm96ZW5fYnkYBCABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgFIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYBiABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCCABKANCB7pIBCICKAESIQoPaWRlbXBvdGVuY3lfa2V5GAkgASgJQgi6SAVyAxj/ARJICghtZXRhZGF0YRgKIAMoCzI2Lm1lcmlkaWFuLmV2ZW50cy52MS5BY2NvdW50VW5mcm96ZW5FdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLZBAoSQWNjb3VudENsb3NlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSRwoPY2xvc2luZ19iYWxhbmNlGAMgASgLMiYubWVyaWRpYW4ucXVhbnRpdHkudjEuSW5zdHJ1bWVudEFtb3VudEIGukgDyAEBEiIKDmNsb3N1cmVfcmVhc29uGAQgASgJQgq6SAdyBRABGPQDEhwKCWNsb3NlZF9ieRgFIAEoCUIJukgGcgQQARhkEjgKDGNsb3N1cmVfZGF0ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIiCg5jb3JyZWxhdGlvbl9pZBgHIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYCCABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCiABKANCB7pIBCICKAESIQoPaWRlbXBvdGVuY3lfa2V5GAsgASgJQgi6SAVyAxj/ARJGCghtZXRhZGF0YRgMIAMoCzI0Lm1lcmlkaWFuLmV2ZW50cy52MS5BY2NvdW50Q2xvc2VkRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi8wcKGVRyYW5zYWN0aW9uSW5pdGlhdGVkRXZlbnQSGgoIZXZlbnRfaWQYASABKAlCCLpIBXIDsAEBEi8KCmFjY291bnRfaWQYAiABKAlCG7pIGHIWEAEYZDIQXlthLXpBLVowLTlfLV0rJBIgCg50cmFuc2FjdGlvbl9pZBgDIAEoCUIIukgFcgOwAQESWQoQdHJhbnNhY3Rpb25fdHlwZRgEIAEoCUI/ukg8cjpSB0RFUE9TSVRSCldJVEhEUkFXQUxSCFRSQU5TRkVSUgNGRUVSCElOVEVSRVNUUgpBREpVU1RNRU5UEvABChJ0cmFuc2FjdGlvbl9hbW91bnQYBSABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QqsBukinAboBoAEKG3Bvc2l0aXZlX3RyYW5zYWN0aW9uX2Ftb3VudBIsdHJhbnNhY3Rpb24gYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8aU3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJykgJiYgIXRoaXMuYW1vdW50Lm1hdGNoZXMoJ14wKyhcXC4wKyk/JCcpyAEBEksKEXBvc3RpbmdfZGlyZWN0aW9uGAYgASgOMiQubWVyaWRpYW4uY29tbW9uLnYxLlBvc3RpbmdEaXJlY3Rpb25CCrpIB4IBBBABIAASNgoKdmFsdWVfZGF0ZRgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIdCgtkZXNjcmlwdGlvbhgIIAEoCUIIukgFcgMY9AMSGgoJcmVmZXJlbmNlGAkgASgJQge6SARyAhhkEh8KDGluaXRpYXRlZF9ieRgKIAEoCUIJukgGcgQQARhkEiIKDmNvcnJlbGF0aW9uX2lkGAsgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgMIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgOIAEoA0IHukgEIgIoARIhCg9pZGVtcG90ZW5jeV9rZXkYDyABKAlCCLpIBXIDGP8BEk0KCG1ldGFkYXRhGBAgAygLMjsubWVyaWRpYW4uZXZlbnRzLnYxLlRyYW5zYWN0aW9uSW5pdGlhdGVkRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEixAUKGVRyYW5zYWN0aW9uQ29tcGxldGVkRXZlbnQSGgoIZXZlbnRfaWQYASABKAlCCLpIBXIDsAEBEi8KCmFjY291bnRfaWQYAiABKAlCG7pIGHIWEAEYZDIQXlthLXpBLVowLTlfLV0rJBIgCg50cmFuc2FjdGlvbl9pZBgDIAEoCUIIukgFcgOwAQESIgoOYm9va2luZ19sb2dfaWQYBCABKAlCCrpIB3IFEAEY/wESIQoPcG9zaXRpb25fbG9nX2lkGAUgASgJQgi6SAVyA7ABARJDCgtuZXdfYmFsYW5jZRgGIAEoCzImLm1lcmlkaWFuLnF1YW50aXR5LnYxLkluc3RydW1lbnRBbW91bnRCBrpIA8gBARJNChVuZXdfYXZhaWxhYmxlX2JhbGFuY2UYByABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50Qga6SAPIAQESIwoRY29tcGxldGlvbl9yZWFzb24YCCABKAlCCLpIBXIDGPQDEiIKDmNvcnJlbGF0aW9uX2lkGAkgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgKIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgMIAEoA0IHukgEIgIoARIhCg9pZGVtcG90ZW5jeV9rZXkYDSABKAlCCLpIBXIDGP8BEk0KCG1ldGFkYXRhGA4gAygLMjsubWVyaWRpYW4uZXZlbnRzLnYxLlRyYW5zYWN0aW9uQ29tcGxldGVkRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi5QQKHUFjY291bnRUcmFuc2FjdGlvbkZhaWxlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSIAoOdHJhbnNhY3Rpb25faWQYAyABKAlCCLpIBXIDsAEBEiIKDmZhaWx1cmVfcmVhc29uGAQgASgJQgq6SAdyBRABGPQDEhsKCmVycm9yX2NvZGUYBSABKAlCB7pIBHICGDISVgoOZmFpbGVkX3NlcnZpY2UYBiABKAlCPrpIO3I5Ug9DVVJSRU5UX0FDQ09VTlRSFEZJTkFOQ0lBTF9BQ0NPVU5USU5HUhBQT1NJVElPTl9LRUVQSU5HEiIKDmNvcnJlbGF0aW9uX2lkGAcgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgIIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgKIAEoA0IHukgEIgIoARIhCg9pZGVtcG90ZW5jeV9rZXkYCyABKAlCCLpIBXIDGP8BElEKCG1ldGFkYXRhGAwgAygLMj8ubWVyaWRpYW4uZXZlbnRzLnYxLkFjY291bnRUcmFuc2FjdGlvbkZhaWxlZEV2ZW50Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIpQEChxXaXRoZHJhd2FsU3RhdHVzVXBkYXRlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIhCg13aXRoZHJhd2FsX2lkGAIgASgJQgq6SAdyBRABGP8BEi8KCmFjY291bnRfaWQYAyABKAlCG7pIGHIWEAEYZDIQXlthLXpBLVowLTlfLV0rJBJHCgZzdGF0dXMYBCABKAlCN7pINHIyUglJTklUSUFURURSB1BFTkRJTkdSCUNPTVBMRVRFRFIGRkFJTEVEUglDQU5DRUxMRUQSIgoOY29ycmVsYXRpb25faWQYBSABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAYgASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAggASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgJIAEoCUIIukgFcgMY/wESUAoIbWV0YWRhdGEYCiADKAsyPi5tZXJpZGlhbi5ldmVudHMudjEuV2l0aGRyYXdhbFN0YXR1c1VwZGF0ZWRFdmVudC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKsBwoYT3ZlcmRyYWZ0Q29uZmlndXJlZEV2ZW50EhoKCGV2ZW50X2lkGAEgASgJQgi6SAVyA7ABARIvCgphY2NvdW50X2lkGAIgASgJQhu6SBhyFhABGGQyEF5bYS16QS1aMC05Xy1dKyQSGQoRb3ZlcmRyYWZ0X2VuYWJsZWQYAyABKAgSzwEKD292ZXJkcmFmdF9saW1pdBgEIAEoCzImLm1lcmlkaWFuLnF1YW50aXR5LnYxLkluc3RydW1lbnRBbW91bnRCjQG6SIkBugGCAQocbm9uX25lZ2F0aXZlX292ZXJkcmFmdF9saW1pdBI1b3ZlcmRyYWZ0IGxpbWl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8aK3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJynIAQESyQEKDnByZXZpb3VzX2xpbWl0GAUgASgLMiYubWVyaWRpYW4ucXVhbnRpdHkudjEuSW5zdHJ1bWVudEFtb3VudEKIAbpIhAG6AYABChtub25fbmVnYXRpdmVfcHJldmlvdXNfbGltaXQSNHByZXZpb3VzIGxpbWl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8aK3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJykSLwoaaW50ZXJlc3RfcmF0ZV9iYXNpc19wb2ludHMYBiABKAVCC7pICBoGGKCNBigAEiAKDWNvbmZpZ3VyZWRfYnkYByABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgIIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYCSABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCyABKANCB7pIBCICKAESIQoPaWRlbXBvdGVuY3lfa2V5GAwgASgJQgi6SAVyAxj/ARJMCghtZXRhZGF0YRgNIAMoCzI6Lm1lcmlkaWFuLmV2ZW50cy52MS5PdmVyZHJhZnRDb25maWd1cmVkRXZlbnQuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEipQkKG092ZXJkcmFmdExpbWl0RXhjZWVkZWRFdmVudBIaCghldmVudF9pZBgBIAEoCUIIukgFcgOwAQESLwoKYWNjb3VudF9pZBgCIAEoCUIbukgYchYQARhkMhBeW2EtekEtWjAtOV8tXSskEiAKDnRyYW5zYWN0aW9uX2lkGAMgASgJQgi6SAVyA7ABARLqAQoQYXR0ZW1wdGVkX2Ftb3VudBgEIAEoCzImLm1lcmlkaWFuLnF1YW50aXR5LnYxLkluc3RydW1lbnRBbW91bnRCpwG6SKMBugGcAQoZcG9zaXRpdmVfYXR0ZW1wdGVkX2Ftb3VudBIqYXR0ZW1wdGVkIGFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvGlN0aGlzLmFtb3VudC5tYXRjaGVzKCdeWzAtOV0rKFxcLlswLTldKyk/JCcpICYmICF0aGlzLmFtb3VudC5tYXRjaGVzKCdeMCsoXFwuMCspPyQnKcgBARJHCg9jdXJyZW50X2JhbGFuY2UYBSABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50Qga6SAPIAQESzwEKD292ZXJkcmFmdF9saW1pdBgGIAEoCzImLm1lcmlkaWFuLnF1YW50aXR5LnYxLkluc3RydW1lbnRBbW91bnRCjQG6SIkBugGCAQocbm9uX25lZ2F0aXZlX292ZXJkcmFmdF9saW1pdBI1b3ZlcmRyYWZ0IGxpbWl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8aK3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJynIAQES0gEKCHNob3J0YWdlGAcgASgLMiYubWVyaWRpYW4ucXVhbnRpdHkudjEuSW5zdHJ1bWVudEFtb3VudEKXAbpIkwG6AYwBChFwb3NpdGl2ZV9zaG9ydGFnZRIic2hvcnRhZ2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybxpTdGhpcy5hbW91bnQubWF0Y2hlcygnXlswLTldKyhcXC5bMC05XSspPyQnKSAmJiAhdGhpcy5hbW91bnQubWF0Y2hlcygnXjArKFxcLjArKT8kJynIAQESIgoOY29ycmVsYXRpb25faWQYCCABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAkgASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAsgASgDQge6SAQiAigBEiEKD2lkZW1wb3RlbmN5X2tleRgMIAEoCUIIukgFcgMY/wESTwoIbWV0YWRhdGEYDSADKAsyPS5tZXJpZGlhbi5ldmVudHMudjEuT3ZlcmRyYWZ0TGltaXRFeGNlZWRlZEV2ZW50Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQkdaRWdpdGh1Yi5jb20vbWVyaWRpYW5odWIvbWVyaWRpYW4vYXBpL3Byb3RvL21lcmlkaWFuL2V2ZW50cy92MTtldmVudHN2MWIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_meridian_common_v1_types, file_meridian_quantity_v1_quantity]); /** * AccountCreatedEvent represents a new current account facility created diff --git a/frontend/src/api/gen/meridian/events/v1/financial_accounting_events_pb.ts b/frontend/src/api/gen/meridian/events/v1/financial_accounting_events_pb.ts index 9a35b27b1..a8726fb94 100644 --- a/frontend/src/api/gen/meridian/events/v1/financial_accounting_events_pb.ts +++ b/frontend/src/api/gen/meridian/events/v1/financial_accounting_events_pb.ts @@ -17,7 +17,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file meridian/events/v1/financial_accounting_events.proto. */ export const file_meridian_events_v1_financial_accounting_events: GenFile = /*@__PURE__*/ - fileDesc("CjRtZXJpZGlhbi9ldmVudHMvdjEvZmluYW5jaWFsX2FjY291bnRpbmdfZXZlbnRzLnByb3RvEhJtZXJpZGlhbi5ldmVudHMudjEijAMKIUZpbmFuY2lhbEJvb2tpbmdMb2dJbml0aWF0ZWRFdmVudBIiCg5ib29raW5nX2xvZ19pZBgBIAEoCUIKukgHcgUQARj/ARInChZmaW5hbmNpYWxfYWNjb3VudF90eXBlGAIgASgJQge6SARyAhgyEi0KGXByb2R1Y3Rfc2VydmljZV9yZWZlcmVuY2UYAyABKAlCCrpIB3IFEAEY/wESKwoXYnVzaW5lc3NfdW5pdF9yZWZlcmVuY2UYBCABKAlCCrpIB3IFEAEY/wESJwoUYmFzZV9pbnN0cnVtZW50X2NvZGUYBSABKAlCCbpIBnIEEAEYMhIiCg5jb3JyZWxhdGlvbl9pZBgGIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCSABKANCB7pIBCICKAEixQMKH0ZpbmFuY2lhbEJvb2tpbmdMb2dVcGRhdGVkRXZlbnQSIgoOYm9va2luZ19sb2dfaWQYASABKAlCCrpIB3IFEAEY/wESQQoGc3RhdHVzGAIgASgOMiUubWVyaWRpYW4uY29tbW9uLnYxLlRyYW5zYWN0aW9uU3RhdHVzQgq6SAeCAQQQASAAEkoKD3ByZXZpb3VzX3N0YXR1cxgDIAEoDjIlLm1lcmlkaWFuLmNvbW1vbi52MS5UcmFuc2FjdGlvblN0YXR1c0IKukgHggEEEAEgABIfChdjaGFydF9vZl9hY2NvdW50c19ydWxlcxgEIAEoCRIYCgZyZWFzb24YBSABKAlCCLpIBXIDGPQDEh0KCnVwZGF0ZWRfYnkYBiABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgHIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYCCABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCiABKANCB7pIBCICKAEixgUKHkZpbmFuY2lhbEJvb2tpbmdMb2dQb3N0ZWRFdmVudBIiCg5ib29raW5nX2xvZ19pZBgBIAEoCUIKukgHcgUQARj/ARIeCg1wb3N0aW5nX2NvdW50GAIgASgFQge6SAQaAigAEsUBCgx0b3RhbF9kZWJpdHMYAyABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QoYBukiCAboBfAoZbm9uX25lZ2F0aXZlX3RvdGFsX2RlYml0cxIydG90YWwgZGViaXRzIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8aK3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJynIAQESyAEKDXRvdGFsX2NyZWRpdHMYBCABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QogBukiEAboBfgoabm9uX25lZ2F0aXZlX3RvdGFsX2NyZWRpdHMSM3RvdGFsIGNyZWRpdHMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVybxordGhpcy5hbW91bnQubWF0Y2hlcygnXlswLTldKyhcXC5bMC05XSspPyQnKcgBARIYCgZyZWFzb24YBSABKAlCCLpIBXIDGPQDEhwKCXBvc3RlZF9ieRgGIAEoCUIJukgGcgQQARhkEiIKDmNvcnJlbGF0aW9uX2lkGAcgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgIIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgKIAEoA0IHukgEIgIoASKVAgoeRmluYW5jaWFsQm9va2luZ0xvZ0Nsb3NlZEV2ZW50EiIKDmJvb2tpbmdfbG9nX2lkGAEgASgJQgq6SAdyBRABGP8BEhoKBnJlYXNvbhgCIAEoCUIKukgHcgUQARj0AxIcCgljbG9zZWRfYnkYAyABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgEIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYBSABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YByABKANCB7pIBCICKAEi5wUKGkxlZGdlclBvc3RpbmdDYXB0dXJlZEV2ZW50Eh4KCnBvc3RpbmdfaWQYASABKAlCCrpIB3IFEAEY/wESIgoOYm9va2luZ19sb2dfaWQYAiABKAlCCrpIB3IFEAEY/wESSwoRcG9zdGluZ19kaXJlY3Rpb24YAyABKA4yJC5tZXJpZGlhbi5jb21tb24udjEuUG9zdGluZ0RpcmVjdGlvbkIKukgHggEEEAEgABLzAQoOcG9zdGluZ19hbW91bnQYBCABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QrIBukiuAboBpwEKF3Bvc2l0aXZlX3Bvc3RpbmdfYW1vdW50Eihwb3N0aW5nIGFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvGmJ0aGlzLmFtb3VudC5tYXRjaGVzKCdeWzEtOV1bMC05XSooXFwuWzAtOV0rKT8kJykgfHwgdGhpcy5hbW91bnQubWF0Y2hlcygnXjBcXC5bMC05XSpbMS05XVswLTldKiQnKcgBARIwCgphY2NvdW50X2lkGAUgASgJQhy6SBlyFxABGP8BMhBeW2EtekEtWjAtOV8tXSskEjYKCnZhbHVlX2RhdGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESQQoGc3RhdHVzGAcgASgOMiUubWVyaWRpYW4uY29tbW9uLnYxLlRyYW5zYWN0aW9uU3RhdHVzQgq6SAeCAQQQASAAEiIKDmNvcnJlbGF0aW9uX2lkGAggASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgJIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgLIAEoA0IHukgEIgIoASKUBgoZTGVkZ2VyUG9zdGluZ0FtZW5kZWRFdmVudBIeCgpwb3N0aW5nX2lkGAEgASgJQgq6SAdyBRABGP8BEiIKDmJvb2tpbmdfbG9nX2lkGAIgASgJQgq6SAdyBRABGP8BEvYBCg9wcmV2aW91c19hbW91bnQYAyABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QrQBukiwAboBqQEKGHBvc2l0aXZlX3ByZXZpb3VzX2Ftb3VudBIpcHJldmlvdXMgYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8aYnRoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMS05XVswLTldKihcXC5bMC05XSspPyQnKSB8fCB0aGlzLmFtb3VudC5tYXRjaGVzKCdeMFxcLlswLTldKlsxLTldWzAtOV0qJCcpyAEBEucBCgpuZXdfYW1vdW50GAQgASgLMiYubWVyaWRpYW4ucXVhbnRpdHkudjEuSW5zdHJ1bWVudEFtb3VudEKqAbpIpgG6AZ8BChNwb3NpdGl2ZV9uZXdfYW1vdW50EiRuZXcgYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8aYnRoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMS05XVswLTldKihcXC5bMC05XSspPyQnKSB8fCB0aGlzLmFtb3VudC5tYXRjaGVzKCdeMFxcLlswLTldKlsxLTldWzAtOV0qJCcpyAEBEhoKBnJlYXNvbhgFIAEoCUIKukgHcgUQARj0AxIdCgphbWVuZGVkX2J5GAYgASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAggASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAogASgDQge6SAQiAigBIrUCChhMZWRnZXJQb3N0aW5nUG9zdGVkRXZlbnQSHgoKcG9zdGluZ19pZBgBIAEoCUIKukgHcgUQARj/ARIiCg5ib29raW5nX2xvZ19pZBgCIAEoCUIKukgHcgUQARj/ARIgCg5wb3N0aW5nX3Jlc3VsdBgDIAEoCUIIukgFcgMY6AcSHAoJcG9zdGVkX2J5GAQgASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYBSABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAYgASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAggASgDQge6SAQiAigBIrMCChpMZWRnZXJQb3N0aW5nUmVqZWN0ZWRFdmVudBIeCgpwb3N0aW5nX2lkGAEgASgJQgq6SAdyBRABGP8BEiIKDmJvb2tpbmdfbG9nX2lkGAIgASgJQgq6SAdyBRABGP8BEhoKBnJlYXNvbhgDIAEoCUIKukgHcgUQARj0AxIeCgtyZWplY3RlZF9ieRgEIAEoCUIJukgGcgQQARhkEiIKDmNvcnJlbGF0aW9uX2lkGAUgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgGIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgIIAEoA0IHukgEIgIoASLTAwoiRmluYW5jaWFsQm9va2luZ0xvZ0NvbnRyb2xsZWRFdmVudBIiCg5ib29raW5nX2xvZ19pZBgBIAEoCUIKukgHcgUQARj/ARIhCg5jb250cm9sX2FjdGlvbhgCIAEoCUIJukgGcgQQARgyEkoKD3ByZXZpb3VzX3N0YXR1cxgDIAEoDjIlLm1lcmlkaWFuLmNvbW1vbi52MS5UcmFuc2FjdGlvblN0YXR1c0IKukgHggEEEAEgABJFCgpuZXdfc3RhdHVzGAQgASgOMiUubWVyaWRpYW4uY29tbW9uLnYxLlRyYW5zYWN0aW9uU3RhdHVzQgq6SAeCAQQQASAAEhoKBnJlYXNvbhgFIAEoCUIKukgHcgUQARj0AxIgCg1jb250cm9sbGVkX2J5GAYgASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAggASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAogASgDQge6SAQiAigBIuIFChxCYWxhbmNlVmFsaWRhdGlvbkZhaWxlZEV2ZW50EiIKDmJvb2tpbmdfbG9nX2lkGAEgASgJQgq6SAdyBRABGP8BEtEBCgx0b3RhbF9kZWJpdHMYAiABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QpIBukiOAboBhwEKJG5vbl9uZWdhdGl2ZV90b3RhbF9kZWJpdHNfdmFsaWRhdGlvbhIydG90YWwgZGViaXRzIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8aK3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJynIAQES1AEKDXRvdGFsX2NyZWRpdHMYAyABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QpQBukiQAboBiQEKJW5vbl9uZWdhdGl2ZV90b3RhbF9jcmVkaXRzX3ZhbGlkYXRpb24SM3RvdGFsIGNyZWRpdHMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVybxordGhpcy5hbW91bnQubWF0Y2hlcygnXlswLTldKyhcXC5bMC05XSspPyQnKcgBARJACgh2YXJpYW5jZRgEIAEoCzImLm1lcmlkaWFuLnF1YW50aXR5LnYxLkluc3RydW1lbnRBbW91bnRCBrpIA8gBARIaCgZyZWFzb24YBSABKAlCCrpIB3IFEAEY9AMSIgoOY29ycmVsYXRpb25faWQYBiABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAcgASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAkgASgDQge6SAQiAigBQkdaRWdpdGh1Yi5jb20vbWVyaWRpYW5odWIvbWVyaWRpYW4vYXBpL3Byb3RvL21lcmlkaWFuL2V2ZW50cy92MTtldmVudHN2MWIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_meridian_common_v1_types, file_meridian_quantity_v1_quantity]); + fileDesc("CjRtZXJpZGlhbi9ldmVudHMvdjEvZmluYW5jaWFsX2FjY291bnRpbmdfZXZlbnRzLnByb3RvEhJtZXJpZGlhbi5ldmVudHMudjEijAMKIUZpbmFuY2lhbEJvb2tpbmdMb2dJbml0aWF0ZWRFdmVudBIiCg5ib29raW5nX2xvZ19pZBgBIAEoCUIKukgHcgUQARj/ARInChZmaW5hbmNpYWxfYWNjb3VudF90eXBlGAIgASgJQge6SARyAhgyEi0KGXByb2R1Y3Rfc2VydmljZV9yZWZlcmVuY2UYAyABKAlCCrpIB3IFEAEY/wESKwoXYnVzaW5lc3NfdW5pdF9yZWZlcmVuY2UYBCABKAlCCrpIB3IFEAEY/wESJwoUYmFzZV9pbnN0cnVtZW50X2NvZGUYBSABKAlCCbpIBnIEEAEYMhIiCg5jb3JyZWxhdGlvbl9pZBgGIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCSABKANCB7pIBCICKAEixQMKH0ZpbmFuY2lhbEJvb2tpbmdMb2dVcGRhdGVkRXZlbnQSIgoOYm9va2luZ19sb2dfaWQYASABKAlCCrpIB3IFEAEY/wESQQoGc3RhdHVzGAIgASgOMiUubWVyaWRpYW4uY29tbW9uLnYxLlRyYW5zYWN0aW9uU3RhdHVzQgq6SAeCAQQQASAAEkoKD3ByZXZpb3VzX3N0YXR1cxgDIAEoDjIlLm1lcmlkaWFuLmNvbW1vbi52MS5UcmFuc2FjdGlvblN0YXR1c0IKukgHggEEEAEgABIfChdjaGFydF9vZl9hY2NvdW50c19ydWxlcxgEIAEoCRIYCgZyZWFzb24YBSABKAlCCLpIBXIDGPQDEh0KCnVwZGF0ZWRfYnkYBiABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgHIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYCCABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YCiABKANCB7pIBCICKAEixgUKHkZpbmFuY2lhbEJvb2tpbmdMb2dQb3N0ZWRFdmVudBIiCg5ib29raW5nX2xvZ19pZBgBIAEoCUIKukgHcgUQARj/ARIeCg1wb3N0aW5nX2NvdW50GAIgASgFQge6SAQaAigAEsUBCgx0b3RhbF9kZWJpdHMYAyABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QoYBukiCAboBfAoZbm9uX25lZ2F0aXZlX3RvdGFsX2RlYml0cxIydG90YWwgZGViaXRzIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8aK3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJynIAQESyAEKDXRvdGFsX2NyZWRpdHMYBCABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QogBukiEAboBfgoabm9uX25lZ2F0aXZlX3RvdGFsX2NyZWRpdHMSM3RvdGFsIGNyZWRpdHMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVybxordGhpcy5hbW91bnQubWF0Y2hlcygnXlswLTldKyhcXC5bMC05XSspPyQnKcgBARIYCgZyZWFzb24YBSABKAlCCLpIBXIDGPQDEhwKCXBvc3RlZF9ieRgGIAEoCUIJukgGcgQQARhkEiIKDmNvcnJlbGF0aW9uX2lkGAcgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgIIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgKIAEoA0IHukgEIgIoASKVAgoeRmluYW5jaWFsQm9va2luZ0xvZ0Nsb3NlZEV2ZW50EiIKDmJvb2tpbmdfbG9nX2lkGAEgASgJQgq6SAdyBRABGP8BEhoKBnJlYXNvbhgCIAEoCUIKukgHcgUQARj0AxIcCgljbG9zZWRfYnkYAyABKAlCCbpIBnIEEAEYZBIiCg5jb3JyZWxhdGlvbl9pZBgEIAEoCUIKukgHcgUQARj/ARIgCgxjYXVzYXRpb25faWQYBSABKAlCCrpIB3IFEAEY/wESNQoJdGltZXN0YW1wGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEhgKB3ZlcnNpb24YByABKANCB7pIBCICKAEi2AUKGkxlZGdlclBvc3RpbmdDYXB0dXJlZEV2ZW50Eh4KCnBvc3RpbmdfaWQYASABKAlCCrpIB3IFEAEY/wESIgoOYm9va2luZ19sb2dfaWQYAiABKAlCCrpIB3IFEAEY/wESSwoRcG9zdGluZ19kaXJlY3Rpb24YAyABKA4yJC5tZXJpZGlhbi5jb21tb24udjEuUG9zdGluZ0RpcmVjdGlvbkIKukgHggEEEAEgABLkAQoOcG9zdGluZ19hbW91bnQYBCABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QqMBukifAboBmAEKF3Bvc2l0aXZlX3Bvc3RpbmdfYW1vdW50Eihwb3N0aW5nIGFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvGlN0aGlzLmFtb3VudC5tYXRjaGVzKCdeWzAtOV0rKFxcLlswLTldKyk/JCcpICYmICF0aGlzLmFtb3VudC5tYXRjaGVzKCdeMCsoXFwuMCspPyQnKcgBARIwCgphY2NvdW50X2lkGAUgASgJQhy6SBlyFxABGP8BMhBeW2EtekEtWjAtOV8tXSskEjYKCnZhbHVlX2RhdGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESQQoGc3RhdHVzGAcgASgOMiUubWVyaWRpYW4uY29tbW9uLnYxLlRyYW5zYWN0aW9uU3RhdHVzQgq6SAeCAQQQASAAEiIKDmNvcnJlbGF0aW9uX2lkGAggASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgJIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgLIAEoA0IHukgEIgIoASL2BQoZTGVkZ2VyUG9zdGluZ0FtZW5kZWRFdmVudBIeCgpwb3N0aW5nX2lkGAEgASgJQgq6SAdyBRABGP8BEiIKDmJvb2tpbmdfbG9nX2lkGAIgASgJQgq6SAdyBRABGP8BEucBCg9wcmV2aW91c19hbW91bnQYAyABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QqUBukihAboBmgEKGHBvc2l0aXZlX3ByZXZpb3VzX2Ftb3VudBIpcHJldmlvdXMgYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8aU3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJykgJiYgIXRoaXMuYW1vdW50Lm1hdGNoZXMoJ14wKyhcXC4wKyk/JCcpyAEBEtgBCgpuZXdfYW1vdW50GAQgASgLMiYubWVyaWRpYW4ucXVhbnRpdHkudjEuSW5zdHJ1bWVudEFtb3VudEKbAbpIlwG6AZABChNwb3NpdGl2ZV9uZXdfYW1vdW50EiRuZXcgYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8aU3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJykgJiYgIXRoaXMuYW1vdW50Lm1hdGNoZXMoJ14wKyhcXC4wKyk/JCcpyAEBEhoKBnJlYXNvbhgFIAEoCUIKukgHcgUQARj0AxIdCgphbWVuZGVkX2J5GAYgASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAggASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAogASgDQge6SAQiAigBIrUCChhMZWRnZXJQb3N0aW5nUG9zdGVkRXZlbnQSHgoKcG9zdGluZ19pZBgBIAEoCUIKukgHcgUQARj/ARIiCg5ib29raW5nX2xvZ19pZBgCIAEoCUIKukgHcgUQARj/ARIgCg5wb3N0aW5nX3Jlc3VsdBgDIAEoCUIIukgFcgMY6AcSHAoJcG9zdGVkX2J5GAQgASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYBSABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAYgASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAggASgDQge6SAQiAigBIrMCChpMZWRnZXJQb3N0aW5nUmVqZWN0ZWRFdmVudBIeCgpwb3N0aW5nX2lkGAEgASgJQgq6SAdyBRABGP8BEiIKDmJvb2tpbmdfbG9nX2lkGAIgASgJQgq6SAdyBRABGP8BEhoKBnJlYXNvbhgDIAEoCUIKukgHcgUQARj0AxIeCgtyZWplY3RlZF9ieRgEIAEoCUIJukgGcgQQARhkEiIKDmNvcnJlbGF0aW9uX2lkGAUgASgJQgq6SAdyBRABGP8BEiAKDGNhdXNhdGlvbl9pZBgGIAEoCUIKukgHcgUQARj/ARI1Cgl0aW1lc3RhbXAYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESGAoHdmVyc2lvbhgIIAEoA0IHukgEIgIoASLTAwoiRmluYW5jaWFsQm9va2luZ0xvZ0NvbnRyb2xsZWRFdmVudBIiCg5ib29raW5nX2xvZ19pZBgBIAEoCUIKukgHcgUQARj/ARIhCg5jb250cm9sX2FjdGlvbhgCIAEoCUIJukgGcgQQARgyEkoKD3ByZXZpb3VzX3N0YXR1cxgDIAEoDjIlLm1lcmlkaWFuLmNvbW1vbi52MS5UcmFuc2FjdGlvblN0YXR1c0IKukgHggEEEAEgABJFCgpuZXdfc3RhdHVzGAQgASgOMiUubWVyaWRpYW4uY29tbW9uLnYxLlRyYW5zYWN0aW9uU3RhdHVzQgq6SAeCAQQQASAAEhoKBnJlYXNvbhgFIAEoCUIKukgHcgUQARj0AxIgCg1jb250cm9sbGVkX2J5GAYgASgJQgm6SAZyBBABGGQSIgoOY29ycmVsYXRpb25faWQYByABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAggASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAogASgDQge6SAQiAigBIuIFChxCYWxhbmNlVmFsaWRhdGlvbkZhaWxlZEV2ZW50EiIKDmJvb2tpbmdfbG9nX2lkGAEgASgJQgq6SAdyBRABGP8BEtEBCgx0b3RhbF9kZWJpdHMYAiABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QpIBukiOAboBhwEKJG5vbl9uZWdhdGl2ZV90b3RhbF9kZWJpdHNfdmFsaWRhdGlvbhIydG90YWwgZGViaXRzIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8aK3RoaXMuYW1vdW50Lm1hdGNoZXMoJ15bMC05XSsoXFwuWzAtOV0rKT8kJynIAQES1AEKDXRvdGFsX2NyZWRpdHMYAyABKAsyJi5tZXJpZGlhbi5xdWFudGl0eS52MS5JbnN0cnVtZW50QW1vdW50QpQBukiQAboBiQEKJW5vbl9uZWdhdGl2ZV90b3RhbF9jcmVkaXRzX3ZhbGlkYXRpb24SM3RvdGFsIGNyZWRpdHMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVybxordGhpcy5hbW91bnQubWF0Y2hlcygnXlswLTldKyhcXC5bMC05XSspPyQnKcgBARJACgh2YXJpYW5jZRgEIAEoCzImLm1lcmlkaWFuLnF1YW50aXR5LnYxLkluc3RydW1lbnRBbW91bnRCBrpIA8gBARIaCgZyZWFzb24YBSABKAlCCrpIB3IFEAEY9AMSIgoOY29ycmVsYXRpb25faWQYBiABKAlCCrpIB3IFEAEY/wESIAoMY2F1c2F0aW9uX2lkGAcgASgJQgq6SAdyBRABGP8BEjUKCXRpbWVzdGFtcBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIYCgd2ZXJzaW9uGAkgASgDQge6SAQiAigBQkdaRWdpdGh1Yi5jb20vbWVyaWRpYW5odWIvbWVyaWRpYW4vYXBpL3Byb3RvL21lcmlkaWFuL2V2ZW50cy92MTtldmVudHN2MWIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_meridian_common_v1_types, file_meridian_quantity_v1_quantity]); /** * FinancialBookingLogInitiatedEvent represents a new financial booking log From 794c3f1928cab6044e58e56ed1b7d4a97dde368a Mon Sep 17 00:00:00 2001 From: Ben Coombs Date: Fri, 3 Apr 2026 19:23:04 +0100 Subject: [PATCH 7/7] fix: default instrument version to 1 when domain version is 0 Proto validation requires version >= 1. Domain instruments created before versioning was introduced have version 0 as default. --- services/current-account/service/grpc_control_endpoints.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/services/current-account/service/grpc_control_endpoints.go b/services/current-account/service/grpc_control_endpoints.go index 69664e370..94a1233c0 100644 --- a/services/current-account/service/grpc_control_endpoints.go +++ b/services/current-account/service/grpc_control_endpoints.go @@ -344,10 +344,14 @@ func (s *Service) publishAccountClosedEvent( accountID, reason, actorID, correlationID string, actionTimestamp, now time.Time, ) error { + version := int32(account.Balance().Instrument().Version) + if version == 0 { + version = 1 + } closingBalance := &quantityv1.InstrumentAmount{ Amount: account.Balance().Amount().String(), InstrumentCode: account.Balance().InstrumentCode(), - Version: int32(account.Balance().Instrument().Version), + Version: version, } event := &eventsv1.AccountClosedEvent{ EventId: uuid.New().String(),