diff --git a/datanode/api/trading_data_v2.go b/datanode/api/trading_data_v2.go index 88a9e90200..c37b111820 100644 --- a/datanode/api/trading_data_v2.go +++ b/datanode/api/trading_data_v2.go @@ -4634,6 +4634,43 @@ func (t *TradingDataServiceV2) ListTeamsStatistics(ctx context.Context, req *v2. }, nil } +func (t *TradingDataServiceV2) ListTeamMembersStatistics(ctx context.Context, req *v2.ListTeamMembersStatisticsRequest) (*v2.ListTeamMembersStatisticsResponse, error) { + defer metrics.StartAPIRequestAndTimeGRPC("ListTeamMembersStatistics")() + + pagination, err := entities.CursorPaginationFromProto(req.Pagination) + if err != nil { + return nil, formatE(ErrInvalidPagination, err) + } + + filters := sqlstore.ListTeamMembersStatisticsFilters{ + AggregationEpochs: 10, + } + + if req.PartyId != nil { + filters.PartyID = ptr.From(entities.PartyID(*req.PartyId)) + } + if req.AggregationEpochs != nil { + filters.AggregationEpochs = *req.AggregationEpochs + } + + stats, pageInfo, err := t.teamsService.ListTeamMembersStatistics(ctx, pagination, filters) + if err != nil { + return nil, formatE(ErrListTeamReferees, err) + } + + edges, err := makeEdges[*v2.TeamMemberStatisticsEdge](stats) + if err != nil { + return nil, formatE(err) + } + + return &v2.ListTeamMembersStatisticsResponse{ + Statistics: &v2.TeamMembersStatisticsConnection{ + Edges: edges, + PageInfo: pageInfo.ToProto(), + }, + }, nil +} + func (t *TradingDataServiceV2) ListTeamReferees(ctx context.Context, req *v2.ListTeamRefereesRequest) (*v2.ListTeamRefereesResponse, error) { defer metrics.StartAPIRequestAndTimeGRPC("ListTeamReferees")() pagination, err := entities.CursorPaginationFromProto(req.Pagination) diff --git a/datanode/entities/entities.go b/datanode/entities/entities.go index 8b34222e32..aed7dadb17 100644 --- a/datanode/entities/entities.go +++ b/datanode/entities/entities.go @@ -26,7 +26,7 @@ type Entities interface { ProtocolUpgradeProposal | CoreSnapshotData | EpochRewardSummary | SuccessorMarket | StopOrder | LiquidityProvider | FundingPeriod | FundingPeriodDataPoint | ReferralSet | ReferralSetRefereeStats | FlattenReferralSetStats | Team | TeamMember | TeamMemberHistory | FundingPayment | FlattenVolumeDiscountStats | - PaidLiquidityFeesStats | CurrentAndPreviousLiquidityProvisions | TransferDetails | Game | TeamsStatistics + PaidLiquidityFeesStats | CurrentAndPreviousLiquidityProvisions | TransferDetails | Game | TeamsStatistics | TeamMembersStatistics } type PagedEntity[T proto.Message] interface { diff --git a/datanode/entities/teams.go b/datanode/entities/teams.go index 0805cc1d98..528c0697a2 100644 --- a/datanode/entities/teams.go +++ b/datanode/entities/teams.go @@ -163,7 +163,7 @@ func (t TeamsStatistics) ToProto() *v2.TeamStatistics { TotalQuantumVolume: "", TotalQuantumRewards: t.TotalQuantumRewards.String(), QuantumRewards: quantumRewards, - TotalGamePlayed: t.TotalGamesPlayed, + TotalGamesPlayed: t.TotalGamesPlayed, GamesPlayed: gamesPlayed, } } @@ -194,6 +194,71 @@ func (c *TeamsStatisticsCursor) Parse(cursorString string) error { return json.Unmarshal([]byte(cursorString), c) } +type TeamMembersStatistics struct { + PartyID PartyID + TotalQuantumRewards num.Decimal + QuantumRewards []QuantumRewardsPerEpoch + TotalGamesPlayed uint64 + GamesPlayed []GameID +} + +func (t TeamMembersStatistics) Cursor() *Cursor { + tc := TeamMemberStatisticsCursor{ + ID: t.PartyID, + } + return NewCursor(tc.String()) +} + +func (t TeamMembersStatistics) ToProto() *v2.TeamMemberStatistics { + gamesPlayed := make([]string, 0, len(t.GamesPlayed)) + for _, id := range t.GamesPlayed { + gamesPlayed = append(gamesPlayed, id.String()) + } + + quantumRewards := make([]*v2.QuantumRewardsPerEpoch, 0, len(t.QuantumRewards)) + for _, r := range t.QuantumRewards { + quantumRewards = append(quantumRewards, &v2.QuantumRewardsPerEpoch{ + Epoch: r.Epoch, + TotalQuantumRewards: r.Total.String(), + }) + } + + return &v2.TeamMemberStatistics{ + PartyId: string(t.PartyID), + TotalQuantumVolume: "", + TotalQuantumRewards: t.TotalQuantumRewards.String(), + QuantumRewards: quantumRewards, + TotalGamesPlayed: t.TotalGamesPlayed, + GamesPlayed: gamesPlayed, + } +} + +func (t TeamMembersStatistics) ToProtoEdge(_ ...any) (*v2.TeamMemberStatisticsEdge, error) { + return &v2.TeamMemberStatisticsEdge{ + Node: t.ToProto(), + Cursor: t.Cursor().Encode(), + }, nil +} + +type TeamMemberStatisticsCursor struct { + ID PartyID +} + +func (c TeamMemberStatisticsCursor) String() string { + bs, err := json.Marshal(c) + if err != nil { + panic(fmt.Errorf("could not marshal team member stats cursor: %v", err)) + } + return string(bs) +} + +func (c *TeamMemberStatisticsCursor) Parse(cursorString string) error { + if cursorString == "" { + return nil + } + return json.Unmarshal([]byte(cursorString), c) +} + type TeamMember struct { TeamID TeamID PartyID PartyID diff --git a/datanode/gateway/graphql/generated.go b/datanode/gateway/graphql/generated.go index f76e54cdc4..0aa77133e1 100644 --- a/datanode/gateway/graphql/generated.go +++ b/datanode/gateway/graphql/generated.go @@ -148,6 +148,7 @@ type ResolverRoot interface { StopOrder() StopOrderResolver Subscription() SubscriptionResolver Team() TeamResolver + TeamMemberStatistics() TeamMemberStatisticsResolver TeamReferee() TeamRefereeResolver TeamRefereeHistory() TeamRefereeHistoryResolver TeamStatistics() TeamStatisticsResolver @@ -1995,6 +1996,7 @@ type ComplexityRoot struct { StopOrder func(childComplexity int, id string) int StopOrders func(childComplexity int, filter *v2.StopOrderFilter, pagination *v2.Pagination) int SuccessorMarkets func(childComplexity int, marketID string, fullHistory *bool, pagination *v2.Pagination) int + TeamMembersStatistics func(childComplexity int, teamID string, partyID *string, aggregationEpochs *int, pagination *v2.Pagination) int TeamRefereeHistory func(childComplexity int, referee string, pagination *v2.Pagination) int TeamReferees func(childComplexity int, teamID string, pagination *v2.Pagination) int Teams func(childComplexity int, teamID *string, partyID *string, pagination *v2.Pagination) int @@ -2378,6 +2380,25 @@ type ComplexityRoot struct { Volume func(childComplexity int) int } + TeamMemberStatistics struct { + GamesPlayed func(childComplexity int) int + PartyId func(childComplexity int) int + QuantumRewards func(childComplexity int) int + TotalGamesPlayed func(childComplexity int) int + TotalQuantumRewards func(childComplexity int) int + TotalQuantumVolume func(childComplexity int) int + } + + TeamMemberStatisticsEdge struct { + Cursor func(childComplexity int) int + Node func(childComplexity int) int + } + + TeamMembersStatisticsConnection struct { + Edges func(childComplexity int) int + PageInfo func(childComplexity int) int + } + TeamParticipation struct { MembersParticipating func(childComplexity int) int TeamID func(childComplexity int) int @@ -2420,7 +2441,7 @@ type ComplexityRoot struct { GamesPlayed func(childComplexity int) int QuantumRewards func(childComplexity int) int TeamId func(childComplexity int) int - TotalGamePlayed func(childComplexity int) int + TotalGamesPlayed func(childComplexity int) int TotalQuantumRewards func(childComplexity int) int TotalQuantumVolume func(childComplexity int) int } @@ -3343,6 +3364,7 @@ type QueryResolver interface { SuccessorMarkets(ctx context.Context, marketID string, fullHistory *bool, pagination *v2.Pagination) (*v2.SuccessorMarketConnection, error) Teams(ctx context.Context, teamID *string, partyID *string, pagination *v2.Pagination) (*v2.TeamConnection, error) TeamsStatistics(ctx context.Context, teamID *string, aggregationEpochs *int, pagination *v2.Pagination) (*v2.TeamsStatisticsConnection, error) + TeamMembersStatistics(ctx context.Context, teamID string, partyID *string, aggregationEpochs *int, pagination *v2.Pagination) (*v2.TeamMembersStatisticsConnection, error) TeamReferees(ctx context.Context, teamID string, pagination *v2.Pagination) (*v2.TeamRefereeConnection, error) TeamRefereeHistory(ctx context.Context, referee string, pagination *v2.Pagination) (*v2.TeamRefereeHistoryConnection, error) TotalTransferFeeDiscount(ctx context.Context, partyID string, assetID string) (*v2.GetTotalTransferFeeDiscountResponse, error) @@ -3469,6 +3491,9 @@ type SubscriptionResolver interface { type TeamResolver interface { CreatedAtEpoch(ctx context.Context, obj *v2.Team) (int, error) } +type TeamMemberStatisticsResolver interface { + TotalGamesPlayed(ctx context.Context, obj *v2.TeamMemberStatistics) (int, error) +} type TeamRefereeResolver interface { JoinedAtEpoch(ctx context.Context, obj *v2.TeamReferee) (int, error) } @@ -3476,7 +3501,7 @@ type TeamRefereeHistoryResolver interface { JoinedAtEpoch(ctx context.Context, obj *v2.TeamRefereeHistory) (int, error) } type TeamStatisticsResolver interface { - TotalGamePlayed(ctx context.Context, obj *v2.TeamStatistics) (int, error) + TotalGamesPlayed(ctx context.Context, obj *v2.TeamStatistics) (int, error) } type TradableInstrumentResolver interface { RiskModel(ctx context.Context, obj *vega.TradableInstrument) (RiskModel, error) @@ -11755,6 +11780,18 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.SuccessorMarkets(childComplexity, args["marketId"].(string), args["fullHistory"].(*bool), args["pagination"].(*v2.Pagination)), true + case "Query.teamMembersStatistics": + if e.complexity.Query.TeamMembersStatistics == nil { + break + } + + args, err := ec.field_Query_teamMembersStatistics_args(context.TODO(), rawArgs) + if err != nil { + return 0, false + } + + return e.complexity.Query.TeamMembersStatistics(childComplexity, args["teamId"].(string), args["partyId"].(*string), args["aggregationEpochs"].(*int), args["pagination"].(*v2.Pagination)), true + case "Query.teamRefereeHistory": if e.complexity.Query.TeamRefereeHistory == nil { break @@ -13465,6 +13502,76 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.TeamGameEntity.Volume(childComplexity), true + case "TeamMemberStatistics.gamesPlayed": + if e.complexity.TeamMemberStatistics.GamesPlayed == nil { + break + } + + return e.complexity.TeamMemberStatistics.GamesPlayed(childComplexity), true + + case "TeamMemberStatistics.partyId": + if e.complexity.TeamMemberStatistics.PartyId == nil { + break + } + + return e.complexity.TeamMemberStatistics.PartyId(childComplexity), true + + case "TeamMemberStatistics.quantumRewards": + if e.complexity.TeamMemberStatistics.QuantumRewards == nil { + break + } + + return e.complexity.TeamMemberStatistics.QuantumRewards(childComplexity), true + + case "TeamMemberStatistics.totalGamesPlayed": + if e.complexity.TeamMemberStatistics.TotalGamesPlayed == nil { + break + } + + return e.complexity.TeamMemberStatistics.TotalGamesPlayed(childComplexity), true + + case "TeamMemberStatistics.totalQuantumRewards": + if e.complexity.TeamMemberStatistics.TotalQuantumRewards == nil { + break + } + + return e.complexity.TeamMemberStatistics.TotalQuantumRewards(childComplexity), true + + case "TeamMemberStatistics.totalQuantumVolume": + if e.complexity.TeamMemberStatistics.TotalQuantumVolume == nil { + break + } + + return e.complexity.TeamMemberStatistics.TotalQuantumVolume(childComplexity), true + + case "TeamMemberStatisticsEdge.cursor": + if e.complexity.TeamMemberStatisticsEdge.Cursor == nil { + break + } + + return e.complexity.TeamMemberStatisticsEdge.Cursor(childComplexity), true + + case "TeamMemberStatisticsEdge.node": + if e.complexity.TeamMemberStatisticsEdge.Node == nil { + break + } + + return e.complexity.TeamMemberStatisticsEdge.Node(childComplexity), true + + case "TeamMembersStatisticsConnection.edges": + if e.complexity.TeamMembersStatisticsConnection.Edges == nil { + break + } + + return e.complexity.TeamMembersStatisticsConnection.Edges(childComplexity), true + + case "TeamMembersStatisticsConnection.pageInfo": + if e.complexity.TeamMembersStatisticsConnection.PageInfo == nil { + break + } + + return e.complexity.TeamMembersStatisticsConnection.PageInfo(childComplexity), true + case "TeamParticipation.membersParticipating": if e.complexity.TeamParticipation.MembersParticipating == nil { break @@ -13605,12 +13712,12 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.TeamStatistics.TeamId(childComplexity), true - case "TeamStatistics.totalGamePlayed": - if e.complexity.TeamStatistics.TotalGamePlayed == nil { + case "TeamStatistics.totalGamesPlayed": + if e.complexity.TeamStatistics.TotalGamesPlayed == nil { break } - return e.complexity.TeamStatistics.TotalGamePlayed(childComplexity), true + return e.complexity.TeamStatistics.TotalGamesPlayed(childComplexity), true case "TeamStatistics.totalQuantumRewards": if e.complexity.TeamStatistics.TotalQuantumRewards == nil { @@ -17511,31 +17618,7 @@ func (ec *executionContext) field_Query_successorMarkets_args(ctx context.Contex return args, nil } -func (ec *executionContext) field_Query_teamRefereeHistory_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { - var err error - args := map[string]interface{}{} - var arg0 string - if tmp, ok := rawArgs["referee"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("referee")) - arg0, err = ec.unmarshalNID2string(ctx, tmp) - if err != nil { - return nil, err - } - } - args["referee"] = arg0 - var arg1 *v2.Pagination - if tmp, ok := rawArgs["pagination"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("pagination")) - arg1, err = ec.unmarshalOPagination2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐPagination(ctx, tmp) - if err != nil { - return nil, err - } - } - args["pagination"] = arg1 - return args, nil -} - -func (ec *executionContext) field_Query_teamReferees_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { +func (ec *executionContext) field_Query_teamMembersStatistics_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} var arg0 string @@ -17547,120 +17630,72 @@ func (ec *executionContext) field_Query_teamReferees_args(ctx context.Context, r } } args["teamId"] = arg0 - var arg1 *v2.Pagination - if tmp, ok := rawArgs["pagination"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("pagination")) - arg1, err = ec.unmarshalOPagination2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐPagination(ctx, tmp) - if err != nil { - return nil, err - } - } - args["pagination"] = arg1 - return args, nil -} - -func (ec *executionContext) field_Query_teamsStatistics_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { - var err error - args := map[string]interface{}{} - var arg0 *string - if tmp, ok := rawArgs["teamId"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("teamId")) - arg0, err = ec.unmarshalOID2ᚖstring(ctx, tmp) + var arg1 *string + if tmp, ok := rawArgs["partyId"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("partyId")) + arg1, err = ec.unmarshalOID2ᚖstring(ctx, tmp) if err != nil { return nil, err } } - args["teamId"] = arg0 - var arg1 *int + args["partyId"] = arg1 + var arg2 *int if tmp, ok := rawArgs["aggregationEpochs"]; ok { ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("aggregationEpochs")) - arg1, err = ec.unmarshalOInt2ᚖint(ctx, tmp) + arg2, err = ec.unmarshalOInt2ᚖint(ctx, tmp) if err != nil { return nil, err } } - args["aggregationEpochs"] = arg1 - var arg2 *v2.Pagination + args["aggregationEpochs"] = arg2 + var arg3 *v2.Pagination if tmp, ok := rawArgs["pagination"]; ok { ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("pagination")) - arg2, err = ec.unmarshalOPagination2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐPagination(ctx, tmp) + arg3, err = ec.unmarshalOPagination2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐPagination(ctx, tmp) if err != nil { return nil, err } } - args["pagination"] = arg2 + args["pagination"] = arg3 return args, nil } -func (ec *executionContext) field_Query_teams_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { +func (ec *executionContext) field_Query_teamRefereeHistory_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} - var arg0 *string - if tmp, ok := rawArgs["teamId"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("teamId")) - arg0, err = ec.unmarshalOID2ᚖstring(ctx, tmp) - if err != nil { - return nil, err - } - } - args["teamId"] = arg0 - var arg1 *string - if tmp, ok := rawArgs["partyId"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("partyId")) - arg1, err = ec.unmarshalOID2ᚖstring(ctx, tmp) + var arg0 string + if tmp, ok := rawArgs["referee"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("referee")) + arg0, err = ec.unmarshalNID2string(ctx, tmp) if err != nil { return nil, err } } - args["partyId"] = arg1 - var arg2 *v2.Pagination + args["referee"] = arg0 + var arg1 *v2.Pagination if tmp, ok := rawArgs["pagination"]; ok { ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("pagination")) - arg2, err = ec.unmarshalOPagination2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐPagination(ctx, tmp) + arg1, err = ec.unmarshalOPagination2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐPagination(ctx, tmp) if err != nil { return nil, err } } - args["pagination"] = arg2 + args["pagination"] = arg1 return args, nil } -func (ec *executionContext) field_Query_totalTransferFeeDiscount_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { +func (ec *executionContext) field_Query_teamReferees_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} var arg0 string - if tmp, ok := rawArgs["partyId"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("partyId")) - arg0, err = ec.unmarshalNString2string(ctx, tmp) - if err != nil { - return nil, err - } - } - args["partyId"] = arg0 - var arg1 string - if tmp, ok := rawArgs["assetId"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("assetId")) - arg1, err = ec.unmarshalNString2string(ctx, tmp) - if err != nil { - return nil, err - } - } - args["assetId"] = arg1 - return args, nil -} - -func (ec *executionContext) field_Query_trades_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { - var err error - args := map[string]interface{}{} - var arg0 *TradesFilter - if tmp, ok := rawArgs["filter"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("filter")) - arg0, err = ec.unmarshalOTradesFilter2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐTradesFilter(ctx, tmp) + if tmp, ok := rawArgs["teamId"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("teamId")) + arg0, err = ec.unmarshalNID2string(ctx, tmp) if err != nil { return nil, err } } - args["filter"] = arg0 + args["teamId"] = arg0 var arg1 *v2.Pagination if tmp, ok := rawArgs["pagination"]; ok { ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("pagination")) @@ -17670,54 +17705,30 @@ func (ec *executionContext) field_Query_trades_args(ctx context.Context, rawArgs } } args["pagination"] = arg1 - var arg2 *v2.DateRange - if tmp, ok := rawArgs["dateRange"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("dateRange")) - arg2, err = ec.unmarshalODateRange2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDateRange(ctx, tmp) - if err != nil { - return nil, err - } - } - args["dateRange"] = arg2 return args, nil } -func (ec *executionContext) field_Query_transfer_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { - var err error - args := map[string]interface{}{} - var arg0 string - if tmp, ok := rawArgs["id"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("id")) - arg0, err = ec.unmarshalNID2string(ctx, tmp) - if err != nil { - return nil, err - } - } - args["id"] = arg0 - return args, nil -} - -func (ec *executionContext) field_Query_transfersConnection_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { +func (ec *executionContext) field_Query_teamsStatistics_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} var arg0 *string - if tmp, ok := rawArgs["partyId"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("partyId")) + if tmp, ok := rawArgs["teamId"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("teamId")) arg0, err = ec.unmarshalOID2ᚖstring(ctx, tmp) if err != nil { return nil, err } } - args["partyId"] = arg0 - var arg1 *TransferDirection - if tmp, ok := rawArgs["direction"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("direction")) - arg1, err = ec.unmarshalOTransferDirection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐTransferDirection(ctx, tmp) + args["teamId"] = arg0 + var arg1 *int + if tmp, ok := rawArgs["aggregationEpochs"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("aggregationEpochs")) + arg1, err = ec.unmarshalOInt2ᚖint(ctx, tmp) if err != nil { return nil, err } } - args["direction"] = arg1 + args["aggregationEpochs"] = arg1 var arg2 *v2.Pagination if tmp, ok := rawArgs["pagination"]; ok { ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("pagination")) @@ -17727,66 +17738,204 @@ func (ec *executionContext) field_Query_transfersConnection_args(ctx context.Con } } args["pagination"] = arg2 - var arg3 *bool - if tmp, ok := rawArgs["isReward"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("isReward")) - arg3, err = ec.unmarshalOBoolean2ᚖbool(ctx, tmp) - if err != nil { - return nil, err - } - } - args["isReward"] = arg3 - var arg4 *int - if tmp, ok := rawArgs["fromEpoch"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("fromEpoch")) - arg4, err = ec.unmarshalOInt2ᚖint(ctx, tmp) - if err != nil { - return nil, err - } - } - args["fromEpoch"] = arg4 - var arg5 *int - if tmp, ok := rawArgs["toEpoch"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("toEpoch")) - arg5, err = ec.unmarshalOInt2ᚖint(ctx, tmp) - if err != nil { - return nil, err - } - } - args["toEpoch"] = arg5 - var arg6 *v1.Transfer_Status - if tmp, ok := rawArgs["status"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("status")) - arg6, err = ec.unmarshalOTransferStatus2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐTransfer_Status(ctx, tmp) - if err != nil { - return nil, err - } - } - args["status"] = arg6 - var arg7 *v2.ListTransfersRequest_Scope - if tmp, ok := rawArgs["scope"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("scope")) - arg7, err = ec.unmarshalOTransferScope2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐListTransfersRequest_Scope(ctx, tmp) - if err != nil { - return nil, err - } - } - args["scope"] = arg7 return args, nil } -func (ec *executionContext) field_Query_volumeDiscountStats_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { +func (ec *executionContext) field_Query_teams_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} - var arg0 *int - if tmp, ok := rawArgs["epoch"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("epoch")) - arg0, err = ec.unmarshalOInt2ᚖint(ctx, tmp) + var arg0 *string + if tmp, ok := rawArgs["teamId"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("teamId")) + arg0, err = ec.unmarshalOID2ᚖstring(ctx, tmp) if err != nil { return nil, err } } - args["epoch"] = arg0 + args["teamId"] = arg0 + var arg1 *string + if tmp, ok := rawArgs["partyId"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("partyId")) + arg1, err = ec.unmarshalOID2ᚖstring(ctx, tmp) + if err != nil { + return nil, err + } + } + args["partyId"] = arg1 + var arg2 *v2.Pagination + if tmp, ok := rawArgs["pagination"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("pagination")) + arg2, err = ec.unmarshalOPagination2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐPagination(ctx, tmp) + if err != nil { + return nil, err + } + } + args["pagination"] = arg2 + return args, nil +} + +func (ec *executionContext) field_Query_totalTransferFeeDiscount_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + var arg0 string + if tmp, ok := rawArgs["partyId"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("partyId")) + arg0, err = ec.unmarshalNString2string(ctx, tmp) + if err != nil { + return nil, err + } + } + args["partyId"] = arg0 + var arg1 string + if tmp, ok := rawArgs["assetId"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("assetId")) + arg1, err = ec.unmarshalNString2string(ctx, tmp) + if err != nil { + return nil, err + } + } + args["assetId"] = arg1 + return args, nil +} + +func (ec *executionContext) field_Query_trades_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + var arg0 *TradesFilter + if tmp, ok := rawArgs["filter"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("filter")) + arg0, err = ec.unmarshalOTradesFilter2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐTradesFilter(ctx, tmp) + if err != nil { + return nil, err + } + } + args["filter"] = arg0 + var arg1 *v2.Pagination + if tmp, ok := rawArgs["pagination"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("pagination")) + arg1, err = ec.unmarshalOPagination2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐPagination(ctx, tmp) + if err != nil { + return nil, err + } + } + args["pagination"] = arg1 + var arg2 *v2.DateRange + if tmp, ok := rawArgs["dateRange"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("dateRange")) + arg2, err = ec.unmarshalODateRange2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDateRange(ctx, tmp) + if err != nil { + return nil, err + } + } + args["dateRange"] = arg2 + return args, nil +} + +func (ec *executionContext) field_Query_transfer_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + var arg0 string + if tmp, ok := rawArgs["id"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("id")) + arg0, err = ec.unmarshalNID2string(ctx, tmp) + if err != nil { + return nil, err + } + } + args["id"] = arg0 + return args, nil +} + +func (ec *executionContext) field_Query_transfersConnection_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + var arg0 *string + if tmp, ok := rawArgs["partyId"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("partyId")) + arg0, err = ec.unmarshalOID2ᚖstring(ctx, tmp) + if err != nil { + return nil, err + } + } + args["partyId"] = arg0 + var arg1 *TransferDirection + if tmp, ok := rawArgs["direction"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("direction")) + arg1, err = ec.unmarshalOTransferDirection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐTransferDirection(ctx, tmp) + if err != nil { + return nil, err + } + } + args["direction"] = arg1 + var arg2 *v2.Pagination + if tmp, ok := rawArgs["pagination"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("pagination")) + arg2, err = ec.unmarshalOPagination2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐPagination(ctx, tmp) + if err != nil { + return nil, err + } + } + args["pagination"] = arg2 + var arg3 *bool + if tmp, ok := rawArgs["isReward"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("isReward")) + arg3, err = ec.unmarshalOBoolean2ᚖbool(ctx, tmp) + if err != nil { + return nil, err + } + } + args["isReward"] = arg3 + var arg4 *int + if tmp, ok := rawArgs["fromEpoch"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("fromEpoch")) + arg4, err = ec.unmarshalOInt2ᚖint(ctx, tmp) + if err != nil { + return nil, err + } + } + args["fromEpoch"] = arg4 + var arg5 *int + if tmp, ok := rawArgs["toEpoch"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("toEpoch")) + arg5, err = ec.unmarshalOInt2ᚖint(ctx, tmp) + if err != nil { + return nil, err + } + } + args["toEpoch"] = arg5 + var arg6 *v1.Transfer_Status + if tmp, ok := rawArgs["status"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("status")) + arg6, err = ec.unmarshalOTransferStatus2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐTransfer_Status(ctx, tmp) + if err != nil { + return nil, err + } + } + args["status"] = arg6 + var arg7 *v2.ListTransfersRequest_Scope + if tmp, ok := rawArgs["scope"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("scope")) + arg7, err = ec.unmarshalOTransferScope2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐListTransfersRequest_Scope(ctx, tmp) + if err != nil { + return nil, err + } + } + args["scope"] = arg7 + return args, nil +} + +func (ec *executionContext) field_Query_volumeDiscountStats_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + var arg0 *int + if tmp, ok := rawArgs["epoch"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("epoch")) + arg0, err = ec.unmarshalOInt2ᚖint(ctx, tmp) + if err != nil { + return nil, err + } + } + args["epoch"] = arg0 var arg1 *string if tmp, ok := rawArgs["partyId"]; ok { ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("partyId")) @@ -72472,6 +72621,64 @@ func (ec *executionContext) fieldContext_Query_teamsStatistics(ctx context.Conte return fc, nil } +func (ec *executionContext) _Query_teamMembersStatistics(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Query_teamMembersStatistics(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Query().TeamMembersStatistics(rctx, fc.Args["teamId"].(string), fc.Args["partyId"].(*string), fc.Args["aggregationEpochs"].(*int), fc.Args["pagination"].(*v2.Pagination)) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*v2.TeamMembersStatisticsConnection) + fc.Result = res + return ec.marshalOTeamMembersStatisticsConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐTeamMembersStatisticsConnection(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Query_teamMembersStatistics(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Query", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "edges": + return ec.fieldContext_TeamMembersStatisticsConnection_edges(ctx, field) + case "pageInfo": + return ec.fieldContext_TeamMembersStatisticsConnection_pageInfo(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type TeamMembersStatisticsConnection", field.Name) + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_Query_teamMembersStatistics_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return + } + return fc, nil +} + func (ec *executionContext) _Query_teamReferees(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { fc, err := ec.fieldContext_Query_teamReferees(ctx, field) if err != nil { @@ -84059,8 +84266,8 @@ func (ec *executionContext) fieldContext_TeamGameEntity_totalRewardsEarned(ctx c return fc, nil } -func (ec *executionContext) _TeamParticipation_teamId(ctx context.Context, field graphql.CollectedField, obj *TeamParticipation) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_TeamParticipation_teamId(ctx, field) +func (ec *executionContext) _TeamMemberStatistics_partyId(ctx context.Context, field graphql.CollectedField, obj *v2.TeamMemberStatistics) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamMemberStatistics_partyId(ctx, field) if err != nil { return graphql.Null } @@ -84073,7 +84280,7 @@ func (ec *executionContext) _TeamParticipation_teamId(ctx context.Context, field }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { ctx = rctx // use context from middleware stack in children - return obj.TeamID, nil + return obj.PartyId, nil }) if err != nil { ec.Error(ctx, err) @@ -84087,24 +84294,24 @@ func (ec *executionContext) _TeamParticipation_teamId(ctx context.Context, field } res := resTmp.(string) fc.Result = res - return ec.marshalNID2string(ctx, field.Selections, res) + return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TeamParticipation_teamId(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TeamMemberStatistics_partyId(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "TeamParticipation", + Object: "TeamMemberStatistics", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type ID does not have child fields") + return nil, errors.New("field of type String does not have child fields") }, } return fc, nil } -func (ec *executionContext) _TeamParticipation_membersParticipating(ctx context.Context, field graphql.CollectedField, obj *TeamParticipation) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_TeamParticipation_membersParticipating(ctx, field) +func (ec *executionContext) _TeamMemberStatistics_totalQuantumVolume(ctx context.Context, field graphql.CollectedField, obj *v2.TeamMemberStatistics) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamMemberStatistics_totalQuantumVolume(ctx, field) if err != nil { return graphql.Null } @@ -84117,7 +84324,7 @@ func (ec *executionContext) _TeamParticipation_membersParticipating(ctx context. }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { ctx = rctx // use context from middleware stack in children - return obj.MembersParticipating, nil + return obj.TotalQuantumVolume, nil }) if err != nil { ec.Error(ctx, err) @@ -84129,40 +84336,26 @@ func (ec *executionContext) _TeamParticipation_membersParticipating(ctx context. } return graphql.Null } - res := resTmp.([]*IndividualGameEntity) + res := resTmp.(string) fc.Result = res - return ec.marshalNIndividualGameEntity2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐIndividualGameEntityᚄ(ctx, field.Selections, res) + return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TeamParticipation_membersParticipating(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TeamMemberStatistics_totalQuantumVolume(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "TeamParticipation", + Object: "TeamMemberStatistics", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "individual": - return ec.fieldContext_IndividualGameEntity_individual(ctx, field) - case "rank": - return ec.fieldContext_IndividualGameEntity_rank(ctx, field) - case "volume": - return ec.fieldContext_IndividualGameEntity_volume(ctx, field) - case "rewardMetric": - return ec.fieldContext_IndividualGameEntity_rewardMetric(ctx, field) - case "rewardEarned": - return ec.fieldContext_IndividualGameEntity_rewardEarned(ctx, field) - case "totalRewardsEarned": - return ec.fieldContext_IndividualGameEntity_totalRewardsEarned(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type IndividualGameEntity", field.Name) + return nil, errors.New("field of type String does not have child fields") }, } return fc, nil } -func (ec *executionContext) _TeamReferee_teamId(ctx context.Context, field graphql.CollectedField, obj *v2.TeamReferee) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_TeamReferee_teamId(ctx, field) +func (ec *executionContext) _TeamMemberStatistics_totalQuantumRewards(ctx context.Context, field graphql.CollectedField, obj *v2.TeamMemberStatistics) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamMemberStatistics_totalQuantumRewards(ctx, field) if err != nil { return graphql.Null } @@ -84175,7 +84368,7 @@ func (ec *executionContext) _TeamReferee_teamId(ctx context.Context, field graph }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { ctx = rctx // use context from middleware stack in children - return obj.TeamId, nil + return obj.TotalQuantumRewards, nil }) if err != nil { ec.Error(ctx, err) @@ -84189,24 +84382,24 @@ func (ec *executionContext) _TeamReferee_teamId(ctx context.Context, field graph } res := resTmp.(string) fc.Result = res - return ec.marshalNID2string(ctx, field.Selections, res) + return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TeamReferee_teamId(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TeamMemberStatistics_totalQuantumRewards(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "TeamReferee", + Object: "TeamMemberStatistics", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type ID does not have child fields") + return nil, errors.New("field of type String does not have child fields") }, } return fc, nil } -func (ec *executionContext) _TeamReferee_referee(ctx context.Context, field graphql.CollectedField, obj *v2.TeamReferee) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_TeamReferee_referee(ctx, field) +func (ec *executionContext) _TeamMemberStatistics_quantumRewards(ctx context.Context, field graphql.CollectedField, obj *v2.TeamMemberStatistics) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamMemberStatistics_quantumRewards(ctx, field) if err != nil { return graphql.Null } @@ -84219,7 +84412,7 @@ func (ec *executionContext) _TeamReferee_referee(ctx context.Context, field grap }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { ctx = rctx // use context from middleware stack in children - return obj.Referee, nil + return obj.QuantumRewards, nil }) if err != nil { ec.Error(ctx, err) @@ -84231,26 +84424,32 @@ func (ec *executionContext) _TeamReferee_referee(ctx context.Context, field grap } return graphql.Null } - res := resTmp.(string) + res := resTmp.([]*v2.QuantumRewardsPerEpoch) fc.Result = res - return ec.marshalNID2string(ctx, field.Selections, res) + return ec.marshalNQuantumRewardsPerEpoch2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐQuantumRewardsPerEpochᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TeamReferee_referee(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TeamMemberStatistics_quantumRewards(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "TeamReferee", + Object: "TeamMemberStatistics", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type ID does not have child fields") + switch field.Name { + case "epoch": + return ec.fieldContext_QuantumRewardsPerEpoch_epoch(ctx, field) + case "total_quantum_rewards": + return ec.fieldContext_QuantumRewardsPerEpoch_total_quantum_rewards(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type QuantumRewardsPerEpoch", field.Name) }, } return fc, nil } -func (ec *executionContext) _TeamReferee_joinedAt(ctx context.Context, field graphql.CollectedField, obj *v2.TeamReferee) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_TeamReferee_joinedAt(ctx, field) +func (ec *executionContext) _TeamMemberStatistics_totalGamesPlayed(ctx context.Context, field graphql.CollectedField, obj *v2.TeamMemberStatistics) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamMemberStatistics_totalGamesPlayed(ctx, field) if err != nil { return graphql.Null } @@ -84263,7 +84462,7 @@ func (ec *executionContext) _TeamReferee_joinedAt(ctx context.Context, field gra }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { ctx = rctx // use context from middleware stack in children - return obj.JoinedAt, nil + return ec.resolvers.TeamMemberStatistics().TotalGamesPlayed(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -84275,26 +84474,70 @@ func (ec *executionContext) _TeamReferee_joinedAt(ctx context.Context, field gra } return graphql.Null } - res := resTmp.(int64) + res := resTmp.(int) fc.Result = res - return ec.marshalNTimestamp2int64(ctx, field.Selections, res) + return ec.marshalNInt2int(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TeamReferee_joinedAt(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TeamMemberStatistics_totalGamesPlayed(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "TeamReferee", + Object: "TeamMemberStatistics", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Int does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TeamMemberStatistics_gamesPlayed(ctx context.Context, field graphql.CollectedField, obj *v2.TeamMemberStatistics) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamMemberStatistics_gamesPlayed(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.GamesPlayed, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]string) + fc.Result = res + return ec.marshalNString2ᚕstringᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TeamMemberStatistics_gamesPlayed(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TeamMemberStatistics", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Timestamp does not have child fields") + return nil, errors.New("field of type String does not have child fields") }, } return fc, nil } -func (ec *executionContext) _TeamReferee_joinedAtEpoch(ctx context.Context, field graphql.CollectedField, obj *v2.TeamReferee) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_TeamReferee_joinedAtEpoch(ctx, field) +func (ec *executionContext) _TeamMemberStatisticsEdge_node(ctx context.Context, field graphql.CollectedField, obj *v2.TeamMemberStatisticsEdge) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamMemberStatisticsEdge_node(ctx, field) if err != nil { return graphql.Null } @@ -84307,7 +84550,7 @@ func (ec *executionContext) _TeamReferee_joinedAtEpoch(ctx context.Context, fiel }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.TeamReferee().JoinedAtEpoch(rctx, obj) + return obj.Node, nil }) if err != nil { ec.Error(ctx, err) @@ -84319,26 +84562,84 @@ func (ec *executionContext) _TeamReferee_joinedAtEpoch(ctx context.Context, fiel } return graphql.Null } - res := resTmp.(int) + res := resTmp.(*v2.TeamMemberStatistics) fc.Result = res - return ec.marshalNInt2int(ctx, field.Selections, res) + return ec.marshalNTeamMemberStatistics2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐTeamMemberStatistics(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TeamReferee_joinedAtEpoch(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TeamMemberStatisticsEdge_node(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "TeamReferee", + Object: "TeamMemberStatisticsEdge", Field: field, - IsMethod: true, - IsResolver: true, + IsMethod: false, + IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Int does not have child fields") + switch field.Name { + case "partyId": + return ec.fieldContext_TeamMemberStatistics_partyId(ctx, field) + case "totalQuantumVolume": + return ec.fieldContext_TeamMemberStatistics_totalQuantumVolume(ctx, field) + case "totalQuantumRewards": + return ec.fieldContext_TeamMemberStatistics_totalQuantumRewards(ctx, field) + case "quantumRewards": + return ec.fieldContext_TeamMemberStatistics_quantumRewards(ctx, field) + case "totalGamesPlayed": + return ec.fieldContext_TeamMemberStatistics_totalGamesPlayed(ctx, field) + case "gamesPlayed": + return ec.fieldContext_TeamMemberStatistics_gamesPlayed(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type TeamMemberStatistics", field.Name) }, } return fc, nil } -func (ec *executionContext) _TeamRefereeConnection_edges(ctx context.Context, field graphql.CollectedField, obj *v2.TeamRefereeConnection) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_TeamRefereeConnection_edges(ctx, field) +func (ec *executionContext) _TeamMemberStatisticsEdge_cursor(ctx context.Context, field graphql.CollectedField, obj *v2.TeamMemberStatisticsEdge) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamMemberStatisticsEdge_cursor(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Cursor, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TeamMemberStatisticsEdge_cursor(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TeamMemberStatisticsEdge", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TeamMembersStatisticsConnection_edges(ctx context.Context, field graphql.CollectedField, obj *v2.TeamMembersStatisticsConnection) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamMembersStatisticsConnection_edges(ctx, field) if err != nil { return graphql.Null } @@ -84363,32 +84664,414 @@ func (ec *executionContext) _TeamRefereeConnection_edges(ctx context.Context, fi } return graphql.Null } - res := resTmp.([]*v2.TeamRefereeEdge) + res := resTmp.([]*v2.TeamMemberStatisticsEdge) fc.Result = res - return ec.marshalNTeamRefereeEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐTeamRefereeEdgeᚄ(ctx, field.Selections, res) + return ec.marshalNTeamMemberStatisticsEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐTeamMemberStatisticsEdgeᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TeamRefereeConnection_edges(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TeamMembersStatisticsConnection_edges(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "TeamRefereeConnection", + Object: "TeamMembersStatisticsConnection", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { case "node": - return ec.fieldContext_TeamRefereeEdge_node(ctx, field) + return ec.fieldContext_TeamMemberStatisticsEdge_node(ctx, field) case "cursor": - return ec.fieldContext_TeamRefereeEdge_cursor(ctx, field) + return ec.fieldContext_TeamMemberStatisticsEdge_cursor(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type TeamRefereeEdge", field.Name) + return nil, fmt.Errorf("no field named %q was found under type TeamMemberStatisticsEdge", field.Name) }, } return fc, nil } -func (ec *executionContext) _TeamRefereeConnection_pageInfo(ctx context.Context, field graphql.CollectedField, obj *v2.TeamRefereeConnection) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_TeamRefereeConnection_pageInfo(ctx, field) +func (ec *executionContext) _TeamMembersStatisticsConnection_pageInfo(ctx context.Context, field graphql.CollectedField, obj *v2.TeamMembersStatisticsConnection) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamMembersStatisticsConnection_pageInfo(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.PageInfo, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(*v2.PageInfo) + fc.Result = res + return ec.marshalNPageInfo2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐPageInfo(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TeamMembersStatisticsConnection_pageInfo(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TeamMembersStatisticsConnection", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "hasNextPage": + return ec.fieldContext_PageInfo_hasNextPage(ctx, field) + case "hasPreviousPage": + return ec.fieldContext_PageInfo_hasPreviousPage(ctx, field) + case "startCursor": + return ec.fieldContext_PageInfo_startCursor(ctx, field) + case "endCursor": + return ec.fieldContext_PageInfo_endCursor(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type PageInfo", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _TeamParticipation_teamId(ctx context.Context, field graphql.CollectedField, obj *TeamParticipation) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamParticipation_teamId(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.TeamID, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNID2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TeamParticipation_teamId(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TeamParticipation", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type ID does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TeamParticipation_membersParticipating(ctx context.Context, field graphql.CollectedField, obj *TeamParticipation) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamParticipation_membersParticipating(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.MembersParticipating, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]*IndividualGameEntity) + fc.Result = res + return ec.marshalNIndividualGameEntity2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐIndividualGameEntityᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TeamParticipation_membersParticipating(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TeamParticipation", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "individual": + return ec.fieldContext_IndividualGameEntity_individual(ctx, field) + case "rank": + return ec.fieldContext_IndividualGameEntity_rank(ctx, field) + case "volume": + return ec.fieldContext_IndividualGameEntity_volume(ctx, field) + case "rewardMetric": + return ec.fieldContext_IndividualGameEntity_rewardMetric(ctx, field) + case "rewardEarned": + return ec.fieldContext_IndividualGameEntity_rewardEarned(ctx, field) + case "totalRewardsEarned": + return ec.fieldContext_IndividualGameEntity_totalRewardsEarned(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type IndividualGameEntity", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _TeamReferee_teamId(ctx context.Context, field graphql.CollectedField, obj *v2.TeamReferee) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamReferee_teamId(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.TeamId, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNID2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TeamReferee_teamId(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TeamReferee", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type ID does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TeamReferee_referee(ctx context.Context, field graphql.CollectedField, obj *v2.TeamReferee) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamReferee_referee(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Referee, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNID2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TeamReferee_referee(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TeamReferee", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type ID does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TeamReferee_joinedAt(ctx context.Context, field graphql.CollectedField, obj *v2.TeamReferee) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamReferee_joinedAt(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.JoinedAt, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(int64) + fc.Result = res + return ec.marshalNTimestamp2int64(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TeamReferee_joinedAt(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TeamReferee", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Timestamp does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TeamReferee_joinedAtEpoch(ctx context.Context, field graphql.CollectedField, obj *v2.TeamReferee) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamReferee_joinedAtEpoch(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.TeamReferee().JoinedAtEpoch(rctx, obj) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(int) + fc.Result = res + return ec.marshalNInt2int(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TeamReferee_joinedAtEpoch(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TeamReferee", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Int does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TeamRefereeConnection_edges(ctx context.Context, field graphql.CollectedField, obj *v2.TeamRefereeConnection) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamRefereeConnection_edges(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Edges, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]*v2.TeamRefereeEdge) + fc.Result = res + return ec.marshalNTeamRefereeEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐTeamRefereeEdgeᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TeamRefereeConnection_edges(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TeamRefereeConnection", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "node": + return ec.fieldContext_TeamRefereeEdge_node(ctx, field) + case "cursor": + return ec.fieldContext_TeamRefereeEdge_cursor(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type TeamRefereeEdge", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _TeamRefereeConnection_pageInfo(ctx context.Context, field graphql.CollectedField, obj *v2.TeamRefereeConnection) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamRefereeConnection_pageInfo(ctx, field) if err != nil { return graphql.Null } @@ -85053,8 +85736,8 @@ func (ec *executionContext) fieldContext_TeamStatistics_quantumRewards(ctx conte return fc, nil } -func (ec *executionContext) _TeamStatistics_totalGamePlayed(ctx context.Context, field graphql.CollectedField, obj *v2.TeamStatistics) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_TeamStatistics_totalGamePlayed(ctx, field) +func (ec *executionContext) _TeamStatistics_totalGamesPlayed(ctx context.Context, field graphql.CollectedField, obj *v2.TeamStatistics) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TeamStatistics_totalGamesPlayed(ctx, field) if err != nil { return graphql.Null } @@ -85067,7 +85750,7 @@ func (ec *executionContext) _TeamStatistics_totalGamePlayed(ctx context.Context, }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.TeamStatistics().TotalGamePlayed(rctx, obj) + return ec.resolvers.TeamStatistics().TotalGamesPlayed(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -85084,7 +85767,7 @@ func (ec *executionContext) _TeamStatistics_totalGamePlayed(ctx context.Context, return ec.marshalNInt2int(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TeamStatistics_totalGamePlayed(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TeamStatistics_totalGamesPlayed(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TeamStatistics", Field: field, @@ -85188,8 +85871,8 @@ func (ec *executionContext) fieldContext_TeamStatisticsEdge_node(ctx context.Con return ec.fieldContext_TeamStatistics_totalQuantumRewards(ctx, field) case "quantumRewards": return ec.fieldContext_TeamStatistics_quantumRewards(ctx, field) - case "totalGamePlayed": - return ec.fieldContext_TeamStatistics_totalGamePlayed(ctx, field) + case "totalGamesPlayed": + return ec.fieldContext_TeamStatistics_totalGamesPlayed(ctx, field) case "gamesPlayed": return ec.fieldContext_TeamStatistics_gamesPlayed(ctx, field) } @@ -113628,6 +114311,26 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr return ec.OperationContext.RootResolverMiddleware(ctx, innerFunc) } + out.Concurrently(i, func() graphql.Marshaler { + return rrm(innerCtx) + }) + case "teamMembersStatistics": + field := field + + innerFunc := func(ctx context.Context) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Query_teamMembersStatistics(ctx, field) + return res + } + + rrm := func(ctx context.Context) graphql.Marshaler { + return ec.OperationContext.RootResolverMiddleware(ctx, innerFunc) + } + out.Concurrently(i, func() graphql.Marshaler { return rrm(innerCtx) }) @@ -117062,6 +117765,152 @@ func (ec *executionContext) _TeamGameEntity(ctx context.Context, sel ast.Selecti return out } +var teamMemberStatisticsImplementors = []string{"TeamMemberStatistics"} + +func (ec *executionContext) _TeamMemberStatistics(ctx context.Context, sel ast.SelectionSet, obj *v2.TeamMemberStatistics) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, teamMemberStatisticsImplementors) + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("TeamMemberStatistics") + case "partyId": + + out.Values[i] = ec._TeamMemberStatistics_partyId(ctx, field, obj) + + if out.Values[i] == graphql.Null { + atomic.AddUint32(&invalids, 1) + } + case "totalQuantumVolume": + + out.Values[i] = ec._TeamMemberStatistics_totalQuantumVolume(ctx, field, obj) + + if out.Values[i] == graphql.Null { + atomic.AddUint32(&invalids, 1) + } + case "totalQuantumRewards": + + out.Values[i] = ec._TeamMemberStatistics_totalQuantumRewards(ctx, field, obj) + + if out.Values[i] == graphql.Null { + atomic.AddUint32(&invalids, 1) + } + case "quantumRewards": + + out.Values[i] = ec._TeamMemberStatistics_quantumRewards(ctx, field, obj) + + if out.Values[i] == graphql.Null { + atomic.AddUint32(&invalids, 1) + } + case "totalGamesPlayed": + field := field + + innerFunc := func(ctx context.Context) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._TeamMemberStatistics_totalGamesPlayed(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&invalids, 1) + } + return res + } + + out.Concurrently(i, func() graphql.Marshaler { + return innerFunc(ctx) + + }) + case "gamesPlayed": + + out.Values[i] = ec._TeamMemberStatistics_gamesPlayed(ctx, field, obj) + + if out.Values[i] == graphql.Null { + atomic.AddUint32(&invalids, 1) + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +var teamMemberStatisticsEdgeImplementors = []string{"TeamMemberStatisticsEdge"} + +func (ec *executionContext) _TeamMemberStatisticsEdge(ctx context.Context, sel ast.SelectionSet, obj *v2.TeamMemberStatisticsEdge) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, teamMemberStatisticsEdgeImplementors) + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("TeamMemberStatisticsEdge") + case "node": + + out.Values[i] = ec._TeamMemberStatisticsEdge_node(ctx, field, obj) + + if out.Values[i] == graphql.Null { + invalids++ + } + case "cursor": + + out.Values[i] = ec._TeamMemberStatisticsEdge_cursor(ctx, field, obj) + + if out.Values[i] == graphql.Null { + invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +var teamMembersStatisticsConnectionImplementors = []string{"TeamMembersStatisticsConnection"} + +func (ec *executionContext) _TeamMembersStatisticsConnection(ctx context.Context, sel ast.SelectionSet, obj *v2.TeamMembersStatisticsConnection) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, teamMembersStatisticsConnectionImplementors) + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("TeamMembersStatisticsConnection") + case "edges": + + out.Values[i] = ec._TeamMembersStatisticsConnection_edges(ctx, field, obj) + + if out.Values[i] == graphql.Null { + invalids++ + } + case "pageInfo": + + out.Values[i] = ec._TeamMembersStatisticsConnection_pageInfo(ctx, field, obj) + + if out.Values[i] == graphql.Null { + invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + var teamParticipationImplementors = []string{"TeamParticipation"} func (ec *executionContext) _TeamParticipation(ctx context.Context, sel ast.SelectionSet, obj *TeamParticipation) graphql.Marshaler { @@ -117392,7 +118241,7 @@ func (ec *executionContext) _TeamStatistics(ctx context.Context, sel ast.Selecti if out.Values[i] == graphql.Null { atomic.AddUint32(&invalids, 1) } - case "totalGamePlayed": + case "totalGamesPlayed": field := field innerFunc := func(ctx context.Context) (res graphql.Marshaler) { @@ -117401,7 +118250,7 @@ func (ec *executionContext) _TeamStatistics(ctx context.Context, sel ast.Selecti ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._TeamStatistics_totalGamePlayed(ctx, field, obj) + res = ec._TeamStatistics_totalGamesPlayed(ctx, field, obj) if res == graphql.Null { atomic.AddUint32(&invalids, 1) } @@ -124643,6 +125492,70 @@ func (ec *executionContext) marshalNTeamEdge2ᚖcodeᚗvegaprotocolᚗioᚋvega return ec._TeamEdge(ctx, sel, v) } +func (ec *executionContext) marshalNTeamMemberStatistics2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐTeamMemberStatistics(ctx context.Context, sel ast.SelectionSet, v *v2.TeamMemberStatistics) graphql.Marshaler { + if v == nil { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + return graphql.Null + } + return ec._TeamMemberStatistics(ctx, sel, v) +} + +func (ec *executionContext) marshalNTeamMemberStatisticsEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐTeamMemberStatisticsEdgeᚄ(ctx context.Context, sel ast.SelectionSet, v []*v2.TeamMemberStatisticsEdge) graphql.Marshaler { + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalNTeamMemberStatisticsEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐTeamMemberStatisticsEdge(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + + return ret +} + +func (ec *executionContext) marshalNTeamMemberStatisticsEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐTeamMemberStatisticsEdge(ctx context.Context, sel ast.SelectionSet, v *v2.TeamMemberStatisticsEdge) graphql.Marshaler { + if v == nil { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + return graphql.Null + } + return ec._TeamMemberStatisticsEdge(ctx, sel, v) +} + func (ec *executionContext) marshalNTeamParticipation2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐTeamParticipation(ctx context.Context, sel ast.SelectionSet, v *TeamParticipation) graphql.Marshaler { if v == nil { if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { @@ -130793,6 +131706,13 @@ func (ec *executionContext) marshalOTeamConnection2ᚖcodeᚗvegaprotocolᚗio return ec._TeamConnection(ctx, sel, v) } +func (ec *executionContext) marshalOTeamMembersStatisticsConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐTeamMembersStatisticsConnection(ctx context.Context, sel ast.SelectionSet, v *v2.TeamMembersStatisticsConnection) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._TeamMembersStatisticsConnection(ctx, sel, v) +} + func (ec *executionContext) marshalOTeamRefereeConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐTeamRefereeConnection(ctx context.Context, sel ast.SelectionSet, v *v2.TeamRefereeConnection) graphql.Marshaler { if v == nil { return graphql.Null diff --git a/datanode/gateway/graphql/gqlgen.yml b/datanode/gateway/graphql/gqlgen.yml index 55bff3db6d..f875186967 100644 --- a/datanode/gateway/graphql/gqlgen.yml +++ b/datanode/gateway/graphql/gqlgen.yml @@ -696,6 +696,12 @@ models: model: code.vegaprotocol.io/vega/protos/data-node/api/v2.TeamStatisticsEdge TeamsStatisticsConnection: model: code.vegaprotocol.io/vega/protos/data-node/api/v2.TeamsStatisticsConnection + TeamMemberStatistics: + model: code.vegaprotocol.io/vega/protos/data-node/api/v2.TeamMemberStatistics + TeamMemberStatisticsEdge: + model: code.vegaprotocol.io/vega/protos/data-node/api/v2.TeamMemberStatisticsEdge + TeamMembersStatisticsConnection: + model: code.vegaprotocol.io/vega/protos/data-node/api/v2.TeamMembersStatisticsConnection TeamReferee: model: code.vegaprotocol.io/vega/protos/data-node/api/v2.TeamReferee TeamRefereeEdge: diff --git a/datanode/gateway/graphql/mocks/mocks.go b/datanode/gateway/graphql/mocks/mocks.go index 156fcc5b8e..f3789d3741 100644 --- a/datanode/gateway/graphql/mocks/mocks.go +++ b/datanode/gateway/graphql/mocks/mocks.go @@ -2120,6 +2120,26 @@ func (mr *MockTradingDataServiceClientV2MockRecorder) ListSuccessorMarkets(arg0, return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSuccessorMarkets", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListSuccessorMarkets), varargs...) } +// ListTeamMembersStatistics mocks base method. +func (m *MockTradingDataServiceClientV2) ListTeamMembersStatistics(arg0 context.Context, arg1 *v2.ListTeamMembersStatisticsRequest, arg2 ...grpc.CallOption) (*v2.ListTeamMembersStatisticsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListTeamMembersStatistics", varargs...) + ret0, _ := ret[0].(*v2.ListTeamMembersStatisticsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListTeamMembersStatistics indicates an expected call of ListTeamMembersStatistics. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListTeamMembersStatistics(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTeamMembersStatistics", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListTeamMembersStatistics), varargs...) +} + // ListTeamRefereeHistory mocks base method. func (m *MockTradingDataServiceClientV2) ListTeamRefereeHistory(arg0 context.Context, arg1 *v2.ListTeamRefereeHistoryRequest, arg2 ...grpc.CallOption) (*v2.ListTeamRefereeHistoryResponse, error) { m.ctrl.T.Helper() diff --git a/datanode/gateway/graphql/resolvers.go b/datanode/gateway/graphql/resolvers.go index 12e52e79d4..468d6a74c8 100644 --- a/datanode/gateway/graphql/resolvers.go +++ b/datanode/gateway/graphql/resolvers.go @@ -533,6 +533,10 @@ func (r *VegaResolverRoot) QuantumRewardsPerEpoch() QuantumRewardsPerEpochResolv return (*quantumRewardsPerEpochResolver)(r) } +func (r *VegaResolverRoot) TeamMemberStatistics() TeamMemberStatisticsResolver { + return (*teamMemberStatsResolver)(r) +} + func (r *VegaResolverRoot) TeamReferee() TeamRefereeResolver { return (*teamRefereeResolver)(r) } @@ -1797,6 +1801,25 @@ func (r *myQueryResolver) TeamsStatistics(ctx context.Context, teamID *string, a return stats.Statistics, nil } +func (r *myQueryResolver) TeamMembersStatistics(ctx context.Context, teamID string, partyID *string, aggregationEpochs *int, pagination *v2.Pagination) (*v2.TeamMembersStatisticsConnection, error) { + filters := &v2.ListTeamMembersStatisticsRequest{ + TeamId: teamID, + PartyId: partyID, + Pagination: pagination, + } + + if aggregationEpochs != nil { + filters.AggregationEpochs = ptr.From(uint64(*aggregationEpochs)) + } + + stats, err := r.tradingDataClientV2.ListTeamMembersStatistics(ctx, filters) + if err != nil { + return nil, err + } + + return stats.Statistics, nil +} + func (r *myQueryResolver) TeamReferees(ctx context.Context, teamID string, pagination *v2.Pagination) (*v2.TeamRefereeConnection, error) { referees, err := r.tradingDataClientV2.ListTeamReferees(ctx, &v2.ListTeamRefereesRequest{ TeamId: teamID, diff --git a/datanode/gateway/graphql/schema.graphql b/datanode/gateway/graphql/schema.graphql index 1134b5486f..f84dcf47ac 100644 --- a/datanode/gateway/graphql/schema.graphql +++ b/datanode/gateway/graphql/schema.graphql @@ -1018,12 +1018,28 @@ type Query { teamsStatistics( "Optional team ID to filter for" teamId: ID - "Optional number of epochs to aggregate referee volume and reward statistics for. If omitted, the default is 30 epochs." + "Optional number of epochs to aggregate referee volume and reward statistics for. If omitted, the default is 10 epochs." aggregationEpochs: Int "Optional pagination information" pagination: Pagination ): TeamsStatisticsConnection + """ + List team members' statistics for a given team + Get the statistics of all team members for a given team ID, or for a specific member by using party ID, over a number of epochs. + If a team does not have at least the number of epochs worth of data, it is ignored. + """ + teamMembersStatistics( + "Team ID to filter for" + teamId: ID! + "Optional party ID to filter for" + partyId: ID + "Optional number of epochs to aggregate referee volume and reward statistics for. If omitted, the default is 10 epochs." + aggregationEpochs: Int + "Optional pagination information" + pagination: Pagination + ): TeamMembersStatisticsConnection + "List all referees for a team" teamReferees( "ID of the team to list referees for" @@ -6505,7 +6521,7 @@ type TeamStatistics { "List of rewards over the requested epoch period, expressed in quantum value for each epoch" quantumRewards: [QuantumRewardsPerEpoch!]! "Total of games played." - totalGamePlayed: Int! + totalGamesPlayed: Int! "List of games played over the requested epoch period." gamesPlayed: [String!]! } @@ -6533,6 +6549,38 @@ type TeamsStatisticsConnection { pageInfo: PageInfo! } +"Team member's statistics record containing the member's information." +type TeamMemberStatistics { + "Party ID the statistics are related to." + partyId: String! + "Total of volume accumulated over the requested epoch period, expressed in quantum value." + totalQuantumVolume: String! + "Total of rewards accumulated over the requested epoch period, expressed in quantum value." + totalQuantumRewards: String! + "List of rewards over the requested epoch period, expressed in quantum value for each epoch" + quantumRewards: [QuantumRewardsPerEpoch!]! + "Total number of games played." + totalGamesPlayed: Int! + "List of games played over the requested epoch period." + gamesPlayed: [String!]! +} + +"Edge type containing a team member statistics cursor and its associated statistics data" +type TeamMemberStatisticsEdge { + "Team member's statistics data" + node: TeamMemberStatistics! + "Cursor identifying the team data" + cursor: String! +} + +"Connection type for retrieving cursor-based paginated team member statistics data" +type TeamMembersStatisticsConnection { + "Team members' statistics in this connection" + edges: [TeamMemberStatisticsEdge!]! + "Pagination information" + pageInfo: PageInfo! +} + "A team's referee info" type TeamReferee { "Team ID." diff --git a/datanode/gateway/graphql/team_resolvers.go b/datanode/gateway/graphql/team_resolvers.go index 30451cb641..40585eb031 100644 --- a/datanode/gateway/graphql/team_resolvers.go +++ b/datanode/gateway/graphql/team_resolvers.go @@ -41,12 +41,18 @@ func (t teamRefereeHistoryResolver) JoinedAtEpoch(_ context.Context, obj *v2.Tea type teamStatsResolver VegaResolverRoot -func (t teamStatsResolver) TotalGamePlayed(ctx context.Context, obj *v2.TeamStatistics) (int, error) { - return int(obj.TotalGamePlayed), nil +func (t teamStatsResolver) TotalGamesPlayed(_ context.Context, obj *v2.TeamStatistics) (int, error) { + return int(obj.TotalGamesPlayed), nil } type quantumRewardsPerEpochResolver VegaResolverRoot -func (q quantumRewardsPerEpochResolver) Epoch(ctx context.Context, obj *v2.QuantumRewardsPerEpoch) (int, error) { +func (q quantumRewardsPerEpochResolver) Epoch(_ context.Context, obj *v2.QuantumRewardsPerEpoch) (int, error) { return int(obj.Epoch), nil } + +type teamMemberStatsResolver VegaResolverRoot + +func (t teamMemberStatsResolver) TotalGamesPlayed(_ context.Context, obj *v2.TeamMemberStatistics) (int, error) { + return int(obj.TotalGamesPlayed), nil +} diff --git a/datanode/networkhistory/service_test.go b/datanode/networkhistory/service_test.go index f0f51d2305..bc688e3bd7 100644 --- a/datanode/networkhistory/service_test.go +++ b/datanode/networkhistory/service_test.go @@ -379,12 +379,12 @@ func TestMain(t *testing.M) { log.Infof("%s", goldenSourceHistorySegment[4000].HistorySegmentID) log.Infof("%s", goldenSourceHistorySegment[5000].HistorySegmentID) - panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[1000].HistorySegmentID, "Qmb37vQANU8UWK52ogCB9LdYFH9MsMUdKN4JKkykiCgyGm", snapshots) - panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[2000].HistorySegmentID, "QmP3yEwwQtNjZJbCnwVJP4XJmVLi7Sp9KrN4bUKkeFtUcA", snapshots) - panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[2500].HistorySegmentID, "Qmaoc7eDEhgCQMu2ufZdkx5U7ksqakQFp1gj68QbhXL4mJ", snapshots) - panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[3000].HistorySegmentID, "QmQneYFsD3gnXyqkJXEWG58m5B1tqqyQ7Adt8Gj7FZPZ5Q", snapshots) - panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[4000].HistorySegmentID, "QmYSBS3XpXoDWYaveBahQyfoffeqS8Z9vbiKvTR3MakSrF", snapshots) - panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[5000].HistorySegmentID, "QmQU5DvHjcJASeceZMJHsm5hKuFpgaGaJZZRUHXzHA5su1", snapshots) + panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[1000].HistorySegmentID, "QmXd9pPeDABM1E266cD2rjyyJyLzEQqb9GidAnXa9BjsDL", snapshots) + panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[2000].HistorySegmentID, "QmdDHzjfrLmuR1H7dkkQiAWcpYnE3QZxVg35pGRiM61Sdd", snapshots) + panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[2500].HistorySegmentID, "Qma2pqc4tLMt9cfEBSTCd4NTp755CyEEtinokXrjgvhcPC", snapshots) + panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[3000].HistorySegmentID, "QmZK67omwqjhQZhjFedF9g3y8PeFXfRq7vgDbYPK7pe4fW", snapshots) + panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[4000].HistorySegmentID, "QmYePEhEZauB7wzSVCtZekR9wi5Nz3knYsZvKAjvGXLh6P", snapshots) + panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[5000].HistorySegmentID, "QmYcbU2bv23BBkg5Dnbedp7sRrxPWjTmFJLNTp8dCK3YdN", snapshots) }, postgresRuntimePath, sqlFs) if exitCode != 0 { diff --git a/datanode/sqlstore/migrations/0062_teams_stats.sql b/datanode/sqlstore/migrations/0062_teams_stats.sql index 927c3f6951..65e5a60afa 100644 --- a/datanode/sqlstore/migrations/0062_teams_stats.sql +++ b/datanode/sqlstore/migrations/0062_teams_stats.sql @@ -2,13 +2,16 @@ CREATE TABLE IF NOT EXISTS teams_stats ( team_id BYTEA NOT NULL, + party_id BYTEA NOT NULL, at_epoch BIGINT NOT NULL, total_volume NUMERIC(1000, 16) NOT NULL, total_quantum_reward NUMERIC(1000, 16) NOT NULL, games_played JSONB NOT NULL, - PRIMARY KEY (team_id, at_epoch) + PRIMARY KEY (team_id, party_id, at_epoch) ); +CREATE INDEX idx_teams_stats_at_epoch ON teams_stats (at_epoch DESC); + -- +goose StatementBegin CREATE OR REPLACE FUNCTION update_teams_stats() RETURNS TRIGGER @@ -52,9 +55,9 @@ BEGIN additional_game_id = JSONB_BUILD_OBJECT(); END IF; - INSERT INTO teams_stats(team_id, at_epoch, total_volume, total_quantum_reward, games_played) - VALUES (party_team_id, new.epoch_id, 0, new.quantum_amount, additional_game_id) - ON CONFLICT (team_id, at_epoch) DO UPDATE + INSERT INTO teams_stats(team_id, party_id, at_epoch, total_volume, total_quantum_reward, games_played) + VALUES (party_team_id, new.party_id, new.epoch_id, 0, new.quantum_amount, additional_game_id) + ON CONFLICT (team_id, party_id, at_epoch) DO UPDATE SET total_quantum_reward = teams_stats.total_quantum_reward + new.quantum_amount, games_played = teams_stats.games_played || additional_game_id; diff --git a/datanode/sqlstore/teams.go b/datanode/sqlstore/teams.go index 5dfc78d10c..ceb98ec640 100644 --- a/datanode/sqlstore/teams.go +++ b/datanode/sqlstore/teams.go @@ -27,53 +27,144 @@ import ( "github.com/georgysavva/scany/pgxscan" ) -const listTeamsStatsQuery = ` --- This CTE retrieves the teams statistics for the last N epochs. -WITH windowed_teams_stats AS ( +const ( + listTeamsStatsQuery = ` +WITH + -- This CTE retrieves the all teams statistics reported for the last N epochs. + windowed_teams_stats AS ( SELECT * FROM teams_stats WHERE at_epoch > ( - SELECT max(at_epoch) - $1 + SELECT MAX(at_epoch) - $1 FROM teams_stats - ) %s -- This is where we filter the output either based on team ID or party ID. + ) %s + ), + -- This CTE is used to determine at which epoch the teams have stats within + -- the aggregation window. + teams_per_epochs AS ( + SELECT team_id, + at_epoch + FROM windowed_teams_stats + GROUP BY + team_id, + at_epoch ), -- This CTE filters the team that have exactly N epochs worth of statistics. -- We are exclusively computing the stats for teams that have at least N epochs worth of data. -- If we are looking at the stats for the last 30 epochs, a team that has less than 30 epochs -- worth of data aggregated, then it's ignored. eligible_teams AS ( + SELECT team_id + FROM teams_per_epochs + GROUP BY + team_id + HAVING COUNT(*) = $1 + ), + eligible_stats AS ( + SELECT * + FROM windowed_teams_stats + WHERE team_id IN ( + SELECT * + FROM eligible_teams + ) + ), + team_rewards AS ( + SELECT t.team_id, + SUM(total_quantum_reward) AS total_in_quantum, + JSONB_AGG(JSONB_BUILD_OBJECT('epoch', at_epoch, 'total', total_quantum_reward) ORDER BY at_epoch, total_quantum_reward) AS list + FROM eligible_stats t + GROUP BY + t.team_id + ), + team_games AS ( + SELECT team_id, + COALESCE(ARRAY_LENGTH(ARRAY_REMOVE(ARRAY_AGG(DISTINCT game_played), NULL), 1), 0) AS count, + COALESCE(JSONB_AGG(DISTINCT game_played::BYTEA ORDER BY game_played::BYTEA) + FILTER (WHERE game_played <> 'null' ), '[]'::JSONB) AS LIST + FROM eligible_stats stats + LEFT JOIN LATERAL JSONB_OBJECT_KEYS(stats.games_played) AS game_played ON TRUE + GROUP BY + team_id + ) +SELECT mr.team_id AS team_id, + mr.total_in_quantum AS total_quantum_rewards, + mr.list AS quantum_rewards, + mg.list AS games_played, + mg.count AS total_games_played +FROM team_rewards mr + LEFT JOIN team_games mg ON mr.team_id = mg.team_id +` + + listTeamMembersStatsQuery = ` +WITH + -- This CTE retrieves the all teams statistics reported for the last N epochs. + windowed_teams_stats AS ( + SELECT * + FROM teams_stats + WHERE at_epoch > ( + SELECT MAX(at_epoch) - $1 + FROM teams_stats + ) AND team_id = $2 %s + ), + -- This CTE is used to determine at which epoch the teams have stats within + -- the aggregation window. + teams_per_epochs AS ( SELECT team_id, - count(*) AS total_of_data_points + at_epoch FROM windowed_teams_stats + GROUP BY + team_id, + at_epoch + ), + -- This CTE filters the team that have exactly N epochs worth of statistics. + -- We are exclusively computing the stats for teams that have at least N epochs worth of data. + -- If we are looking at the stats for the last 30 epochs, a team that has less than 30 epochs + -- worth of data aggregated, then it's ignored. + eligible_teams AS ( + SELECT team_id + FROM teams_per_epochs GROUP BY team_id - HAVING count(*) = $1 + HAVING COUNT(*) = $1 + ), + eligible_stats AS ( + SELECT * + FROM windowed_teams_stats + WHERE team_id IN ( + SELECT * + FROM eligible_teams + ) + ), + members_rewards AS ( + SELECT team_id, + party_id, + SUM(total_quantum_reward) AS total_in_quantum, + JSONB_AGG(JSONB_BUILD_OBJECT('epoch', at_epoch, 'total', total_quantum_reward)) AS quantum_rewards + FROM eligible_stats + GROUP BY + team_id, + party_id + ), + members_games AS ( + SELECT team_id, + party_id, + COALESCE(ARRAY_LENGTH(ARRAY_REMOVE(ARRAY_AGG(DISTINCT game_played), NULL), 1), 0) AS count, + COALESCE(JSONB_AGG(DISTINCT game_played::BYTEA ORDER BY game_played::BYTEA) + FILTER ( WHERE game_played <> 'null' ), '[]'::JSONB) AS list + FROM eligible_stats stats + LEFT JOIN LATERAL JSONB_OBJECT_KEYS(stats.games_played) AS game_played ON TRUE + GROUP BY + team_id, + party_id ) -SELECT eligible_teams.team_id AS team_id, - rewards.total_in_quantum AS total_quantum_rewards, - rewards.list AS quantum_rewards, - COALESCE(games_played.count, 0) AS total_games_played, - games_played.list AS games_played -FROM eligible_teams - -- For each team ID in 'eligible_teams', we expand the JSON object keys from column 'games_played' to get a row - -- for each game ID, that we deduplicate and aggregate into an array. - INNER JOIN LATERAL (SELECT ARRAY_LENGTH(ARRAY_AGG(DISTINCT game_played), 1) AS count, - JSONB_AGG(DISTINCT game_played::bytea ORDER BY game_played::bytea) AS list - FROM windowed_teams_stats AS stats - -- That is the tricky part. For each rows matching 'team_id', we generate a row for each object's - -- key from the column 'games_played'. This allows us to flatten the object and effectively - -- deduplicate the game IDs before counting. - INNER JOIN LATERAL JSONB_OBJECT_KEYS(stats.games_played) AS game_played ON TRUE - WHERE eligible_teams.team_id = stats.team_id ) AS games_played ON TRUE - -- For each team ID in 'eligible_teams', we compute the rewards from the statistics retrieved from the table - -- 'windowed_teams_stats'. - INNER JOIN LATERAL ( - SELECT SUM(total_quantum_reward) AS total_in_quantum, - -- For each line before the aggregation, we build an object { epoch: total }, and group - -- all these objects into an array. - JSONB_AGG(JSONB_BUILD_OBJECT('epoch', stats.at_epoch, 'total', stats.total_quantum_reward)) AS list - FROM windowed_teams_stats AS stats - WHERE eligible_teams.team_id = stats.team_id ) AS rewards ON TRUE` +SELECT mr.party_id AS party_id, + mr.total_in_quantum AS total_quantum_rewards, + mr.quantum_rewards AS quantum_rewards, + mg.list AS games_played, + mg.count AS total_games_played +FROM members_rewards mr + LEFT JOIN members_games mg ON mr.team_id = mg.team_id AND mr.party_id = mg.party_id` +) type ( Teams struct { @@ -84,6 +175,12 @@ type ( TeamID *entities.TeamID AggregationEpochs uint64 } + + ListTeamMembersStatisticsFilters struct { + TeamID entities.TeamID + PartyID *entities.PartyID + AggregationEpochs uint64 + } ) var ( @@ -93,6 +190,9 @@ var ( teamsStatsOrdering = TableOrdering{ ColumnOrdering{Name: "team_id", Sorting: ASC}, } + teamMembersStatsOrdering = TableOrdering{ + ColumnOrdering{Name: "party_id", Sorting: ASC}, + } refereesOrdering = TableOrdering{ ColumnOrdering{Name: "party_id", Sorting: ASC}, } @@ -250,9 +350,9 @@ func (t *Teams) ListTeamsStatistics(ctx context.Context, pagination entities.Cur pageInfo entities.PageInfo ) + query := listTeamsStatsQuery args := []any{filters.AggregationEpochs} - query := listTeamsStatsQuery if filters.TeamID != nil { query = fmt.Sprintf(query, fmt.Sprintf(`AND team_id = %s`, nextBindVar(&args, *filters.TeamID))) } else { @@ -283,6 +383,47 @@ func (t *Teams) ListTeamsStatistics(ctx context.Context, pagination entities.Cur return teamsStats, pageInfo, nil } +func (t *Teams) ListTeamMembersStatistics(ctx context.Context, pagination entities.CursorPagination, filters ListTeamMembersStatisticsFilters) ([]entities.TeamMembersStatistics, entities.PageInfo, error) { + defer metrics.StartSQLQuery("Teams", "ListTeamMembersStatistics")() + + var ( + membersStats []entities.TeamMembersStatistics + pageInfo entities.PageInfo + ) + + query := listTeamMembersStatsQuery + args := []any{filters.AggregationEpochs, filters.TeamID} + + if filters.PartyID != nil { + query = fmt.Sprintf(query, fmt.Sprintf(`AND party_id = %s`, nextBindVar(&args, *filters.PartyID))) + } else { + query = fmt.Sprintf(query, "") + } + + query, args, err := PaginateQuery[entities.TeamMemberStatisticsCursor](query, args, teamMembersStatsOrdering, pagination) + if err != nil { + return nil, pageInfo, err + } + + if err := pgxscan.Select(ctx, t.Connection, &membersStats, query, args...); err != nil { + return nil, pageInfo, err + } + + membersStats, pageInfo = entities.PageEntities[*v2.TeamMemberStatisticsEdge](membersStats, pagination) + + // Deserializing the GameID array as a PostgreSQL array is not correctly + // interpreted by the scanny library. So, we have to use the JSONB array which + // convert the bytea as strings. This leaves the prefix `\\x` on the game ID. + // As a result, we have to manually clean up of the ID. + for i := range membersStats { + for j := range membersStats[i].GamesPlayed { + membersStats[i].GamesPlayed[j] = entities.GameID(strings.TrimLeft(membersStats[i].GamesPlayed[j].String(), "\\x")) + } + } + + return membersStats, pageInfo, nil +} + func (t *Teams) ListReferees(ctx context.Context, teamID entities.TeamID, pagination entities.CursorPagination) ([]entities.TeamMember, entities.PageInfo, error) { defer metrics.StartSQLQuery("Teams", "ListReferees")() var ( diff --git a/datanode/sqlstore/teams_test.go b/datanode/sqlstore/teams_test.go index fca3a5ea32..c38d815a52 100644 --- a/datanode/sqlstore/teams_test.go +++ b/datanode/sqlstore/teams_test.go @@ -781,10 +781,14 @@ func TestListTeamStatistics(t *testing.T) { blocksStore := sqlstore.NewBlocks(connectionSource) rewardsStore := sqlstore.NewRewards(ctx, connectionSource) - member1 := entities.PartyID(GenerateID()) - member2 := entities.PartyID(GenerateID()) - member3 := entities.PartyID(GenerateID()) - member4 := entities.PartyID(GenerateID()) + member11 := entities.PartyID(GenerateID()) + member12 := entities.PartyID(GenerateID()) + member21 := entities.PartyID(GenerateID()) + member22 := entities.PartyID(GenerateID()) + member31 := entities.PartyID(GenerateID()) + member32 := entities.PartyID(GenerateID()) + member41 := entities.PartyID(GenerateID()) + member42 := entities.PartyID(GenerateID()) team1 := entities.TeamID(GenerateID()) team2 := entities.TeamID(GenerateID()) @@ -792,18 +796,18 @@ func TestListTeamStatistics(t *testing.T) { team4 := entities.TeamID(GenerateID()) teams := map[entities.TeamID][]entities.PartyID{ - team1: {member1}, - team2: {member2}, - team3: {member3}, - team4: {member4}, + team1: {member11, member12}, + team2: {member21, member22}, + team3: {member31, member32}, + team4: {member41, member42}, } teamIDs := []entities.TeamID{team1, team2, team3, team4} gameIDs := []entities.GameID{ - entities.GameID(GenerateID()), - entities.GameID(GenerateID()), - entities.GameID(GenerateID()), - entities.GameID(GenerateID()), + entities.GameID("11" + GenerateID()), + entities.GameID("22" + GenerateID()), + entities.GameID("33" + GenerateID()), + entities.GameID("44" + GenerateID()), } startTime := time.Now() @@ -840,9 +844,17 @@ func TestListTeamStatistics(t *testing.T) { })) seqNum := uint64(0) - for _, teamID := range teamIDs { - for _, member := range teams[teamID] { + for teamIdx, teamID := range teamIDs { + for memberIdx, member := range teams[teamID] { seqNum += 1 + + var gameID *entities.GameID + // This helps to test the query doesn't ignore rewards of parties + // that did not participated in a game. + if memberIdx%2 == 0 { + gameID = ptr.From(gameIDs[teamIdx%4]) + } + require.NoError(t, rewardsStore.Add(ctx, entities.Reward{ PartyID: member, AssetID: entities.AssetID(GenerateID()), @@ -857,7 +869,7 @@ func TestListTeamStatistics(t *testing.T) { VegaTime: blockTime, SeqNum: seqNum, LockedUntilEpochID: epoch, - GameID: ptr.From(gameIDs[(seqNum-1)%4]), + GameID: gameID, })) } } @@ -872,14 +884,20 @@ func TestListTeamStatistics(t *testing.T) { expectedStats := []entities.TeamsStatistics{ { TeamID: team1, - TotalQuantumRewards: decimal.NewFromInt(7), + TotalQuantumRewards: decimal.NewFromInt(16), QuantumRewards: []entities.QuantumRewardsPerEpoch{ { Epoch: 2, Total: decimal.NewFromInt(3), + }, { + Epoch: 2, + Total: decimal.NewFromInt(4), }, { Epoch: 3, Total: decimal.NewFromInt(4), + }, { + Epoch: 3, + Total: decimal.NewFromInt(5), }, }, TotalGamesPlayed: 1, @@ -887,14 +905,20 @@ func TestListTeamStatistics(t *testing.T) { }, { TeamID: team2, - TotalQuantumRewards: decimal.NewFromInt(9), + TotalQuantumRewards: decimal.NewFromInt(24), QuantumRewards: []entities.QuantumRewardsPerEpoch{ { Epoch: 2, - Total: decimal.NewFromInt(4), + Total: decimal.NewFromInt(5), + }, { + Epoch: 2, + Total: decimal.NewFromInt(6), }, { Epoch: 3, - Total: decimal.NewFromInt(5), + Total: decimal.NewFromInt(6), + }, { + Epoch: 3, + Total: decimal.NewFromInt(7), }, }, TotalGamesPlayed: 1, @@ -902,14 +926,20 @@ func TestListTeamStatistics(t *testing.T) { }, { TeamID: team3, - TotalQuantumRewards: decimal.NewFromInt(11), + TotalQuantumRewards: decimal.NewFromInt(32), QuantumRewards: []entities.QuantumRewardsPerEpoch{ { Epoch: 2, - Total: decimal.NewFromInt(5), + Total: decimal.NewFromInt(7), + }, { + Epoch: 2, + Total: decimal.NewFromInt(8), }, { Epoch: 3, - Total: decimal.NewFromInt(6), + Total: decimal.NewFromInt(8), + }, { + Epoch: 3, + Total: decimal.NewFromInt(9), }, }, TotalGamesPlayed: 1, @@ -917,14 +947,20 @@ func TestListTeamStatistics(t *testing.T) { }, { TeamID: team4, - TotalQuantumRewards: decimal.NewFromInt(13), + TotalQuantumRewards: decimal.NewFromInt(40), QuantumRewards: []entities.QuantumRewardsPerEpoch{ { Epoch: 2, - Total: decimal.NewFromInt(6), + Total: decimal.NewFromInt(9), + }, { + Epoch: 2, + Total: decimal.NewFromInt(10), }, { Epoch: 3, - Total: decimal.NewFromInt(7), + Total: decimal.NewFromInt(10), + }, { + Epoch: 3, + Total: decimal.NewFromInt(11), }, }, TotalGamesPlayed: 1, @@ -941,7 +977,7 @@ func TestListTeamStatistics(t *testing.T) { assert.JSONEq(t, string(expectedStatsJson), string(statsJson)) }) - t.Run("Getting stats from a given team from the last 2 epochs ", func(t *testing.T) { + t.Run("Getting stats from a given team from the last 2 epochs", func(t *testing.T) { stats, _, err := teamsStore.ListTeamsStatistics(ctx, entities.DefaultCursorPagination(false), sqlstore.ListTeamsStatisticsFilters{ TeamID: ptr.From(entities.TeamID(team1.String())), AggregationEpochs: 2, @@ -951,14 +987,20 @@ func TestListTeamStatistics(t *testing.T) { expectedStats := []entities.TeamsStatistics{ { TeamID: team1, - TotalQuantumRewards: decimal.NewFromInt(7), + TotalQuantumRewards: decimal.NewFromInt(16), QuantumRewards: []entities.QuantumRewardsPerEpoch{ { Epoch: 2, Total: decimal.NewFromInt(3), + }, { + Epoch: 2, + Total: decimal.NewFromInt(4), }, { Epoch: 3, Total: decimal.NewFromInt(4), + }, { + Epoch: 3, + Total: decimal.NewFromInt(5), }, }, TotalGamesPlayed: 1, @@ -971,4 +1013,85 @@ func TestListTeamStatistics(t *testing.T) { statsJson, _ := json.Marshal(stats) assert.JSONEq(t, string(expectedStatsJson), string(statsJson)) }) + + t.Run("Getting all members stats from the last 2 epochs", func(t *testing.T) { + stats, _, err := teamsStore.ListTeamMembersStatistics(ctx, entities.DefaultCursorPagination(false), sqlstore.ListTeamMembersStatisticsFilters{ + TeamID: team2, + AggregationEpochs: 2, + }) + + require.NoError(t, err) + expectedStats := []entities.TeamMembersStatistics{ + { + PartyID: member21, + TotalQuantumRewards: decimal.NewFromInt(11), + QuantumRewards: []entities.QuantumRewardsPerEpoch{ + { + Epoch: 2, + Total: decimal.NewFromInt(5), + }, { + Epoch: 3, + Total: decimal.NewFromInt(6), + }, + }, + TotalGamesPlayed: 1, + GamesPlayed: []entities.GameID{gameIDs[1]}, + }, + { + PartyID: member22, + TotalQuantumRewards: decimal.NewFromInt(13), + QuantumRewards: []entities.QuantumRewardsPerEpoch{ + { + Epoch: 2, + Total: decimal.NewFromInt(6), + }, { + Epoch: 3, + Total: decimal.NewFromInt(7), + }, + }, + TotalGamesPlayed: 0, + GamesPlayed: []entities.GameID{}, + }, + } + slices.SortStableFunc(expectedStats, func(a, b entities.TeamMembersStatistics) int { + return strings.Compare(string(a.PartyID), string(b.PartyID)) + }) + + // Ugly hack to bypass deep-equal limitation with assert.Equal(). + expectedStatsJson, _ := json.Marshal(expectedStats) + statsJson, _ := json.Marshal(stats) + assert.JSONEq(t, string(expectedStatsJson), string(statsJson)) + }) + + t.Run("Getting stats from a given party from the last 2 epochs", func(t *testing.T) { + stats, _, err := teamsStore.ListTeamMembersStatistics(ctx, entities.DefaultCursorPagination(false), sqlstore.ListTeamMembersStatisticsFilters{ + TeamID: team2, + PartyID: ptr.From(member21), + AggregationEpochs: 2, + }) + + require.NoError(t, err) + expectedStats := []entities.TeamMembersStatistics{ + { + PartyID: member21, + TotalQuantumRewards: decimal.NewFromInt(11), + QuantumRewards: []entities.QuantumRewardsPerEpoch{ + { + Epoch: 2, + Total: decimal.NewFromInt(5), + }, { + Epoch: 3, + Total: decimal.NewFromInt(6), + }, + }, + TotalGamesPlayed: 1, + GamesPlayed: []entities.GameID{gameIDs[1]}, + }, + } + + // Ugly hack to bypass deep-equal limitation with assert.Equal(). + expectedStatsJson, _ := json.Marshal(expectedStats) + statsJson, _ := json.Marshal(stats) + assert.JSONEq(t, string(expectedStatsJson), string(statsJson)) + }) } diff --git a/protos/data-node/api/v2/trading_data.pb.go b/protos/data-node/api/v2/trading_data.pb.go index fc960c891b..49323d9167 100644 --- a/protos/data-node/api/v2/trading_data.pb.go +++ b/protos/data-node/api/v2/trading_data.pb.go @@ -20726,7 +20726,7 @@ type GetReferralSetStatsRequest struct { ReferralSetId *string `protobuf:"bytes,1,opt,name=referral_set_id,json=referralSetId,proto3,oneof" json:"referral_set_id,omitempty"` // Epoch to get referral set statistics for. If not set, the last complete epoch is used. AtEpoch *uint64 `protobuf:"varint,2,opt,name=at_epoch,json=atEpoch,proto3,oneof" json:"at_epoch,omitempty"` - // Restrict referral set statisitcs to those for the given referee. + // Restrict referral set statistics to those for the given referee. Referee *string `protobuf:"bytes,3,opt,name=referee,proto3,oneof" json:"referee,omitempty"` // Pagination controls. Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` @@ -21683,7 +21683,7 @@ type TeamStatistics struct { // value for each epoch. QuantumRewards []*QuantumRewardsPerEpoch `protobuf:"bytes,4,rep,name=quantum_rewards,json=quantumRewards,proto3" json:"quantum_rewards,omitempty"` // Total of games played. - TotalGamePlayed uint64 `protobuf:"varint,5,opt,name=total_game_played,json=totalGamePlayed,proto3" json:"total_game_played,omitempty"` + TotalGamesPlayed uint64 `protobuf:"varint,5,opt,name=total_games_played,json=totalGamesPlayed,proto3" json:"total_games_played,omitempty"` // List of games played over the requested epoch period. GamesPlayed []string `protobuf:"bytes,6,rep,name=games_played,json=gamesPlayed,proto3" json:"games_played,omitempty"` } @@ -21748,9 +21748,9 @@ func (x *TeamStatistics) GetQuantumRewards() []*QuantumRewardsPerEpoch { return nil } -func (x *TeamStatistics) GetTotalGamePlayed() uint64 { +func (x *TeamStatistics) GetTotalGamesPlayed() uint64 { if x != nil { - return x.TotalGamePlayed + return x.TotalGamesPlayed } return 0 } @@ -21819,6 +21819,345 @@ func (x *QuantumRewardsPerEpoch) GetTotalQuantumRewards() string { return "" } +// Request to list all team members' statistics. +type ListTeamMembersStatisticsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Restrict team statistics to those with the given team ID. + TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` + // Restrict team members' statistics to those with the given party ID. + PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Defines the number of past epochs to aggregate data from. By default, it takes + // the last 10 epochs. + AggregationEpochs *uint64 `protobuf:"varint,3,opt,name=aggregation_epochs,json=aggregationEpochs,proto3,oneof" json:"aggregation_epochs,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` +} + +func (x *ListTeamMembersStatisticsRequest) Reset() { + *x = ListTeamMembersStatisticsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[355] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTeamMembersStatisticsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTeamMembersStatisticsRequest) ProtoMessage() {} + +func (x *ListTeamMembersStatisticsRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[355] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListTeamMembersStatisticsRequest.ProtoReflect.Descriptor instead. +func (*ListTeamMembersStatisticsRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{355} +} + +func (x *ListTeamMembersStatisticsRequest) GetTeamId() string { + if x != nil { + return x.TeamId + } + return "" +} + +func (x *ListTeamMembersStatisticsRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId + } + return "" +} + +func (x *ListTeamMembersStatisticsRequest) GetAggregationEpochs() uint64 { + if x != nil && x.AggregationEpochs != nil { + return *x.AggregationEpochs + } + return 0 +} + +func (x *ListTeamMembersStatisticsRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination + } + return nil +} + +// Response for the list team members' statistics request containing the statistics. +type ListTeamMembersStatisticsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Page of team members' statistics data and corresponding page information. + Statistics *TeamMembersStatisticsConnection `protobuf:"bytes,1,opt,name=statistics,proto3" json:"statistics,omitempty"` +} + +func (x *ListTeamMembersStatisticsResponse) Reset() { + *x = ListTeamMembersStatisticsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[356] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTeamMembersStatisticsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTeamMembersStatisticsResponse) ProtoMessage() {} + +func (x *ListTeamMembersStatisticsResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[356] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListTeamMembersStatisticsResponse.ProtoReflect.Descriptor instead. +func (*ListTeamMembersStatisticsResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{356} +} + +func (x *ListTeamMembersStatisticsResponse) GetStatistics() *TeamMembersStatisticsConnection { + if x != nil { + return x.Statistics + } + return nil +} + +// Page of team members' statistics and corresponding page information. +type TeamMembersStatisticsConnection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Page of team member data and their corresponding cursors. + Edges []*TeamMemberStatisticsEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` +} + +func (x *TeamMembersStatisticsConnection) Reset() { + *x = TeamMembersStatisticsConnection{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[357] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TeamMembersStatisticsConnection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TeamMembersStatisticsConnection) ProtoMessage() {} + +func (x *TeamMembersStatisticsConnection) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[357] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TeamMembersStatisticsConnection.ProtoReflect.Descriptor instead. +func (*TeamMembersStatisticsConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{357} +} + +func (x *TeamMembersStatisticsConnection) GetEdges() []*TeamMemberStatisticsEdge { + if x != nil { + return x.Edges + } + return nil +} + +func (x *TeamMembersStatisticsConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Team member data item with the corresponding cursor. +type TeamMemberStatisticsEdge struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Team member's statistics data. + Node *TeamMemberStatistics `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` +} + +func (x *TeamMemberStatisticsEdge) Reset() { + *x = TeamMemberStatisticsEdge{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[358] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TeamMemberStatisticsEdge) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TeamMemberStatisticsEdge) ProtoMessage() {} + +func (x *TeamMemberStatisticsEdge) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[358] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TeamMemberStatisticsEdge.ProtoReflect.Descriptor instead. +func (*TeamMemberStatisticsEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{358} +} + +func (x *TeamMemberStatisticsEdge) GetNode() *TeamMemberStatistics { + if x != nil { + return x.Node + } + return nil +} + +func (x *TeamMemberStatisticsEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Team member's statistics record containing the team member's information. +type TeamMemberStatistics struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Party ID the statistics are related to. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Total of volume accumulated over the requested epoch period, expressed in + // quantum value. + TotalQuantumVolume string `protobuf:"bytes,2,opt,name=total_quantum_volume,json=totalQuantumVolume,proto3" json:"total_quantum_volume,omitempty"` + // Total of rewards accumulated over the requested epoch period, expressed in + // quantum value. + TotalQuantumRewards string `protobuf:"bytes,3,opt,name=total_quantum_rewards,json=totalQuantumRewards,proto3" json:"total_quantum_rewards,omitempty"` + // List of rewards over the requested epoch period, expressed in quantum + // value for each epoch. + QuantumRewards []*QuantumRewardsPerEpoch `protobuf:"bytes,4,rep,name=quantum_rewards,json=quantumRewards,proto3" json:"quantum_rewards,omitempty"` + // Total number of games played. + TotalGamesPlayed uint64 `protobuf:"varint,5,opt,name=total_games_played,json=totalGamesPlayed,proto3" json:"total_games_played,omitempty"` + // List of games played over the requested epoch period. + GamesPlayed []string `protobuf:"bytes,6,rep,name=games_played,json=gamesPlayed,proto3" json:"games_played,omitempty"` +} + +func (x *TeamMemberStatistics) Reset() { + *x = TeamMemberStatistics{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[359] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TeamMemberStatistics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TeamMemberStatistics) ProtoMessage() {} + +func (x *TeamMemberStatistics) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[359] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TeamMemberStatistics.ProtoReflect.Descriptor instead. +func (*TeamMemberStatistics) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{359} +} + +func (x *TeamMemberStatistics) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *TeamMemberStatistics) GetTotalQuantumVolume() string { + if x != nil { + return x.TotalQuantumVolume + } + return "" +} + +func (x *TeamMemberStatistics) GetTotalQuantumRewards() string { + if x != nil { + return x.TotalQuantumRewards + } + return "" +} + +func (x *TeamMemberStatistics) GetQuantumRewards() []*QuantumRewardsPerEpoch { + if x != nil { + return x.QuantumRewards + } + return nil +} + +func (x *TeamMemberStatistics) GetTotalGamesPlayed() uint64 { + if x != nil { + return x.TotalGamesPlayed + } + return 0 +} + +func (x *TeamMemberStatistics) GetGamesPlayed() []string { + if x != nil { + return x.GamesPlayed + } + return nil +} + // Request that is sent when listing the referees for a given team. type ListTeamRefereesRequest struct { state protoimpl.MessageState @@ -21834,7 +22173,7 @@ type ListTeamRefereesRequest struct { func (x *ListTeamRefereesRequest) Reset() { *x = ListTeamRefereesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[355] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[360] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21847,7 +22186,7 @@ func (x *ListTeamRefereesRequest) String() string { func (*ListTeamRefereesRequest) ProtoMessage() {} func (x *ListTeamRefereesRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[355] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[360] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21860,7 +22199,7 @@ func (x *ListTeamRefereesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTeamRefereesRequest.ProtoReflect.Descriptor instead. func (*ListTeamRefereesRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{355} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{360} } func (x *ListTeamRefereesRequest) GetTeamId() string { @@ -21896,7 +22235,7 @@ type TeamReferee struct { func (x *TeamReferee) Reset() { *x = TeamReferee{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[356] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[361] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21909,7 +22248,7 @@ func (x *TeamReferee) String() string { func (*TeamReferee) ProtoMessage() {} func (x *TeamReferee) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[356] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[361] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21922,7 +22261,7 @@ func (x *TeamReferee) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamReferee.ProtoReflect.Descriptor instead. func (*TeamReferee) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{356} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{361} } func (x *TeamReferee) GetTeamId() string { @@ -21968,7 +22307,7 @@ type TeamRefereeEdge struct { func (x *TeamRefereeEdge) Reset() { *x = TeamRefereeEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[357] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[362] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21981,7 +22320,7 @@ func (x *TeamRefereeEdge) String() string { func (*TeamRefereeEdge) ProtoMessage() {} func (x *TeamRefereeEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[357] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[362] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21994,7 +22333,7 @@ func (x *TeamRefereeEdge) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamRefereeEdge.ProtoReflect.Descriptor instead. func (*TeamRefereeEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{357} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{362} } func (x *TeamRefereeEdge) GetNode() *TeamReferee { @@ -22026,7 +22365,7 @@ type TeamRefereeConnection struct { func (x *TeamRefereeConnection) Reset() { *x = TeamRefereeConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[358] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[363] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22039,7 +22378,7 @@ func (x *TeamRefereeConnection) String() string { func (*TeamRefereeConnection) ProtoMessage() {} func (x *TeamRefereeConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[358] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[363] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22052,7 +22391,7 @@ func (x *TeamRefereeConnection) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamRefereeConnection.ProtoReflect.Descriptor instead. func (*TeamRefereeConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{358} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{363} } func (x *TeamRefereeConnection) GetEdges() []*TeamRefereeEdge { @@ -22082,7 +22421,7 @@ type ListTeamRefereesResponse struct { func (x *ListTeamRefereesResponse) Reset() { *x = ListTeamRefereesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[359] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[364] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22095,7 +22434,7 @@ func (x *ListTeamRefereesResponse) String() string { func (*ListTeamRefereesResponse) ProtoMessage() {} func (x *ListTeamRefereesResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[359] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[364] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22108,7 +22447,7 @@ func (x *ListTeamRefereesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTeamRefereesResponse.ProtoReflect.Descriptor instead. func (*ListTeamRefereesResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{359} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{364} } func (x *ListTeamRefereesResponse) GetTeamReferees() *TeamRefereeConnection { @@ -22135,7 +22474,7 @@ type TeamRefereeHistory struct { func (x *TeamRefereeHistory) Reset() { *x = TeamRefereeHistory{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[360] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[365] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22148,7 +22487,7 @@ func (x *TeamRefereeHistory) String() string { func (*TeamRefereeHistory) ProtoMessage() {} func (x *TeamRefereeHistory) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[360] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[365] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22161,7 +22500,7 @@ func (x *TeamRefereeHistory) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamRefereeHistory.ProtoReflect.Descriptor instead. func (*TeamRefereeHistory) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{360} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{365} } func (x *TeamRefereeHistory) GetTeamId() string { @@ -22200,7 +22539,7 @@ type TeamRefereeHistoryEdge struct { func (x *TeamRefereeHistoryEdge) Reset() { *x = TeamRefereeHistoryEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[361] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[366] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22213,7 +22552,7 @@ func (x *TeamRefereeHistoryEdge) String() string { func (*TeamRefereeHistoryEdge) ProtoMessage() {} func (x *TeamRefereeHistoryEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[361] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[366] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22226,7 +22565,7 @@ func (x *TeamRefereeHistoryEdge) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamRefereeHistoryEdge.ProtoReflect.Descriptor instead. func (*TeamRefereeHistoryEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{361} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{366} } func (x *TeamRefereeHistoryEdge) GetNode() *TeamRefereeHistory { @@ -22258,7 +22597,7 @@ type TeamRefereeHistoryConnection struct { func (x *TeamRefereeHistoryConnection) Reset() { *x = TeamRefereeHistoryConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[362] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[367] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22271,7 +22610,7 @@ func (x *TeamRefereeHistoryConnection) String() string { func (*TeamRefereeHistoryConnection) ProtoMessage() {} func (x *TeamRefereeHistoryConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[362] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[367] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22284,7 +22623,7 @@ func (x *TeamRefereeHistoryConnection) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamRefereeHistoryConnection.ProtoReflect.Descriptor instead. func (*TeamRefereeHistoryConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{362} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{367} } func (x *TeamRefereeHistoryConnection) GetEdges() []*TeamRefereeHistoryEdge { @@ -22316,7 +22655,7 @@ type ListTeamRefereeHistoryRequest struct { func (x *ListTeamRefereeHistoryRequest) Reset() { *x = ListTeamRefereeHistoryRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[363] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[368] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22329,7 +22668,7 @@ func (x *ListTeamRefereeHistoryRequest) String() string { func (*ListTeamRefereeHistoryRequest) ProtoMessage() {} func (x *ListTeamRefereeHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[363] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[368] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22342,7 +22681,7 @@ func (x *ListTeamRefereeHistoryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTeamRefereeHistoryRequest.ProtoReflect.Descriptor instead. func (*ListTeamRefereeHistoryRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{363} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{368} } func (x *ListTeamRefereeHistoryRequest) GetReferee() string { @@ -22372,7 +22711,7 @@ type ListTeamRefereeHistoryResponse struct { func (x *ListTeamRefereeHistoryResponse) Reset() { *x = ListTeamRefereeHistoryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[364] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[369] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22385,7 +22724,7 @@ func (x *ListTeamRefereeHistoryResponse) String() string { func (*ListTeamRefereeHistoryResponse) ProtoMessage() {} func (x *ListTeamRefereeHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[364] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[369] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22398,7 +22737,7 @@ func (x *ListTeamRefereeHistoryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTeamRefereeHistoryResponse.ProtoReflect.Descriptor instead. func (*ListTeamRefereeHistoryResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{364} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{369} } func (x *ListTeamRefereeHistoryResponse) GetTeamRefereeHistory() *TeamRefereeHistoryConnection { @@ -22427,7 +22766,7 @@ type GetFeesStatsRequest struct { func (x *GetFeesStatsRequest) Reset() { *x = GetFeesStatsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[365] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[370] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22440,7 +22779,7 @@ func (x *GetFeesStatsRequest) String() string { func (*GetFeesStatsRequest) ProtoMessage() {} func (x *GetFeesStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[365] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[370] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22453,7 +22792,7 @@ func (x *GetFeesStatsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFeesStatsRequest.ProtoReflect.Descriptor instead. func (*GetFeesStatsRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{365} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{370} } func (x *GetFeesStatsRequest) GetMarketId() string { @@ -22497,7 +22836,7 @@ type GetFeesStatsResponse struct { func (x *GetFeesStatsResponse) Reset() { *x = GetFeesStatsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[366] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[371] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22510,7 +22849,7 @@ func (x *GetFeesStatsResponse) String() string { func (*GetFeesStatsResponse) ProtoMessage() {} func (x *GetFeesStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[366] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[371] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22523,7 +22862,7 @@ func (x *GetFeesStatsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFeesStatsResponse.ProtoReflect.Descriptor instead. func (*GetFeesStatsResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{366} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{371} } func (x *GetFeesStatsResponse) GetFeesStats() *v1.FeesStats { @@ -22552,7 +22891,7 @@ type GetFeesStatsForPartyRequest struct { func (x *GetFeesStatsForPartyRequest) Reset() { *x = GetFeesStatsForPartyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[367] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[372] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22565,7 +22904,7 @@ func (x *GetFeesStatsForPartyRequest) String() string { func (*GetFeesStatsForPartyRequest) ProtoMessage() {} func (x *GetFeesStatsForPartyRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[367] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[372] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22578,7 +22917,7 @@ func (x *GetFeesStatsForPartyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFeesStatsForPartyRequest.ProtoReflect.Descriptor instead. func (*GetFeesStatsForPartyRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{367} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{372} } func (x *GetFeesStatsForPartyRequest) GetPartyId() string { @@ -22622,7 +22961,7 @@ type GetFeesStatsForPartyResponse struct { func (x *GetFeesStatsForPartyResponse) Reset() { *x = GetFeesStatsForPartyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[368] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[373] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22635,7 +22974,7 @@ func (x *GetFeesStatsForPartyResponse) String() string { func (*GetFeesStatsForPartyResponse) ProtoMessage() {} func (x *GetFeesStatsForPartyResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[368] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[373] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22648,7 +22987,7 @@ func (x *GetFeesStatsForPartyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFeesStatsForPartyResponse.ProtoReflect.Descriptor instead. func (*GetFeesStatsForPartyResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{368} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{373} } func (x *GetFeesStatsForPartyResponse) GetFeesStatsForParty() []*FeesStatsForParty { @@ -22668,7 +23007,7 @@ type GetCurrentVolumeDiscountProgramRequest struct { func (x *GetCurrentVolumeDiscountProgramRequest) Reset() { *x = GetCurrentVolumeDiscountProgramRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[369] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[374] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22681,7 +23020,7 @@ func (x *GetCurrentVolumeDiscountProgramRequest) String() string { func (*GetCurrentVolumeDiscountProgramRequest) ProtoMessage() {} func (x *GetCurrentVolumeDiscountProgramRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[369] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[374] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22694,7 +23033,7 @@ func (x *GetCurrentVolumeDiscountProgramRequest) ProtoReflect() protoreflect.Mes // Deprecated: Use GetCurrentVolumeDiscountProgramRequest.ProtoReflect.Descriptor instead. func (*GetCurrentVolumeDiscountProgramRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{369} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{374} } // Response containing the current referral program @@ -22710,7 +23049,7 @@ type GetCurrentVolumeDiscountProgramResponse struct { func (x *GetCurrentVolumeDiscountProgramResponse) Reset() { *x = GetCurrentVolumeDiscountProgramResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[370] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[375] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22723,7 +23062,7 @@ func (x *GetCurrentVolumeDiscountProgramResponse) String() string { func (*GetCurrentVolumeDiscountProgramResponse) ProtoMessage() {} func (x *GetCurrentVolumeDiscountProgramResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[370] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[375] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22736,7 +23075,7 @@ func (x *GetCurrentVolumeDiscountProgramResponse) ProtoReflect() protoreflect.Me // Deprecated: Use GetCurrentVolumeDiscountProgramResponse.ProtoReflect.Descriptor instead. func (*GetCurrentVolumeDiscountProgramResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{370} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{375} } func (x *GetCurrentVolumeDiscountProgramResponse) GetCurrentVolumeDiscountProgram() *VolumeDiscountProgram { @@ -22763,7 +23102,7 @@ type GetVolumeDiscountStatsRequest struct { func (x *GetVolumeDiscountStatsRequest) Reset() { *x = GetVolumeDiscountStatsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[371] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[376] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22776,7 +23115,7 @@ func (x *GetVolumeDiscountStatsRequest) String() string { func (*GetVolumeDiscountStatsRequest) ProtoMessage() {} func (x *GetVolumeDiscountStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[371] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[376] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22789,7 +23128,7 @@ func (x *GetVolumeDiscountStatsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVolumeDiscountStatsRequest.ProtoReflect.Descriptor instead. func (*GetVolumeDiscountStatsRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{371} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{376} } func (x *GetVolumeDiscountStatsRequest) GetAtEpoch() uint64 { @@ -22826,7 +23165,7 @@ type GetVolumeDiscountStatsResponse struct { func (x *GetVolumeDiscountStatsResponse) Reset() { *x = GetVolumeDiscountStatsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[372] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[377] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22839,7 +23178,7 @@ func (x *GetVolumeDiscountStatsResponse) String() string { func (*GetVolumeDiscountStatsResponse) ProtoMessage() {} func (x *GetVolumeDiscountStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[372] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[377] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22852,7 +23191,7 @@ func (x *GetVolumeDiscountStatsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVolumeDiscountStatsResponse.ProtoReflect.Descriptor instead. func (*GetVolumeDiscountStatsResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{372} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{377} } func (x *GetVolumeDiscountStatsResponse) GetStats() *VolumeDiscountStatsConnection { @@ -22877,7 +23216,7 @@ type VolumeDiscountStatsConnection struct { func (x *VolumeDiscountStatsConnection) Reset() { *x = VolumeDiscountStatsConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[373] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[378] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22890,7 +23229,7 @@ func (x *VolumeDiscountStatsConnection) String() string { func (*VolumeDiscountStatsConnection) ProtoMessage() {} func (x *VolumeDiscountStatsConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[373] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[378] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22903,7 +23242,7 @@ func (x *VolumeDiscountStatsConnection) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeDiscountStatsConnection.ProtoReflect.Descriptor instead. func (*VolumeDiscountStatsConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{373} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{378} } func (x *VolumeDiscountStatsConnection) GetEdges() []*VolumeDiscountStatsEdge { @@ -22935,7 +23274,7 @@ type VolumeDiscountStatsEdge struct { func (x *VolumeDiscountStatsEdge) Reset() { *x = VolumeDiscountStatsEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[374] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[379] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22948,7 +23287,7 @@ func (x *VolumeDiscountStatsEdge) String() string { func (*VolumeDiscountStatsEdge) ProtoMessage() {} func (x *VolumeDiscountStatsEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[374] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[379] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22961,7 +23300,7 @@ func (x *VolumeDiscountStatsEdge) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeDiscountStatsEdge.ProtoReflect.Descriptor instead. func (*VolumeDiscountStatsEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{374} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{379} } func (x *VolumeDiscountStatsEdge) GetNode() *VolumeDiscountStats { @@ -22997,7 +23336,7 @@ type VolumeDiscountStats struct { func (x *VolumeDiscountStats) Reset() { *x = VolumeDiscountStats{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[375] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[380] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23010,7 +23349,7 @@ func (x *VolumeDiscountStats) String() string { func (*VolumeDiscountStats) ProtoMessage() {} func (x *VolumeDiscountStats) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[375] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[380] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23023,7 +23362,7 @@ func (x *VolumeDiscountStats) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeDiscountStats.ProtoReflect.Descriptor instead. func (*VolumeDiscountStats) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{375} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{380} } func (x *VolumeDiscountStats) GetAtEpoch() uint64 { @@ -23080,7 +23419,7 @@ type VolumeDiscountProgram struct { func (x *VolumeDiscountProgram) Reset() { *x = VolumeDiscountProgram{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[376] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[381] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23093,7 +23432,7 @@ func (x *VolumeDiscountProgram) String() string { func (*VolumeDiscountProgram) ProtoMessage() {} func (x *VolumeDiscountProgram) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[376] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[381] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23106,7 +23445,7 @@ func (x *VolumeDiscountProgram) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeDiscountProgram.ProtoReflect.Descriptor instead. func (*VolumeDiscountProgram) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{376} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{381} } func (x *VolumeDiscountProgram) GetVersion() uint64 { @@ -23171,7 +23510,7 @@ type FeesStatsForParty struct { func (x *FeesStatsForParty) Reset() { *x = FeesStatsForParty{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[377] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[382] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23184,7 +23523,7 @@ func (x *FeesStatsForParty) String() string { func (*FeesStatsForParty) ProtoMessage() {} func (x *FeesStatsForParty) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[377] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[382] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23197,7 +23536,7 @@ func (x *FeesStatsForParty) ProtoReflect() protoreflect.Message { // Deprecated: Use FeesStatsForParty.ProtoReflect.Descriptor instead. func (*FeesStatsForParty) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{377} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{382} } func (x *FeesStatsForParty) GetAssetId() string { @@ -23252,7 +23591,7 @@ type ObserveTransactionResultsRequest struct { func (x *ObserveTransactionResultsRequest) Reset() { *x = ObserveTransactionResultsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[378] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[383] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23265,7 +23604,7 @@ func (x *ObserveTransactionResultsRequest) String() string { func (*ObserveTransactionResultsRequest) ProtoMessage() {} func (x *ObserveTransactionResultsRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[378] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[383] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23278,7 +23617,7 @@ func (x *ObserveTransactionResultsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ObserveTransactionResultsRequest.ProtoReflect.Descriptor instead. func (*ObserveTransactionResultsRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{378} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{383} } func (x *ObserveTransactionResultsRequest) GetPartyIds() []string { @@ -23315,7 +23654,7 @@ type ObserveTransactionResultsResponse struct { func (x *ObserveTransactionResultsResponse) Reset() { *x = ObserveTransactionResultsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[379] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[384] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23328,7 +23667,7 @@ func (x *ObserveTransactionResultsResponse) String() string { func (*ObserveTransactionResultsResponse) ProtoMessage() {} func (x *ObserveTransactionResultsResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[379] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[384] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23341,7 +23680,7 @@ func (x *ObserveTransactionResultsResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ObserveTransactionResultsResponse.ProtoReflect.Descriptor instead. func (*ObserveTransactionResultsResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{379} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{384} } func (x *ObserveTransactionResultsResponse) GetTransactionResults() []*v1.TransactionResult { @@ -23372,7 +23711,7 @@ type EstimateTransferFeeRequest struct { func (x *EstimateTransferFeeRequest) Reset() { *x = EstimateTransferFeeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[380] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[385] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23385,7 +23724,7 @@ func (x *EstimateTransferFeeRequest) String() string { func (*EstimateTransferFeeRequest) ProtoMessage() {} func (x *EstimateTransferFeeRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[380] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[385] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23398,7 +23737,7 @@ func (x *EstimateTransferFeeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EstimateTransferFeeRequest.ProtoReflect.Descriptor instead. func (*EstimateTransferFeeRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{380} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{385} } func (x *EstimateTransferFeeRequest) GetFromAccount() string { @@ -23451,7 +23790,7 @@ type EstimateTransferFeeResponse struct { func (x *EstimateTransferFeeResponse) Reset() { *x = EstimateTransferFeeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[381] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[386] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23464,7 +23803,7 @@ func (x *EstimateTransferFeeResponse) String() string { func (*EstimateTransferFeeResponse) ProtoMessage() {} func (x *EstimateTransferFeeResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[381] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[386] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23477,7 +23816,7 @@ func (x *EstimateTransferFeeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use EstimateTransferFeeResponse.ProtoReflect.Descriptor instead. func (*EstimateTransferFeeResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{381} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{386} } func (x *EstimateTransferFeeResponse) GetFee() string { @@ -23509,7 +23848,7 @@ type GetTotalTransferFeeDiscountRequest struct { func (x *GetTotalTransferFeeDiscountRequest) Reset() { *x = GetTotalTransferFeeDiscountRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[382] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[387] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23522,7 +23861,7 @@ func (x *GetTotalTransferFeeDiscountRequest) String() string { func (*GetTotalTransferFeeDiscountRequest) ProtoMessage() {} func (x *GetTotalTransferFeeDiscountRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[382] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[387] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23535,7 +23874,7 @@ func (x *GetTotalTransferFeeDiscountRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetTotalTransferFeeDiscountRequest.ProtoReflect.Descriptor instead. func (*GetTotalTransferFeeDiscountRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{382} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{387} } func (x *GetTotalTransferFeeDiscountRequest) GetPartyId() string { @@ -23565,7 +23904,7 @@ type GetTotalTransferFeeDiscountResponse struct { func (x *GetTotalTransferFeeDiscountResponse) Reset() { *x = GetTotalTransferFeeDiscountResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[383] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[388] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23578,7 +23917,7 @@ func (x *GetTotalTransferFeeDiscountResponse) String() string { func (*GetTotalTransferFeeDiscountResponse) ProtoMessage() {} func (x *GetTotalTransferFeeDiscountResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[383] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[388] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23591,7 +23930,7 @@ func (x *GetTotalTransferFeeDiscountResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use GetTotalTransferFeeDiscountResponse.ProtoReflect.Descriptor instead. func (*GetTotalTransferFeeDiscountResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{383} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{388} } func (x *GetTotalTransferFeeDiscountResponse) GetTotalDiscount() string { @@ -23623,7 +23962,7 @@ type ListGamesRequest struct { func (x *ListGamesRequest) Reset() { *x = ListGamesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[384] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[389] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23636,7 +23975,7 @@ func (x *ListGamesRequest) String() string { func (*ListGamesRequest) ProtoMessage() {} func (x *ListGamesRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[384] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[389] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23649,7 +23988,7 @@ func (x *ListGamesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListGamesRequest.ProtoReflect.Descriptor instead. func (*ListGamesRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{384} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{389} } func (x *ListGamesRequest) GetGameId() string { @@ -23700,7 +24039,7 @@ type ListGamesResponse struct { func (x *ListGamesResponse) Reset() { *x = ListGamesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[385] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[390] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23713,7 +24052,7 @@ func (x *ListGamesResponse) String() string { func (*ListGamesResponse) ProtoMessage() {} func (x *ListGamesResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[385] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[390] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23726,7 +24065,7 @@ func (x *ListGamesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListGamesResponse.ProtoReflect.Descriptor instead. func (*ListGamesResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{385} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{390} } func (x *ListGamesResponse) GetGames() *GamesConnection { @@ -23751,7 +24090,7 @@ type GamesConnection struct { func (x *GamesConnection) Reset() { *x = GamesConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[386] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[391] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23764,7 +24103,7 @@ func (x *GamesConnection) String() string { func (*GamesConnection) ProtoMessage() {} func (x *GamesConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[386] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[391] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23777,7 +24116,7 @@ func (x *GamesConnection) ProtoReflect() protoreflect.Message { // Deprecated: Use GamesConnection.ProtoReflect.Descriptor instead. func (*GamesConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{386} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{391} } func (x *GamesConnection) GetEdges() []*GameEdge { @@ -23809,7 +24148,7 @@ type GameEdge struct { func (x *GameEdge) Reset() { *x = GameEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[387] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[392] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23822,7 +24161,7 @@ func (x *GameEdge) String() string { func (*GameEdge) ProtoMessage() {} func (x *GameEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[387] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[392] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23835,7 +24174,7 @@ func (x *GameEdge) ProtoReflect() protoreflect.Message { // Deprecated: Use GameEdge.ProtoReflect.Descriptor instead. func (*GameEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{387} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{392} } func (x *GameEdge) GetNode() *Game { @@ -23876,7 +24215,7 @@ type Game struct { func (x *Game) Reset() { *x = Game{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[388] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[393] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23889,7 +24228,7 @@ func (x *Game) String() string { func (*Game) ProtoMessage() {} func (x *Game) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[388] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[393] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23902,7 +24241,7 @@ func (x *Game) ProtoReflect() protoreflect.Message { // Deprecated: Use Game.ProtoReflect.Descriptor instead. func (*Game) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{388} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{393} } func (x *Game) GetId() string { @@ -23978,7 +24317,7 @@ type TeamGameEntities struct { func (x *TeamGameEntities) Reset() { *x = TeamGameEntities{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[389] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[394] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23991,7 +24330,7 @@ func (x *TeamGameEntities) String() string { func (*TeamGameEntities) ProtoMessage() {} func (x *TeamGameEntities) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[389] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[394] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24004,7 +24343,7 @@ func (x *TeamGameEntities) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamGameEntities.ProtoReflect.Descriptor instead. func (*TeamGameEntities) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{389} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{394} } func (x *TeamGameEntities) GetTeam() []*TeamGameEntity { @@ -24027,7 +24366,7 @@ type IndividualGameEntities struct { func (x *IndividualGameEntities) Reset() { *x = IndividualGameEntities{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[390] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[395] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24040,7 +24379,7 @@ func (x *IndividualGameEntities) String() string { func (*IndividualGameEntities) ProtoMessage() {} func (x *IndividualGameEntities) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[390] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[395] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24053,7 +24392,7 @@ func (x *IndividualGameEntities) ProtoReflect() protoreflect.Message { // Deprecated: Use IndividualGameEntities.ProtoReflect.Descriptor instead. func (*IndividualGameEntities) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{390} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{395} } func (x *IndividualGameEntities) GetIndividual() []*IndividualGameEntity { @@ -24086,7 +24425,7 @@ type TeamGameEntity struct { func (x *TeamGameEntity) Reset() { *x = TeamGameEntity{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[391] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[396] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24099,7 +24438,7 @@ func (x *TeamGameEntity) String() string { func (*TeamGameEntity) ProtoMessage() {} func (x *TeamGameEntity) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[391] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[396] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24112,7 +24451,7 @@ func (x *TeamGameEntity) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamGameEntity.ProtoReflect.Descriptor instead. func (*TeamGameEntity) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{391} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{396} } func (x *TeamGameEntity) GetTeam() *TeamGameParticipation { @@ -24172,7 +24511,7 @@ type TeamGameParticipation struct { func (x *TeamGameParticipation) Reset() { *x = TeamGameParticipation{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[392] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[397] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24185,7 +24524,7 @@ func (x *TeamGameParticipation) String() string { func (*TeamGameParticipation) ProtoMessage() {} func (x *TeamGameParticipation) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[392] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[397] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24198,7 +24537,7 @@ func (x *TeamGameParticipation) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamGameParticipation.ProtoReflect.Descriptor instead. func (*TeamGameParticipation) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{392} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{397} } func (x *TeamGameParticipation) GetTeamId() string { @@ -24240,7 +24579,7 @@ type IndividualGameEntity struct { func (x *IndividualGameEntity) Reset() { *x = IndividualGameEntity{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[393] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[398] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24253,7 +24592,7 @@ func (x *IndividualGameEntity) String() string { func (*IndividualGameEntity) ProtoMessage() {} func (x *IndividualGameEntity) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[393] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[398] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24266,7 +24605,7 @@ func (x *IndividualGameEntity) ProtoReflect() protoreflect.Message { // Deprecated: Use IndividualGameEntity.ProtoReflect.Descriptor instead. func (*IndividualGameEntity) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{393} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{398} } func (x *IndividualGameEntity) GetIndividual() string { @@ -27346,7 +27685,7 @@ var file_data_node_api_v2_trading_data_proto_rawDesc = []byte{ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, - 0x72, 0x73, 0x6f, 0x72, 0x22, 0xb0, 0x02, 0x0a, 0x0e, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, + 0x72, 0x73, 0x6f, 0x72, 0x22, 0xb2, 0x02, 0x0a, 0x0e, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, @@ -27360,1363 +27699,1433 @@ var file_data_node_api_v2_trading_data_proto_rawDesc = []byte{ 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x0e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, - 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x70, 0x6c, - 0x61, 0x79, 0x65, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x61, 0x6d, 0x65, - 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x22, 0x62, 0x0a, 0x16, 0x51, 0x75, 0x61, 0x6e, 0x74, - 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, - 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x51, 0x75, 0x61, - 0x6e, 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x17, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x06, - 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x54, 0x65, 0x61, 0x6d, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, - 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6a, - 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x22, - 0x5b, 0x0a, 0x0f, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x45, 0x64, - 0x67, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x87, 0x01, 0x0a, - 0x15, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, - 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, - 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x67, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, - 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0d, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x73, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x5f, + 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x61, + 0x6d, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x22, 0x62, 0x0a, 0x16, 0x51, 0x75, 0x61, + 0x6e, 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, + 0x6f, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x51, + 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, 0x84, 0x02, + 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x61, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x11, 0x61, 0x67, 0x67, 0x72, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x15, + 0x0a, 0x13, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x75, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, + 0x73, 0x74, 0x69, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0a, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x22, 0x9a, 0x01, 0x0a, 0x1f, + 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, + 0x73, 0x74, 0x69, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x3f, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, + 0x73, 0x74, 0x69, 0x63, 0x73, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, + 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x6d, 0x0a, 0x18, 0x54, 0x65, 0x61, 0x6d, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, + 0x45, 0x64, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, + 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0xba, 0x02, 0x0a, 0x14, 0x54, 0x65, 0x61, 0x6d, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, + 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x32, 0x0a, + 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x72, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x12, 0x50, 0x0a, 0x0f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x61, + 0x6e, 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, + 0x6f, 0x63, 0x68, 0x52, 0x0e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x67, 0x61, 0x6d, + 0x65, 0x73, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, + 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x64, 0x22, 0x89, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, + 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, + 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, + 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x65, + 0x64, 0x41, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x5b, 0x0a, 0x0f, 0x54, 0x65, 0x61, 0x6d, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x6e, + 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0c, 0x74, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x22, - 0x72, 0x0a, 0x12, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, - 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6a, - 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x45, 0x70, - 0x6f, 0x63, 0x68, 0x22, 0x69, 0x0a, 0x16, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x64, 0x67, 0x65, 0x12, 0x37, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, - 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x95, - 0x01, 0x0a, 0x1c, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x3d, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x87, 0x01, 0x0a, 0x15, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x36, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, - 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, - 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x90, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, - 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x81, 0x01, 0x0a, 0x1e, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x14, - 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x5f, 0x68, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, - 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x74, 0x65, 0x61, 0x6d, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xcf, 0x01, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x5f, 0x73, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x08, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, - 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x07, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, - 0x65, 0x71, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x22, - 0x50, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x66, 0x65, 0x65, 0x73, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x65, - 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x09, 0x66, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, - 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x01, 0x52, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x6f, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x02, 0x52, 0x07, 0x74, 0x6f, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, - 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x73, 0x0a, 0x1c, 0x47, 0x65, 0x74, - 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x14, 0x66, 0x65, 0x65, - 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x74, - 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x11, 0x66, 0x65, 0x65, - 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x22, 0x28, - 0x0a, 0x26, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, - 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x27, 0x47, 0x65, 0x74, - 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x1f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x45, 0x64, 0x67, 0x65, + 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, + 0x67, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0d, 0x74, + 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x74, 0x65, 0x61, 0x6d, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x22, 0x72, 0x0a, 0x12, 0x54, 0x65, 0x61, 0x6d, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x17, + 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6a, + 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x69, 0x0a, 0x16, + 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x45, 0x64, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x95, 0x01, 0x0a, 0x1c, 0x54, 0x65, 0x61, 0x6d, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x64, 0x67, 0x65, + 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, + 0x90, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1e, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x81, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x14, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x65, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x12, 0x74, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xcf, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, 0x65, + 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, + 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x20, 0x0a, 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x08, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x88, + 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, + 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x42, 0x0b, 0x0a, 0x09, 0x5f, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x22, 0x50, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x46, + 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x38, 0x0a, 0x0a, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, + 0x09, 0x66, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x1b, 0x47, + 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, + 0x72, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, + 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, + 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x09, 0x66, 0x72, 0x6f, + 0x6d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x6f, 0x5f, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x07, 0x74, + 0x6f, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x22, 0x73, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x53, 0x0a, 0x14, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, + 0x61, 0x72, 0x74, 0x79, 0x52, 0x11, 0x66, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, + 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x22, 0x28, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x43, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x98, 0x01, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x1c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, - 0x72, 0x61, 0x6d, 0x22, 0xca, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x07, 0x61, 0x74, 0x45, 0x70, 0x6f, - 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x74, 0x5f, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, - 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x66, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x1d, 0x56, 0x6f, 0x6c, + 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, + 0x1f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x1c, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x22, 0xca, 0x01, 0x0a, + 0x1d, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, + 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x00, 0x52, 0x07, 0x61, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1e, + 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, + 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x66, 0x0a, 0x1e, 0x47, 0x65, 0x74, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x05, 0x65, 0x64, - 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x22, 0x97, 0x01, 0x0a, 0x1d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, + 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x6b, 0x0a, 0x17, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x45, 0x64, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x9b, 0x01, 0x0a, 0x13, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x12, 0x19, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x07, 0x61, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, + 0x25, 0x0a, 0x0e, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x8a, 0x02, 0x0a, 0x15, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0d, 0x62, 0x65, + 0x6e, 0x65, 0x66, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x42, + 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, 0x72, 0x52, 0x0c, 0x62, 0x65, 0x6e, 0x65, + 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, 0x72, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x65, 0x6e, 0x64, 0x5f, + 0x6f, 0x66, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x65, 0x6e, 0x64, 0x4f, + 0x66, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, + 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1e, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x65, + 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x22, 0x93, 0x02, 0x0a, 0x11, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, 0x73, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, 0x73, + 0x65, 0x74, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x19, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x39, + 0x0a, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x65, + 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, + 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x22, 0x7f, 0x0a, 0x20, 0x4f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, + 0x09, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, + 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, + 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x77, 0x0a, 0x21, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x52, 0x0a, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, + 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x22, 0xd0, 0x01, 0x0a, 0x1a, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x11, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0f, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, + 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, + 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x22, 0x4b, 0x0a, 0x1b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, + 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x5a, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x22, + 0x4c, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb9, 0x02, + 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x22, 0x0a, 0x0a, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x46, 0x72, 0x6f, + 0x6d, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x6f, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x07, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x54, + 0x6f, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x48, 0x03, 0x52, + 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x04, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x0b, 0x0a, 0x09, + 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x6f, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4b, 0x0a, 0x11, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, + 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x47, 0x61, 0x6d, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x7a, 0x0a, 0x0f, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x05, 0x65, 0x64, 0x67, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x22, 0x6b, 0x0a, 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x64, 0x67, 0x65, 0x12, 0x38, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, - 0x9b, 0x01, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x61, 0x74, 0x45, 0x70, 0x6f, - 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x27, 0x0a, - 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, - 0x67, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x8a, 0x02, - 0x0a, 0x15, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x3c, 0x0a, 0x0d, 0x62, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x65, - 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, - 0x72, 0x52, 0x0c, 0x62, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, 0x72, 0x73, 0x12, - 0x37, 0x0a, 0x18, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, - 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x15, 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x69, 0x6e, 0x64, - 0x6f, 0x77, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1e, 0x0a, - 0x08, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, - 0x00, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x93, 0x02, 0x0a, 0x11, 0x46, - 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, - 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0x12, 0x3a, 0x0a, 0x19, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x5f, 0x64, 0x69, - 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x36, 0x0a, - 0x17, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, - 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, - 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0x22, 0x7f, 0x0a, 0x20, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, - 0x73, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x77, 0x0a, 0x21, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xd0, 0x01, 0x0a, 0x1a, 0x45, - 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, - 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x72, 0x6f, - 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x11, - 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x66, 0x72, 0x6f, 0x6d, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, - 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x74, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x22, 0x4b, 0x0a, - 0x1b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5a, 0x0a, 0x22, 0x47, 0x65, - 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, - 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, - 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, - 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, - 0x61, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, - 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x69, 0x73, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb9, 0x02, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x67, 0x61, 0x6d, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x67, 0x61, - 0x6d, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x09, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, - 0x07, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0c, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x48, 0x03, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x63, - 0x6f, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x67, 0x61, 0x6d, - 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x66, - 0x72, 0x6f, 0x6d, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x6f, - 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x63, 0x6f, 0x70, - 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x4b, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x7a, 0x0a, - 0x0f, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x2f, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, - 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x4d, 0x0a, 0x08, 0x47, 0x61, 0x6d, - 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0xe0, 0x01, 0x0a, 0x04, 0x47, 0x61, 0x6d, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x70, - 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x74, - 0x65, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, - 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x48, 0x00, 0x52, 0x04, - 0x74, 0x65, 0x61, 0x6d, 0x12, 0x49, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, - 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x76, - 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x42, - 0x0a, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x47, 0x0a, 0x10, 0x54, - 0x65, 0x61, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, - 0x33, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x04, - 0x74, 0x65, 0x61, 0x6d, 0x22, 0x5f, 0x0a, 0x16, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, - 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, - 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, - 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, - 0x69, 0x64, 0x75, 0x61, 0x6c, 0x22, 0xf4, 0x01, 0x0a, 0x0e, 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, - 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x66, 0x6f, 0x22, 0x4d, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x29, + 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x22, 0xe0, 0x01, 0x0a, 0x04, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x6e, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x12, 0x49, 0x0a, + 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x61, + 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, + 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x42, 0x0a, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x22, 0x47, 0x0a, 0x10, 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, 0x6d, 0x65, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, 0x6d, - 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, - 0x74, 0x65, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, - 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6e, - 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x22, 0x8c, 0x01, 0x0a, - 0x15, 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, - 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, - 0x5a, 0x0a, 0x15, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x45, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x14, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x50, 0x61, - 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x22, 0xde, 0x01, 0x0a, 0x14, - 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, - 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, - 0x64, 0x75, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, - 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6e, - 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x2a, 0xaa, 0x01, 0x0a, - 0x10, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x12, 0x22, 0x0a, 0x1e, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x43, 0x4f, - 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x24, 0x0a, - 0x20, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x49, - 0x44, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, - 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, 0x2a, 0xb0, 0x01, 0x0a, 0x0c, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, - 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x43, 0x43, - 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, - 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x50, 0x41, 0x52, 0x54, 0x59, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x41, - 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x53, 0x53, - 0x45, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x43, 0x4f, 0x55, - 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, - 0x49, 0x44, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, - 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x05, 0x2a, 0xad, 0x01, 0x0a, - 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x44, - 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, - 0x45, 0x52, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, - 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, - 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x4f, 0x10, 0x02, - 0x12, 0x2a, 0x0a, 0x26, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x44, 0x49, 0x52, - 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, - 0x54, 0x4f, 0x5f, 0x4f, 0x52, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x10, 0x03, 0x2a, 0xde, 0x02, 0x0a, - 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, - 0x0e, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x10, - 0x01, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, - 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x53, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x03, 0x12, - 0x10, 0x0a, 0x0c, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, 0x10, - 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, - 0x53, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x52, 0x41, - 0x44, 0x45, 0x53, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, - 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x4c, 0x45, 0x56, - 0x45, 0x4c, 0x53, 0x10, 0x08, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, - 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x09, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, - 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x0a, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x0b, 0x12, 0x12, 0x0a, - 0x0e, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x53, 0x10, - 0x0c, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x44, - 0x52, 0x41, 0x57, 0x41, 0x4c, 0x53, 0x10, 0x0d, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x53, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x53, 0x10, 0x0f, 0x32, 0xa2, 0x73, - 0x0a, 0x12, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x6a, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x0d, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x12, 0x75, 0x0a, 0x0f, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, + 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x22, 0x5f, 0x0a, + 0x16, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, + 0x69, 0x64, 0x75, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, + 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x22, 0xf4, + 0x01, 0x0a, 0x0e, 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, + 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x12, 0x12, 0x0a, + 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x72, 0x61, 0x6e, + 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x23, + 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x61, 0x72, + 0x6e, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, + 0x61, 0x72, 0x6e, 0x65, 0x64, 0x22, 0x8c, 0x01, 0x0a, 0x15, 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, + 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x5a, 0x0a, 0x15, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6e, + 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, + 0x64, 0x75, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x14, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x74, 0x69, 0x6e, 0x67, 0x22, 0xde, 0x01, 0x0a, 0x14, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, + 0x75, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1e, 0x0a, + 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x12, 0x12, 0x0a, + 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x72, 0x61, 0x6e, + 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x23, + 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x61, 0x72, + 0x6e, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, + 0x61, 0x72, 0x6e, 0x65, 0x64, 0x2a, 0xaa, 0x01, 0x0a, 0x10, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x22, 0x0a, 0x1e, 0x4c, 0x45, + 0x44, 0x47, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, + 0x0a, 0x22, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x52, 0x4f, + 0x4d, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, + 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x46, 0x49, 0x45, + 0x4c, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x10, 0x03, 0x2a, 0xb0, 0x01, 0x0a, 0x0c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x49, + 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x59, 0x5f, + 0x49, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, + 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x53, 0x53, 0x45, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x03, + 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, + 0x44, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x04, 0x12, 0x16, 0x0a, + 0x12, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x10, 0x05, 0x2a, 0xad, 0x01, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x1e, 0x54, + 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x24, 0x0a, 0x20, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x44, 0x49, 0x52, 0x45, + 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x46, + 0x52, 0x4f, 0x4d, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, + 0x52, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, + 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x4f, 0x10, 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x54, 0x52, 0x41, + 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x4f, 0x52, 0x5f, 0x46, + 0x52, 0x4f, 0x4d, 0x10, 0x03, 0x2a, 0xde, 0x02, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, + 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x53, 0x10, + 0x02, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x47, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x41, 0x42, 0x4c, + 0x45, 0x5f, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x53, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, + 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x52, 0x41, 0x44, 0x45, 0x53, 0x10, 0x06, 0x12, 0x15, + 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x44, + 0x41, 0x54, 0x41, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, + 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x53, 0x10, 0x08, 0x12, 0x13, + 0x0a, 0x0f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, + 0x53, 0x10, 0x09, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x51, + 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, + 0x53, 0x10, 0x0a, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x52, + 0x4b, 0x45, 0x54, 0x53, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x53, 0x10, 0x0c, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x41, 0x4c, 0x53, 0x10, + 0x0d, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, + 0x53, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x57, + 0x41, 0x52, 0x44, 0x53, 0x10, 0x0f, 0x32, 0xb3, 0x74, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x64, 0x69, + 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6a, 0x0a, + 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x24, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0d, 0x92, 0x41, 0x0a, 0x0a, + 0x08, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x75, 0x0a, 0x0f, 0x4f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0d, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x30, 0x01, 0x12, 0x5a, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x1c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, 0x41, - 0x12, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, - 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x73, 0x12, 0x62, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, - 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x77, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x6d, - 0x0a, 0x0d, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, - 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x0d, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x30, 0x01, + 0x12, 0x5a, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, + 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x08, + 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, + 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x62, 0x0a, 0x0a, 0x4c, 0x69, + 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x77, + 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, + 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x6d, 0x0a, 0x0d, 0x4f, 0x62, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, - 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x30, 0x01, 0x12, 0x68, 0x0a, - 0x0c, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x24, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, - 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x6e, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, - 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x71, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x73, 0x30, 0x01, 0x12, 0x68, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, + 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x70, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x12, 0x6e, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x73, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x12, 0x71, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x88, 0x02, 0x01, 0x92, 0x41, 0x0b, 0x0a, - 0x09, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x77, 0x0a, 0x10, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x79, 0x0a, 0x10, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x50, 0x6f, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x11, 0x88, 0x02, 0x01, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x77, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, + 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, - 0x0b, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x30, 0x01, 0x12, 0x7f, - 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, - 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, + 0x0b, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x79, 0x0a, 0x10, + 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x30, 0x01, 0x12, 0x7f, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, + 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x13, 0x92, 0x41, 0x10, 0x0a, 0x0e, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x20, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x6f, 0x0a, 0x13, 0x45, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, + 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, + 0x64, 0x79, 0x22, 0x13, 0x92, 0x41, 0x10, 0x0a, 0x0e, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x20, + 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x12, 0x4c, 0x69, 0x73, + 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, + 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0d, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x7e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x92, 0x41, 0x10, 0x0a, - 0x0e, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, - 0x6f, 0x0a, 0x13, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, - 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4c, - 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x13, 0x92, 0x41, 0x10, 0x0a, 0x0e, - 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x30, 0x01, - 0x12, 0x7c, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0d, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x7e, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, - 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x81, - 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x12, 0x2c, 0x2e, 0x64, 0x61, + 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, - 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x70, - 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x80, 0x01, 0x0a, 0x13, 0x4f, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x12, 0x2b, + 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, + 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, - 0x65, 0x70, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x30, 0x01, 0x12, 0x95, 0x01, 0x0a, 0x1a, 0x4f, 0x62, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, - 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, - 0x74, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x30, - 0x01, 0x12, 0x7d, 0x0a, 0x12, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, + 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, + 0x65, 0x70, 0x74, 0x68, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, + 0x80, 0x01, 0x0a, 0x13, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x30, 0x01, - 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x44, 0x12, 0x30, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, - 0x12, 0x6e, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x73, 0x12, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x30, 0x01, 0x12, 0x95, 0x01, 0x0a, 0x1a, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x12, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, + 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x12, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x30, 0x01, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x47, 0x65, + 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x42, 0x79, 0x49, 0x44, 0x12, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, + 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, + 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, + 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x6e, 0x0a, 0x0d, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x25, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, - 0x12, 0x68, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, - 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, - 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, - 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x28, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x68, 0x0a, 0x0b, 0x47, 0x65, 0x74, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x73, 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, + 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x6f, 0x0a, 0x0e, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, + 0x41, 0x09, 0x0a, 0x07, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x7a, 0x0a, 0x11, 0x4f, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x43, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x30, 0x01, 0x12, 0x7e, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x12, 0x6f, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x43, 0x61, 0x6e, 0x64, 0x6c, - 0x65, 0x73, 0x12, 0x7a, 0x0a, 0x11, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x43, 0x61, 0x6e, - 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x43, 0x61, 0x6e, 0x64, - 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, - 0x92, 0x41, 0x09, 0x0a, 0x07, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x30, 0x01, 0x12, 0x7e, - 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, - 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x63, - 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, 0x0c, 0x0a, 0x0a, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, - 0x6e, 0x63, 0x65, 0x12, 0x6e, 0x0a, 0x0c, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x56, 0x6f, - 0x74, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x56, 0x6f, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x0f, 0x92, 0x41, 0x0c, 0x0a, 0x0a, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, - 0x65, 0x30, 0x01, 0x12, 0xb3, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, - 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, - 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x3b, 0x2e, 0x64, 0x61, + 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, + 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x63, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x56, + 0x6f, 0x74, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, 0x0c, + 0x0a, 0x0a, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x6e, 0x0a, 0x0c, + 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x56, 0x6f, 0x74, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, 0x0c, 0x0a, 0x0a, + 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x30, 0x01, 0x12, 0xb3, 0x01, 0x0a, + 0x23, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, + 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x73, 0x12, 0x3b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, + 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, + 0x67, 0x65, 0x12, 0xb9, 0x01, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x3d, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, + 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, - 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, - 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, - 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0xb9, 0x01, 0x0a, 0x25, 0x4c, 0x69, - 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x73, 0x12, 0x3d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, - 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, - 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x12, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x73, 0x73, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, - 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x9e, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x45, - 0x52, 0x43, 0x32, 0x30, 0x53, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x34, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, - 0x43, 0x32, 0x30, 0x53, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x53, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, - 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, - 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, - 0x45, 0x52, 0x43, 0x32, 0x30, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x41, - 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x72, - 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x64, 0x61, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, + 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x8f, + 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x73, 0x73, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x2f, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, + 0x45, 0x52, 0x43, 0x32, 0x30, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, - 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, - 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x12, 0x68, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, - 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, - 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x62, 0x0a, - 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x73, 0x12, 0x6d, 0x0a, 0x0d, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, - 0x65, 0x73, 0x12, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x42, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, + 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x12, 0x9e, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x53, 0x65, 0x74, + 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x12, 0x34, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x53, 0x65, 0x74, 0x41, + 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, + 0x32, 0x30, 0x53, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, + 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, + 0x65, 0x12, 0x98, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x57, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, + 0x12, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x57, 0x69, 0x74, 0x68, 0x64, + 0x72, 0x61, 0x77, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x57, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, + 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x68, 0x0a, 0x0c, + 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x24, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, + 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, + 0x61, 0x64, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, + 0x41, 0x08, 0x0a, 0x06, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x6d, 0x0a, 0x0d, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x30, 0x01, - 0x12, 0x71, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, + 0x06, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x30, 0x01, 0x12, 0x71, 0x0a, 0x0d, 0x47, 0x65, 0x74, + 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x25, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, + 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, - 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, - 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x20, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x12, 0x77, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, - 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, - 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, + 0x44, 0x61, 0x74, 0x61, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x77, 0x0a, 0x0f, + 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x12, + 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, - 0x44, 0x61, 0x74, 0x61, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x74, 0x0a, 0x0e, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, - 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x12, 0x60, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, - 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x73, 0x12, 0x66, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, - 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x81, 0x01, 0x0a, - 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, - 0x12, 0x5d, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x12, 0x20, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, - 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, + 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x20, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x74, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, + 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, + 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x44, + 0x61, 0x74, 0x61, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x60, 0x0a, 0x09, 0x47, + 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, + 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x66, 0x0a, + 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, - 0x66, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x23, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, + 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x5d, 0x0a, 0x08, 0x47, 0x65, 0x74, + 0x50, 0x61, 0x72, 0x74, 0x79, 0x12, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, + 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, + 0x07, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x66, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, + 0x12, 0x7b, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x67, 0x69, + 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, - 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x7b, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x67, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x92, 0x41, 0x0f, 0x0a, 0x0d, + 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, 0x86, 0x01, + 0x0a, 0x13, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, + 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x92, 0x41, 0x0f, 0x0a, 0x0d, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x20, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x73, 0x12, 0x86, 0x01, 0x0a, 0x13, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, 0x2b, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x92, 0x41, 0x0f, 0x0a, 0x0d, 0x4d, 0x61, - 0x72, 0x67, 0x69, 0x6e, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x30, 0x01, 0x12, 0x66, 0x0a, - 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x23, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x7e, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x70, - 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, - 0x65, 0x73, 0x12, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x62, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x12, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, - 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x68, 0x0a, 0x0c, 0x4c, 0x69, 0x73, - 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, - 0x65, 0x74, 0x73, 0x12, 0x6b, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, - 0x61, 0x77, 0x61, 0x6c, 0x12, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x76, 0x65, 0x6c, 0x73, 0x30, 0x01, 0x12, 0x66, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x7e, + 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x8d, + 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x62, + 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x22, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x65, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x73, 0x12, 0x68, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x6b, 0x0a, 0x0d, + 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x12, 0x25, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, - 0x61, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, - 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, - 0x12, 0x71, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, - 0x61, 0x6c, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, - 0x61, 0x77, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, + 0x61, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, + 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x71, 0x0a, 0x0f, 0x4c, 0x69, 0x73, + 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, - 0x65, 0x74, 0x73, 0x12, 0x5c, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, - 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, - 0x73, 0x12, 0x62, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, - 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, - 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x8f, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, - 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, - 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, - 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x88, 0x02, 0x01, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x4c, 0x69, - 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x95, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x6c, 0x6c, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, - 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x64, 0x61, 0x74, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, + 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x5c, 0x0a, 0x08, + 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x73, + 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, + 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x62, 0x0a, 0x0a, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x8f, + 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x6c, 0x6c, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, - 0x97, 0x01, 0x0a, 0x1a, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, - 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, - 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, - 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x4c, 0x69, - 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x30, 0x01, 0x12, 0x89, 0x01, 0x0a, 0x16, 0x4c, 0x69, + 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, - 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, - 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x4c, 0x69, 0x71, 0x75, - 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x86, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, - 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x12, - 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, - 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, - 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, - 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x7b, - 0x0a, 0x11, 0x47, 0x65, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, - 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x47, 0x65, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, 0x0c, 0x0a, - 0x0a, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x7e, 0x0a, 0x12, 0x4c, - 0x69, 0x73, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, - 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x88, + 0x02, 0x01, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x12, 0x95, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4c, 0x69, 0x71, 0x75, + 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, + 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x4c, + 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x97, 0x01, 0x0a, 0x1a, 0x4f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x30, 0x01, 0x12, 0x89, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, + 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x86, + 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, + 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x4c, 0x69, + 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x7b, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x47, 0x6f, + 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x65, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x6f, 0x76, + 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, 0x0c, 0x0a, 0x0a, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, + 0x61, 0x6e, 0x63, 0x65, 0x12, 0x7e, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6f, 0x76, 0x65, + 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6f, 0x76, + 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, 0x0c, 0x0a, 0x0a, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, + 0x61, 0x6e, 0x63, 0x65, 0x12, 0x7d, 0x0a, 0x11, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x47, + 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x47, 0x6f, + 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x0f, 0x92, 0x41, 0x0c, 0x0a, 0x0a, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, + 0x65, 0x30, 0x01, 0x12, 0x72, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, + 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x5a, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4e, + 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x60, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, + 0x73, 0x12, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x80, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x4e, + 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, 0x0c, 0x0a, - 0x0a, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x7d, 0x0a, 0x11, 0x4f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, - 0x12, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, - 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, 0x0c, 0x0a, 0x0a, 0x47, 0x6f, - 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x30, 0x01, 0x12, 0x72, 0x0a, 0x0f, 0x4c, 0x69, - 0x73, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, + 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x5d, 0x0a, 0x08, 0x47, 0x65, 0x74, + 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, + 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x65, 0x0a, 0x0b, 0x45, 0x73, 0x74, 0x69, + 0x6d, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x12, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, + 0x74, 0x65, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, + 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, + 0x6e, 0x0a, 0x0e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, + 0x6e, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x67, + 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, + 0x6d, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, + 0x77, 0x0a, 0x10, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x6f, - 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, + 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x12, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x5a, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, - 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, - 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x60, 0x0a, 0x09, 0x4c, - 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, - 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x61, + 0x7e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, + 0x72, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x80, 0x01, - 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, - 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, - 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x12, 0x5d, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x2e, 0x64, + 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x12, 0x5d, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, + 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x69, 0x73, 0x6b, 0x46, 0x61, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, - 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x65, 0x0a, 0x0b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x12, 0x23, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x46, 0x65, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x6e, 0x0a, 0x0e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, - 0x74, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, - 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x77, 0x0a, 0x10, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, - 0x74, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, - 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x84, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x7e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x2b, 0x2e, + 0x65, 0x74, 0x52, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x73, 0x12, 0x75, 0x0a, 0x0f, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x42, 0x75, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x75, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x28, 0x01, 0x30, 0x01, 0x12, 0x92, 0x01, 0x0a, 0x16, 0x4f, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x4c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x20, 0x6d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x30, 0x01, 0x12, + 0x75, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x72, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, - 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x5d, 0x0a, 0x08, 0x47, 0x65, - 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x6b, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, - 0x61, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, - 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, - 0x52, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x26, 0x2e, 0x64, 0x61, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, + 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x74, 0x68, 0x65, + 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x66, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x56, 0x65, 0x67, + 0x61, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x67, 0x61, 0x54, + 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, + 0x56, 0x65, 0x67, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x8d, + 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, + 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, - 0x74, 0x52, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, - 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x75, 0x0a, 0x0f, 0x4f, 0x62, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x73, 0x12, 0x27, 0x2e, + 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x28, 0x01, 0x30, - 0x01, 0x12, 0x92, 0x01, 0x0a, 0x16, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x65, 0x64, - 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, - 0x41, 0x12, 0x0a, 0x10, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x20, 0x6d, 0x6f, 0x76, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x30, 0x01, 0x12, 0x75, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, - 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x8d, 0x01, - 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, - 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x2e, 0x64, 0x61, 0x74, + 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, + 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x99, + 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, + 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, + 0x34, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, + 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, + 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x78, 0x0a, 0x11, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, + 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x66, 0x0a, - 0x0b, 0x47, 0x65, 0x74, 0x56, 0x65, 0x67, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, - 0x65, 0x74, 0x56, 0x65, 0x67, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x67, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x99, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x34, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x64, + 0x74, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x12, 0xb3, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x73, 0x74, + 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3a, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, + 0x74, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x73, + 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x92, 0x41, 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0xa4, 0x01, 0x0a, 0x1d, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x12, 0x78, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x72, - 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, - 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0xb3, 0x01, 0x0a, 0x22, - 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x3a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, - 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x92, 0x41, 0x11, - 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x12, 0xa4, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x14, 0x92, 0x41, 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0xb9, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x92, 0x41, 0x11, + 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x12, 0xb9, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x65, 0x65, + 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x3c, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, - 0x73, 0x12, 0x3c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x65, 0x65, 0x72, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x3d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, - 0x92, 0x41, 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x68, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x12, 0x92, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x14, 0x92, 0x41, 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0xaa, 0x01, 0x0a, 0x1f, 0x47, 0x65, - 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, - 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x12, 0x37, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x92, 0x41, 0x11, 0x0a, 0x0f, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x92, 0x01, + 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x92, 0x41, + 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x12, 0xaa, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, + 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x12, 0x37, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, - 0x72, 0x61, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x14, 0x92, 0x41, 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x68, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x6a, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, - 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x0d, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, - 0x65, 0x72, 0x12, 0x7b, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x72, 0x61, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x38, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x65, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x92, 0x41, 0x11, 0x0a, 0x0f, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, + 0x6a, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, + 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0d, 0x92, 0x41, + 0x0a, 0x0a, 0x08, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x12, 0x7b, 0x0a, 0x12, 0x4c, + 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x73, 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, + 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, + 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, + 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x96, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, + 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, + 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, - 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, - 0x96, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, - 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, - 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x7e, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, - 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, - 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, - 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6b, 0x12, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, - 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, - 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x72, 0x61, 0x6c, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x99, 0x01, 0x0a, 0x19, - 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, - 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, + 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x73, 0x12, 0x7e, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, + 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x73, 0x12, 0x90, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x12, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, - 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x20, - 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x7e, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x20, - 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x93, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, - 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, + 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x20, 0x70, 0x72, 0x6f, + 0x67, 0x72, 0x61, 0x6d, 0x12, 0x99, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, + 0x61, 0x6d, 0x12, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, + 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, + 0x12, 0x7e, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, + 0x53, 0x65, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x72, 0x61, 0x6c, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x87, 0x01, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, - 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x20, - 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x5e, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x65, 0x61, 0x6d, 0x73, 0x12, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, - 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, - 0x0a, 0x05, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x7c, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x2b, + 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, - 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x73, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, - 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, + 0x12, 0x93, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, + 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x20, 0x70, + 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x87, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2b, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, + 0x12, 0x5e, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x21, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x54, 0x65, 0x61, 0x6d, 0x73, + 0x12, 0x7c, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, + 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, + 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, + 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x8e, + 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x31, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x53, 0x74, + 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, + 0x73, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, - 0x92, 0x41, 0x07, 0x0a, 0x05, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x16, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x54, 0x65, 0x61, - 0x6d, 0x73, 0x12, 0x66, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, - 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x09, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x46, 0x65, 0x65, 0x73, 0x12, 0x7e, 0x0a, 0x14, 0x47, 0x65, - 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, - 0x74, 0x79, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x54, + 0x65, 0x61, 0x6d, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, + 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, + 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x66, 0x0a, 0x0c, + 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, - 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x09, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x46, 0x65, 0x65, 0x73, 0x12, 0xb2, 0x01, 0x0a, 0x1f, 0x47, - 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, - 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x37, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x1c, 0x92, 0x41, 0x19, 0x0a, 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x64, - 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, - 0x97, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x61, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x09, 0x92, 0x41, 0x06, 0x0a, 0x04, + 0x46, 0x65, 0x65, 0x73, 0x12, 0x7e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x12, 0x2c, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, + 0x72, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x92, 0x41, 0x19, + 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x09, 0x92, 0x41, 0x06, 0x0a, 0x04, + 0x46, 0x65, 0x65, 0x73, 0x12, 0xb2, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x37, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x38, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x92, 0x41, 0x19, 0x0a, 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x90, 0x01, 0x0a, 0x19, 0x47, 0x65, - 0x74, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, - 0x92, 0x41, 0x09, 0x0a, 0x07, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x81, 0x01, 0x0a, - 0x14, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, - 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x12, 0x9d, 0x01, 0x0a, 0x19, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x31, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x92, 0x41, 0x14, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x30, 0x01, - 0x12, 0x80, 0x01, 0x0a, 0x13, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, - 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x73, 0x12, 0x98, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, - 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x5e, - 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x72, - 0x0a, 0x14, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x14, 0x92, 0x41, 0x11, 0x0a, - 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x30, 0x01, 0x12, 0x4e, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x09, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x4d, 0x69, - 0x73, 0x63, 0x42, 0xca, 0x01, 0x5a, 0x31, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x65, 0x67, 0x61, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x6e, 0x6f, 0x64, - 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x92, 0x41, 0x93, 0x01, 0x12, 0x22, 0x0a, 0x13, - 0x56, 0x65, 0x67, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x20, 0x41, - 0x50, 0x49, 0x73, 0x32, 0x0b, 0x76, 0x30, 0x2e, 0x37, 0x34, 0x2e, 0x30, 0x2d, 0x64, 0x65, 0x76, - 0x1a, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x74, 0x65, - 0x73, 0x74, 0x6e, 0x65, 0x74, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x78, 0x79, 0x7a, 0x2a, 0x02, - 0x01, 0x02, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, - 0x6a, 0x73, 0x6f, 0x6e, 0x52, 0x39, 0x0a, 0x03, 0x35, 0x30, 0x30, 0x12, 0x32, 0x0a, 0x18, 0x41, - 0x6e, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x97, 0x01, 0x0a, 0x16, 0x47, 0x65, + 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x92, 0x41, 0x19, 0x0a, 0x17, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x20, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x12, 0x90, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x56, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x12, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x56, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x61, + 0x72, 0x74, 0x79, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, + 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, + 0x09, 0x0a, 0x07, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x9d, 0x01, 0x0a, 0x19, 0x4f, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x17, 0x92, 0x41, 0x14, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x30, 0x01, 0x12, 0x80, 0x01, 0x0a, 0x13, 0x45, + 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, + 0x65, 0x65, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, + 0x41, 0x0b, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x98, 0x01, + 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x46, 0x65, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x5e, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, + 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, + 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, + 0x07, 0x0a, 0x05, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x72, 0x0a, 0x14, 0x45, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, + 0x42, 0x6f, 0x64, 0x79, 0x22, 0x14, 0x92, 0x41, 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x30, 0x01, 0x12, 0x4e, 0x0a, 0x04, + 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x09, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x4d, 0x69, 0x73, 0x63, 0x42, 0xca, 0x01, 0x5a, + 0x31, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x73, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x32, 0x92, 0x41, 0x93, 0x01, 0x12, 0x22, 0x0a, 0x13, 0x56, 0x65, 0x67, 0x61, 0x20, 0x64, + 0x61, 0x74, 0x61, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x20, 0x41, 0x50, 0x49, 0x73, 0x32, 0x0b, 0x76, + 0x30, 0x2e, 0x37, 0x34, 0x2e, 0x30, 0x2d, 0x64, 0x65, 0x76, 0x1a, 0x1c, 0x68, 0x74, 0x74, 0x70, + 0x73, 0x3a, 0x2f, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x6e, 0x65, 0x74, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x78, 0x79, 0x7a, 0x2a, 0x02, 0x01, 0x02, 0x32, 0x10, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x52, 0x39, + 0x0a, 0x03, 0x35, 0x30, 0x30, 0x12, 0x32, 0x0a, 0x18, 0x41, 0x6e, 0x20, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -28732,7 +29141,7 @@ func file_data_node_api_v2_trading_data_proto_rawDescGZIP() []byte { } var file_data_node_api_v2_trading_data_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_data_node_api_v2_trading_data_proto_msgTypes = make([]protoimpl.MessageInfo, 394) +var file_data_node_api_v2_trading_data_proto_msgTypes = make([]protoimpl.MessageInfo, 399) var file_data_node_api_v2_trading_data_proto_goTypes = []interface{}{ (LedgerEntryField)(0), // 0: datanode.api.v2.LedgerEntryField (AccountField)(0), // 1: datanode.api.v2.AccountField @@ -29095,139 +29504,144 @@ var file_data_node_api_v2_trading_data_proto_goTypes = []interface{}{ (*TeamStatisticsEdge)(nil), // 358: datanode.api.v2.TeamStatisticsEdge (*TeamStatistics)(nil), // 359: datanode.api.v2.TeamStatistics (*QuantumRewardsPerEpoch)(nil), // 360: datanode.api.v2.QuantumRewardsPerEpoch - (*ListTeamRefereesRequest)(nil), // 361: datanode.api.v2.ListTeamRefereesRequest - (*TeamReferee)(nil), // 362: datanode.api.v2.TeamReferee - (*TeamRefereeEdge)(nil), // 363: datanode.api.v2.TeamRefereeEdge - (*TeamRefereeConnection)(nil), // 364: datanode.api.v2.TeamRefereeConnection - (*ListTeamRefereesResponse)(nil), // 365: datanode.api.v2.ListTeamRefereesResponse - (*TeamRefereeHistory)(nil), // 366: datanode.api.v2.TeamRefereeHistory - (*TeamRefereeHistoryEdge)(nil), // 367: datanode.api.v2.TeamRefereeHistoryEdge - (*TeamRefereeHistoryConnection)(nil), // 368: datanode.api.v2.TeamRefereeHistoryConnection - (*ListTeamRefereeHistoryRequest)(nil), // 369: datanode.api.v2.ListTeamRefereeHistoryRequest - (*ListTeamRefereeHistoryResponse)(nil), // 370: datanode.api.v2.ListTeamRefereeHistoryResponse - (*GetFeesStatsRequest)(nil), // 371: datanode.api.v2.GetFeesStatsRequest - (*GetFeesStatsResponse)(nil), // 372: datanode.api.v2.GetFeesStatsResponse - (*GetFeesStatsForPartyRequest)(nil), // 373: datanode.api.v2.GetFeesStatsForPartyRequest - (*GetFeesStatsForPartyResponse)(nil), // 374: datanode.api.v2.GetFeesStatsForPartyResponse - (*GetCurrentVolumeDiscountProgramRequest)(nil), // 375: datanode.api.v2.GetCurrentVolumeDiscountProgramRequest - (*GetCurrentVolumeDiscountProgramResponse)(nil), // 376: datanode.api.v2.GetCurrentVolumeDiscountProgramResponse - (*GetVolumeDiscountStatsRequest)(nil), // 377: datanode.api.v2.GetVolumeDiscountStatsRequest - (*GetVolumeDiscountStatsResponse)(nil), // 378: datanode.api.v2.GetVolumeDiscountStatsResponse - (*VolumeDiscountStatsConnection)(nil), // 379: datanode.api.v2.VolumeDiscountStatsConnection - (*VolumeDiscountStatsEdge)(nil), // 380: datanode.api.v2.VolumeDiscountStatsEdge - (*VolumeDiscountStats)(nil), // 381: datanode.api.v2.VolumeDiscountStats - (*VolumeDiscountProgram)(nil), // 382: datanode.api.v2.VolumeDiscountProgram - (*FeesStatsForParty)(nil), // 383: datanode.api.v2.FeesStatsForParty - (*ObserveTransactionResultsRequest)(nil), // 384: datanode.api.v2.ObserveTransactionResultsRequest - (*ObserveTransactionResultsResponse)(nil), // 385: datanode.api.v2.ObserveTransactionResultsResponse - (*EstimateTransferFeeRequest)(nil), // 386: datanode.api.v2.EstimateTransferFeeRequest - (*EstimateTransferFeeResponse)(nil), // 387: datanode.api.v2.EstimateTransferFeeResponse - (*GetTotalTransferFeeDiscountRequest)(nil), // 388: datanode.api.v2.GetTotalTransferFeeDiscountRequest - (*GetTotalTransferFeeDiscountResponse)(nil), // 389: datanode.api.v2.GetTotalTransferFeeDiscountResponse - (*ListGamesRequest)(nil), // 390: datanode.api.v2.ListGamesRequest - (*ListGamesResponse)(nil), // 391: datanode.api.v2.ListGamesResponse - (*GamesConnection)(nil), // 392: datanode.api.v2.GamesConnection - (*GameEdge)(nil), // 393: datanode.api.v2.GameEdge - (*Game)(nil), // 394: datanode.api.v2.Game - (*TeamGameEntities)(nil), // 395: datanode.api.v2.TeamGameEntities - (*IndividualGameEntities)(nil), // 396: datanode.api.v2.IndividualGameEntities - (*TeamGameEntity)(nil), // 397: datanode.api.v2.TeamGameEntity - (*TeamGameParticipation)(nil), // 398: datanode.api.v2.TeamGameParticipation - (*IndividualGameEntity)(nil), // 399: datanode.api.v2.IndividualGameEntity - (*v1.PartyLockedBalance)(nil), // 400: vega.events.v1.PartyLockedBalance - (*v1.PartyVestingBalance)(nil), // 401: vega.events.v1.PartyVestingBalance - (vega.AccountType)(0), // 402: vega.AccountType - (*vega.Order)(nil), // 403: vega.Order - (vega.Order_Status)(0), // 404: vega.Order.Status - (vega.Order_Type)(0), // 405: vega.Order.Type - (vega.Order_TimeInForce)(0), // 406: vega.Order.TimeInForce - (*v1.StopOrderEvent)(nil), // 407: vega.events.v1.StopOrderEvent - (vega.StopOrder_Status)(0), // 408: vega.StopOrder.Status - (vega.StopOrder_ExpiryStrategy)(0), // 409: vega.StopOrder.ExpiryStrategy - (*vega.Position)(nil), // 410: vega.Position - (vega.TransferType)(0), // 411: vega.TransferType - (*vega.MarketDepth)(nil), // 412: vega.MarketDepth - (*vega.MarketDepthUpdate)(nil), // 413: vega.MarketDepthUpdate - (*vega.MarketData)(nil), // 414: vega.MarketData - (*vega.PriceLevel)(nil), // 415: vega.PriceLevel - (*vega.Trade)(nil), // 416: vega.Trade - (v1.Transfer_Status)(0), // 417: vega.events.v1.Transfer.Status - (*v1.Transfer)(nil), // 418: vega.events.v1.Transfer - (*v1.TransferFees)(nil), // 419: vega.events.v1.TransferFees - (*vega.NetworkLimits)(nil), // 420: vega.NetworkLimits - (*vega.Vote)(nil), // 421: vega.Vote - (*v1.ERC20MultiSigSignerAdded)(nil), // 422: vega.events.v1.ERC20MultiSigSignerAdded - (*v1.ERC20MultiSigSignerRemoved)(nil), // 423: vega.events.v1.ERC20MultiSigSignerRemoved - (*vega.OracleSpec)(nil), // 424: vega.OracleSpec - (*vega.OracleData)(nil), // 425: vega.OracleData - (*vega.Market)(nil), // 426: vega.Market - (*vega.GovernanceData)(nil), // 427: vega.GovernanceData - (*vega.Party)(nil), // 428: vega.Party - (*vega.MarginLevels)(nil), // 429: vega.MarginLevels - (*vega.Reward)(nil), // 430: vega.Reward - (*vega.RewardSummary)(nil), // 431: vega.RewardSummary - (*vega.EpochRewardSummary)(nil), // 432: vega.EpochRewardSummary - (*vega.Deposit)(nil), // 433: vega.Deposit - (*vega.Withdrawal)(nil), // 434: vega.Withdrawal - (*vega.Asset)(nil), // 435: vega.Asset - (*vega.LiquidityProvision)(nil), // 436: vega.LiquidityProvision - (*vega.LiquidityProviderFeeShare)(nil), // 437: vega.LiquidityProviderFeeShare - (*vega.LiquidityProviderSLA)(nil), // 438: vega.LiquidityProviderSLA - (*v1.PaidLiquidityFeesStats)(nil), // 439: vega.events.v1.PaidLiquidityFeesStats - (vega.Proposal_State)(0), // 440: vega.Proposal.State - (*vega.Delegation)(nil), // 441: vega.Delegation - (vega.NodeStatus)(0), // 442: vega.NodeStatus - (*vega.NodeData)(nil), // 443: vega.NodeData - (*vega.Node)(nil), // 444: vega.Node - (*v11.NodeSignature)(nil), // 445: vega.commands.v1.NodeSignature - (*vega.Epoch)(nil), // 446: vega.Epoch - (*vega.Fee)(nil), // 447: vega.Fee - (vega.Side)(0), // 448: vega.Side - (*vega.NetworkParameter)(nil), // 449: vega.NetworkParameter - (*v1.StakeLinking)(nil), // 450: vega.events.v1.StakeLinking - (*vega.RiskFactor)(nil), // 451: vega.RiskFactor - (v1.BusEventType)(0), // 452: vega.events.v1.BusEventType - (*v1.BusEvent)(nil), // 453: vega.events.v1.BusEvent - (*vega.LedgerMovement)(nil), // 454: vega.LedgerMovement - (*v1.KeyRotation)(nil), // 455: vega.events.v1.KeyRotation - (*v1.EthereumKeyRotation)(nil), // 456: vega.events.v1.EthereumKeyRotation - (v1.ProtocolUpgradeProposalStatus)(0), // 457: vega.events.v1.ProtocolUpgradeProposalStatus - (*v1.ProtocolUpgradeEvent)(nil), // 458: vega.events.v1.ProtocolUpgradeEvent - (*v1.CoreSnapshotData)(nil), // 459: vega.events.v1.CoreSnapshotData - (*vega.Account)(nil), // 460: vega.Account - (*vega.LedgerEntry)(nil), // 461: vega.LedgerEntry - (*vega.Proposal)(nil), // 462: vega.Proposal - (*v1.PartyActivityStreak)(nil), // 463: vega.events.v1.PartyActivityStreak - (*v1.FundingPeriod)(nil), // 464: vega.events.v1.FundingPeriod - (v1.FundingPeriodDataPoint_Source)(0), // 465: vega.events.v1.FundingPeriodDataPoint.Source - (*v1.FundingPeriodDataPoint)(nil), // 466: vega.events.v1.FundingPeriodDataPoint - (*vega.BenefitTier)(nil), // 467: vega.BenefitTier - (*vega.StakingTier)(nil), // 468: vega.StakingTier - (*v1.FeesStats)(nil), // 469: vega.events.v1.FeesStats - (*vega.VolumeBenefitTier)(nil), // 470: vega.VolumeBenefitTier - (*v1.TransactionResult)(nil), // 471: vega.events.v1.TransactionResult - (vega.EntityScope)(0), // 472: vega.EntityScope - (*httpbody.HttpBody)(nil), // 473: google.api.HttpBody + (*ListTeamMembersStatisticsRequest)(nil), // 361: datanode.api.v2.ListTeamMembersStatisticsRequest + (*ListTeamMembersStatisticsResponse)(nil), // 362: datanode.api.v2.ListTeamMembersStatisticsResponse + (*TeamMembersStatisticsConnection)(nil), // 363: datanode.api.v2.TeamMembersStatisticsConnection + (*TeamMemberStatisticsEdge)(nil), // 364: datanode.api.v2.TeamMemberStatisticsEdge + (*TeamMemberStatistics)(nil), // 365: datanode.api.v2.TeamMemberStatistics + (*ListTeamRefereesRequest)(nil), // 366: datanode.api.v2.ListTeamRefereesRequest + (*TeamReferee)(nil), // 367: datanode.api.v2.TeamReferee + (*TeamRefereeEdge)(nil), // 368: datanode.api.v2.TeamRefereeEdge + (*TeamRefereeConnection)(nil), // 369: datanode.api.v2.TeamRefereeConnection + (*ListTeamRefereesResponse)(nil), // 370: datanode.api.v2.ListTeamRefereesResponse + (*TeamRefereeHistory)(nil), // 371: datanode.api.v2.TeamRefereeHistory + (*TeamRefereeHistoryEdge)(nil), // 372: datanode.api.v2.TeamRefereeHistoryEdge + (*TeamRefereeHistoryConnection)(nil), // 373: datanode.api.v2.TeamRefereeHistoryConnection + (*ListTeamRefereeHistoryRequest)(nil), // 374: datanode.api.v2.ListTeamRefereeHistoryRequest + (*ListTeamRefereeHistoryResponse)(nil), // 375: datanode.api.v2.ListTeamRefereeHistoryResponse + (*GetFeesStatsRequest)(nil), // 376: datanode.api.v2.GetFeesStatsRequest + (*GetFeesStatsResponse)(nil), // 377: datanode.api.v2.GetFeesStatsResponse + (*GetFeesStatsForPartyRequest)(nil), // 378: datanode.api.v2.GetFeesStatsForPartyRequest + (*GetFeesStatsForPartyResponse)(nil), // 379: datanode.api.v2.GetFeesStatsForPartyResponse + (*GetCurrentVolumeDiscountProgramRequest)(nil), // 380: datanode.api.v2.GetCurrentVolumeDiscountProgramRequest + (*GetCurrentVolumeDiscountProgramResponse)(nil), // 381: datanode.api.v2.GetCurrentVolumeDiscountProgramResponse + (*GetVolumeDiscountStatsRequest)(nil), // 382: datanode.api.v2.GetVolumeDiscountStatsRequest + (*GetVolumeDiscountStatsResponse)(nil), // 383: datanode.api.v2.GetVolumeDiscountStatsResponse + (*VolumeDiscountStatsConnection)(nil), // 384: datanode.api.v2.VolumeDiscountStatsConnection + (*VolumeDiscountStatsEdge)(nil), // 385: datanode.api.v2.VolumeDiscountStatsEdge + (*VolumeDiscountStats)(nil), // 386: datanode.api.v2.VolumeDiscountStats + (*VolumeDiscountProgram)(nil), // 387: datanode.api.v2.VolumeDiscountProgram + (*FeesStatsForParty)(nil), // 388: datanode.api.v2.FeesStatsForParty + (*ObserveTransactionResultsRequest)(nil), // 389: datanode.api.v2.ObserveTransactionResultsRequest + (*ObserveTransactionResultsResponse)(nil), // 390: datanode.api.v2.ObserveTransactionResultsResponse + (*EstimateTransferFeeRequest)(nil), // 391: datanode.api.v2.EstimateTransferFeeRequest + (*EstimateTransferFeeResponse)(nil), // 392: datanode.api.v2.EstimateTransferFeeResponse + (*GetTotalTransferFeeDiscountRequest)(nil), // 393: datanode.api.v2.GetTotalTransferFeeDiscountRequest + (*GetTotalTransferFeeDiscountResponse)(nil), // 394: datanode.api.v2.GetTotalTransferFeeDiscountResponse + (*ListGamesRequest)(nil), // 395: datanode.api.v2.ListGamesRequest + (*ListGamesResponse)(nil), // 396: datanode.api.v2.ListGamesResponse + (*GamesConnection)(nil), // 397: datanode.api.v2.GamesConnection + (*GameEdge)(nil), // 398: datanode.api.v2.GameEdge + (*Game)(nil), // 399: datanode.api.v2.Game + (*TeamGameEntities)(nil), // 400: datanode.api.v2.TeamGameEntities + (*IndividualGameEntities)(nil), // 401: datanode.api.v2.IndividualGameEntities + (*TeamGameEntity)(nil), // 402: datanode.api.v2.TeamGameEntity + (*TeamGameParticipation)(nil), // 403: datanode.api.v2.TeamGameParticipation + (*IndividualGameEntity)(nil), // 404: datanode.api.v2.IndividualGameEntity + (*v1.PartyLockedBalance)(nil), // 405: vega.events.v1.PartyLockedBalance + (*v1.PartyVestingBalance)(nil), // 406: vega.events.v1.PartyVestingBalance + (vega.AccountType)(0), // 407: vega.AccountType + (*vega.Order)(nil), // 408: vega.Order + (vega.Order_Status)(0), // 409: vega.Order.Status + (vega.Order_Type)(0), // 410: vega.Order.Type + (vega.Order_TimeInForce)(0), // 411: vega.Order.TimeInForce + (*v1.StopOrderEvent)(nil), // 412: vega.events.v1.StopOrderEvent + (vega.StopOrder_Status)(0), // 413: vega.StopOrder.Status + (vega.StopOrder_ExpiryStrategy)(0), // 414: vega.StopOrder.ExpiryStrategy + (*vega.Position)(nil), // 415: vega.Position + (vega.TransferType)(0), // 416: vega.TransferType + (*vega.MarketDepth)(nil), // 417: vega.MarketDepth + (*vega.MarketDepthUpdate)(nil), // 418: vega.MarketDepthUpdate + (*vega.MarketData)(nil), // 419: vega.MarketData + (*vega.PriceLevel)(nil), // 420: vega.PriceLevel + (*vega.Trade)(nil), // 421: vega.Trade + (v1.Transfer_Status)(0), // 422: vega.events.v1.Transfer.Status + (*v1.Transfer)(nil), // 423: vega.events.v1.Transfer + (*v1.TransferFees)(nil), // 424: vega.events.v1.TransferFees + (*vega.NetworkLimits)(nil), // 425: vega.NetworkLimits + (*vega.Vote)(nil), // 426: vega.Vote + (*v1.ERC20MultiSigSignerAdded)(nil), // 427: vega.events.v1.ERC20MultiSigSignerAdded + (*v1.ERC20MultiSigSignerRemoved)(nil), // 428: vega.events.v1.ERC20MultiSigSignerRemoved + (*vega.OracleSpec)(nil), // 429: vega.OracleSpec + (*vega.OracleData)(nil), // 430: vega.OracleData + (*vega.Market)(nil), // 431: vega.Market + (*vega.GovernanceData)(nil), // 432: vega.GovernanceData + (*vega.Party)(nil), // 433: vega.Party + (*vega.MarginLevels)(nil), // 434: vega.MarginLevels + (*vega.Reward)(nil), // 435: vega.Reward + (*vega.RewardSummary)(nil), // 436: vega.RewardSummary + (*vega.EpochRewardSummary)(nil), // 437: vega.EpochRewardSummary + (*vega.Deposit)(nil), // 438: vega.Deposit + (*vega.Withdrawal)(nil), // 439: vega.Withdrawal + (*vega.Asset)(nil), // 440: vega.Asset + (*vega.LiquidityProvision)(nil), // 441: vega.LiquidityProvision + (*vega.LiquidityProviderFeeShare)(nil), // 442: vega.LiquidityProviderFeeShare + (*vega.LiquidityProviderSLA)(nil), // 443: vega.LiquidityProviderSLA + (*v1.PaidLiquidityFeesStats)(nil), // 444: vega.events.v1.PaidLiquidityFeesStats + (vega.Proposal_State)(0), // 445: vega.Proposal.State + (*vega.Delegation)(nil), // 446: vega.Delegation + (vega.NodeStatus)(0), // 447: vega.NodeStatus + (*vega.NodeData)(nil), // 448: vega.NodeData + (*vega.Node)(nil), // 449: vega.Node + (*v11.NodeSignature)(nil), // 450: vega.commands.v1.NodeSignature + (*vega.Epoch)(nil), // 451: vega.Epoch + (*vega.Fee)(nil), // 452: vega.Fee + (vega.Side)(0), // 453: vega.Side + (*vega.NetworkParameter)(nil), // 454: vega.NetworkParameter + (*v1.StakeLinking)(nil), // 455: vega.events.v1.StakeLinking + (*vega.RiskFactor)(nil), // 456: vega.RiskFactor + (v1.BusEventType)(0), // 457: vega.events.v1.BusEventType + (*v1.BusEvent)(nil), // 458: vega.events.v1.BusEvent + (*vega.LedgerMovement)(nil), // 459: vega.LedgerMovement + (*v1.KeyRotation)(nil), // 460: vega.events.v1.KeyRotation + (*v1.EthereumKeyRotation)(nil), // 461: vega.events.v1.EthereumKeyRotation + (v1.ProtocolUpgradeProposalStatus)(0), // 462: vega.events.v1.ProtocolUpgradeProposalStatus + (*v1.ProtocolUpgradeEvent)(nil), // 463: vega.events.v1.ProtocolUpgradeEvent + (*v1.CoreSnapshotData)(nil), // 464: vega.events.v1.CoreSnapshotData + (*vega.Account)(nil), // 465: vega.Account + (*vega.LedgerEntry)(nil), // 466: vega.LedgerEntry + (*vega.Proposal)(nil), // 467: vega.Proposal + (*v1.PartyActivityStreak)(nil), // 468: vega.events.v1.PartyActivityStreak + (*v1.FundingPeriod)(nil), // 469: vega.events.v1.FundingPeriod + (v1.FundingPeriodDataPoint_Source)(0), // 470: vega.events.v1.FundingPeriodDataPoint.Source + (*v1.FundingPeriodDataPoint)(nil), // 471: vega.events.v1.FundingPeriodDataPoint + (*vega.BenefitTier)(nil), // 472: vega.BenefitTier + (*vega.StakingTier)(nil), // 473: vega.StakingTier + (*v1.FeesStats)(nil), // 474: vega.events.v1.FeesStats + (*vega.VolumeBenefitTier)(nil), // 475: vega.VolumeBenefitTier + (*v1.TransactionResult)(nil), // 476: vega.events.v1.TransactionResult + (vega.EntityScope)(0), // 477: vega.EntityScope + (*httpbody.HttpBody)(nil), // 478: google.api.HttpBody } var file_data_node_api_v2_trading_data_proto_depIdxs = []int32{ - 400, // 0: datanode.api.v2.GetVestingBalancesSummaryResponse.locked_balances:type_name -> vega.events.v1.PartyLockedBalance - 401, // 1: datanode.api.v2.GetVestingBalancesSummaryResponse.vesting_balances:type_name -> vega.events.v1.PartyVestingBalance - 402, // 2: datanode.api.v2.AccountBalance.type:type_name -> vega.AccountType + 405, // 0: datanode.api.v2.GetVestingBalancesSummaryResponse.locked_balances:type_name -> vega.events.v1.PartyLockedBalance + 406, // 1: datanode.api.v2.GetVestingBalancesSummaryResponse.vesting_balances:type_name -> vega.events.v1.PartyVestingBalance + 407, // 2: datanode.api.v2.AccountBalance.type:type_name -> vega.AccountType 65, // 3: datanode.api.v2.ListAccountsRequest.filter:type_name -> datanode.api.v2.AccountFilter 6, // 4: datanode.api.v2.ListAccountsRequest.pagination:type_name -> datanode.api.v2.Pagination 15, // 5: datanode.api.v2.ListAccountsResponse.accounts:type_name -> datanode.api.v2.AccountsConnection 16, // 6: datanode.api.v2.AccountsConnection.edges:type_name -> datanode.api.v2.AccountEdge 7, // 7: datanode.api.v2.AccountsConnection.page_info:type_name -> datanode.api.v2.PageInfo 12, // 8: datanode.api.v2.AccountEdge.node:type_name -> datanode.api.v2.AccountBalance - 402, // 9: datanode.api.v2.ObserveAccountsRequest.type:type_name -> vega.AccountType + 407, // 9: datanode.api.v2.ObserveAccountsRequest.type:type_name -> vega.AccountType 19, // 10: datanode.api.v2.ObserveAccountsResponse.snapshot:type_name -> datanode.api.v2.AccountSnapshotPage 20, // 11: datanode.api.v2.ObserveAccountsResponse.updates:type_name -> datanode.api.v2.AccountUpdates 12, // 12: datanode.api.v2.AccountSnapshotPage.accounts:type_name -> datanode.api.v2.AccountBalance 12, // 13: datanode.api.v2.AccountUpdates.accounts:type_name -> datanode.api.v2.AccountBalance - 403, // 14: datanode.api.v2.GetOrderResponse.order:type_name -> vega.Order - 404, // 15: datanode.api.v2.OrderFilter.statuses:type_name -> vega.Order.Status - 405, // 16: datanode.api.v2.OrderFilter.types:type_name -> vega.Order.Type - 406, // 17: datanode.api.v2.OrderFilter.time_in_forces:type_name -> vega.Order.TimeInForce + 408, // 14: datanode.api.v2.GetOrderResponse.order:type_name -> vega.Order + 409, // 15: datanode.api.v2.OrderFilter.statuses:type_name -> vega.Order.Status + 410, // 16: datanode.api.v2.OrderFilter.types:type_name -> vega.Order.Type + 411, // 17: datanode.api.v2.OrderFilter.time_in_forces:type_name -> vega.Order.TimeInForce 284, // 18: datanode.api.v2.OrderFilter.date_range:type_name -> datanode.api.v2.DateRange 6, // 19: datanode.api.v2.ListOrdersRequest.pagination:type_name -> datanode.api.v2.Pagination 25, // 20: datanode.api.v2.ListOrdersRequest.filter:type_name -> datanode.api.v2.OrderFilter @@ -29236,15 +29650,15 @@ var file_data_node_api_v2_trading_data_proto_depIdxs = []int32{ 166, // 23: datanode.api.v2.ListOrderVersionsResponse.orders:type_name -> datanode.api.v2.OrderConnection 32, // 24: datanode.api.v2.ObserveOrdersResponse.snapshot:type_name -> datanode.api.v2.OrderSnapshotPage 33, // 25: datanode.api.v2.ObserveOrdersResponse.updates:type_name -> datanode.api.v2.OrderUpdates - 403, // 26: datanode.api.v2.OrderSnapshotPage.orders:type_name -> vega.Order - 403, // 27: datanode.api.v2.OrderUpdates.orders:type_name -> vega.Order - 407, // 28: datanode.api.v2.GetStopOrderResponse.order:type_name -> vega.events.v1.StopOrderEvent + 408, // 26: datanode.api.v2.OrderSnapshotPage.orders:type_name -> vega.Order + 408, // 27: datanode.api.v2.OrderUpdates.orders:type_name -> vega.Order + 412, // 28: datanode.api.v2.GetStopOrderResponse.order:type_name -> vega.events.v1.StopOrderEvent 6, // 29: datanode.api.v2.ListStopOrdersRequest.pagination:type_name -> datanode.api.v2.Pagination 37, // 30: datanode.api.v2.ListStopOrdersRequest.filter:type_name -> datanode.api.v2.StopOrderFilter - 408, // 31: datanode.api.v2.StopOrderFilter.statuses:type_name -> vega.StopOrder.Status - 409, // 32: datanode.api.v2.StopOrderFilter.expiry_strategies:type_name -> vega.StopOrder.ExpiryStrategy + 413, // 31: datanode.api.v2.StopOrderFilter.statuses:type_name -> vega.StopOrder.Status + 414, // 32: datanode.api.v2.StopOrderFilter.expiry_strategies:type_name -> vega.StopOrder.ExpiryStrategy 284, // 33: datanode.api.v2.StopOrderFilter.date_range:type_name -> datanode.api.v2.DateRange - 407, // 34: datanode.api.v2.StopOrderEdge.node:type_name -> vega.events.v1.StopOrderEvent + 412, // 34: datanode.api.v2.StopOrderEdge.node:type_name -> vega.events.v1.StopOrderEvent 38, // 35: datanode.api.v2.StopOrderConnection.edges:type_name -> datanode.api.v2.StopOrderEdge 7, // 36: datanode.api.v2.StopOrderConnection.page_info:type_name -> datanode.api.v2.PageInfo 39, // 37: datanode.api.v2.ListStopOrdersResponse.orders:type_name -> datanode.api.v2.StopOrderConnection @@ -29253,19 +29667,19 @@ var file_data_node_api_v2_trading_data_proto_depIdxs = []int32{ 43, // 40: datanode.api.v2.ListAllPositionsRequest.filter:type_name -> datanode.api.v2.PositionsFilter 6, // 41: datanode.api.v2.ListAllPositionsRequest.pagination:type_name -> datanode.api.v2.Pagination 47, // 42: datanode.api.v2.ListAllPositionsResponse.positions:type_name -> datanode.api.v2.PositionConnection - 410, // 43: datanode.api.v2.PositionEdge.node:type_name -> vega.Position + 415, // 43: datanode.api.v2.PositionEdge.node:type_name -> vega.Position 46, // 44: datanode.api.v2.PositionConnection.edges:type_name -> datanode.api.v2.PositionEdge 7, // 45: datanode.api.v2.PositionConnection.page_info:type_name -> datanode.api.v2.PageInfo 50, // 46: datanode.api.v2.ObservePositionsResponse.snapshot:type_name -> datanode.api.v2.PositionSnapshotPage 51, // 47: datanode.api.v2.ObservePositionsResponse.updates:type_name -> datanode.api.v2.PositionUpdates - 410, // 48: datanode.api.v2.PositionSnapshotPage.positions:type_name -> vega.Position - 410, // 49: datanode.api.v2.PositionUpdates.positions:type_name -> vega.Position + 415, // 48: datanode.api.v2.PositionSnapshotPage.positions:type_name -> vega.Position + 415, // 49: datanode.api.v2.PositionUpdates.positions:type_name -> vega.Position 65, // 50: datanode.api.v2.LedgerEntryFilter.from_account_filter:type_name -> datanode.api.v2.AccountFilter 65, // 51: datanode.api.v2.LedgerEntryFilter.to_account_filter:type_name -> datanode.api.v2.AccountFilter - 411, // 52: datanode.api.v2.LedgerEntryFilter.transfer_types:type_name -> vega.TransferType - 411, // 53: datanode.api.v2.AggregatedLedgerEntry.transfer_type:type_name -> vega.TransferType - 402, // 54: datanode.api.v2.AggregatedLedgerEntry.from_account_type:type_name -> vega.AccountType - 402, // 55: datanode.api.v2.AggregatedLedgerEntry.to_account_type:type_name -> vega.AccountType + 416, // 52: datanode.api.v2.LedgerEntryFilter.transfer_types:type_name -> vega.TransferType + 416, // 53: datanode.api.v2.AggregatedLedgerEntry.transfer_type:type_name -> vega.TransferType + 407, // 54: datanode.api.v2.AggregatedLedgerEntry.from_account_type:type_name -> vega.AccountType + 407, // 55: datanode.api.v2.AggregatedLedgerEntry.to_account_type:type_name -> vega.AccountType 52, // 56: datanode.api.v2.ListLedgerEntriesRequest.filter:type_name -> datanode.api.v2.LedgerEntryFilter 6, // 57: datanode.api.v2.ListLedgerEntriesRequest.pagination:type_name -> datanode.api.v2.Pagination 284, // 58: datanode.api.v2.ListLedgerEntriesRequest.date_range:type_name -> datanode.api.v2.DateRange @@ -29286,34 +29700,34 @@ var file_data_node_api_v2_trading_data_proto_depIdxs = []int32{ 66, // 73: datanode.api.v2.AggregatedBalanceEdge.node:type_name -> datanode.api.v2.AggregatedBalance 63, // 74: datanode.api.v2.AggregatedBalanceConnection.edges:type_name -> datanode.api.v2.AggregatedBalanceEdge 7, // 75: datanode.api.v2.AggregatedBalanceConnection.page_info:type_name -> datanode.api.v2.PageInfo - 402, // 76: datanode.api.v2.AccountFilter.account_types:type_name -> vega.AccountType - 402, // 77: datanode.api.v2.AggregatedBalance.account_type:type_name -> vega.AccountType - 412, // 78: datanode.api.v2.ObserveMarketsDepthResponse.market_depth:type_name -> vega.MarketDepth - 413, // 79: datanode.api.v2.ObserveMarketsDepthUpdatesResponse.update:type_name -> vega.MarketDepthUpdate - 414, // 80: datanode.api.v2.ObserveMarketsDataResponse.market_data:type_name -> vega.MarketData - 415, // 81: datanode.api.v2.GetLatestMarketDepthResponse.buy:type_name -> vega.PriceLevel - 415, // 82: datanode.api.v2.GetLatestMarketDepthResponse.sell:type_name -> vega.PriceLevel - 416, // 83: datanode.api.v2.GetLatestMarketDepthResponse.last_trade:type_name -> vega.Trade - 414, // 84: datanode.api.v2.ListLatestMarketDataResponse.markets_data:type_name -> vega.MarketData - 414, // 85: datanode.api.v2.GetLatestMarketDataResponse.market_data:type_name -> vega.MarketData + 407, // 76: datanode.api.v2.AccountFilter.account_types:type_name -> vega.AccountType + 407, // 77: datanode.api.v2.AggregatedBalance.account_type:type_name -> vega.AccountType + 417, // 78: datanode.api.v2.ObserveMarketsDepthResponse.market_depth:type_name -> vega.MarketDepth + 418, // 79: datanode.api.v2.ObserveMarketsDepthUpdatesResponse.update:type_name -> vega.MarketDepthUpdate + 419, // 80: datanode.api.v2.ObserveMarketsDataResponse.market_data:type_name -> vega.MarketData + 420, // 81: datanode.api.v2.GetLatestMarketDepthResponse.buy:type_name -> vega.PriceLevel + 420, // 82: datanode.api.v2.GetLatestMarketDepthResponse.sell:type_name -> vega.PriceLevel + 421, // 83: datanode.api.v2.GetLatestMarketDepthResponse.last_trade:type_name -> vega.Trade + 419, // 84: datanode.api.v2.ListLatestMarketDataResponse.markets_data:type_name -> vega.MarketData + 419, // 85: datanode.api.v2.GetLatestMarketDataResponse.market_data:type_name -> vega.MarketData 6, // 86: datanode.api.v2.GetMarketDataHistoryByIDRequest.pagination:type_name -> datanode.api.v2.Pagination 82, // 87: datanode.api.v2.GetMarketDataHistoryByIDResponse.market_data:type_name -> datanode.api.v2.MarketDataConnection - 414, // 88: datanode.api.v2.MarketDataEdge.node:type_name -> vega.MarketData + 419, // 88: datanode.api.v2.MarketDataEdge.node:type_name -> vega.MarketData 81, // 89: datanode.api.v2.MarketDataConnection.edges:type_name -> datanode.api.v2.MarketDataEdge 7, // 90: datanode.api.v2.MarketDataConnection.page_info:type_name -> datanode.api.v2.PageInfo 2, // 91: datanode.api.v2.ListTransfersRequest.direction:type_name -> datanode.api.v2.TransferDirection 6, // 92: datanode.api.v2.ListTransfersRequest.pagination:type_name -> datanode.api.v2.Pagination - 417, // 93: datanode.api.v2.ListTransfersRequest.status:type_name -> vega.events.v1.Transfer.Status + 422, // 93: datanode.api.v2.ListTransfersRequest.status:type_name -> vega.events.v1.Transfer.Status 4, // 94: datanode.api.v2.ListTransfersRequest.scope:type_name -> datanode.api.v2.ListTransfersRequest.Scope 87, // 95: datanode.api.v2.ListTransfersResponse.transfers:type_name -> datanode.api.v2.TransferConnection - 418, // 96: datanode.api.v2.TransferNode.transfer:type_name -> vega.events.v1.Transfer - 419, // 97: datanode.api.v2.TransferNode.fees:type_name -> vega.events.v1.TransferFees + 423, // 96: datanode.api.v2.TransferNode.transfer:type_name -> vega.events.v1.Transfer + 424, // 97: datanode.api.v2.TransferNode.fees:type_name -> vega.events.v1.TransferFees 85, // 98: datanode.api.v2.TransferEdge.node:type_name -> datanode.api.v2.TransferNode 86, // 99: datanode.api.v2.TransferConnection.edges:type_name -> datanode.api.v2.TransferEdge 7, // 100: datanode.api.v2.TransferConnection.page_info:type_name -> datanode.api.v2.PageInfo - 418, // 101: datanode.api.v2.GetTransferResponse.transfer:type_name -> vega.events.v1.Transfer - 419, // 102: datanode.api.v2.GetTransferResponse.fees:type_name -> vega.events.v1.TransferFees - 420, // 103: datanode.api.v2.GetNetworkLimitsResponse.limits:type_name -> vega.NetworkLimits + 423, // 101: datanode.api.v2.GetTransferResponse.transfer:type_name -> vega.events.v1.Transfer + 424, // 102: datanode.api.v2.GetTransferResponse.fees:type_name -> vega.events.v1.TransferFees + 425, // 103: datanode.api.v2.GetNetworkLimitsResponse.limits:type_name -> vega.NetworkLimits 93, // 104: datanode.api.v2.ListCandleIntervalsResponse.interval_to_candle_id:type_name -> datanode.api.v2.IntervalToCandleId 95, // 105: datanode.api.v2.ObserveCandleDataResponse.candle:type_name -> datanode.api.v2.Candle 6, // 106: datanode.api.v2.ListCandleDataRequest.pagination:type_name -> datanode.api.v2.Pagination @@ -29323,165 +29737,165 @@ var file_data_node_api_v2_trading_data_proto_depIdxs = []int32{ 7, // 110: datanode.api.v2.CandleDataConnection.page_info:type_name -> datanode.api.v2.PageInfo 6, // 111: datanode.api.v2.ListVotesRequest.pagination:type_name -> datanode.api.v2.Pagination 105, // 112: datanode.api.v2.ListVotesResponse.votes:type_name -> datanode.api.v2.VoteConnection - 421, // 113: datanode.api.v2.VoteEdge.node:type_name -> vega.Vote + 426, // 113: datanode.api.v2.VoteEdge.node:type_name -> vega.Vote 104, // 114: datanode.api.v2.VoteConnection.edges:type_name -> datanode.api.v2.VoteEdge 7, // 115: datanode.api.v2.VoteConnection.page_info:type_name -> datanode.api.v2.PageInfo - 421, // 116: datanode.api.v2.ObserveVotesResponse.vote:type_name -> vega.Vote + 426, // 116: datanode.api.v2.ObserveVotesResponse.vote:type_name -> vega.Vote 6, // 117: datanode.api.v2.ListERC20MultiSigSignerAddedBundlesRequest.pagination:type_name -> datanode.api.v2.Pagination 112, // 118: datanode.api.v2.ListERC20MultiSigSignerAddedBundlesResponse.bundles:type_name -> datanode.api.v2.ERC20MultiSigSignerAddedConnection - 422, // 119: datanode.api.v2.ERC20MultiSigSignerAddedEdge.node:type_name -> vega.events.v1.ERC20MultiSigSignerAdded + 427, // 119: datanode.api.v2.ERC20MultiSigSignerAddedEdge.node:type_name -> vega.events.v1.ERC20MultiSigSignerAdded 113, // 120: datanode.api.v2.ERC20MultiSigSignerAddedBundleEdge.node:type_name -> datanode.api.v2.ERC20MultiSigSignerAddedBundle 111, // 121: datanode.api.v2.ERC20MultiSigSignerAddedConnection.edges:type_name -> datanode.api.v2.ERC20MultiSigSignerAddedBundleEdge 7, // 122: datanode.api.v2.ERC20MultiSigSignerAddedConnection.page_info:type_name -> datanode.api.v2.PageInfo 6, // 123: datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesRequest.pagination:type_name -> datanode.api.v2.Pagination 118, // 124: datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesResponse.bundles:type_name -> datanode.api.v2.ERC20MultiSigSignerRemovedConnection - 423, // 125: datanode.api.v2.ERC20MultiSigSignerRemovedEdge.node:type_name -> vega.events.v1.ERC20MultiSigSignerRemoved + 428, // 125: datanode.api.v2.ERC20MultiSigSignerRemovedEdge.node:type_name -> vega.events.v1.ERC20MultiSigSignerRemoved 119, // 126: datanode.api.v2.ERC20MultiSigSignerRemovedBundleEdge.node:type_name -> datanode.api.v2.ERC20MultiSigSignerRemovedBundle 117, // 127: datanode.api.v2.ERC20MultiSigSignerRemovedConnection.edges:type_name -> datanode.api.v2.ERC20MultiSigSignerRemovedBundleEdge 7, // 128: datanode.api.v2.ERC20MultiSigSignerRemovedConnection.page_info:type_name -> datanode.api.v2.PageInfo - 416, // 129: datanode.api.v2.GetLastTradeResponse.trade:type_name -> vega.Trade + 421, // 129: datanode.api.v2.GetLastTradeResponse.trade:type_name -> vega.Trade 6, // 130: datanode.api.v2.ListTradesRequest.pagination:type_name -> datanode.api.v2.Pagination 284, // 131: datanode.api.v2.ListTradesRequest.date_range:type_name -> datanode.api.v2.DateRange 130, // 132: datanode.api.v2.ListTradesResponse.trades:type_name -> datanode.api.v2.TradeConnection 131, // 133: datanode.api.v2.TradeConnection.edges:type_name -> datanode.api.v2.TradeEdge 7, // 134: datanode.api.v2.TradeConnection.page_info:type_name -> datanode.api.v2.PageInfo - 416, // 135: datanode.api.v2.TradeEdge.node:type_name -> vega.Trade - 416, // 136: datanode.api.v2.ObserveTradesResponse.trades:type_name -> vega.Trade - 424, // 137: datanode.api.v2.GetOracleSpecResponse.oracle_spec:type_name -> vega.OracleSpec + 421, // 135: datanode.api.v2.TradeEdge.node:type_name -> vega.Trade + 421, // 136: datanode.api.v2.ObserveTradesResponse.trades:type_name -> vega.Trade + 429, // 137: datanode.api.v2.GetOracleSpecResponse.oracle_spec:type_name -> vega.OracleSpec 6, // 138: datanode.api.v2.ListOracleSpecsRequest.pagination:type_name -> datanode.api.v2.Pagination 141, // 139: datanode.api.v2.ListOracleSpecsResponse.oracle_specs:type_name -> datanode.api.v2.OracleSpecsConnection 6, // 140: datanode.api.v2.ListOracleDataRequest.pagination:type_name -> datanode.api.v2.Pagination 143, // 141: datanode.api.v2.ListOracleDataResponse.oracle_data:type_name -> datanode.api.v2.OracleDataConnection - 424, // 142: datanode.api.v2.OracleSpecEdge.node:type_name -> vega.OracleSpec + 429, // 142: datanode.api.v2.OracleSpecEdge.node:type_name -> vega.OracleSpec 140, // 143: datanode.api.v2.OracleSpecsConnection.edges:type_name -> datanode.api.v2.OracleSpecEdge 7, // 144: datanode.api.v2.OracleSpecsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 425, // 145: datanode.api.v2.OracleDataEdge.node:type_name -> vega.OracleData + 430, // 145: datanode.api.v2.OracleDataEdge.node:type_name -> vega.OracleData 142, // 146: datanode.api.v2.OracleDataConnection.edges:type_name -> datanode.api.v2.OracleDataEdge 7, // 147: datanode.api.v2.OracleDataConnection.page_info:type_name -> datanode.api.v2.PageInfo - 426, // 148: datanode.api.v2.GetMarketResponse.market:type_name -> vega.Market + 431, // 148: datanode.api.v2.GetMarketResponse.market:type_name -> vega.Market 6, // 149: datanode.api.v2.ListMarketsRequest.pagination:type_name -> datanode.api.v2.Pagination 149, // 150: datanode.api.v2.ListMarketsResponse.markets:type_name -> datanode.api.v2.MarketConnection - 426, // 151: datanode.api.v2.MarketEdge.node:type_name -> vega.Market + 431, // 151: datanode.api.v2.MarketEdge.node:type_name -> vega.Market 148, // 152: datanode.api.v2.MarketConnection.edges:type_name -> datanode.api.v2.MarketEdge 7, // 153: datanode.api.v2.MarketConnection.page_info:type_name -> datanode.api.v2.PageInfo 6, // 154: datanode.api.v2.ListSuccessorMarketsRequest.pagination:type_name -> datanode.api.v2.Pagination - 426, // 155: datanode.api.v2.SuccessorMarket.market:type_name -> vega.Market - 427, // 156: datanode.api.v2.SuccessorMarket.proposals:type_name -> vega.GovernanceData + 431, // 155: datanode.api.v2.SuccessorMarket.market:type_name -> vega.Market + 432, // 156: datanode.api.v2.SuccessorMarket.proposals:type_name -> vega.GovernanceData 151, // 157: datanode.api.v2.SuccessorMarketEdge.node:type_name -> datanode.api.v2.SuccessorMarket 152, // 158: datanode.api.v2.SuccessorMarketConnection.edges:type_name -> datanode.api.v2.SuccessorMarketEdge 7, // 159: datanode.api.v2.SuccessorMarketConnection.page_info:type_name -> datanode.api.v2.PageInfo 153, // 160: datanode.api.v2.ListSuccessorMarketsResponse.successor_markets:type_name -> datanode.api.v2.SuccessorMarketConnection - 428, // 161: datanode.api.v2.GetPartyResponse.party:type_name -> vega.Party + 433, // 161: datanode.api.v2.GetPartyResponse.party:type_name -> vega.Party 6, // 162: datanode.api.v2.ListPartiesRequest.pagination:type_name -> datanode.api.v2.Pagination 160, // 163: datanode.api.v2.ListPartiesResponse.parties:type_name -> datanode.api.v2.PartyConnection - 428, // 164: datanode.api.v2.PartyEdge.node:type_name -> vega.Party + 433, // 164: datanode.api.v2.PartyEdge.node:type_name -> vega.Party 159, // 165: datanode.api.v2.PartyConnection.edges:type_name -> datanode.api.v2.PartyEdge 7, // 166: datanode.api.v2.PartyConnection.page_info:type_name -> datanode.api.v2.PageInfo - 403, // 167: datanode.api.v2.OrderEdge.node:type_name -> vega.Order + 408, // 167: datanode.api.v2.OrderEdge.node:type_name -> vega.Order 6, // 168: datanode.api.v2.ListMarginLevelsRequest.pagination:type_name -> datanode.api.v2.Pagination 168, // 169: datanode.api.v2.ListMarginLevelsResponse.margin_levels:type_name -> datanode.api.v2.MarginConnection - 429, // 170: datanode.api.v2.ObserveMarginLevelsResponse.margin_levels:type_name -> vega.MarginLevels + 434, // 170: datanode.api.v2.ObserveMarginLevelsResponse.margin_levels:type_name -> vega.MarginLevels 161, // 171: datanode.api.v2.OrderConnection.edges:type_name -> datanode.api.v2.OrderEdge 7, // 172: datanode.api.v2.OrderConnection.page_info:type_name -> datanode.api.v2.PageInfo - 429, // 173: datanode.api.v2.MarginEdge.node:type_name -> vega.MarginLevels + 434, // 173: datanode.api.v2.MarginEdge.node:type_name -> vega.MarginLevels 167, // 174: datanode.api.v2.MarginConnection.edges:type_name -> datanode.api.v2.MarginEdge 7, // 175: datanode.api.v2.MarginConnection.page_info:type_name -> datanode.api.v2.PageInfo 6, // 176: datanode.api.v2.ListRewardsRequest.pagination:type_name -> datanode.api.v2.Pagination 172, // 177: datanode.api.v2.ListRewardsResponse.rewards:type_name -> datanode.api.v2.RewardsConnection - 430, // 178: datanode.api.v2.RewardEdge.node:type_name -> vega.Reward + 435, // 178: datanode.api.v2.RewardEdge.node:type_name -> vega.Reward 171, // 179: datanode.api.v2.RewardsConnection.edges:type_name -> datanode.api.v2.RewardEdge 7, // 180: datanode.api.v2.RewardsConnection.page_info:type_name -> datanode.api.v2.PageInfo 6, // 181: datanode.api.v2.ListRewardSummariesRequest.pagination:type_name -> datanode.api.v2.Pagination - 431, // 182: datanode.api.v2.ListRewardSummariesResponse.summaries:type_name -> vega.RewardSummary + 436, // 182: datanode.api.v2.ListRewardSummariesResponse.summaries:type_name -> vega.RewardSummary 175, // 183: datanode.api.v2.ListEpochRewardSummariesRequest.filter:type_name -> datanode.api.v2.RewardSummaryFilter 6, // 184: datanode.api.v2.ListEpochRewardSummariesRequest.pagination:type_name -> datanode.api.v2.Pagination 178, // 185: datanode.api.v2.ListEpochRewardSummariesResponse.summaries:type_name -> datanode.api.v2.EpochRewardSummaryConnection 179, // 186: datanode.api.v2.EpochRewardSummaryConnection.edges:type_name -> datanode.api.v2.EpochRewardSummaryEdge 7, // 187: datanode.api.v2.EpochRewardSummaryConnection.page_info:type_name -> datanode.api.v2.PageInfo - 432, // 188: datanode.api.v2.EpochRewardSummaryEdge.node:type_name -> vega.EpochRewardSummary - 430, // 189: datanode.api.v2.ObserveRewardsResponse.reward:type_name -> vega.Reward - 433, // 190: datanode.api.v2.GetDepositResponse.deposit:type_name -> vega.Deposit + 437, // 188: datanode.api.v2.EpochRewardSummaryEdge.node:type_name -> vega.EpochRewardSummary + 435, // 189: datanode.api.v2.ObserveRewardsResponse.reward:type_name -> vega.Reward + 438, // 190: datanode.api.v2.GetDepositResponse.deposit:type_name -> vega.Deposit 6, // 191: datanode.api.v2.ListDepositsRequest.pagination:type_name -> datanode.api.v2.Pagination 284, // 192: datanode.api.v2.ListDepositsRequest.date_range:type_name -> datanode.api.v2.DateRange 187, // 193: datanode.api.v2.ListDepositsResponse.deposits:type_name -> datanode.api.v2.DepositsConnection - 433, // 194: datanode.api.v2.DepositEdge.node:type_name -> vega.Deposit + 438, // 194: datanode.api.v2.DepositEdge.node:type_name -> vega.Deposit 186, // 195: datanode.api.v2.DepositsConnection.edges:type_name -> datanode.api.v2.DepositEdge 7, // 196: datanode.api.v2.DepositsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 434, // 197: datanode.api.v2.GetWithdrawalResponse.withdrawal:type_name -> vega.Withdrawal + 439, // 197: datanode.api.v2.GetWithdrawalResponse.withdrawal:type_name -> vega.Withdrawal 6, // 198: datanode.api.v2.ListWithdrawalsRequest.pagination:type_name -> datanode.api.v2.Pagination 284, // 199: datanode.api.v2.ListWithdrawalsRequest.date_range:type_name -> datanode.api.v2.DateRange 193, // 200: datanode.api.v2.ListWithdrawalsResponse.withdrawals:type_name -> datanode.api.v2.WithdrawalsConnection - 434, // 201: datanode.api.v2.WithdrawalEdge.node:type_name -> vega.Withdrawal + 439, // 201: datanode.api.v2.WithdrawalEdge.node:type_name -> vega.Withdrawal 192, // 202: datanode.api.v2.WithdrawalsConnection.edges:type_name -> datanode.api.v2.WithdrawalEdge 7, // 203: datanode.api.v2.WithdrawalsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 435, // 204: datanode.api.v2.GetAssetResponse.asset:type_name -> vega.Asset + 440, // 204: datanode.api.v2.GetAssetResponse.asset:type_name -> vega.Asset 6, // 205: datanode.api.v2.ListAssetsRequest.pagination:type_name -> datanode.api.v2.Pagination 199, // 206: datanode.api.v2.ListAssetsResponse.assets:type_name -> datanode.api.v2.AssetsConnection - 435, // 207: datanode.api.v2.AssetEdge.node:type_name -> vega.Asset + 440, // 207: datanode.api.v2.AssetEdge.node:type_name -> vega.Asset 198, // 208: datanode.api.v2.AssetsConnection.edges:type_name -> datanode.api.v2.AssetEdge 7, // 209: datanode.api.v2.AssetsConnection.page_info:type_name -> datanode.api.v2.PageInfo 6, // 210: datanode.api.v2.ListLiquidityProvisionsRequest.pagination:type_name -> datanode.api.v2.Pagination 6, // 211: datanode.api.v2.ListAllLiquidityProvisionsRequest.pagination:type_name -> datanode.api.v2.Pagination 207, // 212: datanode.api.v2.ListLiquidityProvisionsResponse.liquidity_provisions:type_name -> datanode.api.v2.LiquidityProvisionsConnection 208, // 213: datanode.api.v2.ListAllLiquidityProvisionsResponse.liquidity_provisions:type_name -> datanode.api.v2.LiquidityProvisionsWithPendingConnection - 436, // 214: datanode.api.v2.LiquidityProvision.current:type_name -> vega.LiquidityProvision - 436, // 215: datanode.api.v2.LiquidityProvision.pending:type_name -> vega.LiquidityProvision - 436, // 216: datanode.api.v2.LiquidityProvisionsEdge.node:type_name -> vega.LiquidityProvision + 441, // 214: datanode.api.v2.LiquidityProvision.current:type_name -> vega.LiquidityProvision + 441, // 215: datanode.api.v2.LiquidityProvision.pending:type_name -> vega.LiquidityProvision + 441, // 216: datanode.api.v2.LiquidityProvisionsEdge.node:type_name -> vega.LiquidityProvision 204, // 217: datanode.api.v2.LiquidityProvisionWithPendingEdge.node:type_name -> datanode.api.v2.LiquidityProvision 205, // 218: datanode.api.v2.LiquidityProvisionsConnection.edges:type_name -> datanode.api.v2.LiquidityProvisionsEdge 7, // 219: datanode.api.v2.LiquidityProvisionsConnection.page_info:type_name -> datanode.api.v2.PageInfo 206, // 220: datanode.api.v2.LiquidityProvisionsWithPendingConnection.edges:type_name -> datanode.api.v2.LiquidityProvisionWithPendingEdge 7, // 221: datanode.api.v2.LiquidityProvisionsWithPendingConnection.page_info:type_name -> datanode.api.v2.PageInfo - 436, // 222: datanode.api.v2.ObserveLiquidityProvisionsResponse.liquidity_provisions:type_name -> vega.LiquidityProvision + 441, // 222: datanode.api.v2.ObserveLiquidityProvisionsResponse.liquidity_provisions:type_name -> vega.LiquidityProvision 6, // 223: datanode.api.v2.ListLiquidityProvidersRequest.pagination:type_name -> datanode.api.v2.Pagination - 437, // 224: datanode.api.v2.LiquidityProvider.fee_share:type_name -> vega.LiquidityProviderFeeShare - 438, // 225: datanode.api.v2.LiquidityProvider.sla:type_name -> vega.LiquidityProviderSLA + 442, // 224: datanode.api.v2.LiquidityProvider.fee_share:type_name -> vega.LiquidityProviderFeeShare + 443, // 225: datanode.api.v2.LiquidityProvider.sla:type_name -> vega.LiquidityProviderSLA 212, // 226: datanode.api.v2.LiquidityProviderEdge.node:type_name -> datanode.api.v2.LiquidityProvider 213, // 227: datanode.api.v2.LiquidityProviderConnection.edges:type_name -> datanode.api.v2.LiquidityProviderEdge 7, // 228: datanode.api.v2.LiquidityProviderConnection.page_info:type_name -> datanode.api.v2.PageInfo 214, // 229: datanode.api.v2.ListLiquidityProvidersResponse.liquidity_providers:type_name -> datanode.api.v2.LiquidityProviderConnection 6, // 230: datanode.api.v2.ListPaidLiquidityFeesRequest.pagination:type_name -> datanode.api.v2.Pagination 219, // 231: datanode.api.v2.ListPaidLiquidityFeesResponse.paid_liquidity_fees:type_name -> datanode.api.v2.PaidLiquidityFeesConnection - 439, // 232: datanode.api.v2.PaidLiquidityFeesEdge.node:type_name -> vega.events.v1.PaidLiquidityFeesStats + 444, // 232: datanode.api.v2.PaidLiquidityFeesEdge.node:type_name -> vega.events.v1.PaidLiquidityFeesStats 218, // 233: datanode.api.v2.PaidLiquidityFeesConnection.edges:type_name -> datanode.api.v2.PaidLiquidityFeesEdge 7, // 234: datanode.api.v2.PaidLiquidityFeesConnection.page_info:type_name -> datanode.api.v2.PageInfo - 427, // 235: datanode.api.v2.GetGovernanceDataResponse.data:type_name -> vega.GovernanceData - 440, // 236: datanode.api.v2.ListGovernanceDataRequest.proposal_state:type_name -> vega.Proposal.State + 432, // 235: datanode.api.v2.GetGovernanceDataResponse.data:type_name -> vega.GovernanceData + 445, // 236: datanode.api.v2.ListGovernanceDataRequest.proposal_state:type_name -> vega.Proposal.State 5, // 237: datanode.api.v2.ListGovernanceDataRequest.proposal_type:type_name -> datanode.api.v2.ListGovernanceDataRequest.Type 6, // 238: datanode.api.v2.ListGovernanceDataRequest.pagination:type_name -> datanode.api.v2.Pagination 225, // 239: datanode.api.v2.ListGovernanceDataResponse.connection:type_name -> datanode.api.v2.GovernanceDataConnection - 427, // 240: datanode.api.v2.GovernanceDataEdge.node:type_name -> vega.GovernanceData + 432, // 240: datanode.api.v2.GovernanceDataEdge.node:type_name -> vega.GovernanceData 224, // 241: datanode.api.v2.GovernanceDataConnection.edges:type_name -> datanode.api.v2.GovernanceDataEdge 7, // 242: datanode.api.v2.GovernanceDataConnection.page_info:type_name -> datanode.api.v2.PageInfo - 427, // 243: datanode.api.v2.ObserveGovernanceResponse.data:type_name -> vega.GovernanceData + 432, // 243: datanode.api.v2.ObserveGovernanceResponse.data:type_name -> vega.GovernanceData 6, // 244: datanode.api.v2.ListDelegationsRequest.pagination:type_name -> datanode.api.v2.Pagination 231, // 245: datanode.api.v2.ListDelegationsResponse.delegations:type_name -> datanode.api.v2.DelegationsConnection - 441, // 246: datanode.api.v2.DelegationEdge.node:type_name -> vega.Delegation + 446, // 246: datanode.api.v2.DelegationEdge.node:type_name -> vega.Delegation 230, // 247: datanode.api.v2.DelegationsConnection.edges:type_name -> datanode.api.v2.DelegationEdge 7, // 248: datanode.api.v2.DelegationsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 441, // 249: datanode.api.v2.ObserveDelegationsResponse.delegation:type_name -> vega.Delegation - 442, // 250: datanode.api.v2.NodeBasic.status:type_name -> vega.NodeStatus - 443, // 251: datanode.api.v2.GetNetworkDataResponse.node_data:type_name -> vega.NodeData - 444, // 252: datanode.api.v2.GetNodeResponse.node:type_name -> vega.Node + 446, // 249: datanode.api.v2.ObserveDelegationsResponse.delegation:type_name -> vega.Delegation + 447, // 250: datanode.api.v2.NodeBasic.status:type_name -> vega.NodeStatus + 448, // 251: datanode.api.v2.GetNetworkDataResponse.node_data:type_name -> vega.NodeData + 449, // 252: datanode.api.v2.GetNodeResponse.node:type_name -> vega.Node 6, // 253: datanode.api.v2.ListNodesRequest.pagination:type_name -> datanode.api.v2.Pagination 242, // 254: datanode.api.v2.ListNodesResponse.nodes:type_name -> datanode.api.v2.NodesConnection - 444, // 255: datanode.api.v2.NodeEdge.node:type_name -> vega.Node + 449, // 255: datanode.api.v2.NodeEdge.node:type_name -> vega.Node 241, // 256: datanode.api.v2.NodesConnection.edges:type_name -> datanode.api.v2.NodeEdge 7, // 257: datanode.api.v2.NodesConnection.page_info:type_name -> datanode.api.v2.PageInfo 6, // 258: datanode.api.v2.ListNodeSignaturesRequest.pagination:type_name -> datanode.api.v2.Pagination 246, // 259: datanode.api.v2.ListNodeSignaturesResponse.signatures:type_name -> datanode.api.v2.NodeSignaturesConnection - 445, // 260: datanode.api.v2.NodeSignatureEdge.node:type_name -> vega.commands.v1.NodeSignature + 450, // 260: datanode.api.v2.NodeSignatureEdge.node:type_name -> vega.commands.v1.NodeSignature 245, // 261: datanode.api.v2.NodeSignaturesConnection.edges:type_name -> datanode.api.v2.NodeSignatureEdge 7, // 262: datanode.api.v2.NodeSignaturesConnection.page_info:type_name -> datanode.api.v2.PageInfo - 446, // 263: datanode.api.v2.GetEpochResponse.epoch:type_name -> vega.Epoch - 447, // 264: datanode.api.v2.EstimateFeeResponse.fee:type_name -> vega.Fee - 448, // 265: datanode.api.v2.EstimateMarginRequest.side:type_name -> vega.Side - 405, // 266: datanode.api.v2.EstimateMarginRequest.type:type_name -> vega.Order.Type - 429, // 267: datanode.api.v2.EstimateMarginResponse.margin_levels:type_name -> vega.MarginLevels + 451, // 263: datanode.api.v2.GetEpochResponse.epoch:type_name -> vega.Epoch + 452, // 264: datanode.api.v2.EstimateFeeResponse.fee:type_name -> vega.Fee + 453, // 265: datanode.api.v2.EstimateMarginRequest.side:type_name -> vega.Side + 410, // 266: datanode.api.v2.EstimateMarginRequest.type:type_name -> vega.Order.Type + 434, // 267: datanode.api.v2.EstimateMarginResponse.margin_levels:type_name -> vega.MarginLevels 6, // 268: datanode.api.v2.ListNetworkParametersRequest.pagination:type_name -> datanode.api.v2.Pagination 258, // 269: datanode.api.v2.ListNetworkParametersResponse.network_parameters:type_name -> datanode.api.v2.NetworkParameterConnection - 449, // 270: datanode.api.v2.GetNetworkParameterResponse.network_parameter:type_name -> vega.NetworkParameter - 449, // 271: datanode.api.v2.NetworkParameterEdge.node:type_name -> vega.NetworkParameter + 454, // 270: datanode.api.v2.GetNetworkParameterResponse.network_parameter:type_name -> vega.NetworkParameter + 454, // 271: datanode.api.v2.NetworkParameterEdge.node:type_name -> vega.NetworkParameter 257, // 272: datanode.api.v2.NetworkParameterConnection.edges:type_name -> datanode.api.v2.NetworkParameterEdge 7, // 273: datanode.api.v2.NetworkParameterConnection.page_info:type_name -> datanode.api.v2.PageInfo 6, // 274: datanode.api.v2.ListCheckpointsRequest.pagination:type_name -> datanode.api.v2.Pagination @@ -29491,66 +29905,66 @@ var file_data_node_api_v2_trading_data_proto_depIdxs = []int32{ 7, // 278: datanode.api.v2.CheckpointsConnection.page_info:type_name -> datanode.api.v2.PageInfo 6, // 279: datanode.api.v2.GetStakeRequest.pagination:type_name -> datanode.api.v2.Pagination 267, // 280: datanode.api.v2.GetStakeResponse.stake_linkings:type_name -> datanode.api.v2.StakesConnection - 450, // 281: datanode.api.v2.StakeLinkingEdge.node:type_name -> vega.events.v1.StakeLinking + 455, // 281: datanode.api.v2.StakeLinkingEdge.node:type_name -> vega.events.v1.StakeLinking 266, // 282: datanode.api.v2.StakesConnection.edges:type_name -> datanode.api.v2.StakeLinkingEdge 7, // 283: datanode.api.v2.StakesConnection.page_info:type_name -> datanode.api.v2.PageInfo - 451, // 284: datanode.api.v2.GetRiskFactorsResponse.risk_factor:type_name -> vega.RiskFactor - 452, // 285: datanode.api.v2.ObserveEventBusRequest.type:type_name -> vega.events.v1.BusEventType - 453, // 286: datanode.api.v2.ObserveEventBusResponse.events:type_name -> vega.events.v1.BusEvent - 454, // 287: datanode.api.v2.ObserveLedgerMovementsResponse.ledger_movement:type_name -> vega.LedgerMovement + 456, // 284: datanode.api.v2.GetRiskFactorsResponse.risk_factor:type_name -> vega.RiskFactor + 457, // 285: datanode.api.v2.ObserveEventBusRequest.type:type_name -> vega.events.v1.BusEventType + 458, // 286: datanode.api.v2.ObserveEventBusResponse.events:type_name -> vega.events.v1.BusEvent + 459, // 287: datanode.api.v2.ObserveLedgerMovementsResponse.ledger_movement:type_name -> vega.LedgerMovement 6, // 288: datanode.api.v2.ListKeyRotationsRequest.pagination:type_name -> datanode.api.v2.Pagination 277, // 289: datanode.api.v2.ListKeyRotationsResponse.rotations:type_name -> datanode.api.v2.KeyRotationConnection - 455, // 290: datanode.api.v2.KeyRotationEdge.node:type_name -> vega.events.v1.KeyRotation + 460, // 290: datanode.api.v2.KeyRotationEdge.node:type_name -> vega.events.v1.KeyRotation 276, // 291: datanode.api.v2.KeyRotationConnection.edges:type_name -> datanode.api.v2.KeyRotationEdge 7, // 292: datanode.api.v2.KeyRotationConnection.page_info:type_name -> datanode.api.v2.PageInfo 6, // 293: datanode.api.v2.ListEthereumKeyRotationsRequest.pagination:type_name -> datanode.api.v2.Pagination 280, // 294: datanode.api.v2.ListEthereumKeyRotationsResponse.key_rotations:type_name -> datanode.api.v2.EthereumKeyRotationsConnection 281, // 295: datanode.api.v2.EthereumKeyRotationsConnection.edges:type_name -> datanode.api.v2.EthereumKeyRotationEdge 7, // 296: datanode.api.v2.EthereumKeyRotationsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 456, // 297: datanode.api.v2.EthereumKeyRotationEdge.node:type_name -> vega.events.v1.EthereumKeyRotation - 457, // 298: datanode.api.v2.ListProtocolUpgradeProposalsRequest.status:type_name -> vega.events.v1.ProtocolUpgradeProposalStatus + 461, // 297: datanode.api.v2.EthereumKeyRotationEdge.node:type_name -> vega.events.v1.EthereumKeyRotation + 462, // 298: datanode.api.v2.ListProtocolUpgradeProposalsRequest.status:type_name -> vega.events.v1.ProtocolUpgradeProposalStatus 6, // 299: datanode.api.v2.ListProtocolUpgradeProposalsRequest.pagination:type_name -> datanode.api.v2.Pagination 289, // 300: datanode.api.v2.ListProtocolUpgradeProposalsResponse.protocol_upgrade_proposals:type_name -> datanode.api.v2.ProtocolUpgradeProposalConnection 290, // 301: datanode.api.v2.ProtocolUpgradeProposalConnection.edges:type_name -> datanode.api.v2.ProtocolUpgradeProposalEdge 7, // 302: datanode.api.v2.ProtocolUpgradeProposalConnection.page_info:type_name -> datanode.api.v2.PageInfo - 458, // 303: datanode.api.v2.ProtocolUpgradeProposalEdge.node:type_name -> vega.events.v1.ProtocolUpgradeEvent + 463, // 303: datanode.api.v2.ProtocolUpgradeProposalEdge.node:type_name -> vega.events.v1.ProtocolUpgradeEvent 6, // 304: datanode.api.v2.ListCoreSnapshotsRequest.pagination:type_name -> datanode.api.v2.Pagination 293, // 305: datanode.api.v2.ListCoreSnapshotsResponse.core_snapshots:type_name -> datanode.api.v2.CoreSnapshotConnection 294, // 306: datanode.api.v2.CoreSnapshotConnection.edges:type_name -> datanode.api.v2.CoreSnapshotEdge 7, // 307: datanode.api.v2.CoreSnapshotConnection.page_info:type_name -> datanode.api.v2.PageInfo - 459, // 308: datanode.api.v2.CoreSnapshotEdge.node:type_name -> vega.events.v1.CoreSnapshotData + 464, // 308: datanode.api.v2.CoreSnapshotEdge.node:type_name -> vega.events.v1.CoreSnapshotData 295, // 309: datanode.api.v2.GetMostRecentNetworkHistorySegmentResponse.segment:type_name -> datanode.api.v2.HistorySegment 295, // 310: datanode.api.v2.ListAllNetworkHistorySegmentsResponse.segments:type_name -> datanode.api.v2.HistorySegment 3, // 311: datanode.api.v2.ExportNetworkHistoryRequest.table:type_name -> datanode.api.v2.Table - 460, // 312: datanode.api.v2.ListEntitiesResponse.accounts:type_name -> vega.Account - 403, // 313: datanode.api.v2.ListEntitiesResponse.orders:type_name -> vega.Order - 410, // 314: datanode.api.v2.ListEntitiesResponse.positions:type_name -> vega.Position - 461, // 315: datanode.api.v2.ListEntitiesResponse.ledger_entries:type_name -> vega.LedgerEntry + 465, // 312: datanode.api.v2.ListEntitiesResponse.accounts:type_name -> vega.Account + 408, // 313: datanode.api.v2.ListEntitiesResponse.orders:type_name -> vega.Order + 415, // 314: datanode.api.v2.ListEntitiesResponse.positions:type_name -> vega.Position + 466, // 315: datanode.api.v2.ListEntitiesResponse.ledger_entries:type_name -> vega.LedgerEntry 12, // 316: datanode.api.v2.ListEntitiesResponse.balance_changes:type_name -> datanode.api.v2.AccountBalance - 418, // 317: datanode.api.v2.ListEntitiesResponse.transfers:type_name -> vega.events.v1.Transfer - 421, // 318: datanode.api.v2.ListEntitiesResponse.votes:type_name -> vega.Vote + 423, // 317: datanode.api.v2.ListEntitiesResponse.transfers:type_name -> vega.events.v1.Transfer + 426, // 318: datanode.api.v2.ListEntitiesResponse.votes:type_name -> vega.Vote 113, // 319: datanode.api.v2.ListEntitiesResponse.erc20_multi_sig_signer_added_bundles:type_name -> datanode.api.v2.ERC20MultiSigSignerAddedBundle 119, // 320: datanode.api.v2.ListEntitiesResponse.erc20_multi_sig_signer_removed_bundles:type_name -> datanode.api.v2.ERC20MultiSigSignerRemovedBundle - 416, // 321: datanode.api.v2.ListEntitiesResponse.trades:type_name -> vega.Trade - 424, // 322: datanode.api.v2.ListEntitiesResponse.oracle_specs:type_name -> vega.OracleSpec - 425, // 323: datanode.api.v2.ListEntitiesResponse.oracle_data:type_name -> vega.OracleData - 426, // 324: datanode.api.v2.ListEntitiesResponse.markets:type_name -> vega.Market - 428, // 325: datanode.api.v2.ListEntitiesResponse.parties:type_name -> vega.Party - 429, // 326: datanode.api.v2.ListEntitiesResponse.margin_levels:type_name -> vega.MarginLevels - 430, // 327: datanode.api.v2.ListEntitiesResponse.rewards:type_name -> vega.Reward - 433, // 328: datanode.api.v2.ListEntitiesResponse.deposits:type_name -> vega.Deposit - 434, // 329: datanode.api.v2.ListEntitiesResponse.withdrawals:type_name -> vega.Withdrawal - 435, // 330: datanode.api.v2.ListEntitiesResponse.assets:type_name -> vega.Asset - 436, // 331: datanode.api.v2.ListEntitiesResponse.liquidity_provisions:type_name -> vega.LiquidityProvision - 462, // 332: datanode.api.v2.ListEntitiesResponse.proposals:type_name -> vega.Proposal - 441, // 333: datanode.api.v2.ListEntitiesResponse.delegations:type_name -> vega.Delegation + 421, // 321: datanode.api.v2.ListEntitiesResponse.trades:type_name -> vega.Trade + 429, // 322: datanode.api.v2.ListEntitiesResponse.oracle_specs:type_name -> vega.OracleSpec + 430, // 323: datanode.api.v2.ListEntitiesResponse.oracle_data:type_name -> vega.OracleData + 431, // 324: datanode.api.v2.ListEntitiesResponse.markets:type_name -> vega.Market + 433, // 325: datanode.api.v2.ListEntitiesResponse.parties:type_name -> vega.Party + 434, // 326: datanode.api.v2.ListEntitiesResponse.margin_levels:type_name -> vega.MarginLevels + 435, // 327: datanode.api.v2.ListEntitiesResponse.rewards:type_name -> vega.Reward + 438, // 328: datanode.api.v2.ListEntitiesResponse.deposits:type_name -> vega.Deposit + 439, // 329: datanode.api.v2.ListEntitiesResponse.withdrawals:type_name -> vega.Withdrawal + 440, // 330: datanode.api.v2.ListEntitiesResponse.assets:type_name -> vega.Asset + 441, // 331: datanode.api.v2.ListEntitiesResponse.liquidity_provisions:type_name -> vega.LiquidityProvision + 467, // 332: datanode.api.v2.ListEntitiesResponse.proposals:type_name -> vega.Proposal + 446, // 333: datanode.api.v2.ListEntitiesResponse.delegations:type_name -> vega.Delegation 234, // 334: datanode.api.v2.ListEntitiesResponse.nodes:type_name -> datanode.api.v2.NodeBasic - 445, // 335: datanode.api.v2.ListEntitiesResponse.node_signatures:type_name -> vega.commands.v1.NodeSignature - 449, // 336: datanode.api.v2.ListEntitiesResponse.network_parameters:type_name -> vega.NetworkParameter - 455, // 337: datanode.api.v2.ListEntitiesResponse.key_rotations:type_name -> vega.events.v1.KeyRotation - 456, // 338: datanode.api.v2.ListEntitiesResponse.ethereum_key_rotations:type_name -> vega.events.v1.EthereumKeyRotation - 458, // 339: datanode.api.v2.ListEntitiesResponse.protocol_upgrade_proposals:type_name -> vega.events.v1.ProtocolUpgradeEvent - 463, // 340: datanode.api.v2.GetPartyActivityStreakResponse.activity_streak:type_name -> vega.events.v1.PartyActivityStreak + 450, // 335: datanode.api.v2.ListEntitiesResponse.node_signatures:type_name -> vega.commands.v1.NodeSignature + 454, // 336: datanode.api.v2.ListEntitiesResponse.network_parameters:type_name -> vega.NetworkParameter + 460, // 337: datanode.api.v2.ListEntitiesResponse.key_rotations:type_name -> vega.events.v1.KeyRotation + 461, // 338: datanode.api.v2.ListEntitiesResponse.ethereum_key_rotations:type_name -> vega.events.v1.EthereumKeyRotation + 463, // 339: datanode.api.v2.ListEntitiesResponse.protocol_upgrade_proposals:type_name -> vega.events.v1.ProtocolUpgradeEvent + 468, // 340: datanode.api.v2.GetPartyActivityStreakResponse.activity_streak:type_name -> vega.events.v1.PartyActivityStreak 6, // 341: datanode.api.v2.ListFundingPaymentsRequest.pagination:type_name -> datanode.api.v2.Pagination 311, // 342: datanode.api.v2.FundingPaymentEdge.node:type_name -> datanode.api.v2.FundingPayment 313, // 343: datanode.api.v2.FundingPaymentConnection.edges:type_name -> datanode.api.v2.FundingPaymentEdge @@ -29558,28 +29972,28 @@ var file_data_node_api_v2_trading_data_proto_depIdxs = []int32{ 314, // 345: datanode.api.v2.ListFundingPaymentsResponse.funding_payments:type_name -> datanode.api.v2.FundingPaymentConnection 284, // 346: datanode.api.v2.ListFundingPeriodsRequest.date_range:type_name -> datanode.api.v2.DateRange 6, // 347: datanode.api.v2.ListFundingPeriodsRequest.pagination:type_name -> datanode.api.v2.Pagination - 464, // 348: datanode.api.v2.FundingPeriodEdge.node:type_name -> vega.events.v1.FundingPeriod + 469, // 348: datanode.api.v2.FundingPeriodEdge.node:type_name -> vega.events.v1.FundingPeriod 317, // 349: datanode.api.v2.FundingPeriodConnection.edges:type_name -> datanode.api.v2.FundingPeriodEdge 7, // 350: datanode.api.v2.FundingPeriodConnection.page_info:type_name -> datanode.api.v2.PageInfo 318, // 351: datanode.api.v2.ListFundingPeriodsResponse.funding_periods:type_name -> datanode.api.v2.FundingPeriodConnection 284, // 352: datanode.api.v2.ListFundingPeriodDataPointsRequest.date_range:type_name -> datanode.api.v2.DateRange - 465, // 353: datanode.api.v2.ListFundingPeriodDataPointsRequest.source:type_name -> vega.events.v1.FundingPeriodDataPoint.Source + 470, // 353: datanode.api.v2.ListFundingPeriodDataPointsRequest.source:type_name -> vega.events.v1.FundingPeriodDataPoint.Source 6, // 354: datanode.api.v2.ListFundingPeriodDataPointsRequest.pagination:type_name -> datanode.api.v2.Pagination - 466, // 355: datanode.api.v2.FundingPeriodDataPointEdge.node:type_name -> vega.events.v1.FundingPeriodDataPoint + 471, // 355: datanode.api.v2.FundingPeriodDataPointEdge.node:type_name -> vega.events.v1.FundingPeriodDataPoint 321, // 356: datanode.api.v2.FundingPeriodDataPointConnection.edges:type_name -> datanode.api.v2.FundingPeriodDataPointEdge 7, // 357: datanode.api.v2.FundingPeriodDataPointConnection.page_info:type_name -> datanode.api.v2.PageInfo 322, // 358: datanode.api.v2.ListFundingPeriodDataPointsResponse.funding_period_data_points:type_name -> datanode.api.v2.FundingPeriodDataPointConnection - 448, // 359: datanode.api.v2.OrderInfo.side:type_name -> vega.Side + 453, // 359: datanode.api.v2.OrderInfo.side:type_name -> vega.Side 326, // 360: datanode.api.v2.EstimatePositionRequest.orders:type_name -> datanode.api.v2.OrderInfo 329, // 361: datanode.api.v2.EstimatePositionResponse.margin:type_name -> datanode.api.v2.MarginEstimate 330, // 362: datanode.api.v2.EstimatePositionResponse.liquidation:type_name -> datanode.api.v2.LiquidationEstimate - 429, // 363: datanode.api.v2.MarginEstimate.worst_case:type_name -> vega.MarginLevels - 429, // 364: datanode.api.v2.MarginEstimate.best_case:type_name -> vega.MarginLevels + 434, // 363: datanode.api.v2.MarginEstimate.worst_case:type_name -> vega.MarginLevels + 434, // 364: datanode.api.v2.MarginEstimate.best_case:type_name -> vega.MarginLevels 331, // 365: datanode.api.v2.LiquidationEstimate.worst_case:type_name -> datanode.api.v2.LiquidationPrice 331, // 366: datanode.api.v2.LiquidationEstimate.best_case:type_name -> datanode.api.v2.LiquidationPrice 334, // 367: datanode.api.v2.GetCurrentReferralProgramResponse.current_referral_program:type_name -> datanode.api.v2.ReferralProgram - 467, // 368: datanode.api.v2.ReferralProgram.benefit_tiers:type_name -> vega.BenefitTier - 468, // 369: datanode.api.v2.ReferralProgram.staking_tiers:type_name -> vega.StakingTier + 472, // 368: datanode.api.v2.ReferralProgram.benefit_tiers:type_name -> vega.BenefitTier + 473, // 369: datanode.api.v2.ReferralProgram.staking_tiers:type_name -> vega.StakingTier 335, // 370: datanode.api.v2.ReferralSetEdge.node:type_name -> datanode.api.v2.ReferralSet 336, // 371: datanode.api.v2.ReferralSetConnection.edges:type_name -> datanode.api.v2.ReferralSetEdge 7, // 372: datanode.api.v2.ReferralSetConnection.page_info:type_name -> datanode.api.v2.PageInfo @@ -29606,278 +30020,286 @@ var file_data_node_api_v2_trading_data_proto_depIdxs = []int32{ 7, // 393: datanode.api.v2.TeamsStatisticsConnection.page_info:type_name -> datanode.api.v2.PageInfo 359, // 394: datanode.api.v2.TeamStatisticsEdge.node:type_name -> datanode.api.v2.TeamStatistics 360, // 395: datanode.api.v2.TeamStatistics.quantum_rewards:type_name -> datanode.api.v2.QuantumRewardsPerEpoch - 6, // 396: datanode.api.v2.ListTeamRefereesRequest.pagination:type_name -> datanode.api.v2.Pagination - 362, // 397: datanode.api.v2.TeamRefereeEdge.node:type_name -> datanode.api.v2.TeamReferee - 363, // 398: datanode.api.v2.TeamRefereeConnection.edges:type_name -> datanode.api.v2.TeamRefereeEdge - 7, // 399: datanode.api.v2.TeamRefereeConnection.page_info:type_name -> datanode.api.v2.PageInfo - 364, // 400: datanode.api.v2.ListTeamRefereesResponse.team_referees:type_name -> datanode.api.v2.TeamRefereeConnection - 366, // 401: datanode.api.v2.TeamRefereeHistoryEdge.node:type_name -> datanode.api.v2.TeamRefereeHistory - 367, // 402: datanode.api.v2.TeamRefereeHistoryConnection.edges:type_name -> datanode.api.v2.TeamRefereeHistoryEdge - 7, // 403: datanode.api.v2.TeamRefereeHistoryConnection.page_info:type_name -> datanode.api.v2.PageInfo - 6, // 404: datanode.api.v2.ListTeamRefereeHistoryRequest.pagination:type_name -> datanode.api.v2.Pagination - 368, // 405: datanode.api.v2.ListTeamRefereeHistoryResponse.team_referee_history:type_name -> datanode.api.v2.TeamRefereeHistoryConnection - 469, // 406: datanode.api.v2.GetFeesStatsResponse.fees_stats:type_name -> vega.events.v1.FeesStats - 383, // 407: datanode.api.v2.GetFeesStatsForPartyResponse.fees_stats_for_party:type_name -> datanode.api.v2.FeesStatsForParty - 382, // 408: datanode.api.v2.GetCurrentVolumeDiscountProgramResponse.current_volume_discount_program:type_name -> datanode.api.v2.VolumeDiscountProgram - 6, // 409: datanode.api.v2.GetVolumeDiscountStatsRequest.pagination:type_name -> datanode.api.v2.Pagination - 379, // 410: datanode.api.v2.GetVolumeDiscountStatsResponse.stats:type_name -> datanode.api.v2.VolumeDiscountStatsConnection - 380, // 411: datanode.api.v2.VolumeDiscountStatsConnection.edges:type_name -> datanode.api.v2.VolumeDiscountStatsEdge - 7, // 412: datanode.api.v2.VolumeDiscountStatsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 381, // 413: datanode.api.v2.VolumeDiscountStatsEdge.node:type_name -> datanode.api.v2.VolumeDiscountStats - 470, // 414: datanode.api.v2.VolumeDiscountProgram.benefit_tiers:type_name -> vega.VolumeBenefitTier - 471, // 415: datanode.api.v2.ObserveTransactionResultsResponse.transaction_results:type_name -> vega.events.v1.TransactionResult - 402, // 416: datanode.api.v2.EstimateTransferFeeRequest.from_account_type:type_name -> vega.AccountType - 472, // 417: datanode.api.v2.ListGamesRequest.entity_scope:type_name -> vega.EntityScope - 6, // 418: datanode.api.v2.ListGamesRequest.pagination:type_name -> datanode.api.v2.Pagination - 392, // 419: datanode.api.v2.ListGamesResponse.games:type_name -> datanode.api.v2.GamesConnection - 393, // 420: datanode.api.v2.GamesConnection.edges:type_name -> datanode.api.v2.GameEdge - 7, // 421: datanode.api.v2.GamesConnection.page_info:type_name -> datanode.api.v2.PageInfo - 394, // 422: datanode.api.v2.GameEdge.node:type_name -> datanode.api.v2.Game - 395, // 423: datanode.api.v2.Game.team:type_name -> datanode.api.v2.TeamGameEntities - 396, // 424: datanode.api.v2.Game.individual:type_name -> datanode.api.v2.IndividualGameEntities - 397, // 425: datanode.api.v2.TeamGameEntities.team:type_name -> datanode.api.v2.TeamGameEntity - 399, // 426: datanode.api.v2.IndividualGameEntities.individual:type_name -> datanode.api.v2.IndividualGameEntity - 398, // 427: datanode.api.v2.TeamGameEntity.team:type_name -> datanode.api.v2.TeamGameParticipation - 399, // 428: datanode.api.v2.TeamGameParticipation.members_participating:type_name -> datanode.api.v2.IndividualGameEntity - 13, // 429: datanode.api.v2.TradingDataService.ListAccounts:input_type -> datanode.api.v2.ListAccountsRequest - 17, // 430: datanode.api.v2.TradingDataService.ObserveAccounts:input_type -> datanode.api.v2.ObserveAccountsRequest - 21, // 431: datanode.api.v2.TradingDataService.Info:input_type -> datanode.api.v2.InfoRequest - 23, // 432: datanode.api.v2.TradingDataService.GetOrder:input_type -> datanode.api.v2.GetOrderRequest - 26, // 433: datanode.api.v2.TradingDataService.ListOrders:input_type -> datanode.api.v2.ListOrdersRequest - 28, // 434: datanode.api.v2.TradingDataService.ListOrderVersions:input_type -> datanode.api.v2.ListOrderVersionsRequest - 30, // 435: datanode.api.v2.TradingDataService.ObserveOrders:input_type -> datanode.api.v2.ObserveOrdersRequest - 34, // 436: datanode.api.v2.TradingDataService.GetStopOrder:input_type -> datanode.api.v2.GetStopOrderRequest - 36, // 437: datanode.api.v2.TradingDataService.ListStopOrders:input_type -> datanode.api.v2.ListStopOrdersRequest - 41, // 438: datanode.api.v2.TradingDataService.ListPositions:input_type -> datanode.api.v2.ListPositionsRequest - 44, // 439: datanode.api.v2.TradingDataService.ListAllPositions:input_type -> datanode.api.v2.ListAllPositionsRequest - 48, // 440: datanode.api.v2.TradingDataService.ObservePositions:input_type -> datanode.api.v2.ObservePositionsRequest - 54, // 441: datanode.api.v2.TradingDataService.ListLedgerEntries:input_type -> datanode.api.v2.ListLedgerEntriesRequest - 55, // 442: datanode.api.v2.TradingDataService.ExportLedgerEntries:input_type -> datanode.api.v2.ExportLedgerEntriesRequest - 59, // 443: datanode.api.v2.TradingDataService.ListBalanceChanges:input_type -> datanode.api.v2.ListBalanceChangesRequest - 77, // 444: datanode.api.v2.TradingDataService.GetLatestMarketData:input_type -> datanode.api.v2.GetLatestMarketDataRequest - 75, // 445: datanode.api.v2.TradingDataService.ListLatestMarketData:input_type -> datanode.api.v2.ListLatestMarketDataRequest - 73, // 446: datanode.api.v2.TradingDataService.GetLatestMarketDepth:input_type -> datanode.api.v2.GetLatestMarketDepthRequest - 67, // 447: datanode.api.v2.TradingDataService.ObserveMarketsDepth:input_type -> datanode.api.v2.ObserveMarketsDepthRequest - 69, // 448: datanode.api.v2.TradingDataService.ObserveMarketsDepthUpdates:input_type -> datanode.api.v2.ObserveMarketsDepthUpdatesRequest - 71, // 449: datanode.api.v2.TradingDataService.ObserveMarketsData:input_type -> datanode.api.v2.ObserveMarketsDataRequest - 79, // 450: datanode.api.v2.TradingDataService.GetMarketDataHistoryByID:input_type -> datanode.api.v2.GetMarketDataHistoryByIDRequest - 83, // 451: datanode.api.v2.TradingDataService.ListTransfers:input_type -> datanode.api.v2.ListTransfersRequest - 88, // 452: datanode.api.v2.TradingDataService.GetTransfer:input_type -> datanode.api.v2.GetTransferRequest - 90, // 453: datanode.api.v2.TradingDataService.GetNetworkLimits:input_type -> datanode.api.v2.GetNetworkLimitsRequest - 98, // 454: datanode.api.v2.TradingDataService.ListCandleData:input_type -> datanode.api.v2.ListCandleDataRequest - 96, // 455: datanode.api.v2.TradingDataService.ObserveCandleData:input_type -> datanode.api.v2.ObserveCandleDataRequest - 92, // 456: datanode.api.v2.TradingDataService.ListCandleIntervals:input_type -> datanode.api.v2.ListCandleIntervalsRequest - 102, // 457: datanode.api.v2.TradingDataService.ListVotes:input_type -> datanode.api.v2.ListVotesRequest - 106, // 458: datanode.api.v2.TradingDataService.ObserveVotes:input_type -> datanode.api.v2.ObserveVotesRequest - 108, // 459: datanode.api.v2.TradingDataService.ListERC20MultiSigSignerAddedBundles:input_type -> datanode.api.v2.ListERC20MultiSigSignerAddedBundlesRequest - 114, // 460: datanode.api.v2.TradingDataService.ListERC20MultiSigSignerRemovedBundles:input_type -> datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesRequest - 120, // 461: datanode.api.v2.TradingDataService.GetERC20ListAssetBundle:input_type -> datanode.api.v2.GetERC20ListAssetBundleRequest - 122, // 462: datanode.api.v2.TradingDataService.GetERC20SetAssetLimitsBundle:input_type -> datanode.api.v2.GetERC20SetAssetLimitsBundleRequest - 124, // 463: datanode.api.v2.TradingDataService.GetERC20WithdrawalApproval:input_type -> datanode.api.v2.GetERC20WithdrawalApprovalRequest - 126, // 464: datanode.api.v2.TradingDataService.GetLastTrade:input_type -> datanode.api.v2.GetLastTradeRequest - 128, // 465: datanode.api.v2.TradingDataService.ListTrades:input_type -> datanode.api.v2.ListTradesRequest - 132, // 466: datanode.api.v2.TradingDataService.ObserveTrades:input_type -> datanode.api.v2.ObserveTradesRequest - 134, // 467: datanode.api.v2.TradingDataService.GetOracleSpec:input_type -> datanode.api.v2.GetOracleSpecRequest - 136, // 468: datanode.api.v2.TradingDataService.ListOracleSpecs:input_type -> datanode.api.v2.ListOracleSpecsRequest - 138, // 469: datanode.api.v2.TradingDataService.ListOracleData:input_type -> datanode.api.v2.ListOracleDataRequest - 144, // 470: datanode.api.v2.TradingDataService.GetMarket:input_type -> datanode.api.v2.GetMarketRequest - 146, // 471: datanode.api.v2.TradingDataService.ListMarkets:input_type -> datanode.api.v2.ListMarketsRequest - 150, // 472: datanode.api.v2.TradingDataService.ListSuccessorMarkets:input_type -> datanode.api.v2.ListSuccessorMarketsRequest - 155, // 473: datanode.api.v2.TradingDataService.GetParty:input_type -> datanode.api.v2.GetPartyRequest - 157, // 474: datanode.api.v2.TradingDataService.ListParties:input_type -> datanode.api.v2.ListPartiesRequest - 162, // 475: datanode.api.v2.TradingDataService.ListMarginLevels:input_type -> datanode.api.v2.ListMarginLevelsRequest - 164, // 476: datanode.api.v2.TradingDataService.ObserveMarginLevels:input_type -> datanode.api.v2.ObserveMarginLevelsRequest - 169, // 477: datanode.api.v2.TradingDataService.ListRewards:input_type -> datanode.api.v2.ListRewardsRequest - 173, // 478: datanode.api.v2.TradingDataService.ListRewardSummaries:input_type -> datanode.api.v2.ListRewardSummariesRequest - 176, // 479: datanode.api.v2.TradingDataService.ListEpochRewardSummaries:input_type -> datanode.api.v2.ListEpochRewardSummariesRequest - 182, // 480: datanode.api.v2.TradingDataService.GetDeposit:input_type -> datanode.api.v2.GetDepositRequest - 184, // 481: datanode.api.v2.TradingDataService.ListDeposits:input_type -> datanode.api.v2.ListDepositsRequest - 188, // 482: datanode.api.v2.TradingDataService.GetWithdrawal:input_type -> datanode.api.v2.GetWithdrawalRequest - 190, // 483: datanode.api.v2.TradingDataService.ListWithdrawals:input_type -> datanode.api.v2.ListWithdrawalsRequest - 194, // 484: datanode.api.v2.TradingDataService.GetAsset:input_type -> datanode.api.v2.GetAssetRequest - 196, // 485: datanode.api.v2.TradingDataService.ListAssets:input_type -> datanode.api.v2.ListAssetsRequest - 200, // 486: datanode.api.v2.TradingDataService.ListLiquidityProvisions:input_type -> datanode.api.v2.ListLiquidityProvisionsRequest - 201, // 487: datanode.api.v2.TradingDataService.ListAllLiquidityProvisions:input_type -> datanode.api.v2.ListAllLiquidityProvisionsRequest - 209, // 488: datanode.api.v2.TradingDataService.ObserveLiquidityProvisions:input_type -> datanode.api.v2.ObserveLiquidityProvisionsRequest - 211, // 489: datanode.api.v2.TradingDataService.ListLiquidityProviders:input_type -> datanode.api.v2.ListLiquidityProvidersRequest - 216, // 490: datanode.api.v2.TradingDataService.ListPaidLiquidityFees:input_type -> datanode.api.v2.ListPaidLiquidityFeesRequest - 220, // 491: datanode.api.v2.TradingDataService.GetGovernanceData:input_type -> datanode.api.v2.GetGovernanceDataRequest - 222, // 492: datanode.api.v2.TradingDataService.ListGovernanceData:input_type -> datanode.api.v2.ListGovernanceDataRequest - 226, // 493: datanode.api.v2.TradingDataService.ObserveGovernance:input_type -> datanode.api.v2.ObserveGovernanceRequest - 228, // 494: datanode.api.v2.TradingDataService.ListDelegations:input_type -> datanode.api.v2.ListDelegationsRequest - 235, // 495: datanode.api.v2.TradingDataService.GetNetworkData:input_type -> datanode.api.v2.GetNetworkDataRequest - 237, // 496: datanode.api.v2.TradingDataService.GetNode:input_type -> datanode.api.v2.GetNodeRequest - 239, // 497: datanode.api.v2.TradingDataService.ListNodes:input_type -> datanode.api.v2.ListNodesRequest - 243, // 498: datanode.api.v2.TradingDataService.ListNodeSignatures:input_type -> datanode.api.v2.ListNodeSignaturesRequest - 247, // 499: datanode.api.v2.TradingDataService.GetEpoch:input_type -> datanode.api.v2.GetEpochRequest - 249, // 500: datanode.api.v2.TradingDataService.EstimateFee:input_type -> datanode.api.v2.EstimateFeeRequest - 251, // 501: datanode.api.v2.TradingDataService.EstimateMargin:input_type -> datanode.api.v2.EstimateMarginRequest - 327, // 502: datanode.api.v2.TradingDataService.EstimatePosition:input_type -> datanode.api.v2.EstimatePositionRequest - 253, // 503: datanode.api.v2.TradingDataService.ListNetworkParameters:input_type -> datanode.api.v2.ListNetworkParametersRequest - 255, // 504: datanode.api.v2.TradingDataService.GetNetworkParameter:input_type -> datanode.api.v2.GetNetworkParameterRequest - 260, // 505: datanode.api.v2.TradingDataService.ListCheckpoints:input_type -> datanode.api.v2.ListCheckpointsRequest - 264, // 506: datanode.api.v2.TradingDataService.GetStake:input_type -> datanode.api.v2.GetStakeRequest - 268, // 507: datanode.api.v2.TradingDataService.GetRiskFactors:input_type -> datanode.api.v2.GetRiskFactorsRequest - 270, // 508: datanode.api.v2.TradingDataService.ObserveEventBus:input_type -> datanode.api.v2.ObserveEventBusRequest - 272, // 509: datanode.api.v2.TradingDataService.ObserveLedgerMovements:input_type -> datanode.api.v2.ObserveLedgerMovementsRequest - 274, // 510: datanode.api.v2.TradingDataService.ListKeyRotations:input_type -> datanode.api.v2.ListKeyRotationsRequest - 278, // 511: datanode.api.v2.TradingDataService.ListEthereumKeyRotations:input_type -> datanode.api.v2.ListEthereumKeyRotationsRequest - 282, // 512: datanode.api.v2.TradingDataService.GetVegaTime:input_type -> datanode.api.v2.GetVegaTimeRequest - 285, // 513: datanode.api.v2.TradingDataService.GetProtocolUpgradeStatus:input_type -> datanode.api.v2.GetProtocolUpgradeStatusRequest - 287, // 514: datanode.api.v2.TradingDataService.ListProtocolUpgradeProposals:input_type -> datanode.api.v2.ListProtocolUpgradeProposalsRequest - 291, // 515: datanode.api.v2.TradingDataService.ListCoreSnapshots:input_type -> datanode.api.v2.ListCoreSnapshotsRequest - 296, // 516: datanode.api.v2.TradingDataService.GetMostRecentNetworkHistorySegment:input_type -> datanode.api.v2.GetMostRecentNetworkHistorySegmentRequest - 298, // 517: datanode.api.v2.TradingDataService.ListAllNetworkHistorySegments:input_type -> datanode.api.v2.ListAllNetworkHistorySegmentsRequest - 300, // 518: datanode.api.v2.TradingDataService.GetActiveNetworkHistoryPeerAddresses:input_type -> datanode.api.v2.GetActiveNetworkHistoryPeerAddressesRequest - 302, // 519: datanode.api.v2.TradingDataService.GetNetworkHistoryStatus:input_type -> datanode.api.v2.GetNetworkHistoryStatusRequest - 304, // 520: datanode.api.v2.TradingDataService.GetNetworkHistoryBootstrapPeers:input_type -> datanode.api.v2.GetNetworkHistoryBootstrapPeersRequest - 307, // 521: datanode.api.v2.TradingDataService.ListEntities:input_type -> datanode.api.v2.ListEntitiesRequest - 316, // 522: datanode.api.v2.TradingDataService.ListFundingPeriods:input_type -> datanode.api.v2.ListFundingPeriodsRequest - 320, // 523: datanode.api.v2.TradingDataService.ListFundingPeriodDataPoints:input_type -> datanode.api.v2.ListFundingPeriodDataPointsRequest - 312, // 524: datanode.api.v2.TradingDataService.ListFundingPayments:input_type -> datanode.api.v2.ListFundingPaymentsRequest - 309, // 525: datanode.api.v2.TradingDataService.GetPartyActivityStreak:input_type -> datanode.api.v2.GetPartyActivityStreakRequest - 332, // 526: datanode.api.v2.TradingDataService.GetCurrentReferralProgram:input_type -> datanode.api.v2.GetCurrentReferralProgramRequest - 338, // 527: datanode.api.v2.TradingDataService.ListReferralSets:input_type -> datanode.api.v2.ListReferralSetsRequest - 343, // 528: datanode.api.v2.TradingDataService.ListReferralSetReferees:input_type -> datanode.api.v2.ListReferralSetRefereesRequest - 345, // 529: datanode.api.v2.TradingDataService.GetReferralSetStats:input_type -> datanode.api.v2.GetReferralSetStatsRequest - 353, // 530: datanode.api.v2.TradingDataService.ListTeams:input_type -> datanode.api.v2.ListTeamsRequest - 355, // 531: datanode.api.v2.TradingDataService.ListTeamsStatistics:input_type -> datanode.api.v2.ListTeamsStatisticsRequest - 361, // 532: datanode.api.v2.TradingDataService.ListTeamReferees:input_type -> datanode.api.v2.ListTeamRefereesRequest - 369, // 533: datanode.api.v2.TradingDataService.ListTeamRefereeHistory:input_type -> datanode.api.v2.ListTeamRefereeHistoryRequest - 371, // 534: datanode.api.v2.TradingDataService.GetFeesStats:input_type -> datanode.api.v2.GetFeesStatsRequest - 373, // 535: datanode.api.v2.TradingDataService.GetFeesStatsForParty:input_type -> datanode.api.v2.GetFeesStatsForPartyRequest - 375, // 536: datanode.api.v2.TradingDataService.GetCurrentVolumeDiscountProgram:input_type -> datanode.api.v2.GetCurrentVolumeDiscountProgramRequest - 377, // 537: datanode.api.v2.TradingDataService.GetVolumeDiscountStats:input_type -> datanode.api.v2.GetVolumeDiscountStatsRequest - 10, // 538: datanode.api.v2.TradingDataService.GetVestingBalancesSummary:input_type -> datanode.api.v2.GetVestingBalancesSummaryRequest - 8, // 539: datanode.api.v2.TradingDataService.GetPartyVestingStats:input_type -> datanode.api.v2.GetPartyVestingStatsRequest - 384, // 540: datanode.api.v2.TradingDataService.ObserveTransactionResults:input_type -> datanode.api.v2.ObserveTransactionResultsRequest - 386, // 541: datanode.api.v2.TradingDataService.EstimateTransferFee:input_type -> datanode.api.v2.EstimateTransferFeeRequest - 388, // 542: datanode.api.v2.TradingDataService.GetTotalTransferFeeDiscount:input_type -> datanode.api.v2.GetTotalTransferFeeDiscountRequest - 390, // 543: datanode.api.v2.TradingDataService.ListGames:input_type -> datanode.api.v2.ListGamesRequest - 306, // 544: datanode.api.v2.TradingDataService.ExportNetworkHistory:input_type -> datanode.api.v2.ExportNetworkHistoryRequest - 324, // 545: datanode.api.v2.TradingDataService.Ping:input_type -> datanode.api.v2.PingRequest - 14, // 546: datanode.api.v2.TradingDataService.ListAccounts:output_type -> datanode.api.v2.ListAccountsResponse - 18, // 547: datanode.api.v2.TradingDataService.ObserveAccounts:output_type -> datanode.api.v2.ObserveAccountsResponse - 22, // 548: datanode.api.v2.TradingDataService.Info:output_type -> datanode.api.v2.InfoResponse - 24, // 549: datanode.api.v2.TradingDataService.GetOrder:output_type -> datanode.api.v2.GetOrderResponse - 27, // 550: datanode.api.v2.TradingDataService.ListOrders:output_type -> datanode.api.v2.ListOrdersResponse - 29, // 551: datanode.api.v2.TradingDataService.ListOrderVersions:output_type -> datanode.api.v2.ListOrderVersionsResponse - 31, // 552: datanode.api.v2.TradingDataService.ObserveOrders:output_type -> datanode.api.v2.ObserveOrdersResponse - 35, // 553: datanode.api.v2.TradingDataService.GetStopOrder:output_type -> datanode.api.v2.GetStopOrderResponse - 40, // 554: datanode.api.v2.TradingDataService.ListStopOrders:output_type -> datanode.api.v2.ListStopOrdersResponse - 42, // 555: datanode.api.v2.TradingDataService.ListPositions:output_type -> datanode.api.v2.ListPositionsResponse - 45, // 556: datanode.api.v2.TradingDataService.ListAllPositions:output_type -> datanode.api.v2.ListAllPositionsResponse - 49, // 557: datanode.api.v2.TradingDataService.ObservePositions:output_type -> datanode.api.v2.ObservePositionsResponse - 56, // 558: datanode.api.v2.TradingDataService.ListLedgerEntries:output_type -> datanode.api.v2.ListLedgerEntriesResponse - 473, // 559: datanode.api.v2.TradingDataService.ExportLedgerEntries:output_type -> google.api.HttpBody - 60, // 560: datanode.api.v2.TradingDataService.ListBalanceChanges:output_type -> datanode.api.v2.ListBalanceChangesResponse - 78, // 561: datanode.api.v2.TradingDataService.GetLatestMarketData:output_type -> datanode.api.v2.GetLatestMarketDataResponse - 76, // 562: datanode.api.v2.TradingDataService.ListLatestMarketData:output_type -> datanode.api.v2.ListLatestMarketDataResponse - 74, // 563: datanode.api.v2.TradingDataService.GetLatestMarketDepth:output_type -> datanode.api.v2.GetLatestMarketDepthResponse - 68, // 564: datanode.api.v2.TradingDataService.ObserveMarketsDepth:output_type -> datanode.api.v2.ObserveMarketsDepthResponse - 70, // 565: datanode.api.v2.TradingDataService.ObserveMarketsDepthUpdates:output_type -> datanode.api.v2.ObserveMarketsDepthUpdatesResponse - 72, // 566: datanode.api.v2.TradingDataService.ObserveMarketsData:output_type -> datanode.api.v2.ObserveMarketsDataResponse - 80, // 567: datanode.api.v2.TradingDataService.GetMarketDataHistoryByID:output_type -> datanode.api.v2.GetMarketDataHistoryByIDResponse - 84, // 568: datanode.api.v2.TradingDataService.ListTransfers:output_type -> datanode.api.v2.ListTransfersResponse - 89, // 569: datanode.api.v2.TradingDataService.GetTransfer:output_type -> datanode.api.v2.GetTransferResponse - 91, // 570: datanode.api.v2.TradingDataService.GetNetworkLimits:output_type -> datanode.api.v2.GetNetworkLimitsResponse - 99, // 571: datanode.api.v2.TradingDataService.ListCandleData:output_type -> datanode.api.v2.ListCandleDataResponse - 97, // 572: datanode.api.v2.TradingDataService.ObserveCandleData:output_type -> datanode.api.v2.ObserveCandleDataResponse - 94, // 573: datanode.api.v2.TradingDataService.ListCandleIntervals:output_type -> datanode.api.v2.ListCandleIntervalsResponse - 103, // 574: datanode.api.v2.TradingDataService.ListVotes:output_type -> datanode.api.v2.ListVotesResponse - 107, // 575: datanode.api.v2.TradingDataService.ObserveVotes:output_type -> datanode.api.v2.ObserveVotesResponse - 109, // 576: datanode.api.v2.TradingDataService.ListERC20MultiSigSignerAddedBundles:output_type -> datanode.api.v2.ListERC20MultiSigSignerAddedBundlesResponse - 115, // 577: datanode.api.v2.TradingDataService.ListERC20MultiSigSignerRemovedBundles:output_type -> datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesResponse - 121, // 578: datanode.api.v2.TradingDataService.GetERC20ListAssetBundle:output_type -> datanode.api.v2.GetERC20ListAssetBundleResponse - 123, // 579: datanode.api.v2.TradingDataService.GetERC20SetAssetLimitsBundle:output_type -> datanode.api.v2.GetERC20SetAssetLimitsBundleResponse - 125, // 580: datanode.api.v2.TradingDataService.GetERC20WithdrawalApproval:output_type -> datanode.api.v2.GetERC20WithdrawalApprovalResponse - 127, // 581: datanode.api.v2.TradingDataService.GetLastTrade:output_type -> datanode.api.v2.GetLastTradeResponse - 129, // 582: datanode.api.v2.TradingDataService.ListTrades:output_type -> datanode.api.v2.ListTradesResponse - 133, // 583: datanode.api.v2.TradingDataService.ObserveTrades:output_type -> datanode.api.v2.ObserveTradesResponse - 135, // 584: datanode.api.v2.TradingDataService.GetOracleSpec:output_type -> datanode.api.v2.GetOracleSpecResponse - 137, // 585: datanode.api.v2.TradingDataService.ListOracleSpecs:output_type -> datanode.api.v2.ListOracleSpecsResponse - 139, // 586: datanode.api.v2.TradingDataService.ListOracleData:output_type -> datanode.api.v2.ListOracleDataResponse - 145, // 587: datanode.api.v2.TradingDataService.GetMarket:output_type -> datanode.api.v2.GetMarketResponse - 147, // 588: datanode.api.v2.TradingDataService.ListMarkets:output_type -> datanode.api.v2.ListMarketsResponse - 154, // 589: datanode.api.v2.TradingDataService.ListSuccessorMarkets:output_type -> datanode.api.v2.ListSuccessorMarketsResponse - 156, // 590: datanode.api.v2.TradingDataService.GetParty:output_type -> datanode.api.v2.GetPartyResponse - 158, // 591: datanode.api.v2.TradingDataService.ListParties:output_type -> datanode.api.v2.ListPartiesResponse - 163, // 592: datanode.api.v2.TradingDataService.ListMarginLevels:output_type -> datanode.api.v2.ListMarginLevelsResponse - 165, // 593: datanode.api.v2.TradingDataService.ObserveMarginLevels:output_type -> datanode.api.v2.ObserveMarginLevelsResponse - 170, // 594: datanode.api.v2.TradingDataService.ListRewards:output_type -> datanode.api.v2.ListRewardsResponse - 174, // 595: datanode.api.v2.TradingDataService.ListRewardSummaries:output_type -> datanode.api.v2.ListRewardSummariesResponse - 177, // 596: datanode.api.v2.TradingDataService.ListEpochRewardSummaries:output_type -> datanode.api.v2.ListEpochRewardSummariesResponse - 183, // 597: datanode.api.v2.TradingDataService.GetDeposit:output_type -> datanode.api.v2.GetDepositResponse - 185, // 598: datanode.api.v2.TradingDataService.ListDeposits:output_type -> datanode.api.v2.ListDepositsResponse - 189, // 599: datanode.api.v2.TradingDataService.GetWithdrawal:output_type -> datanode.api.v2.GetWithdrawalResponse - 191, // 600: datanode.api.v2.TradingDataService.ListWithdrawals:output_type -> datanode.api.v2.ListWithdrawalsResponse - 195, // 601: datanode.api.v2.TradingDataService.GetAsset:output_type -> datanode.api.v2.GetAssetResponse - 197, // 602: datanode.api.v2.TradingDataService.ListAssets:output_type -> datanode.api.v2.ListAssetsResponse - 202, // 603: datanode.api.v2.TradingDataService.ListLiquidityProvisions:output_type -> datanode.api.v2.ListLiquidityProvisionsResponse - 203, // 604: datanode.api.v2.TradingDataService.ListAllLiquidityProvisions:output_type -> datanode.api.v2.ListAllLiquidityProvisionsResponse - 210, // 605: datanode.api.v2.TradingDataService.ObserveLiquidityProvisions:output_type -> datanode.api.v2.ObserveLiquidityProvisionsResponse - 215, // 606: datanode.api.v2.TradingDataService.ListLiquidityProviders:output_type -> datanode.api.v2.ListLiquidityProvidersResponse - 217, // 607: datanode.api.v2.TradingDataService.ListPaidLiquidityFees:output_type -> datanode.api.v2.ListPaidLiquidityFeesResponse - 221, // 608: datanode.api.v2.TradingDataService.GetGovernanceData:output_type -> datanode.api.v2.GetGovernanceDataResponse - 223, // 609: datanode.api.v2.TradingDataService.ListGovernanceData:output_type -> datanode.api.v2.ListGovernanceDataResponse - 227, // 610: datanode.api.v2.TradingDataService.ObserveGovernance:output_type -> datanode.api.v2.ObserveGovernanceResponse - 229, // 611: datanode.api.v2.TradingDataService.ListDelegations:output_type -> datanode.api.v2.ListDelegationsResponse - 236, // 612: datanode.api.v2.TradingDataService.GetNetworkData:output_type -> datanode.api.v2.GetNetworkDataResponse - 238, // 613: datanode.api.v2.TradingDataService.GetNode:output_type -> datanode.api.v2.GetNodeResponse - 240, // 614: datanode.api.v2.TradingDataService.ListNodes:output_type -> datanode.api.v2.ListNodesResponse - 244, // 615: datanode.api.v2.TradingDataService.ListNodeSignatures:output_type -> datanode.api.v2.ListNodeSignaturesResponse - 248, // 616: datanode.api.v2.TradingDataService.GetEpoch:output_type -> datanode.api.v2.GetEpochResponse - 250, // 617: datanode.api.v2.TradingDataService.EstimateFee:output_type -> datanode.api.v2.EstimateFeeResponse - 252, // 618: datanode.api.v2.TradingDataService.EstimateMargin:output_type -> datanode.api.v2.EstimateMarginResponse - 328, // 619: datanode.api.v2.TradingDataService.EstimatePosition:output_type -> datanode.api.v2.EstimatePositionResponse - 254, // 620: datanode.api.v2.TradingDataService.ListNetworkParameters:output_type -> datanode.api.v2.ListNetworkParametersResponse - 256, // 621: datanode.api.v2.TradingDataService.GetNetworkParameter:output_type -> datanode.api.v2.GetNetworkParameterResponse - 261, // 622: datanode.api.v2.TradingDataService.ListCheckpoints:output_type -> datanode.api.v2.ListCheckpointsResponse - 265, // 623: datanode.api.v2.TradingDataService.GetStake:output_type -> datanode.api.v2.GetStakeResponse - 269, // 624: datanode.api.v2.TradingDataService.GetRiskFactors:output_type -> datanode.api.v2.GetRiskFactorsResponse - 271, // 625: datanode.api.v2.TradingDataService.ObserveEventBus:output_type -> datanode.api.v2.ObserveEventBusResponse - 273, // 626: datanode.api.v2.TradingDataService.ObserveLedgerMovements:output_type -> datanode.api.v2.ObserveLedgerMovementsResponse - 275, // 627: datanode.api.v2.TradingDataService.ListKeyRotations:output_type -> datanode.api.v2.ListKeyRotationsResponse - 279, // 628: datanode.api.v2.TradingDataService.ListEthereumKeyRotations:output_type -> datanode.api.v2.ListEthereumKeyRotationsResponse - 283, // 629: datanode.api.v2.TradingDataService.GetVegaTime:output_type -> datanode.api.v2.GetVegaTimeResponse - 286, // 630: datanode.api.v2.TradingDataService.GetProtocolUpgradeStatus:output_type -> datanode.api.v2.GetProtocolUpgradeStatusResponse - 288, // 631: datanode.api.v2.TradingDataService.ListProtocolUpgradeProposals:output_type -> datanode.api.v2.ListProtocolUpgradeProposalsResponse - 292, // 632: datanode.api.v2.TradingDataService.ListCoreSnapshots:output_type -> datanode.api.v2.ListCoreSnapshotsResponse - 297, // 633: datanode.api.v2.TradingDataService.GetMostRecentNetworkHistorySegment:output_type -> datanode.api.v2.GetMostRecentNetworkHistorySegmentResponse - 299, // 634: datanode.api.v2.TradingDataService.ListAllNetworkHistorySegments:output_type -> datanode.api.v2.ListAllNetworkHistorySegmentsResponse - 301, // 635: datanode.api.v2.TradingDataService.GetActiveNetworkHistoryPeerAddresses:output_type -> datanode.api.v2.GetActiveNetworkHistoryPeerAddressesResponse - 303, // 636: datanode.api.v2.TradingDataService.GetNetworkHistoryStatus:output_type -> datanode.api.v2.GetNetworkHistoryStatusResponse - 305, // 637: datanode.api.v2.TradingDataService.GetNetworkHistoryBootstrapPeers:output_type -> datanode.api.v2.GetNetworkHistoryBootstrapPeersResponse - 308, // 638: datanode.api.v2.TradingDataService.ListEntities:output_type -> datanode.api.v2.ListEntitiesResponse - 319, // 639: datanode.api.v2.TradingDataService.ListFundingPeriods:output_type -> datanode.api.v2.ListFundingPeriodsResponse - 323, // 640: datanode.api.v2.TradingDataService.ListFundingPeriodDataPoints:output_type -> datanode.api.v2.ListFundingPeriodDataPointsResponse - 315, // 641: datanode.api.v2.TradingDataService.ListFundingPayments:output_type -> datanode.api.v2.ListFundingPaymentsResponse - 310, // 642: datanode.api.v2.TradingDataService.GetPartyActivityStreak:output_type -> datanode.api.v2.GetPartyActivityStreakResponse - 333, // 643: datanode.api.v2.TradingDataService.GetCurrentReferralProgram:output_type -> datanode.api.v2.GetCurrentReferralProgramResponse - 339, // 644: datanode.api.v2.TradingDataService.ListReferralSets:output_type -> datanode.api.v2.ListReferralSetsResponse - 344, // 645: datanode.api.v2.TradingDataService.ListReferralSetReferees:output_type -> datanode.api.v2.ListReferralSetRefereesResponse - 346, // 646: datanode.api.v2.TradingDataService.GetReferralSetStats:output_type -> datanode.api.v2.GetReferralSetStatsResponse - 354, // 647: datanode.api.v2.TradingDataService.ListTeams:output_type -> datanode.api.v2.ListTeamsResponse - 356, // 648: datanode.api.v2.TradingDataService.ListTeamsStatistics:output_type -> datanode.api.v2.ListTeamsStatisticsResponse - 365, // 649: datanode.api.v2.TradingDataService.ListTeamReferees:output_type -> datanode.api.v2.ListTeamRefereesResponse - 370, // 650: datanode.api.v2.TradingDataService.ListTeamRefereeHistory:output_type -> datanode.api.v2.ListTeamRefereeHistoryResponse - 372, // 651: datanode.api.v2.TradingDataService.GetFeesStats:output_type -> datanode.api.v2.GetFeesStatsResponse - 374, // 652: datanode.api.v2.TradingDataService.GetFeesStatsForParty:output_type -> datanode.api.v2.GetFeesStatsForPartyResponse - 376, // 653: datanode.api.v2.TradingDataService.GetCurrentVolumeDiscountProgram:output_type -> datanode.api.v2.GetCurrentVolumeDiscountProgramResponse - 378, // 654: datanode.api.v2.TradingDataService.GetVolumeDiscountStats:output_type -> datanode.api.v2.GetVolumeDiscountStatsResponse - 11, // 655: datanode.api.v2.TradingDataService.GetVestingBalancesSummary:output_type -> datanode.api.v2.GetVestingBalancesSummaryResponse - 9, // 656: datanode.api.v2.TradingDataService.GetPartyVestingStats:output_type -> datanode.api.v2.GetPartyVestingStatsResponse - 385, // 657: datanode.api.v2.TradingDataService.ObserveTransactionResults:output_type -> datanode.api.v2.ObserveTransactionResultsResponse - 387, // 658: datanode.api.v2.TradingDataService.EstimateTransferFee:output_type -> datanode.api.v2.EstimateTransferFeeResponse - 389, // 659: datanode.api.v2.TradingDataService.GetTotalTransferFeeDiscount:output_type -> datanode.api.v2.GetTotalTransferFeeDiscountResponse - 391, // 660: datanode.api.v2.TradingDataService.ListGames:output_type -> datanode.api.v2.ListGamesResponse - 473, // 661: datanode.api.v2.TradingDataService.ExportNetworkHistory:output_type -> google.api.HttpBody - 325, // 662: datanode.api.v2.TradingDataService.Ping:output_type -> datanode.api.v2.PingResponse - 546, // [546:663] is the sub-list for method output_type - 429, // [429:546] is the sub-list for method input_type - 429, // [429:429] is the sub-list for extension type_name - 429, // [429:429] is the sub-list for extension extendee - 0, // [0:429] is the sub-list for field type_name + 6, // 396: datanode.api.v2.ListTeamMembersStatisticsRequest.pagination:type_name -> datanode.api.v2.Pagination + 363, // 397: datanode.api.v2.ListTeamMembersStatisticsResponse.statistics:type_name -> datanode.api.v2.TeamMembersStatisticsConnection + 364, // 398: datanode.api.v2.TeamMembersStatisticsConnection.edges:type_name -> datanode.api.v2.TeamMemberStatisticsEdge + 7, // 399: datanode.api.v2.TeamMembersStatisticsConnection.page_info:type_name -> datanode.api.v2.PageInfo + 365, // 400: datanode.api.v2.TeamMemberStatisticsEdge.node:type_name -> datanode.api.v2.TeamMemberStatistics + 360, // 401: datanode.api.v2.TeamMemberStatistics.quantum_rewards:type_name -> datanode.api.v2.QuantumRewardsPerEpoch + 6, // 402: datanode.api.v2.ListTeamRefereesRequest.pagination:type_name -> datanode.api.v2.Pagination + 367, // 403: datanode.api.v2.TeamRefereeEdge.node:type_name -> datanode.api.v2.TeamReferee + 368, // 404: datanode.api.v2.TeamRefereeConnection.edges:type_name -> datanode.api.v2.TeamRefereeEdge + 7, // 405: datanode.api.v2.TeamRefereeConnection.page_info:type_name -> datanode.api.v2.PageInfo + 369, // 406: datanode.api.v2.ListTeamRefereesResponse.team_referees:type_name -> datanode.api.v2.TeamRefereeConnection + 371, // 407: datanode.api.v2.TeamRefereeHistoryEdge.node:type_name -> datanode.api.v2.TeamRefereeHistory + 372, // 408: datanode.api.v2.TeamRefereeHistoryConnection.edges:type_name -> datanode.api.v2.TeamRefereeHistoryEdge + 7, // 409: datanode.api.v2.TeamRefereeHistoryConnection.page_info:type_name -> datanode.api.v2.PageInfo + 6, // 410: datanode.api.v2.ListTeamRefereeHistoryRequest.pagination:type_name -> datanode.api.v2.Pagination + 373, // 411: datanode.api.v2.ListTeamRefereeHistoryResponse.team_referee_history:type_name -> datanode.api.v2.TeamRefereeHistoryConnection + 474, // 412: datanode.api.v2.GetFeesStatsResponse.fees_stats:type_name -> vega.events.v1.FeesStats + 388, // 413: datanode.api.v2.GetFeesStatsForPartyResponse.fees_stats_for_party:type_name -> datanode.api.v2.FeesStatsForParty + 387, // 414: datanode.api.v2.GetCurrentVolumeDiscountProgramResponse.current_volume_discount_program:type_name -> datanode.api.v2.VolumeDiscountProgram + 6, // 415: datanode.api.v2.GetVolumeDiscountStatsRequest.pagination:type_name -> datanode.api.v2.Pagination + 384, // 416: datanode.api.v2.GetVolumeDiscountStatsResponse.stats:type_name -> datanode.api.v2.VolumeDiscountStatsConnection + 385, // 417: datanode.api.v2.VolumeDiscountStatsConnection.edges:type_name -> datanode.api.v2.VolumeDiscountStatsEdge + 7, // 418: datanode.api.v2.VolumeDiscountStatsConnection.page_info:type_name -> datanode.api.v2.PageInfo + 386, // 419: datanode.api.v2.VolumeDiscountStatsEdge.node:type_name -> datanode.api.v2.VolumeDiscountStats + 475, // 420: datanode.api.v2.VolumeDiscountProgram.benefit_tiers:type_name -> vega.VolumeBenefitTier + 476, // 421: datanode.api.v2.ObserveTransactionResultsResponse.transaction_results:type_name -> vega.events.v1.TransactionResult + 407, // 422: datanode.api.v2.EstimateTransferFeeRequest.from_account_type:type_name -> vega.AccountType + 477, // 423: datanode.api.v2.ListGamesRequest.entity_scope:type_name -> vega.EntityScope + 6, // 424: datanode.api.v2.ListGamesRequest.pagination:type_name -> datanode.api.v2.Pagination + 397, // 425: datanode.api.v2.ListGamesResponse.games:type_name -> datanode.api.v2.GamesConnection + 398, // 426: datanode.api.v2.GamesConnection.edges:type_name -> datanode.api.v2.GameEdge + 7, // 427: datanode.api.v2.GamesConnection.page_info:type_name -> datanode.api.v2.PageInfo + 399, // 428: datanode.api.v2.GameEdge.node:type_name -> datanode.api.v2.Game + 400, // 429: datanode.api.v2.Game.team:type_name -> datanode.api.v2.TeamGameEntities + 401, // 430: datanode.api.v2.Game.individual:type_name -> datanode.api.v2.IndividualGameEntities + 402, // 431: datanode.api.v2.TeamGameEntities.team:type_name -> datanode.api.v2.TeamGameEntity + 404, // 432: datanode.api.v2.IndividualGameEntities.individual:type_name -> datanode.api.v2.IndividualGameEntity + 403, // 433: datanode.api.v2.TeamGameEntity.team:type_name -> datanode.api.v2.TeamGameParticipation + 404, // 434: datanode.api.v2.TeamGameParticipation.members_participating:type_name -> datanode.api.v2.IndividualGameEntity + 13, // 435: datanode.api.v2.TradingDataService.ListAccounts:input_type -> datanode.api.v2.ListAccountsRequest + 17, // 436: datanode.api.v2.TradingDataService.ObserveAccounts:input_type -> datanode.api.v2.ObserveAccountsRequest + 21, // 437: datanode.api.v2.TradingDataService.Info:input_type -> datanode.api.v2.InfoRequest + 23, // 438: datanode.api.v2.TradingDataService.GetOrder:input_type -> datanode.api.v2.GetOrderRequest + 26, // 439: datanode.api.v2.TradingDataService.ListOrders:input_type -> datanode.api.v2.ListOrdersRequest + 28, // 440: datanode.api.v2.TradingDataService.ListOrderVersions:input_type -> datanode.api.v2.ListOrderVersionsRequest + 30, // 441: datanode.api.v2.TradingDataService.ObserveOrders:input_type -> datanode.api.v2.ObserveOrdersRequest + 34, // 442: datanode.api.v2.TradingDataService.GetStopOrder:input_type -> datanode.api.v2.GetStopOrderRequest + 36, // 443: datanode.api.v2.TradingDataService.ListStopOrders:input_type -> datanode.api.v2.ListStopOrdersRequest + 41, // 444: datanode.api.v2.TradingDataService.ListPositions:input_type -> datanode.api.v2.ListPositionsRequest + 44, // 445: datanode.api.v2.TradingDataService.ListAllPositions:input_type -> datanode.api.v2.ListAllPositionsRequest + 48, // 446: datanode.api.v2.TradingDataService.ObservePositions:input_type -> datanode.api.v2.ObservePositionsRequest + 54, // 447: datanode.api.v2.TradingDataService.ListLedgerEntries:input_type -> datanode.api.v2.ListLedgerEntriesRequest + 55, // 448: datanode.api.v2.TradingDataService.ExportLedgerEntries:input_type -> datanode.api.v2.ExportLedgerEntriesRequest + 59, // 449: datanode.api.v2.TradingDataService.ListBalanceChanges:input_type -> datanode.api.v2.ListBalanceChangesRequest + 77, // 450: datanode.api.v2.TradingDataService.GetLatestMarketData:input_type -> datanode.api.v2.GetLatestMarketDataRequest + 75, // 451: datanode.api.v2.TradingDataService.ListLatestMarketData:input_type -> datanode.api.v2.ListLatestMarketDataRequest + 73, // 452: datanode.api.v2.TradingDataService.GetLatestMarketDepth:input_type -> datanode.api.v2.GetLatestMarketDepthRequest + 67, // 453: datanode.api.v2.TradingDataService.ObserveMarketsDepth:input_type -> datanode.api.v2.ObserveMarketsDepthRequest + 69, // 454: datanode.api.v2.TradingDataService.ObserveMarketsDepthUpdates:input_type -> datanode.api.v2.ObserveMarketsDepthUpdatesRequest + 71, // 455: datanode.api.v2.TradingDataService.ObserveMarketsData:input_type -> datanode.api.v2.ObserveMarketsDataRequest + 79, // 456: datanode.api.v2.TradingDataService.GetMarketDataHistoryByID:input_type -> datanode.api.v2.GetMarketDataHistoryByIDRequest + 83, // 457: datanode.api.v2.TradingDataService.ListTransfers:input_type -> datanode.api.v2.ListTransfersRequest + 88, // 458: datanode.api.v2.TradingDataService.GetTransfer:input_type -> datanode.api.v2.GetTransferRequest + 90, // 459: datanode.api.v2.TradingDataService.GetNetworkLimits:input_type -> datanode.api.v2.GetNetworkLimitsRequest + 98, // 460: datanode.api.v2.TradingDataService.ListCandleData:input_type -> datanode.api.v2.ListCandleDataRequest + 96, // 461: datanode.api.v2.TradingDataService.ObserveCandleData:input_type -> datanode.api.v2.ObserveCandleDataRequest + 92, // 462: datanode.api.v2.TradingDataService.ListCandleIntervals:input_type -> datanode.api.v2.ListCandleIntervalsRequest + 102, // 463: datanode.api.v2.TradingDataService.ListVotes:input_type -> datanode.api.v2.ListVotesRequest + 106, // 464: datanode.api.v2.TradingDataService.ObserveVotes:input_type -> datanode.api.v2.ObserveVotesRequest + 108, // 465: datanode.api.v2.TradingDataService.ListERC20MultiSigSignerAddedBundles:input_type -> datanode.api.v2.ListERC20MultiSigSignerAddedBundlesRequest + 114, // 466: datanode.api.v2.TradingDataService.ListERC20MultiSigSignerRemovedBundles:input_type -> datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesRequest + 120, // 467: datanode.api.v2.TradingDataService.GetERC20ListAssetBundle:input_type -> datanode.api.v2.GetERC20ListAssetBundleRequest + 122, // 468: datanode.api.v2.TradingDataService.GetERC20SetAssetLimitsBundle:input_type -> datanode.api.v2.GetERC20SetAssetLimitsBundleRequest + 124, // 469: datanode.api.v2.TradingDataService.GetERC20WithdrawalApproval:input_type -> datanode.api.v2.GetERC20WithdrawalApprovalRequest + 126, // 470: datanode.api.v2.TradingDataService.GetLastTrade:input_type -> datanode.api.v2.GetLastTradeRequest + 128, // 471: datanode.api.v2.TradingDataService.ListTrades:input_type -> datanode.api.v2.ListTradesRequest + 132, // 472: datanode.api.v2.TradingDataService.ObserveTrades:input_type -> datanode.api.v2.ObserveTradesRequest + 134, // 473: datanode.api.v2.TradingDataService.GetOracleSpec:input_type -> datanode.api.v2.GetOracleSpecRequest + 136, // 474: datanode.api.v2.TradingDataService.ListOracleSpecs:input_type -> datanode.api.v2.ListOracleSpecsRequest + 138, // 475: datanode.api.v2.TradingDataService.ListOracleData:input_type -> datanode.api.v2.ListOracleDataRequest + 144, // 476: datanode.api.v2.TradingDataService.GetMarket:input_type -> datanode.api.v2.GetMarketRequest + 146, // 477: datanode.api.v2.TradingDataService.ListMarkets:input_type -> datanode.api.v2.ListMarketsRequest + 150, // 478: datanode.api.v2.TradingDataService.ListSuccessorMarkets:input_type -> datanode.api.v2.ListSuccessorMarketsRequest + 155, // 479: datanode.api.v2.TradingDataService.GetParty:input_type -> datanode.api.v2.GetPartyRequest + 157, // 480: datanode.api.v2.TradingDataService.ListParties:input_type -> datanode.api.v2.ListPartiesRequest + 162, // 481: datanode.api.v2.TradingDataService.ListMarginLevels:input_type -> datanode.api.v2.ListMarginLevelsRequest + 164, // 482: datanode.api.v2.TradingDataService.ObserveMarginLevels:input_type -> datanode.api.v2.ObserveMarginLevelsRequest + 169, // 483: datanode.api.v2.TradingDataService.ListRewards:input_type -> datanode.api.v2.ListRewardsRequest + 173, // 484: datanode.api.v2.TradingDataService.ListRewardSummaries:input_type -> datanode.api.v2.ListRewardSummariesRequest + 176, // 485: datanode.api.v2.TradingDataService.ListEpochRewardSummaries:input_type -> datanode.api.v2.ListEpochRewardSummariesRequest + 182, // 486: datanode.api.v2.TradingDataService.GetDeposit:input_type -> datanode.api.v2.GetDepositRequest + 184, // 487: datanode.api.v2.TradingDataService.ListDeposits:input_type -> datanode.api.v2.ListDepositsRequest + 188, // 488: datanode.api.v2.TradingDataService.GetWithdrawal:input_type -> datanode.api.v2.GetWithdrawalRequest + 190, // 489: datanode.api.v2.TradingDataService.ListWithdrawals:input_type -> datanode.api.v2.ListWithdrawalsRequest + 194, // 490: datanode.api.v2.TradingDataService.GetAsset:input_type -> datanode.api.v2.GetAssetRequest + 196, // 491: datanode.api.v2.TradingDataService.ListAssets:input_type -> datanode.api.v2.ListAssetsRequest + 200, // 492: datanode.api.v2.TradingDataService.ListLiquidityProvisions:input_type -> datanode.api.v2.ListLiquidityProvisionsRequest + 201, // 493: datanode.api.v2.TradingDataService.ListAllLiquidityProvisions:input_type -> datanode.api.v2.ListAllLiquidityProvisionsRequest + 209, // 494: datanode.api.v2.TradingDataService.ObserveLiquidityProvisions:input_type -> datanode.api.v2.ObserveLiquidityProvisionsRequest + 211, // 495: datanode.api.v2.TradingDataService.ListLiquidityProviders:input_type -> datanode.api.v2.ListLiquidityProvidersRequest + 216, // 496: datanode.api.v2.TradingDataService.ListPaidLiquidityFees:input_type -> datanode.api.v2.ListPaidLiquidityFeesRequest + 220, // 497: datanode.api.v2.TradingDataService.GetGovernanceData:input_type -> datanode.api.v2.GetGovernanceDataRequest + 222, // 498: datanode.api.v2.TradingDataService.ListGovernanceData:input_type -> datanode.api.v2.ListGovernanceDataRequest + 226, // 499: datanode.api.v2.TradingDataService.ObserveGovernance:input_type -> datanode.api.v2.ObserveGovernanceRequest + 228, // 500: datanode.api.v2.TradingDataService.ListDelegations:input_type -> datanode.api.v2.ListDelegationsRequest + 235, // 501: datanode.api.v2.TradingDataService.GetNetworkData:input_type -> datanode.api.v2.GetNetworkDataRequest + 237, // 502: datanode.api.v2.TradingDataService.GetNode:input_type -> datanode.api.v2.GetNodeRequest + 239, // 503: datanode.api.v2.TradingDataService.ListNodes:input_type -> datanode.api.v2.ListNodesRequest + 243, // 504: datanode.api.v2.TradingDataService.ListNodeSignatures:input_type -> datanode.api.v2.ListNodeSignaturesRequest + 247, // 505: datanode.api.v2.TradingDataService.GetEpoch:input_type -> datanode.api.v2.GetEpochRequest + 249, // 506: datanode.api.v2.TradingDataService.EstimateFee:input_type -> datanode.api.v2.EstimateFeeRequest + 251, // 507: datanode.api.v2.TradingDataService.EstimateMargin:input_type -> datanode.api.v2.EstimateMarginRequest + 327, // 508: datanode.api.v2.TradingDataService.EstimatePosition:input_type -> datanode.api.v2.EstimatePositionRequest + 253, // 509: datanode.api.v2.TradingDataService.ListNetworkParameters:input_type -> datanode.api.v2.ListNetworkParametersRequest + 255, // 510: datanode.api.v2.TradingDataService.GetNetworkParameter:input_type -> datanode.api.v2.GetNetworkParameterRequest + 260, // 511: datanode.api.v2.TradingDataService.ListCheckpoints:input_type -> datanode.api.v2.ListCheckpointsRequest + 264, // 512: datanode.api.v2.TradingDataService.GetStake:input_type -> datanode.api.v2.GetStakeRequest + 268, // 513: datanode.api.v2.TradingDataService.GetRiskFactors:input_type -> datanode.api.v2.GetRiskFactorsRequest + 270, // 514: datanode.api.v2.TradingDataService.ObserveEventBus:input_type -> datanode.api.v2.ObserveEventBusRequest + 272, // 515: datanode.api.v2.TradingDataService.ObserveLedgerMovements:input_type -> datanode.api.v2.ObserveLedgerMovementsRequest + 274, // 516: datanode.api.v2.TradingDataService.ListKeyRotations:input_type -> datanode.api.v2.ListKeyRotationsRequest + 278, // 517: datanode.api.v2.TradingDataService.ListEthereumKeyRotations:input_type -> datanode.api.v2.ListEthereumKeyRotationsRequest + 282, // 518: datanode.api.v2.TradingDataService.GetVegaTime:input_type -> datanode.api.v2.GetVegaTimeRequest + 285, // 519: datanode.api.v2.TradingDataService.GetProtocolUpgradeStatus:input_type -> datanode.api.v2.GetProtocolUpgradeStatusRequest + 287, // 520: datanode.api.v2.TradingDataService.ListProtocolUpgradeProposals:input_type -> datanode.api.v2.ListProtocolUpgradeProposalsRequest + 291, // 521: datanode.api.v2.TradingDataService.ListCoreSnapshots:input_type -> datanode.api.v2.ListCoreSnapshotsRequest + 296, // 522: datanode.api.v2.TradingDataService.GetMostRecentNetworkHistorySegment:input_type -> datanode.api.v2.GetMostRecentNetworkHistorySegmentRequest + 298, // 523: datanode.api.v2.TradingDataService.ListAllNetworkHistorySegments:input_type -> datanode.api.v2.ListAllNetworkHistorySegmentsRequest + 300, // 524: datanode.api.v2.TradingDataService.GetActiveNetworkHistoryPeerAddresses:input_type -> datanode.api.v2.GetActiveNetworkHistoryPeerAddressesRequest + 302, // 525: datanode.api.v2.TradingDataService.GetNetworkHistoryStatus:input_type -> datanode.api.v2.GetNetworkHistoryStatusRequest + 304, // 526: datanode.api.v2.TradingDataService.GetNetworkHistoryBootstrapPeers:input_type -> datanode.api.v2.GetNetworkHistoryBootstrapPeersRequest + 307, // 527: datanode.api.v2.TradingDataService.ListEntities:input_type -> datanode.api.v2.ListEntitiesRequest + 316, // 528: datanode.api.v2.TradingDataService.ListFundingPeriods:input_type -> datanode.api.v2.ListFundingPeriodsRequest + 320, // 529: datanode.api.v2.TradingDataService.ListFundingPeriodDataPoints:input_type -> datanode.api.v2.ListFundingPeriodDataPointsRequest + 312, // 530: datanode.api.v2.TradingDataService.ListFundingPayments:input_type -> datanode.api.v2.ListFundingPaymentsRequest + 309, // 531: datanode.api.v2.TradingDataService.GetPartyActivityStreak:input_type -> datanode.api.v2.GetPartyActivityStreakRequest + 332, // 532: datanode.api.v2.TradingDataService.GetCurrentReferralProgram:input_type -> datanode.api.v2.GetCurrentReferralProgramRequest + 338, // 533: datanode.api.v2.TradingDataService.ListReferralSets:input_type -> datanode.api.v2.ListReferralSetsRequest + 343, // 534: datanode.api.v2.TradingDataService.ListReferralSetReferees:input_type -> datanode.api.v2.ListReferralSetRefereesRequest + 345, // 535: datanode.api.v2.TradingDataService.GetReferralSetStats:input_type -> datanode.api.v2.GetReferralSetStatsRequest + 353, // 536: datanode.api.v2.TradingDataService.ListTeams:input_type -> datanode.api.v2.ListTeamsRequest + 355, // 537: datanode.api.v2.TradingDataService.ListTeamsStatistics:input_type -> datanode.api.v2.ListTeamsStatisticsRequest + 361, // 538: datanode.api.v2.TradingDataService.ListTeamMembersStatistics:input_type -> datanode.api.v2.ListTeamMembersStatisticsRequest + 366, // 539: datanode.api.v2.TradingDataService.ListTeamReferees:input_type -> datanode.api.v2.ListTeamRefereesRequest + 374, // 540: datanode.api.v2.TradingDataService.ListTeamRefereeHistory:input_type -> datanode.api.v2.ListTeamRefereeHistoryRequest + 376, // 541: datanode.api.v2.TradingDataService.GetFeesStats:input_type -> datanode.api.v2.GetFeesStatsRequest + 378, // 542: datanode.api.v2.TradingDataService.GetFeesStatsForParty:input_type -> datanode.api.v2.GetFeesStatsForPartyRequest + 380, // 543: datanode.api.v2.TradingDataService.GetCurrentVolumeDiscountProgram:input_type -> datanode.api.v2.GetCurrentVolumeDiscountProgramRequest + 382, // 544: datanode.api.v2.TradingDataService.GetVolumeDiscountStats:input_type -> datanode.api.v2.GetVolumeDiscountStatsRequest + 10, // 545: datanode.api.v2.TradingDataService.GetVestingBalancesSummary:input_type -> datanode.api.v2.GetVestingBalancesSummaryRequest + 8, // 546: datanode.api.v2.TradingDataService.GetPartyVestingStats:input_type -> datanode.api.v2.GetPartyVestingStatsRequest + 389, // 547: datanode.api.v2.TradingDataService.ObserveTransactionResults:input_type -> datanode.api.v2.ObserveTransactionResultsRequest + 391, // 548: datanode.api.v2.TradingDataService.EstimateTransferFee:input_type -> datanode.api.v2.EstimateTransferFeeRequest + 393, // 549: datanode.api.v2.TradingDataService.GetTotalTransferFeeDiscount:input_type -> datanode.api.v2.GetTotalTransferFeeDiscountRequest + 395, // 550: datanode.api.v2.TradingDataService.ListGames:input_type -> datanode.api.v2.ListGamesRequest + 306, // 551: datanode.api.v2.TradingDataService.ExportNetworkHistory:input_type -> datanode.api.v2.ExportNetworkHistoryRequest + 324, // 552: datanode.api.v2.TradingDataService.Ping:input_type -> datanode.api.v2.PingRequest + 14, // 553: datanode.api.v2.TradingDataService.ListAccounts:output_type -> datanode.api.v2.ListAccountsResponse + 18, // 554: datanode.api.v2.TradingDataService.ObserveAccounts:output_type -> datanode.api.v2.ObserveAccountsResponse + 22, // 555: datanode.api.v2.TradingDataService.Info:output_type -> datanode.api.v2.InfoResponse + 24, // 556: datanode.api.v2.TradingDataService.GetOrder:output_type -> datanode.api.v2.GetOrderResponse + 27, // 557: datanode.api.v2.TradingDataService.ListOrders:output_type -> datanode.api.v2.ListOrdersResponse + 29, // 558: datanode.api.v2.TradingDataService.ListOrderVersions:output_type -> datanode.api.v2.ListOrderVersionsResponse + 31, // 559: datanode.api.v2.TradingDataService.ObserveOrders:output_type -> datanode.api.v2.ObserveOrdersResponse + 35, // 560: datanode.api.v2.TradingDataService.GetStopOrder:output_type -> datanode.api.v2.GetStopOrderResponse + 40, // 561: datanode.api.v2.TradingDataService.ListStopOrders:output_type -> datanode.api.v2.ListStopOrdersResponse + 42, // 562: datanode.api.v2.TradingDataService.ListPositions:output_type -> datanode.api.v2.ListPositionsResponse + 45, // 563: datanode.api.v2.TradingDataService.ListAllPositions:output_type -> datanode.api.v2.ListAllPositionsResponse + 49, // 564: datanode.api.v2.TradingDataService.ObservePositions:output_type -> datanode.api.v2.ObservePositionsResponse + 56, // 565: datanode.api.v2.TradingDataService.ListLedgerEntries:output_type -> datanode.api.v2.ListLedgerEntriesResponse + 478, // 566: datanode.api.v2.TradingDataService.ExportLedgerEntries:output_type -> google.api.HttpBody + 60, // 567: datanode.api.v2.TradingDataService.ListBalanceChanges:output_type -> datanode.api.v2.ListBalanceChangesResponse + 78, // 568: datanode.api.v2.TradingDataService.GetLatestMarketData:output_type -> datanode.api.v2.GetLatestMarketDataResponse + 76, // 569: datanode.api.v2.TradingDataService.ListLatestMarketData:output_type -> datanode.api.v2.ListLatestMarketDataResponse + 74, // 570: datanode.api.v2.TradingDataService.GetLatestMarketDepth:output_type -> datanode.api.v2.GetLatestMarketDepthResponse + 68, // 571: datanode.api.v2.TradingDataService.ObserveMarketsDepth:output_type -> datanode.api.v2.ObserveMarketsDepthResponse + 70, // 572: datanode.api.v2.TradingDataService.ObserveMarketsDepthUpdates:output_type -> datanode.api.v2.ObserveMarketsDepthUpdatesResponse + 72, // 573: datanode.api.v2.TradingDataService.ObserveMarketsData:output_type -> datanode.api.v2.ObserveMarketsDataResponse + 80, // 574: datanode.api.v2.TradingDataService.GetMarketDataHistoryByID:output_type -> datanode.api.v2.GetMarketDataHistoryByIDResponse + 84, // 575: datanode.api.v2.TradingDataService.ListTransfers:output_type -> datanode.api.v2.ListTransfersResponse + 89, // 576: datanode.api.v2.TradingDataService.GetTransfer:output_type -> datanode.api.v2.GetTransferResponse + 91, // 577: datanode.api.v2.TradingDataService.GetNetworkLimits:output_type -> datanode.api.v2.GetNetworkLimitsResponse + 99, // 578: datanode.api.v2.TradingDataService.ListCandleData:output_type -> datanode.api.v2.ListCandleDataResponse + 97, // 579: datanode.api.v2.TradingDataService.ObserveCandleData:output_type -> datanode.api.v2.ObserveCandleDataResponse + 94, // 580: datanode.api.v2.TradingDataService.ListCandleIntervals:output_type -> datanode.api.v2.ListCandleIntervalsResponse + 103, // 581: datanode.api.v2.TradingDataService.ListVotes:output_type -> datanode.api.v2.ListVotesResponse + 107, // 582: datanode.api.v2.TradingDataService.ObserveVotes:output_type -> datanode.api.v2.ObserveVotesResponse + 109, // 583: datanode.api.v2.TradingDataService.ListERC20MultiSigSignerAddedBundles:output_type -> datanode.api.v2.ListERC20MultiSigSignerAddedBundlesResponse + 115, // 584: datanode.api.v2.TradingDataService.ListERC20MultiSigSignerRemovedBundles:output_type -> datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesResponse + 121, // 585: datanode.api.v2.TradingDataService.GetERC20ListAssetBundle:output_type -> datanode.api.v2.GetERC20ListAssetBundleResponse + 123, // 586: datanode.api.v2.TradingDataService.GetERC20SetAssetLimitsBundle:output_type -> datanode.api.v2.GetERC20SetAssetLimitsBundleResponse + 125, // 587: datanode.api.v2.TradingDataService.GetERC20WithdrawalApproval:output_type -> datanode.api.v2.GetERC20WithdrawalApprovalResponse + 127, // 588: datanode.api.v2.TradingDataService.GetLastTrade:output_type -> datanode.api.v2.GetLastTradeResponse + 129, // 589: datanode.api.v2.TradingDataService.ListTrades:output_type -> datanode.api.v2.ListTradesResponse + 133, // 590: datanode.api.v2.TradingDataService.ObserveTrades:output_type -> datanode.api.v2.ObserveTradesResponse + 135, // 591: datanode.api.v2.TradingDataService.GetOracleSpec:output_type -> datanode.api.v2.GetOracleSpecResponse + 137, // 592: datanode.api.v2.TradingDataService.ListOracleSpecs:output_type -> datanode.api.v2.ListOracleSpecsResponse + 139, // 593: datanode.api.v2.TradingDataService.ListOracleData:output_type -> datanode.api.v2.ListOracleDataResponse + 145, // 594: datanode.api.v2.TradingDataService.GetMarket:output_type -> datanode.api.v2.GetMarketResponse + 147, // 595: datanode.api.v2.TradingDataService.ListMarkets:output_type -> datanode.api.v2.ListMarketsResponse + 154, // 596: datanode.api.v2.TradingDataService.ListSuccessorMarkets:output_type -> datanode.api.v2.ListSuccessorMarketsResponse + 156, // 597: datanode.api.v2.TradingDataService.GetParty:output_type -> datanode.api.v2.GetPartyResponse + 158, // 598: datanode.api.v2.TradingDataService.ListParties:output_type -> datanode.api.v2.ListPartiesResponse + 163, // 599: datanode.api.v2.TradingDataService.ListMarginLevels:output_type -> datanode.api.v2.ListMarginLevelsResponse + 165, // 600: datanode.api.v2.TradingDataService.ObserveMarginLevels:output_type -> datanode.api.v2.ObserveMarginLevelsResponse + 170, // 601: datanode.api.v2.TradingDataService.ListRewards:output_type -> datanode.api.v2.ListRewardsResponse + 174, // 602: datanode.api.v2.TradingDataService.ListRewardSummaries:output_type -> datanode.api.v2.ListRewardSummariesResponse + 177, // 603: datanode.api.v2.TradingDataService.ListEpochRewardSummaries:output_type -> datanode.api.v2.ListEpochRewardSummariesResponse + 183, // 604: datanode.api.v2.TradingDataService.GetDeposit:output_type -> datanode.api.v2.GetDepositResponse + 185, // 605: datanode.api.v2.TradingDataService.ListDeposits:output_type -> datanode.api.v2.ListDepositsResponse + 189, // 606: datanode.api.v2.TradingDataService.GetWithdrawal:output_type -> datanode.api.v2.GetWithdrawalResponse + 191, // 607: datanode.api.v2.TradingDataService.ListWithdrawals:output_type -> datanode.api.v2.ListWithdrawalsResponse + 195, // 608: datanode.api.v2.TradingDataService.GetAsset:output_type -> datanode.api.v2.GetAssetResponse + 197, // 609: datanode.api.v2.TradingDataService.ListAssets:output_type -> datanode.api.v2.ListAssetsResponse + 202, // 610: datanode.api.v2.TradingDataService.ListLiquidityProvisions:output_type -> datanode.api.v2.ListLiquidityProvisionsResponse + 203, // 611: datanode.api.v2.TradingDataService.ListAllLiquidityProvisions:output_type -> datanode.api.v2.ListAllLiquidityProvisionsResponse + 210, // 612: datanode.api.v2.TradingDataService.ObserveLiquidityProvisions:output_type -> datanode.api.v2.ObserveLiquidityProvisionsResponse + 215, // 613: datanode.api.v2.TradingDataService.ListLiquidityProviders:output_type -> datanode.api.v2.ListLiquidityProvidersResponse + 217, // 614: datanode.api.v2.TradingDataService.ListPaidLiquidityFees:output_type -> datanode.api.v2.ListPaidLiquidityFeesResponse + 221, // 615: datanode.api.v2.TradingDataService.GetGovernanceData:output_type -> datanode.api.v2.GetGovernanceDataResponse + 223, // 616: datanode.api.v2.TradingDataService.ListGovernanceData:output_type -> datanode.api.v2.ListGovernanceDataResponse + 227, // 617: datanode.api.v2.TradingDataService.ObserveGovernance:output_type -> datanode.api.v2.ObserveGovernanceResponse + 229, // 618: datanode.api.v2.TradingDataService.ListDelegations:output_type -> datanode.api.v2.ListDelegationsResponse + 236, // 619: datanode.api.v2.TradingDataService.GetNetworkData:output_type -> datanode.api.v2.GetNetworkDataResponse + 238, // 620: datanode.api.v2.TradingDataService.GetNode:output_type -> datanode.api.v2.GetNodeResponse + 240, // 621: datanode.api.v2.TradingDataService.ListNodes:output_type -> datanode.api.v2.ListNodesResponse + 244, // 622: datanode.api.v2.TradingDataService.ListNodeSignatures:output_type -> datanode.api.v2.ListNodeSignaturesResponse + 248, // 623: datanode.api.v2.TradingDataService.GetEpoch:output_type -> datanode.api.v2.GetEpochResponse + 250, // 624: datanode.api.v2.TradingDataService.EstimateFee:output_type -> datanode.api.v2.EstimateFeeResponse + 252, // 625: datanode.api.v2.TradingDataService.EstimateMargin:output_type -> datanode.api.v2.EstimateMarginResponse + 328, // 626: datanode.api.v2.TradingDataService.EstimatePosition:output_type -> datanode.api.v2.EstimatePositionResponse + 254, // 627: datanode.api.v2.TradingDataService.ListNetworkParameters:output_type -> datanode.api.v2.ListNetworkParametersResponse + 256, // 628: datanode.api.v2.TradingDataService.GetNetworkParameter:output_type -> datanode.api.v2.GetNetworkParameterResponse + 261, // 629: datanode.api.v2.TradingDataService.ListCheckpoints:output_type -> datanode.api.v2.ListCheckpointsResponse + 265, // 630: datanode.api.v2.TradingDataService.GetStake:output_type -> datanode.api.v2.GetStakeResponse + 269, // 631: datanode.api.v2.TradingDataService.GetRiskFactors:output_type -> datanode.api.v2.GetRiskFactorsResponse + 271, // 632: datanode.api.v2.TradingDataService.ObserveEventBus:output_type -> datanode.api.v2.ObserveEventBusResponse + 273, // 633: datanode.api.v2.TradingDataService.ObserveLedgerMovements:output_type -> datanode.api.v2.ObserveLedgerMovementsResponse + 275, // 634: datanode.api.v2.TradingDataService.ListKeyRotations:output_type -> datanode.api.v2.ListKeyRotationsResponse + 279, // 635: datanode.api.v2.TradingDataService.ListEthereumKeyRotations:output_type -> datanode.api.v2.ListEthereumKeyRotationsResponse + 283, // 636: datanode.api.v2.TradingDataService.GetVegaTime:output_type -> datanode.api.v2.GetVegaTimeResponse + 286, // 637: datanode.api.v2.TradingDataService.GetProtocolUpgradeStatus:output_type -> datanode.api.v2.GetProtocolUpgradeStatusResponse + 288, // 638: datanode.api.v2.TradingDataService.ListProtocolUpgradeProposals:output_type -> datanode.api.v2.ListProtocolUpgradeProposalsResponse + 292, // 639: datanode.api.v2.TradingDataService.ListCoreSnapshots:output_type -> datanode.api.v2.ListCoreSnapshotsResponse + 297, // 640: datanode.api.v2.TradingDataService.GetMostRecentNetworkHistorySegment:output_type -> datanode.api.v2.GetMostRecentNetworkHistorySegmentResponse + 299, // 641: datanode.api.v2.TradingDataService.ListAllNetworkHistorySegments:output_type -> datanode.api.v2.ListAllNetworkHistorySegmentsResponse + 301, // 642: datanode.api.v2.TradingDataService.GetActiveNetworkHistoryPeerAddresses:output_type -> datanode.api.v2.GetActiveNetworkHistoryPeerAddressesResponse + 303, // 643: datanode.api.v2.TradingDataService.GetNetworkHistoryStatus:output_type -> datanode.api.v2.GetNetworkHistoryStatusResponse + 305, // 644: datanode.api.v2.TradingDataService.GetNetworkHistoryBootstrapPeers:output_type -> datanode.api.v2.GetNetworkHistoryBootstrapPeersResponse + 308, // 645: datanode.api.v2.TradingDataService.ListEntities:output_type -> datanode.api.v2.ListEntitiesResponse + 319, // 646: datanode.api.v2.TradingDataService.ListFundingPeriods:output_type -> datanode.api.v2.ListFundingPeriodsResponse + 323, // 647: datanode.api.v2.TradingDataService.ListFundingPeriodDataPoints:output_type -> datanode.api.v2.ListFundingPeriodDataPointsResponse + 315, // 648: datanode.api.v2.TradingDataService.ListFundingPayments:output_type -> datanode.api.v2.ListFundingPaymentsResponse + 310, // 649: datanode.api.v2.TradingDataService.GetPartyActivityStreak:output_type -> datanode.api.v2.GetPartyActivityStreakResponse + 333, // 650: datanode.api.v2.TradingDataService.GetCurrentReferralProgram:output_type -> datanode.api.v2.GetCurrentReferralProgramResponse + 339, // 651: datanode.api.v2.TradingDataService.ListReferralSets:output_type -> datanode.api.v2.ListReferralSetsResponse + 344, // 652: datanode.api.v2.TradingDataService.ListReferralSetReferees:output_type -> datanode.api.v2.ListReferralSetRefereesResponse + 346, // 653: datanode.api.v2.TradingDataService.GetReferralSetStats:output_type -> datanode.api.v2.GetReferralSetStatsResponse + 354, // 654: datanode.api.v2.TradingDataService.ListTeams:output_type -> datanode.api.v2.ListTeamsResponse + 356, // 655: datanode.api.v2.TradingDataService.ListTeamsStatistics:output_type -> datanode.api.v2.ListTeamsStatisticsResponse + 362, // 656: datanode.api.v2.TradingDataService.ListTeamMembersStatistics:output_type -> datanode.api.v2.ListTeamMembersStatisticsResponse + 370, // 657: datanode.api.v2.TradingDataService.ListTeamReferees:output_type -> datanode.api.v2.ListTeamRefereesResponse + 375, // 658: datanode.api.v2.TradingDataService.ListTeamRefereeHistory:output_type -> datanode.api.v2.ListTeamRefereeHistoryResponse + 377, // 659: datanode.api.v2.TradingDataService.GetFeesStats:output_type -> datanode.api.v2.GetFeesStatsResponse + 379, // 660: datanode.api.v2.TradingDataService.GetFeesStatsForParty:output_type -> datanode.api.v2.GetFeesStatsForPartyResponse + 381, // 661: datanode.api.v2.TradingDataService.GetCurrentVolumeDiscountProgram:output_type -> datanode.api.v2.GetCurrentVolumeDiscountProgramResponse + 383, // 662: datanode.api.v2.TradingDataService.GetVolumeDiscountStats:output_type -> datanode.api.v2.GetVolumeDiscountStatsResponse + 11, // 663: datanode.api.v2.TradingDataService.GetVestingBalancesSummary:output_type -> datanode.api.v2.GetVestingBalancesSummaryResponse + 9, // 664: datanode.api.v2.TradingDataService.GetPartyVestingStats:output_type -> datanode.api.v2.GetPartyVestingStatsResponse + 390, // 665: datanode.api.v2.TradingDataService.ObserveTransactionResults:output_type -> datanode.api.v2.ObserveTransactionResultsResponse + 392, // 666: datanode.api.v2.TradingDataService.EstimateTransferFee:output_type -> datanode.api.v2.EstimateTransferFeeResponse + 394, // 667: datanode.api.v2.TradingDataService.GetTotalTransferFeeDiscount:output_type -> datanode.api.v2.GetTotalTransferFeeDiscountResponse + 396, // 668: datanode.api.v2.TradingDataService.ListGames:output_type -> datanode.api.v2.ListGamesResponse + 478, // 669: datanode.api.v2.TradingDataService.ExportNetworkHistory:output_type -> google.api.HttpBody + 325, // 670: datanode.api.v2.TradingDataService.Ping:output_type -> datanode.api.v2.PingResponse + 553, // [553:671] is the sub-list for method output_type + 435, // [435:553] is the sub-list for method input_type + 435, // [435:435] is the sub-list for extension type_name + 435, // [435:435] is the sub-list for extension extendee + 0, // [0:435] is the sub-list for field type_name } func init() { file_data_node_api_v2_trading_data_proto_init() } @@ -34147,7 +34569,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[355].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTeamRefereesRequest); i { + switch v := v.(*ListTeamMembersStatisticsRequest); i { case 0: return &v.state case 1: @@ -34159,7 +34581,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[356].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TeamReferee); i { + switch v := v.(*ListTeamMembersStatisticsResponse); i { case 0: return &v.state case 1: @@ -34171,7 +34593,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[357].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TeamRefereeEdge); i { + switch v := v.(*TeamMembersStatisticsConnection); i { case 0: return &v.state case 1: @@ -34183,7 +34605,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[358].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TeamRefereeConnection); i { + switch v := v.(*TeamMemberStatisticsEdge); i { case 0: return &v.state case 1: @@ -34195,7 +34617,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[359].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTeamRefereesResponse); i { + switch v := v.(*TeamMemberStatistics); i { case 0: return &v.state case 1: @@ -34207,7 +34629,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[360].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TeamRefereeHistory); i { + switch v := v.(*ListTeamRefereesRequest); i { case 0: return &v.state case 1: @@ -34219,7 +34641,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[361].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TeamRefereeHistoryEdge); i { + switch v := v.(*TeamReferee); i { case 0: return &v.state case 1: @@ -34231,7 +34653,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[362].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TeamRefereeHistoryConnection); i { + switch v := v.(*TeamRefereeEdge); i { case 0: return &v.state case 1: @@ -34243,7 +34665,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[363].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTeamRefereeHistoryRequest); i { + switch v := v.(*TeamRefereeConnection); i { case 0: return &v.state case 1: @@ -34255,7 +34677,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[364].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTeamRefereeHistoryResponse); i { + switch v := v.(*ListTeamRefereesResponse); i { case 0: return &v.state case 1: @@ -34267,7 +34689,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[365].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFeesStatsRequest); i { + switch v := v.(*TeamRefereeHistory); i { case 0: return &v.state case 1: @@ -34279,7 +34701,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[366].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFeesStatsResponse); i { + switch v := v.(*TeamRefereeHistoryEdge); i { case 0: return &v.state case 1: @@ -34291,7 +34713,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[367].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFeesStatsForPartyRequest); i { + switch v := v.(*TeamRefereeHistoryConnection); i { case 0: return &v.state case 1: @@ -34303,7 +34725,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[368].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFeesStatsForPartyResponse); i { + switch v := v.(*ListTeamRefereeHistoryRequest); i { case 0: return &v.state case 1: @@ -34315,7 +34737,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[369].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCurrentVolumeDiscountProgramRequest); i { + switch v := v.(*ListTeamRefereeHistoryResponse); i { case 0: return &v.state case 1: @@ -34327,7 +34749,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[370].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCurrentVolumeDiscountProgramResponse); i { + switch v := v.(*GetFeesStatsRequest); i { case 0: return &v.state case 1: @@ -34339,7 +34761,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[371].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVolumeDiscountStatsRequest); i { + switch v := v.(*GetFeesStatsResponse); i { case 0: return &v.state case 1: @@ -34351,7 +34773,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[372].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVolumeDiscountStatsResponse); i { + switch v := v.(*GetFeesStatsForPartyRequest); i { case 0: return &v.state case 1: @@ -34363,7 +34785,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[373].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeDiscountStatsConnection); i { + switch v := v.(*GetFeesStatsForPartyResponse); i { case 0: return &v.state case 1: @@ -34375,7 +34797,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[374].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeDiscountStatsEdge); i { + switch v := v.(*GetCurrentVolumeDiscountProgramRequest); i { case 0: return &v.state case 1: @@ -34387,7 +34809,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[375].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeDiscountStats); i { + switch v := v.(*GetCurrentVolumeDiscountProgramResponse); i { case 0: return &v.state case 1: @@ -34399,7 +34821,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[376].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeDiscountProgram); i { + switch v := v.(*GetVolumeDiscountStatsRequest); i { case 0: return &v.state case 1: @@ -34411,7 +34833,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[377].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FeesStatsForParty); i { + switch v := v.(*GetVolumeDiscountStatsResponse); i { case 0: return &v.state case 1: @@ -34423,7 +34845,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[378].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ObserveTransactionResultsRequest); i { + switch v := v.(*VolumeDiscountStatsConnection); i { case 0: return &v.state case 1: @@ -34435,7 +34857,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[379].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ObserveTransactionResultsResponse); i { + switch v := v.(*VolumeDiscountStatsEdge); i { case 0: return &v.state case 1: @@ -34447,7 +34869,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[380].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EstimateTransferFeeRequest); i { + switch v := v.(*VolumeDiscountStats); i { case 0: return &v.state case 1: @@ -34459,7 +34881,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[381].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EstimateTransferFeeResponse); i { + switch v := v.(*VolumeDiscountProgram); i { case 0: return &v.state case 1: @@ -34471,7 +34893,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[382].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTotalTransferFeeDiscountRequest); i { + switch v := v.(*FeesStatsForParty); i { case 0: return &v.state case 1: @@ -34483,7 +34905,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[383].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTotalTransferFeeDiscountResponse); i { + switch v := v.(*ObserveTransactionResultsRequest); i { case 0: return &v.state case 1: @@ -34495,7 +34917,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[384].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListGamesRequest); i { + switch v := v.(*ObserveTransactionResultsResponse); i { case 0: return &v.state case 1: @@ -34507,7 +34929,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[385].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListGamesResponse); i { + switch v := v.(*EstimateTransferFeeRequest); i { case 0: return &v.state case 1: @@ -34519,7 +34941,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[386].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GamesConnection); i { + switch v := v.(*EstimateTransferFeeResponse); i { case 0: return &v.state case 1: @@ -34531,7 +34953,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[387].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GameEdge); i { + switch v := v.(*GetTotalTransferFeeDiscountRequest); i { case 0: return &v.state case 1: @@ -34543,7 +34965,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[388].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Game); i { + switch v := v.(*GetTotalTransferFeeDiscountResponse); i { case 0: return &v.state case 1: @@ -34555,7 +34977,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[389].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TeamGameEntities); i { + switch v := v.(*ListGamesRequest); i { case 0: return &v.state case 1: @@ -34567,7 +34989,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[390].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IndividualGameEntities); i { + switch v := v.(*ListGamesResponse); i { case 0: return &v.state case 1: @@ -34579,7 +35001,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[391].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TeamGameEntity); i { + switch v := v.(*GamesConnection); i { case 0: return &v.state case 1: @@ -34591,7 +35013,7 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[392].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TeamGameParticipation); i { + switch v := v.(*GameEdge); i { case 0: return &v.state case 1: @@ -34603,6 +35025,66 @@ func file_data_node_api_v2_trading_data_proto_init() { } } file_data_node_api_v2_trading_data_proto_msgTypes[393].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Game); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_node_api_v2_trading_data_proto_msgTypes[394].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TeamGameEntities); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_node_api_v2_trading_data_proto_msgTypes[395].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IndividualGameEntities); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_node_api_v2_trading_data_proto_msgTypes[396].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TeamGameEntity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_node_api_v2_trading_data_proto_msgTypes[397].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TeamGameParticipation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_node_api_v2_trading_data_proto_msgTypes[398].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IndividualGameEntity); i { case 0: return &v.state @@ -34702,14 +35184,15 @@ func file_data_node_api_v2_trading_data_proto_init() { file_data_node_api_v2_trading_data_proto_msgTypes[347].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[349].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[355].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[363].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[365].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[367].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[371].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[360].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[368].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[370].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[372].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[376].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[378].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[384].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[388].OneofWrappers = []interface{}{ + file_data_node_api_v2_trading_data_proto_msgTypes[381].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[383].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[389].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[393].OneofWrappers = []interface{}{ (*Game_Team)(nil), (*Game_Individual)(nil), } @@ -34719,7 +35202,7 @@ func file_data_node_api_v2_trading_data_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_data_node_api_v2_trading_data_proto_rawDesc, NumEnums: 6, - NumMessages: 394, + NumMessages: 399, NumExtensions: 0, NumServices: 1, }, diff --git a/protos/data-node/api/v2/trading_data.pb.gw.go b/protos/data-node/api/v2/trading_data.pb.gw.go index 5248b76b92..ffaf31c61a 100644 --- a/protos/data-node/api/v2/trading_data.pb.gw.go +++ b/protos/data-node/api/v2/trading_data.pb.gw.go @@ -3813,6 +3813,76 @@ func local_request_TradingDataService_ListTeamsStatistics_0(ctx context.Context, } +var ( + filter_TradingDataService_ListTeamMembersStatistics_0 = &utilities.DoubleArray{Encoding: map[string]int{"team_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_TradingDataService_ListTeamMembersStatistics_0(ctx context.Context, marshaler runtime.Marshaler, client TradingDataServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListTeamMembersStatisticsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["team_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "team_id") + } + + protoReq.TeamId, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "team_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_TradingDataService_ListTeamMembersStatistics_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListTeamMembersStatistics(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_TradingDataService_ListTeamMembersStatistics_0(ctx context.Context, marshaler runtime.Marshaler, server TradingDataServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListTeamMembersStatisticsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["team_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "team_id") + } + + protoReq.TeamId, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "team_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_TradingDataService_ListTeamMembersStatistics_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListTeamMembersStatistics(ctx, &protoReq) + return msg, metadata, err + +} + var ( filter_TradingDataService_ListTeamReferees_0 = &utilities.DoubleArray{Encoding: map[string]int{"team_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) @@ -6320,6 +6390,29 @@ func RegisterTradingDataServiceHandlerServer(ctx context.Context, mux *runtime.S }) + mux.Handle("GET", pattern_TradingDataService_ListTeamMembersStatistics_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/datanode.api.v2.TradingDataService/ListTeamMembersStatistics", runtime.WithHTTPPathPattern("/api/v2/teams/{team_id}/stats")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_TradingDataService_ListTeamMembersStatistics_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_TradingDataService_ListTeamMembersStatistics_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_TradingDataService_ListTeamReferees_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -8562,6 +8655,26 @@ func RegisterTradingDataServiceHandlerClient(ctx context.Context, mux *runtime.S }) + mux.Handle("GET", pattern_TradingDataService_ListTeamMembersStatistics_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/datanode.api.v2.TradingDataService/ListTeamMembersStatistics", runtime.WithHTTPPathPattern("/api/v2/teams/{team_id}/stats")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_TradingDataService_ListTeamMembersStatistics_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_TradingDataService_ListTeamMembersStatistics_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_TradingDataService_ListTeamReferees_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -8984,6 +9097,8 @@ var ( pattern_TradingDataService_ListTeamsStatistics_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v2", "teams", "stats"}, "")) + pattern_TradingDataService_ListTeamMembersStatistics_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"api", "v2", "teams", "team_id", "stats"}, "")) + pattern_TradingDataService_ListTeamReferees_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v2", "teams", "referees", "team_id"}, "")) pattern_TradingDataService_ListTeamRefereeHistory_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v2", "teams", "referees", "history", "referee"}, "")) @@ -9206,6 +9321,8 @@ var ( forward_TradingDataService_ListTeamsStatistics_0 = runtime.ForwardResponseMessage + forward_TradingDataService_ListTeamMembersStatistics_0 = runtime.ForwardResponseMessage + forward_TradingDataService_ListTeamReferees_0 = runtime.ForwardResponseMessage forward_TradingDataService_ListTeamRefereeHistory_0 = runtime.ForwardResponseMessage diff --git a/protos/data-node/api/v2/trading_data_grpc.pb.go b/protos/data-node/api/v2/trading_data_grpc.pb.go index f1ace274a9..7ef21eefdd 100644 --- a/protos/data-node/api/v2/trading_data_grpc.pb.go +++ b/protos/data-node/api/v2/trading_data_grpc.pb.go @@ -492,6 +492,11 @@ type TradingDataServiceClient interface { // Get the statistics of all teams, or for a specific team by using team ID, over a number of epochs. // If a team does not have at least the number of epochs' worth of data, it is ignored. ListTeamsStatistics(ctx context.Context, in *ListTeamsStatisticsRequest, opts ...grpc.CallOption) (*ListTeamsStatisticsResponse, error) + // List team members' statistics + // + // Get the statistics for all members of a given team, or for a specific member by using party ID, over a number of epochs. + // If a team does not have at least the number of epochs' worth of data, it is ignored. + ListTeamMembersStatistics(ctx context.Context, in *ListTeamMembersStatisticsRequest, opts ...grpc.CallOption) (*ListTeamMembersStatisticsResponse, error) // List team referees // // Get a list of all referees for a given team ID @@ -1890,6 +1895,15 @@ func (c *tradingDataServiceClient) ListTeamsStatistics(ctx context.Context, in * return out, nil } +func (c *tradingDataServiceClient) ListTeamMembersStatistics(ctx context.Context, in *ListTeamMembersStatisticsRequest, opts ...grpc.CallOption) (*ListTeamMembersStatisticsResponse, error) { + out := new(ListTeamMembersStatisticsResponse) + err := c.cc.Invoke(ctx, "/datanode.api.v2.TradingDataService/ListTeamMembersStatistics", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *tradingDataServiceClient) ListTeamReferees(ctx context.Context, in *ListTeamRefereesRequest, opts ...grpc.CallOption) (*ListTeamRefereesResponse, error) { out := new(ListTeamRefereesResponse) err := c.cc.Invoke(ctx, "/datanode.api.v2.TradingDataService/ListTeamReferees", in, out, opts...) @@ -2535,6 +2549,11 @@ type TradingDataServiceServer interface { // Get the statistics of all teams, or for a specific team by using team ID, over a number of epochs. // If a team does not have at least the number of epochs' worth of data, it is ignored. ListTeamsStatistics(context.Context, *ListTeamsStatisticsRequest) (*ListTeamsStatisticsResponse, error) + // List team members' statistics + // + // Get the statistics for all members of a given team, or for a specific member by using party ID, over a number of epochs. + // If a team does not have at least the number of epochs' worth of data, it is ignored. + ListTeamMembersStatistics(context.Context, *ListTeamMembersStatisticsRequest) (*ListTeamMembersStatisticsResponse, error) // List team referees // // Get a list of all referees for a given team ID @@ -2966,6 +2985,9 @@ func (UnimplementedTradingDataServiceServer) ListTeams(context.Context, *ListTea func (UnimplementedTradingDataServiceServer) ListTeamsStatistics(context.Context, *ListTeamsStatisticsRequest) (*ListTeamsStatisticsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListTeamsStatistics not implemented") } +func (UnimplementedTradingDataServiceServer) ListTeamMembersStatistics(context.Context, *ListTeamMembersStatisticsRequest) (*ListTeamMembersStatisticsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListTeamMembersStatistics not implemented") +} func (UnimplementedTradingDataServiceServer) ListTeamReferees(context.Context, *ListTeamRefereesRequest) (*ListTeamRefereesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListTeamReferees not implemented") } @@ -4925,6 +4947,24 @@ func _TradingDataService_ListTeamsStatistics_Handler(srv interface{}, ctx contex return interceptor(ctx, in, info, handler) } +func _TradingDataService_ListTeamMembersStatistics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListTeamMembersStatisticsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TradingDataServiceServer).ListTeamMembersStatistics(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/datanode.api.v2.TradingDataService/ListTeamMembersStatistics", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TradingDataServiceServer).ListTeamMembersStatistics(ctx, req.(*ListTeamMembersStatisticsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _TradingDataService_ListTeamReferees_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListTeamRefereesRequest) if err := dec(in); err != nil { @@ -5542,6 +5582,10 @@ var TradingDataService_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListTeamsStatistics", Handler: _TradingDataService_ListTeamsStatistics_Handler, }, + { + MethodName: "ListTeamMembersStatistics", + Handler: _TradingDataService_ListTeamMembersStatistics_Handler, + }, { MethodName: "ListTeamReferees", Handler: _TradingDataService_ListTeamReferees_Handler, diff --git a/protos/embed_test.go b/protos/embed_test.go index fb1de0ebbd..71b7c45ba6 100644 --- a/protos/embed_test.go +++ b/protos/embed_test.go @@ -45,7 +45,7 @@ func Test_DataNodeBindings(t *testing.T) { t.Run("CoreBindings should return the core http bindings", func(t *testing.T) { bindings, err := protos.DataNodeBindings() require.NoError(t, err) - wantCount := 110 + wantCount := 111 assert.Len(t, bindings.HTTP.Rules, wantCount) diff --git a/protos/sources/data-node/api/v2/trading_data.proto b/protos/sources/data-node/api/v2/trading_data.proto index 3f61b6b467..8b8ddd9254 100644 --- a/protos/sources/data-node/api/v2/trading_data.proto +++ b/protos/sources/data-node/api/v2/trading_data.proto @@ -819,6 +819,14 @@ service TradingDataService { option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {tags: "Teams"}; } + // List team members' statistics + // + // Get the statistics for all members of a given team, or for a specific member by using party ID, over a number of epochs. + // If a team does not have at least the number of epochs' worth of data, it is ignored. + rpc ListTeamMembersStatistics(ListTeamMembersStatisticsRequest) returns (ListTeamMembersStatisticsResponse) { + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {tags: "Teams"}; + } + // List team referees // // Get a list of all referees for a given team ID @@ -4024,7 +4032,7 @@ message GetReferralSetStatsRequest { optional string referral_set_id = 1; // Epoch to get referral set statistics for. If not set, the last complete epoch is used. optional uint64 at_epoch = 2; - // Restrict referral set statisitcs to those for the given referee. + // Restrict referral set statistics to those for the given referee. optional string referee = 3; // Pagination controls. optional Pagination pagination = 4; @@ -4176,7 +4184,7 @@ message TeamStatistics { // value for each epoch. repeated QuantumRewardsPerEpoch quantum_rewards = 4; // Total of games played. - uint64 total_game_played = 5; + uint64 total_games_played = 5; // List of games played over the requested epoch period. repeated string games_played = 6; } @@ -4188,6 +4196,60 @@ message QuantumRewardsPerEpoch { string total_quantum_rewards = 2; } +// Request to list all team members' statistics. +message ListTeamMembersStatisticsRequest { + // Restrict team statistics to those with the given team ID. + string team_id = 1; + // Restrict team members' statistics to those with the given party ID. + optional string party_id = 2; + // Defines the number of past epochs to aggregate data from. By default, it takes + // the last 10 epochs. + optional uint64 aggregation_epochs = 3; + // Pagination controls. + optional Pagination pagination = 4; +} + +// Response for the list team members' statistics request containing the statistics. +message ListTeamMembersStatisticsResponse { + // Page of team members' statistics data and corresponding page information. + TeamMembersStatisticsConnection statistics = 1; +} + +// Page of team members' statistics and corresponding page information. +message TeamMembersStatisticsConnection { + // Page of team member data and their corresponding cursors. + repeated TeamMemberStatisticsEdge edges = 1; + // Page information that is used for fetching further pages. + PageInfo page_info = 2; +} + +// Team member data item with the corresponding cursor. +message TeamMemberStatisticsEdge { + // Team member's statistics data. + TeamMemberStatistics node = 1; + // Cursor that can be used to fetch further pages. + string cursor = 2; +} + +// Team member's statistics record containing the team member's information. +message TeamMemberStatistics { + // Party ID the statistics are related to. + string party_id = 1; + // Total of volume accumulated over the requested epoch period, expressed in + // quantum value. + string total_quantum_volume = 2; + // Total of rewards accumulated over the requested epoch period, expressed in + // quantum value. + string total_quantum_rewards = 3; + // List of rewards over the requested epoch period, expressed in quantum + // value for each epoch. + repeated QuantumRewardsPerEpoch quantum_rewards = 4; + // Total number of games played. + uint64 total_games_played = 5; + // List of games played over the requested epoch period. + repeated string games_played = 6; +} + // Request that is sent when listing the referees for a given team. message ListTeamRefereesRequest { // Team ID to list referees for. diff --git a/protos/sources/data-node/grpc-rest-bindings.yml b/protos/sources/data-node/grpc-rest-bindings.yml index d5e50351b9..692b79153b 100644 --- a/protos/sources/data-node/grpc-rest-bindings.yml +++ b/protos/sources/data-node/grpc-rest-bindings.yml @@ -183,6 +183,8 @@ http: get: "/api/v2/teams" - selector: datanode.api.v2.TradingDataService.ListTeamsStatistics get: "/api/v2/teams/stats" + - selector: datanode.api.v2.TradingDataService.ListTeamMembersStatistics + get: "/api/v2/teams/{team_id}/stats" - selector: datanode.api.v2.TradingDataService.ListTeamReferees get: "/api/v2/teams/referees/{team_id}" - selector: datanode.api.v2.TradingDataService.ListTeamRefereeHistory