From 638124b24a8c0d9aac63918bba990051126ce1b4 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Fri, 12 Jul 2024 16:47:45 +0200 Subject: [PATCH 01/16] Set the auto_registration.entities.repository.enabled option to true when calling repo register --all (#3876) When registering all repositories, what the user really means is "register all future and current repositories. The current invocation of the call only registered all current ones. Let's also flip the option to register all future repositories at the same time. Fixes: #3817 --- cmd/cli/app/provider/provider_update.go | 86 +---------------- cmd/cli/app/repo/repo_register.go | 55 ++++++++++- internal/util/cli/providerconfig.go | 122 ++++++++++++++++++++++++ 3 files changed, 180 insertions(+), 83 deletions(-) create mode 100644 internal/util/cli/providerconfig.go diff --git a/cmd/cli/app/provider/provider_update.go b/cmd/cli/app/provider/provider_update.go index e490df3b53..b8bd042461 100644 --- a/cmd/cli/app/provider/provider_update.go +++ b/cmd/cli/app/provider/provider_update.go @@ -17,7 +17,6 @@ package provider import ( "context" - "encoding/json" "errors" "fmt" "os" @@ -28,7 +27,6 @@ import ( "github.com/spf13/cobra" "github.com/spf13/viper" "google.golang.org/grpc" - "google.golang.org/protobuf/types/known/structpb" "github.com/stacklok/minder/internal/util/cli" minderv1 "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" @@ -108,14 +106,6 @@ var ( } ) -type configStruct struct { - *minderv1.ProviderConfig - //nolint:lll - GitHub *minderv1.GitHubProviderConfig `json:"github,omitempty" yaml:"github" mapstructure:"github" validate:"required"` - //nolint:lll - GitHubApp *minderv1.GitHubAppProviderConfig `json:"github_app,omitempty" yaml:"github_app" mapstructure:"github_app" validate:"required"` -} - // UpdateProviderCommand is the command for enrolling a provider // //nolint:gocyclo @@ -141,42 +131,10 @@ func UpdateProviderCommand( unsetAttrs := viper.GetStringSlice("unset-attribute") client := minderv1.NewProvidersServiceClient(conn) - resp, err := client.GetProvider(ctx, &minderv1.GetProviderRequest{ - Context: &minderv1.Context{ - Project: &project, - }, - Name: providerName, - }) - if err != nil { - return cli.MessageAndError("Failed to get provider", err) - } - if resp.GetProvider() == nil { - return cli.MessageAndError( - "could not retrieve provider", - errors.New("provider was empty"), - ) - } - provider := resp.GetProvider() - bytes, err := provider.GetConfig().MarshalJSON() + serde, err := cli.GetProviderConfig(ctx, client, project, providerName) if err != nil { - // TODO this is likely to be an internal error and - // should be mapped to a more suitable user-facing - // error. - return cli.MessageAndError( - "invalid config", - fmt.Errorf("error marshalling provider config: %w", err), - ) - } - serde := &configStruct{} - if err := json.Unmarshal(bytes, &serde); err != nil { - // TODO this is likely to be an internal error and - // should be mapped to a more suitable user-facing - // error. - return cli.MessageAndError( - "invalid config", - fmt.Errorf("error unmarshalling provider config: %w", err), - ) + return cli.MessageAndError("failed to get provider config", err) } config := serde.ProviderConfig @@ -230,49 +188,13 @@ func UpdateProviderCommand( } serde.ProviderConfig = config - var structConfig map[string]any - bytes, err = json.Marshal(serde) - if err != nil { - // TODO this is likely to be an internal error and - // should be mapped to a more suitable user-facing - // error. - return cli.MessageAndError( - "invalid config", - err, - ) - } - if err := json.Unmarshal(bytes, &structConfig); err != nil { - // TODO this is likely to be an internal error and - // should be mapped to a more suitable user-facing - // error. - return cli.MessageAndError( - "invalid configuration", - err, - ) - } - cfg, err := structpb.NewStruct(structConfig) + err = cli.SetProviderConfig(ctx, client, project, providerName, serde) if err != nil { - return cli.MessageAndError("invalid config patch", err) - } - - req := &minderv1.PatchProviderRequest{ - Context: &minderv1.Context{ - Project: &project, - Provider: &providerName, - }, - Patch: &minderv1.Provider{ - Config: cfg, - }, - } - - _, err = client.PatchProvider(ctx, req) - if err != nil { - return cli.MessageAndError("failed calling minder", err) + return cli.MessageAndError("failed to update provider", err) } cmd.Println("Provider updated successfully") - return nil } diff --git a/cmd/cli/app/repo/repo_register.go b/cmd/cli/app/repo/repo_register.go index 39d97d3f23..042df3716a 100644 --- a/cmd/cli/app/repo/repo_register.go +++ b/cmd/cli/app/repo/repo_register.go @@ -22,6 +22,7 @@ import ( "github.com/spf13/cobra" "github.com/spf13/viper" "google.golang.org/grpc" + "google.golang.org/protobuf/proto" "github.com/stacklok/minder/internal/util/cli" "github.com/stacklok/minder/internal/util/cli/table" @@ -58,7 +59,14 @@ func RegisterCmd(ctx context.Context, cmd *cobra.Command, _ []string, conn *grpc } providerClient := minderv1.NewProvidersServiceClient(conn) - _, err := providerClient.ReconcileEntityRegistration(ctx, &minderv1.ReconcileEntityRegistrationRequest{ + + err := enableAutoRegistration(ctx, providerClient, project, provider) + if err != nil { + return cli.MessageAndError("Error enabling auto registration", err) + } + cmd.Println("Enabled auto registration for future repositories") + + _, err = providerClient.ReconcileEntityRegistration(ctx, &minderv1.ReconcileEntityRegistrationRequest{ Context: &minderv1.Context{ Provider: &provider, Project: &project, @@ -258,6 +266,51 @@ func printRepoRegistrationStatus(cmd *cobra.Command, results []*minderv1.Registe t.Render() } +func enableAutoRegistration( + ctx context.Context, provCli minderv1.ProvidersServiceClient, + project, providerName string, +) error { + serde, err := cli.GetProviderConfig(ctx, provCli, project, providerName) + if err != nil { + return cli.MessageAndError("failed to get provider config", err) + } + + if serde == nil { + serde = &cli.ProviderConfigUnion{} + } + + if serde.ProviderConfig == nil { + serde.ProviderConfig = &minderv1.ProviderConfig{} + } + + if serde.AutoRegistration == nil { + serde.AutoRegistration = &minderv1.AutoRegistration{} + } + + if serde.AutoRegistration.Entities == nil { + serde.AutoRegistration.Entities = make(map[string]*minderv1.EntityAutoRegistrationConfig) + } + + repoReg, ok := serde.AutoRegistration.Entities[minderv1.Entity_ENTITY_REPOSITORIES.ToString()] + if !ok { + repoReg = &minderv1.EntityAutoRegistrationConfig{} + } + + if repoReg.GetEnabled() { + return cli.MessageAndError("auto registration is already enabled", nil) + } + + repoReg.Enabled = proto.Bool(true) + serde.AutoRegistration.Entities[minderv1.Entity_ENTITY_REPOSITORIES.ToString()] = repoReg + + err = cli.SetProviderConfig(ctx, provCli, project, providerName, serde) + if err != nil { + return cli.MessageAndError("failed to update provider", err) + } + + return nil +} + func printWarnings(cmd *cobra.Command, warnings []string) { for _, warning := range warnings { cmd.Println(warning) diff --git a/internal/util/cli/providerconfig.go b/internal/util/cli/providerconfig.go new file mode 100644 index 0000000000..e330918e40 --- /dev/null +++ b/internal/util/cli/providerconfig.go @@ -0,0 +1,122 @@ +// +// Copyright 2024 Stacklok, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cli + +import ( + "context" + "encoding/json" + "fmt" + + "google.golang.org/protobuf/types/known/structpb" + + minderv1 "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" +) + +// ProviderConfigUnion is a union type for the different provider configurations +// this is a temporary kludge until we can autogenerate the possible attributes +type ProviderConfigUnion struct { + *minderv1.ProviderConfig + //nolint:lll + GitHub *minderv1.GitHubProviderConfig `json:"github,omitempty" yaml:"github" mapstructure:"github" validate:"required"` + //nolint:lll + GitHubApp *minderv1.GitHubAppProviderConfig `json:"github_app,omitempty" yaml:"github_app" mapstructure:"github_app" validate:"required"` +} + +// GetProviderConfig retrieves the provider configuration from the minder service +func GetProviderConfig( + ctx context.Context, + provCli minderv1.ProvidersServiceClient, + project, providerName string, +) (*ProviderConfigUnion, error) { + resp, err := provCli.GetProvider(ctx, &minderv1.GetProviderRequest{ + Context: &minderv1.Context{ + Project: &project, + }, + Name: providerName, + }) + + if err != nil { + return nil, fmt.Errorf("failed to get provider: %w", err) + } + if resp.GetProvider() == nil { + return nil, fmt.Errorf("could not retrieve provider, provider was empty") + } + + provider := resp.GetProvider() + bytes, err := provider.GetConfig().MarshalJSON() + if err != nil { + // TODO this is likely to be an internal error and + // should be mapped to a more suitable user-facing + // error. + return nil, fmt.Errorf("error marshalling provider config: %w", err) + } + + serde := &ProviderConfigUnion{} + if err := json.Unmarshal(bytes, &serde); err != nil { + // TODO this is likely to be an internal error and + // should be mapped to a more suitable user-facing + // error. + return nil, fmt.Errorf("error unmarshalling provider config: %w", err) + } + + return serde, nil +} + +// SetProviderConfig sets the provider configuration in the minder service +func SetProviderConfig( + ctx context.Context, + provCli minderv1.ProvidersServiceClient, + project, providerName string, + serde *ProviderConfigUnion, +) error { + var structConfig map[string]any + + bytes, err := json.Marshal(serde) + if err != nil { + // TODO this is likely to be an internal error and + // should be mapped to a more suitable user-facing + // error. + return fmt.Errorf("invalid config") + } + if err := json.Unmarshal(bytes, &structConfig); err != nil { + // TODO this is likely to be an internal error and + // should be mapped to a more suitable user-facing + // error. + return fmt.Errorf("invalid configuration") + } + + cfg, err := structpb.NewStruct(structConfig) + if err != nil { + return fmt.Errorf("invalid config patch: %w", err) + } + + req := &minderv1.PatchProviderRequest{ + Context: &minderv1.Context{ + Project: &project, + Provider: &providerName, + }, + Patch: &minderv1.Provider{ + Config: cfg, + }, + } + + _, err = provCli.PatchProvider(ctx, req) + if err != nil { + return fmt.Errorf("failed calling minder: %w", err) + } + + return nil +} From 40cbccd24f8b8d1d732a290671535df8569fd961 Mon Sep 17 00:00:00 2001 From: Don Browne Date: Fri, 12 Jul 2024 16:10:35 +0100 Subject: [PATCH 02/16] Replace several internal protobufs with Go structs (#3878) A number of internal-only types are defined as protobufs. These are used solely inside the engine code. Remove them and replace them with plain Go structs. --- .../application/homoglyphs_service.go | 10 +- internal/engine/eval/trusty/actions.go | 12 +- internal/engine/eval/trusty/config.go | 6 +- internal/engine/eval/trusty/trusty.go | 47 +- internal/engine/eval/trusty/trusty_test.go | 48 +- internal/engine/eval/vulncheck/actions.go | 4 +- internal/engine/eval/vulncheck/config.go | 6 +- internal/engine/eval/vulncheck/pkgdb.go | 62 +- internal/engine/eval/vulncheck/pkgdb_test.go | 14 +- internal/engine/eval/vulncheck/report.go | 2 +- internal/engine/eval/vulncheck/review.go | 21 +- internal/engine/eval/vulncheck/review_test.go | 60 +- internal/engine/eval/vulncheck/vulncheck.go | 14 +- internal/engine/eval/vulncheck/vulndb.go | 14 +- internal/engine/eval/vulncheck/vulndb_test.go | 4 +- internal/engine/ingester/diff/diff.go | 39 +- internal/engine/ingester/diff/parse.go | 36 +- internal/engine/ingester/diff/parse_test.go | 110 +-- internal/engine/models/models.go | 74 ++ internal/proto/internal.pb.go | 657 +----------------- internal/proto/internal.proto | 53 +- internal/proto/pkg_ecosystems.go | 32 - 22 files changed, 365 insertions(+), 960 deletions(-) create mode 100644 internal/engine/models/models.go delete mode 100644 internal/proto/pkg_ecosystems.go diff --git a/internal/engine/eval/homoglyphs/application/homoglyphs_service.go b/internal/engine/eval/homoglyphs/application/homoglyphs_service.go index fb2588ba50..c1801b6ed7 100644 --- a/internal/engine/eval/homoglyphs/application/homoglyphs_service.go +++ b/internal/engine/eval/homoglyphs/application/homoglyphs_service.go @@ -25,7 +25,7 @@ import ( "github.com/stacklok/minder/internal/engine/eval/homoglyphs/communication" "github.com/stacklok/minder/internal/engine/eval/homoglyphs/domain" engif "github.com/stacklok/minder/internal/engine/interfaces" - pbinternal "github.com/stacklok/minder/internal/proto" + "github.com/stacklok/minder/internal/engine/models" pb "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" provifv1 "github.com/stacklok/minder/pkg/providers/v1" ) @@ -75,13 +75,13 @@ func evaluateHomoglyphs( } //nolint:govet - prContents, ok := res.Object.(*pbinternal.PrContents) + prContents, ok := res.Object.(*models.PRContents) if !ok { return false, fmt.Errorf("invalid object type for homoglyphs evaluator") } - if prContents.Pr == nil || prContents.Files == nil { - return false, fmt.Errorf("invalid prContents fields: %v, %v", prContents.Pr, prContents.Files) + if prContents.PR == nil || prContents.Files == nil { + return false, fmt.Errorf("invalid prContents fields: %v, %v", prContents.PR, prContents.Files) } if len(prContents.Files) == 0 { @@ -90,7 +90,7 @@ func evaluateHomoglyphs( // Note: This is a mandatory step to reassign certain fields in the handler. // This is a workaround to avoid recreating the object. - reviewHandler.Hydrate(ctx, prContents.Pr) + reviewHandler.Hydrate(ctx, prContents.PR) for _, file := range prContents.Files { for _, line := range file.PatchLines { diff --git a/internal/engine/eval/trusty/actions.go b/internal/engine/eval/trusty/actions.go index 0dbe99a70f..6421cc8fc0 100644 --- a/internal/engine/eval/trusty/actions.go +++ b/internal/engine/eval/trusty/actions.go @@ -32,7 +32,7 @@ import ( "github.com/stacklok/minder/internal/constants" "github.com/stacklok/minder/internal/engine/eval/pr_actions" - pbinternal "github.com/stacklok/minder/internal/proto" + "github.com/stacklok/minder/internal/engine/models" pb "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" provifv1 "github.com/stacklok/minder/pkg/providers/v1" ) @@ -194,7 +194,7 @@ type templateScoreComponent struct { } type dependencyAlternatives struct { - Dependency *pbinternal.Dependency + Dependency *models.Dependency // Reason captures the reason why a package was flagged Reasons []RuleViolationReason @@ -289,11 +289,11 @@ func (sph *summaryPrHandler) generateSummary() (string, error) { score = *alternative.trustyReply.Summary.Score } packageData := templatePackageData{ - Ecosystem: alternative.Dependency.Ecosystem.AsString(), + Ecosystem: string(alternative.Dependency.Ecosystem), PackageName: alternative.Dependency.Name, TrustyURL: fmt.Sprintf( "%s%s/%s", constants.TrustyHttpURL, - strings.ToLower(alternative.Dependency.Ecosystem.AsString()), + strings.ToLower(string(alternative.Dependency.Ecosystem)), url.PathEscape(alternative.trustyReply.PackageName), ), Score: score, @@ -326,11 +326,11 @@ func (sph *summaryPrHandler) generateSummary() (string, error) { altPackageData := templateAlternative{ templatePackageData: templatePackageData{ - Ecosystem: alternative.Dependency.Ecosystem.AsString(), + Ecosystem: string(alternative.Dependency.Ecosystem), PackageName: altData.PackageName, TrustyURL: fmt.Sprintf( "%s%s/%s", constants.TrustyHttpURL, - strings.ToLower(alternative.Dependency.Ecosystem.AsString()), + strings.ToLower(string(alternative.Dependency.Ecosystem)), url.PathEscape(altData.PackageName), ), Score: altData.Score, diff --git a/internal/engine/eval/trusty/config.go b/internal/engine/eval/trusty/config.go index 7128aa18c5..49c4409bb8 100644 --- a/internal/engine/eval/trusty/config.go +++ b/internal/engine/eval/trusty/config.go @@ -23,7 +23,7 @@ import ( "github.com/go-viper/mapstructure/v2" "github.com/stacklok/minder/internal/engine/eval/pr_actions" - pbinternal "github.com/stacklok/minder/internal/proto" + "github.com/stacklok/minder/internal/engine/models" ) var ( @@ -110,8 +110,8 @@ func parseConfig(ruleCfg map[string]any) (*config, error) { return &conf, nil } -func (c *config) getEcosystemConfig(ecosystem pbinternal.DepEcosystem) *ecosystemConfig { - sEco := ecosystem.AsString() +func (c *config) getEcosystemConfig(ecosystem models.DependencyEcosystem) *ecosystemConfig { + sEco := string(ecosystem) if sEco == "" { return nil } diff --git a/internal/engine/eval/trusty/trusty.go b/internal/engine/eval/trusty/trusty.go index 5f31caa274..7683b16d47 100644 --- a/internal/engine/eval/trusty/trusty.go +++ b/internal/engine/eval/trusty/trusty.go @@ -28,7 +28,7 @@ import ( evalerrors "github.com/stacklok/minder/internal/engine/errors" "github.com/stacklok/minder/internal/engine/eval/pr_actions" engif "github.com/stacklok/minder/internal/engine/interfaces" - pbinternal "github.com/stacklok/minder/internal/proto" + "github.com/stacklok/minder/internal/engine/models" provifv1 "github.com/stacklok/minder/pkg/providers/v1" ) @@ -87,9 +87,9 @@ func (e *Evaluator) Eval(ctx context.Context, pol map[string]any, res *engif.Res } logger := zerolog.Ctx(ctx).With(). - Int64("pull-number", prDependencies.Pr.Number). - Str("repo-owner", prDependencies.Pr.RepoOwner). - Str("repo-name", prDependencies.Pr.RepoName).Logger() + Int64("pull-number", prDependencies.PR.Number). + Str("repo-owner", prDependencies.PR.RepoOwner). + Str("repo-name", prDependencies.PR.RepoName).Logger() // Parse the profile data to get the policy configuration ruleConfig, err := parseRuleConfig(pol) @@ -97,14 +97,14 @@ func (e *Evaluator) Eval(ctx context.Context, pol map[string]any, res *engif.Res return fmt.Errorf("parsing policy configuration: %w", err) } - prSummaryHandler, err := newSummaryPrHandler(prDependencies.Pr, e.cli, e.endpoint) + prSummaryHandler, err := newSummaryPrHandler(prDependencies.PR, e.cli, e.endpoint) if err != nil { return fmt.Errorf("failed to create summary handler: %w", err) } // Classify all dependencies, tracking all that are malicious or scored low for _, dep := range prDependencies.Deps { - depscore, err := getDependencyScore(ctx, e.client, dep) + depscore, err := getDependencyScore(ctx, e.client, &dep) if err != nil { logger.Error().Msgf("error fetching trusty data: %s", err) return fmt.Errorf("getting dependency score: %w", err) @@ -135,22 +135,22 @@ func (e *Evaluator) Eval(ctx context.Context, pol map[string]any, res *engif.Res } func getEcosystemConfig( - logger *zerolog.Logger, ruleConfig *config, dep *pbinternal.PrDependencies_ContextualDependency, + logger *zerolog.Logger, ruleConfig *config, dep models.ContextualDependency, ) *ecosystemConfig { ecoConfig := ruleConfig.getEcosystemConfig(dep.Dep.Ecosystem) if ecoConfig == nil { logger.Info(). Str("dependency", dep.Dep.Name). - Str("ecosystem", dep.Dep.Ecosystem.AsString()). + Str("ecosystem", string(dep.Dep.Ecosystem)). Msgf("no config for ecosystem, skipping") return nil } return ecoConfig } -// readPullRequestDependencies returns the dependencies found in theingestion results -func readPullRequestDependencies(res *engif.Result) (*pbinternal.PrDependencies, error) { - prdeps, ok := res.Object.(*pbinternal.PrDependencies) +// readPullRequestDependencies returns the dependencies found in the ingestion results +func readPullRequestDependencies(res *engif.Result) (*models.PRDependencies, error) { + prdeps, ok := res.Object.(*models.PRDependencies) if !ok { return nil, fmt.Errorf("object type incompatible with the Trusty evaluator") } @@ -224,13 +224,17 @@ func buildEvalResult(prSummary *summaryPrHandler) error { } func getDependencyScore( - ctx context.Context, trustyClient *trusty.Trusty, dep *pbinternal.PrDependencies_ContextualDependency, + ctx context.Context, trustyClient *trusty.Trusty, dep *models.ContextualDependency, ) (*trustytypes.Reply, error) { + trustyEcosystem, err := toTrustyEcosystem(dep.Dep.Ecosystem) + if err != nil { + return nil, err + } // Call the Trusty API resp, err := trustyClient.Report(ctx, &trustytypes.Dependency{ Name: dep.Dep.Name, Version: dep.Dep.Version, - Ecosystem: trustytypes.Ecosystem(dep.Dep.Ecosystem), + Ecosystem: trustyEcosystem, }) if err != nil { return nil, fmt.Errorf("failed to send request: %w", err) @@ -242,7 +246,7 @@ func getDependencyScore( // low scores and adds them to the summary if needed func classifyDependency( _ context.Context, logger *zerolog.Logger, resp *trustytypes.Reply, ruleConfig *config, - prSummary *summaryPrHandler, dep *pbinternal.PrDependencies_ContextualDependency, + prSummary *summaryPrHandler, dep models.ContextualDependency, ) { // Check all the policy violations reasons := []RuleViolationReason{} @@ -311,7 +315,7 @@ func classifyDependency( Msgf("the dependency has lower score than threshold or is malicious, tracking") prSummary.trackAlternatives(dependencyAlternatives{ - Dependency: dep.Dep, + Dependency: &dep.Dep, Reasons: reasons, BlockPR: shouldBlockPR, trustyReply: resp, @@ -344,3 +348,16 @@ func readPackageDescription(resp *trustytypes.Reply) map[string]any { } return descr } + +func toTrustyEcosystem(ecosystem models.DependencyEcosystem) (trustytypes.Ecosystem, error) { + switch ecosystem { + case models.NPMDependency: + return trustytypes.ECOSYSTEM_NPM, nil + case models.PyPIDependency: + return trustytypes.ECOSYSTEM_PYPI, nil + case models.GoDependency: + return trustytypes.ECOSYSTEM_GO, nil + default: + return 0, fmt.Errorf("unexpected ecosystem %s", ecosystem) + } +} diff --git a/internal/engine/eval/trusty/trusty_test.go b/internal/engine/eval/trusty/trusty_test.go index e4095d2dd5..0518121e76 100644 --- a/internal/engine/eval/trusty/trusty_test.go +++ b/internal/engine/eval/trusty/trusty_test.go @@ -27,8 +27,8 @@ import ( "github.com/stacklok/minder/internal/engine/eval/pr_actions" engif "github.com/stacklok/minder/internal/engine/interfaces" - pbinternal "github.com/stacklok/minder/internal/proto" - mock_github "github.com/stacklok/minder/internal/providers/github/mock" + "github.com/stacklok/minder/internal/engine/models" + mockgithub "github.com/stacklok/minder/internal/providers/github/mock" provifv1 "github.com/stacklok/minder/pkg/providers/v1" ) @@ -46,14 +46,14 @@ func TestBuildEvalResult(t *testing.T) { {"malicious-package", &summaryPrHandler{ trackedAlternatives: []dependencyAlternatives{ { - Dependency: &pbinternal.Dependency{ - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Dependency: &models.Dependency{ + Ecosystem: models.PyPIDependency, Name: "requests", Version: "0.0.1", }, trustyReply: &trustytypes.Reply{ PackageName: "requests", - PackageType: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI.AsString(), + PackageType: string(models.PyPIDependency), Summary: trustytypes.ScoreSummary{ Score: &sg, }, @@ -76,14 +76,14 @@ func TestBuildEvalResult(t *testing.T) { {"low-scored-package", &summaryPrHandler{ trackedAlternatives: []dependencyAlternatives{ { - Dependency: &pbinternal.Dependency{ - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Dependency: &models.Dependency{ + Ecosystem: models.PyPIDependency, Name: "requests", Version: "0.0.1", }, trustyReply: &trustytypes.Reply{ PackageName: "requests", - PackageType: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI.AsString(), + PackageType: string(models.PyPIDependency), Summary: trustytypes.ScoreSummary{ Score: &sg, }, @@ -94,28 +94,28 @@ func TestBuildEvalResult(t *testing.T) { {"malicious-and-low-score", &summaryPrHandler{ trackedAlternatives: []dependencyAlternatives{ { - Dependency: &pbinternal.Dependency{ - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Dependency: &models.Dependency{ + Ecosystem: models.PyPIDependency, Name: "python-oauth", Version: "0.0.1", }, trustyReply: &trustytypes.Reply{ PackageName: "requests", - PackageType: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI.AsString(), + PackageType: string(models.PyPIDependency), Summary: trustytypes.ScoreSummary{ Score: &sg, }, }, }, { - Dependency: &pbinternal.Dependency{ - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Dependency: &models.Dependency{ + Ecosystem: models.PyPIDependency, Name: "requestts", Version: "0.0.1", }, trustyReply: &trustytypes.Reply{ PackageName: "requests", - PackageType: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI.AsString(), + PackageType: string(models.PyPIDependency), Summary: trustytypes.ScoreSummary{ Score: &sg, }, @@ -195,7 +195,7 @@ func TestReadPullRequestDependencies(t *testing.T) { sut *engif.Result mustErr bool }{ - {name: "normal", sut: &engif.Result{Object: &pbinternal.PrDependencies{}}, mustErr: false}, + {name: "normal", sut: &engif.Result{Object: &models.PRDependencies{}}, mustErr: false}, {name: "invalid-object", sut: &engif.Result{Object: context.Background()}, mustErr: true}, } { tc := tc @@ -213,7 +213,7 @@ func TestReadPullRequestDependencies(t *testing.T) { } func TestNewTrustyEvaluator(t *testing.T) { - ghProvider := mock_github.NewMockGitHub(nil) + ghProvider := mockgithub.NewMockGitHub(nil) t.Parallel() for _, tc := range []struct { name string @@ -243,9 +243,9 @@ func TestClassifyDependency(t *testing.T) { ctx := context.Background() logger := zerolog.Ctx(ctx).With().Logger() - dep := &pbinternal.PrDependencies_ContextualDependency{ - Dep: &pbinternal.Dependency{ - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, + dep := models.ContextualDependency{ + Dep: models.Dependency{ + Ecosystem: models.NPMDependency, Name: "test", Version: "v0.0.1", }, @@ -398,7 +398,7 @@ func TestBuildScoreMatrix(t *testing.T) { { name: "no-description", sut: dependencyAlternatives{ - Dependency: &pbinternal.Dependency{}, + Dependency: &models.Dependency{}, Reasons: []RuleViolationReason{}, trustyReply: &trustytypes.Reply{ Summary: trustytypes.ScoreSummary{}, @@ -408,7 +408,7 @@ func TestBuildScoreMatrix(t *testing.T) { { name: "normal-response", sut: dependencyAlternatives{ - Dependency: &pbinternal.Dependency{}, + Dependency: &models.Dependency{}, Reasons: []RuleViolationReason{}, trustyReply: &trustytypes.Reply{ Summary: trustytypes.ScoreSummary{ @@ -431,7 +431,7 @@ func TestBuildScoreMatrix(t *testing.T) { { name: "normal-response", sut: dependencyAlternatives{ - Dependency: &pbinternal.Dependency{}, + Dependency: &models.Dependency{}, Reasons: []RuleViolationReason{}, trustyReply: &trustytypes.Reply{ Summary: trustytypes.ScoreSummary{ @@ -454,7 +454,7 @@ func TestBuildScoreMatrix(t *testing.T) { { name: "typosquatting-low", sut: dependencyAlternatives{ - Dependency: &pbinternal.Dependency{}, + Dependency: &models.Dependency{}, Reasons: []RuleViolationReason{}, trustyReply: &trustytypes.Reply{ Summary: trustytypes.ScoreSummary{ @@ -469,7 +469,7 @@ func TestBuildScoreMatrix(t *testing.T) { { name: "typosquatting-high", sut: dependencyAlternatives{ - Dependency: &pbinternal.Dependency{}, + Dependency: &models.Dependency{}, Reasons: []RuleViolationReason{}, trustyReply: &trustytypes.Reply{ Summary: trustytypes.ScoreSummary{ diff --git a/internal/engine/eval/vulncheck/actions.go b/internal/engine/eval/vulncheck/actions.go index f6cbe1a53f..3542dd8c7a 100644 --- a/internal/engine/eval/vulncheck/actions.go +++ b/internal/engine/eval/vulncheck/actions.go @@ -22,7 +22,7 @@ import ( "github.com/google/go-github/v61/github" "github.com/stacklok/minder/internal/engine/eval/pr_actions" - pbinternal "github.com/stacklok/minder/internal/proto" + "github.com/stacklok/minder/internal/engine/models" pb "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" provifv1 "github.com/stacklok/minder/pkg/providers/v1" ) @@ -30,7 +30,7 @@ import ( type prStatusHandler interface { trackVulnerableDep( ctx context.Context, - dep *pbinternal.PrDependencies_ContextualDependency, + dep models.ContextualDependency, vulnResp *VulnerabilityResponse, patch patchLocatorFormatter, ) error diff --git a/internal/engine/eval/vulncheck/config.go b/internal/engine/eval/vulncheck/config.go index 0dc510a236..5b4ac4a3ab 100644 --- a/internal/engine/eval/vulncheck/config.go +++ b/internal/engine/eval/vulncheck/config.go @@ -23,7 +23,7 @@ import ( "github.com/go-viper/mapstructure/v2" "github.com/stacklok/minder/internal/engine/eval/pr_actions" - pbinternal "github.com/stacklok/minder/internal/proto" + "github.com/stacklok/minder/internal/engine/models" ) type vulnDbType string @@ -106,8 +106,8 @@ func parseConfig(ruleCfg map[string]any) (*config, error) { return &conf, nil } -func (c *config) getEcosystemConfig(ecosystem pbinternal.DepEcosystem) *ecosystemConfig { - sEco := ecosystem.AsString() +func (c *config) getEcosystemConfig(ecosystem models.DependencyEcosystem) *ecosystemConfig { + sEco := string(ecosystem) if sEco == "" { return nil } diff --git a/internal/engine/eval/vulncheck/pkgdb.go b/internal/engine/eval/vulncheck/pkgdb.go index ec34c99df7..17792d48eb 100644 --- a/internal/engine/eval/vulncheck/pkgdb.go +++ b/internal/engine/eval/vulncheck/pkgdb.go @@ -27,7 +27,7 @@ import ( "github.com/puzpuzpuz/xsync/v3" - pbinternal "github.com/stacklok/minder/internal/proto" + "github.com/stacklok/minder/internal/engine/models" "github.com/stacklok/minder/internal/util" ) @@ -57,7 +57,7 @@ type formatterMeta struct { // than the review handler. type patchLocatorFormatter interface { LineHasDependency(line string) bool - IndentedString(indent int, oldDepLine string, oldDep *pbinternal.Dependency) string + IndentedString(indent int, oldDepLine string, oldDep models.Dependency) string HasPatchedVersion() bool GetPatchedVersion() string GetFormatterMeta() formatterMeta @@ -65,9 +65,9 @@ type patchLocatorFormatter interface { // RepoQuerier is the interface for querying a repository type RepoQuerier interface { - SendRecvRequest(ctx context.Context, dep *pbinternal.Dependency, patched string, latest bool) (patchLocatorFormatter, error) - NoPatchAvailableFormatter(dep *pbinternal.Dependency) patchLocatorFormatter - PkgRegistryErrorFormatter(dep *pbinternal.Dependency, registryErr error) patchLocatorFormatter + SendRecvRequest(ctx context.Context, dep models.Dependency, patched string, latest bool) (patchLocatorFormatter, error) + NoPatchAvailableFormatter(dep models.Dependency) patchLocatorFormatter + PkgRegistryErrorFormatter(dep models.Dependency, registryErr error) patchLocatorFormatter } type repoCache struct { @@ -112,7 +112,7 @@ type packageJson struct { } `json:"dist"` } -func (pj *packageJson) IndentedString(indent int, oldDepLine string, _ *pbinternal.Dependency) string { +func (pj *packageJson) IndentedString(indent int, oldDepLine string, _ models.Dependency) string { padding := fmt.Sprintf("%*s", indent, "") innerPadding := padding + " " // Add 2 extra spaces @@ -179,7 +179,7 @@ type PyPiReply struct { // them. Since PyPi doesn't indent, but can specify zero or multiple versions, we // don't care about the indent parameter. This is ripe for refactoring, though, // see the comment in the patchLocatorFormatter interface. -func (p *PyPiReply) IndentedString(_ int, oldDepLine string, oldDep *pbinternal.Dependency) string { +func (p *PyPiReply) IndentedString(_ int, oldDepLine string, oldDep models.Dependency) string { return strings.Replace(oldDepLine, oldDep.Version, p.Info.Version, 1) } @@ -212,7 +212,11 @@ func (p *PyPiReply) GetFormatterMeta() formatterMeta { return p.formatterMeta } -func (p *pypiRepository) SendRecvRequest(ctx context.Context, dep *pbinternal.Dependency, patched string, latest bool, +func (p *pypiRepository) SendRecvRequest( + ctx context.Context, + dep models.Dependency, + patched string, + latest bool, ) (patchLocatorFormatter, error) { req, err := p.newRequest(ctx, dep, patched, latest) if err != nil { @@ -240,7 +244,7 @@ func (p *pypiRepository) SendRecvRequest(ctx context.Context, dep *pbinternal.De return &pkgJson, nil } -func (_ *pypiRepository) NoPatchAvailableFormatter(dep *pbinternal.Dependency) patchLocatorFormatter { +func (_ *pypiRepository) NoPatchAvailableFormatter(dep models.Dependency) patchLocatorFormatter { return &PyPiReply{ Info: struct { Name string `json:"name"` @@ -249,7 +253,7 @@ func (_ *pypiRepository) NoPatchAvailableFormatter(dep *pbinternal.Dependency) p } } -func (_ *pypiRepository) PkgRegistryErrorFormatter(dep *pbinternal.Dependency, registryErr error) patchLocatorFormatter { +func (_ *pypiRepository) PkgRegistryErrorFormatter(dep models.Dependency, registryErr error) patchLocatorFormatter { return &PyPiReply{ formatterMeta: formatterMeta{ pkgRegistryLookupError: registryErr, @@ -269,7 +273,10 @@ func newPyPIRepository(endpoint string) *pypiRepository { } func (p *pypiRepository) newRequest( - ctx context.Context, dep *pbinternal.Dependency, patched string, latest bool, + ctx context.Context, + dep models.Dependency, + patched string, + latest bool, ) (*http.Request, error) { var u *url.URL var err error @@ -308,7 +315,10 @@ func newNpmRepository(endpoint string) *npmRepository { var _ RepoQuerier = (*npmRepository)(nil) func (n *npmRepository) newRequest( - ctx context.Context, dep *pbinternal.Dependency, patched string, latest bool, + ctx context.Context, + dep models.Dependency, + patched string, + latest bool, ) (*http.Request, error) { var version string if latest { @@ -329,7 +339,11 @@ func (n *npmRepository) newRequest( return req, nil } -func (n *npmRepository) SendRecvRequest(ctx context.Context, dep *pbinternal.Dependency, patched string, latest bool, +func (n *npmRepository) SendRecvRequest( + ctx context.Context, + dep models.Dependency, + patched string, + latest bool, ) (patchLocatorFormatter, error) { req, err := n.newRequest(ctx, dep, patched, latest) if err != nil { @@ -357,14 +371,14 @@ func (n *npmRepository) SendRecvRequest(ctx context.Context, dep *pbinternal.Dep return &pkgJson, nil } -func (_ *npmRepository) NoPatchAvailableFormatter(dep *pbinternal.Dependency) patchLocatorFormatter { +func (_ *npmRepository) NoPatchAvailableFormatter(dep models.Dependency) patchLocatorFormatter { return &packageJson{ Name: dep.Name, Version: "", } } -func (_ *npmRepository) PkgRegistryErrorFormatter(dep *pbinternal.Dependency, registryErr error) patchLocatorFormatter { +func (_ *npmRepository) PkgRegistryErrorFormatter(dep models.Dependency, registryErr error) patchLocatorFormatter { return &packageJson{ formatterMeta: formatterMeta{ pkgRegistryLookupError: registryErr, @@ -386,7 +400,7 @@ type goModPackage struct { DependencyHash string `json:"dependency_hash"` } -func (gmp *goModPackage) IndentedString(indent int, _ string, _ *pbinternal.Dependency) string { +func (gmp *goModPackage) IndentedString(indent int, _ string, _ models.Dependency) string { return fmt.Sprintf("%s%s %s", strings.Repeat(" ", indent), gmp.Name, gmp.Version) } @@ -428,7 +442,11 @@ func newGoProxySumRepository(proxyEndpoint, sumEndpoint string) *goProxyReposito // check that npmRepository implements RepoQuerier var _ RepoQuerier = (*goProxyRepository)(nil) -func (r *goProxyRepository) goProxyRequest(ctx context.Context, dep *pbinternal.Dependency, patched string, latest bool, +func (r *goProxyRepository) goProxyRequest( + ctx context.Context, + dep models.Dependency, + patched string, + latest bool, ) (*http.Request, error) { var u *url.URL var err error @@ -509,7 +527,11 @@ func parseGoSumReply(goPkg *goModPackage, reply io.Reader) error { return nil } -func (r *goProxyRepository) SendRecvRequest(ctx context.Context, dep *pbinternal.Dependency, patched string, latest bool, +func (r *goProxyRepository) SendRecvRequest( + ctx context.Context, + dep models.Dependency, + patched string, + latest bool, ) (patchLocatorFormatter, error) { proxyReq, err := r.goProxyRequest(ctx, dep, patched, latest) if err != nil { @@ -565,14 +587,14 @@ func (r *goProxyRepository) SendRecvRequest(ctx context.Context, dep *pbinternal return goPackage, nil } -func (_ *goProxyRepository) NoPatchAvailableFormatter(dep *pbinternal.Dependency) patchLocatorFormatter { +func (_ *goProxyRepository) NoPatchAvailableFormatter(dep models.Dependency) patchLocatorFormatter { return &goModPackage{ Name: dep.Name, oldVersion: dep.Version, } } -func (_ *goProxyRepository) PkgRegistryErrorFormatter(dep *pbinternal.Dependency, registryErr error) patchLocatorFormatter { +func (_ *goProxyRepository) PkgRegistryErrorFormatter(dep models.Dependency, registryErr error) patchLocatorFormatter { return &goModPackage{ formatterMeta: formatterMeta{ pkgRegistryLookupError: registryErr, diff --git a/internal/engine/eval/vulncheck/pkgdb_test.go b/internal/engine/eval/vulncheck/pkgdb_test.go index c942c609e7..c7579f9f80 100644 --- a/internal/engine/eval/vulncheck/pkgdb_test.go +++ b/internal/engine/eval/vulncheck/pkgdb_test.go @@ -25,7 +25,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - pbinternal "github.com/stacklok/minder/internal/proto" + "github.com/stacklok/minder/internal/engine/models" ) func TestNpmPkgDb(t *testing.T) { @@ -146,7 +146,7 @@ func TestNpmPkgDb(t *testing.T) { repo := newNpmRepository(server.URL) - dep := &pbinternal.Dependency{ + dep := models.Dependency{ Name: tt.depName, } @@ -162,7 +162,7 @@ func TestNpmPkgDb(t *testing.T) { assert.Error(t, err, "Expected error") } else { assert.NoError(t, err, "Expected no error") - require.Equal(t, tt.expectReply.IndentedString(0, "", nil), reply.IndentedString(0, "", nil), "expected reply to match mock data") + require.Equal(t, tt.expectReply.IndentedString(0, "", models.Dependency{}), reply.IndentedString(0, "", models.Dependency{}), "expected reply to match mock data") } }) } @@ -383,7 +383,7 @@ func TestPyPiPkgDb(t *testing.T) { repo := newPyPIRepository(pyPiMockServer.URL) assert.NotNil(t, repo, "Failed to create repository") - dep := &pbinternal.Dependency{ + dep := models.Dependency{ Name: tt.depName, } @@ -401,7 +401,7 @@ func TestPyPiPkgDb(t *testing.T) { assert.NoError(t, err, "Expected no error") actualReply := reply.IndentedString(0, "requests>=2.19.0", - &pbinternal.Dependency{ + models.Dependency{ Name: "requests", Version: "2.19.0", }) @@ -592,7 +592,7 @@ golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=`)) repo := newGoProxySumRepository(proxyServer.URL, sumServer.URL) assert.NotNil(t, repo, "Failed to create repository") - dep := &pbinternal.Dependency{ + dep := models.Dependency{ Name: tt.depName, } @@ -608,7 +608,7 @@ golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=`)) assert.Error(t, err, "Expected error") } else { assert.NoError(t, err, "Expected no error") - require.Equal(t, tt.expectReply.IndentedString(0, "", nil), reply.IndentedString(0, "", nil), "expected reply to match mock data") + require.Equal(t, tt.expectReply.IndentedString(0, "", models.Dependency{}), reply.IndentedString(0, "", models.Dependency{}), "expected reply to match mock data") } }) } diff --git a/internal/engine/eval/vulncheck/report.go b/internal/engine/eval/vulncheck/report.go index d2bc22ad3a..16c5d3b244 100644 --- a/internal/engine/eval/vulncheck/report.go +++ b/internal/engine/eval/vulncheck/report.go @@ -147,7 +147,7 @@ func (r *vulnSummaryReport) render() (string, error) { DependencyVersion string Vulnerabilities []Vulnerability }{ - DependencyEcosystem: dep.Dependency.Ecosystem.AsString(), + DependencyEcosystem: string(dep.Dependency.Ecosystem), DependencyName: dep.Dependency.Name, DependencyVersion: dep.Dependency.Version, Vulnerabilities: dep.Vulnerabilities, diff --git a/internal/engine/eval/vulncheck/review.go b/internal/engine/eval/vulncheck/review.go index ee910d092b..889be70758 100644 --- a/internal/engine/eval/vulncheck/review.go +++ b/internal/engine/eval/vulncheck/review.go @@ -25,7 +25,7 @@ import ( "github.com/google/go-github/v61/github" "github.com/rs/zerolog" - pbinternal "github.com/stacklok/minder/internal/proto" + "github.com/stacklok/minder/internal/engine/models" pb "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" provifv1 "github.com/stacklok/minder/pkg/providers/v1" ) @@ -62,10 +62,10 @@ func countLeadingWhitespace(line string) int { func locateDepInPr( ctx context.Context, client provifv1.GitHub, - dep *pbinternal.PrDependencies_ContextualDependency, + dep models.ContextualDependency, patch patchLocatorFormatter, ) (*reviewLocation, error) { - req, err := client.NewRequest("GET", dep.File.PatchUrl, nil) + req, err := client.NewRequest("GET", dep.File.PatchURL, nil) if err != nil { return nil, fmt.Errorf("could not create request: %w", err) } @@ -88,7 +88,8 @@ func locateDepInPr( // was causing 422 issues with GitHub when trying to submit a review. // Also, to ensure we are grabbing the correct line, we need to check if the // versions align. - if dep.Dep.Ecosystem == pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM && i+1 < len(lines) { + + if dep.Dep.Ecosystem == models.NPMDependency && i+1 < len(lines) { line = strings.Join([]string{line, lines[i+1], dep.Dep.Version}, "\n") loc.lineToChange = i + 2 } else { @@ -188,7 +189,7 @@ func newReviewPrHandler( func (ra *reviewPrHandler) trackVulnerableDep( ctx context.Context, - dep *pbinternal.PrDependencies_ContextualDependency, + dep models.ContextualDependency, vulnResp *VulnerabilityResponse, patch patchLocatorFormatter, ) error { @@ -235,7 +236,7 @@ func (ra *reviewPrHandler) trackVulnerableDep( Msg("vulnerable dependency found") ra.trackedDeps = append(ra.trackedDeps, dependencyVulnerabilities{ - Dependency: dep.Dep, + Dependency: &dep.Dep, Vulnerabilities: vulnResp.Vulns, PatchVersion: patch.GetPatchedVersion(), }) @@ -510,19 +511,19 @@ type summaryPrHandler struct { } type dependencyVulnerabilities struct { - Dependency *pbinternal.Dependency + Dependency *models.Dependency Vulnerabilities []Vulnerability PatchVersion string } func (sph *summaryPrHandler) trackVulnerableDep( _ context.Context, - dep *pbinternal.PrDependencies_ContextualDependency, + dep models.ContextualDependency, vulnResp *VulnerabilityResponse, patch patchLocatorFormatter, ) error { sph.trackedDeps = append(sph.trackedDeps, dependencyVulnerabilities{ - Dependency: dep.Dep, + Dependency: &dep.Dep, Vulnerabilities: vulnResp.Vulns, PatchVersion: patch.GetPatchedVersion(), }) @@ -571,7 +572,7 @@ type profileOnlyPrHandler struct{} func (profileOnlyPrHandler) trackVulnerableDep( _ context.Context, - _ *pbinternal.PrDependencies_ContextualDependency, + _ models.ContextualDependency, _ *VulnerabilityResponse, _ patchLocatorFormatter, ) error { diff --git a/internal/engine/eval/vulncheck/review_test.go b/internal/engine/eval/vulncheck/review_test.go index 490d56b6e5..1cc76092c6 100644 --- a/internal/engine/eval/vulncheck/review_test.go +++ b/internal/engine/eval/vulncheck/review_test.go @@ -29,7 +29,7 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" - pbinternal "github.com/stacklok/minder/internal/proto" + "github.com/stacklok/minder/internal/engine/models" mock_ghclient "github.com/stacklok/minder/internal/providers/github/mock" pb "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" ) @@ -113,15 +113,15 @@ func TestReviewPrHandlerVulnerabilitiesDifferentIdentities(t *testing.T) { })) defer server.Close() - dep := &pbinternal.PrDependencies_ContextualDependency{ - Dep: &pbinternal.Dependency{ - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, + dep := models.ContextualDependency{ + Dep: models.Dependency{ + Ecosystem: models.NPMDependency, Name: "mongodb", Version: "0.5.0", }, - File: &pbinternal.PrDependencies_ContextualDependency_FilePatch{ + File: models.FilePatch{ Name: "package-lock.json", - PatchUrl: server.URL, + PatchURL: server.URL, }, } @@ -155,7 +155,7 @@ func TestReviewPrHandlerVulnerabilitiesDifferentIdentities(t *testing.T) { require.NoError(t, err) statusReport := createStatusReport(vulnsFoundText, commitSHA, 0, dependencyVulnerabilities{ - Dependency: dep.Dep, + Dependency: &dep.Dep, Vulnerabilities: vulnResp.Vulns, PatchVersion: "0.6.0", }, @@ -222,15 +222,15 @@ func TestReviewPrHandlerVulnerabilitiesErrLookUpPackage(t *testing.T) { })) defer server.Close() - dep := &pbinternal.PrDependencies_ContextualDependency{ - Dep: &pbinternal.Dependency{ - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, + dep := models.ContextualDependency{ + Dep: models.Dependency{ + Ecosystem: models.NPMDependency, Name: "mongodb", Version: "0.5.0", }, - File: &pbinternal.PrDependencies_ContextualDependency_FilePatch{ + File: models.FilePatch{ Name: "package-lock.json", - PatchUrl: server.URL, + PatchURL: server.URL, }, } @@ -316,15 +316,15 @@ func TestReviewPrHandlerVulnerabilitiesWithNoPatchVersion(t *testing.T) { })) defer server.Close() - dep := &pbinternal.PrDependencies_ContextualDependency{ - Dep: &pbinternal.Dependency{ - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, + dep := models.ContextualDependency{ + Dep: models.Dependency{ + Ecosystem: models.NPMDependency, Name: "mongodb", Version: "0.5.0", }, - File: &pbinternal.PrDependencies_ContextualDependency_FilePatch{ + File: models.FilePatch{ Name: "package-lock.json", - PatchUrl: server.URL, + PatchURL: server.URL, }, } @@ -348,7 +348,7 @@ func TestReviewPrHandlerVulnerabilitiesWithNoPatchVersion(t *testing.T) { require.NoError(t, err) statusReport := createStatusReport(vulnsFoundText, commitSHA, 0, dependencyVulnerabilities{ - Dependency: dep.Dep, + Dependency: &dep.Dep, Vulnerabilities: vulnResp.Vulns, PatchVersion: "", }, @@ -422,15 +422,15 @@ func TestReviewPrHandlerVulnerabilitiesDismissReview(t *testing.T) { })) defer server.Close() - dep := &pbinternal.PrDependencies_ContextualDependency{ - Dep: &pbinternal.Dependency{ - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, + dep := models.ContextualDependency{ + Dep: models.Dependency{ + Ecosystem: models.NPMDependency, Name: "mongodb", Version: "0.5.0", }, - File: &pbinternal.PrDependencies_ContextualDependency_FilePatch{ + File: models.FilePatch{ Name: "package-lock.json", - PatchUrl: server.URL, + PatchURL: server.URL, }, } @@ -446,7 +446,7 @@ func TestReviewPrHandlerVulnerabilitiesDismissReview(t *testing.T) { }, nil) statusReport := createStatusReport(vulnsFoundText, commitSHA, minderReviewID, dependencyVulnerabilities{ - Dependency: dep.GetDep(), + Dependency: &dep.Dep, Vulnerabilities: vulnResp.Vulns, PatchVersion: "", }) @@ -573,15 +573,15 @@ func TestCommitStatusPrHandlerWithVulnerabilities(t *testing.T) { })) defer server.Close() - dep := &pbinternal.PrDependencies_ContextualDependency{ - Dep: &pbinternal.Dependency{ - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, + dep := models.ContextualDependency{ + Dep: models.Dependency{ + Ecosystem: models.NPMDependency, Name: "mongodb", Version: "0.5.0", }, - File: &pbinternal.PrDependencies_ContextualDependency_FilePatch{ + File: models.FilePatch{ Name: "package-lock.json", - PatchUrl: server.URL, + PatchURL: server.URL, }, } @@ -615,7 +615,7 @@ func TestCommitStatusPrHandlerWithVulnerabilities(t *testing.T) { require.NoError(t, err) statusReport := createStatusReport(vulnsFoundText, commitSHA, 0, dependencyVulnerabilities{ - Dependency: dep.GetDep(), + Dependency: &dep.Dep, Vulnerabilities: vulnResp.Vulns, PatchVersion: "0.6.0", }) diff --git a/internal/engine/eval/vulncheck/vulncheck.go b/internal/engine/eval/vulncheck/vulncheck.go index bcb8f2f183..65d01c32bb 100644 --- a/internal/engine/eval/vulncheck/vulncheck.go +++ b/internal/engine/eval/vulncheck/vulncheck.go @@ -25,7 +25,7 @@ import ( evalerrors "github.com/stacklok/minder/internal/engine/errors" engif "github.com/stacklok/minder/internal/engine/interfaces" - pbinternal "github.com/stacklok/minder/internal/proto" + "github.com/stacklok/minder/internal/engine/models" provifv1 "github.com/stacklok/minder/pkg/providers/v1" ) @@ -70,7 +70,7 @@ func (e *Evaluator) getVulnerableDependencies(ctx context.Context, pol map[strin // TODO(jhrozek): Fix this! //nolint:govet - prdeps, ok := res.Object.(*pbinternal.PrDependencies) + prdeps, ok := res.Object.(*models.PRDependencies) if !ok { return nil, fmt.Errorf("invalid object type for vulncheck evaluator") } @@ -84,7 +84,7 @@ func (e *Evaluator) getVulnerableDependencies(ctx context.Context, pol map[strin return nil, fmt.Errorf("failed to parse config: %w", err) } - prReplyHandler, err := newPrStatusHandler(ctx, ruleConfig.Action, prdeps.Pr, e.cli) + prReplyHandler, err := newPrStatusHandler(ctx, ruleConfig.Action, prdeps.PR, e.cli) if err != nil { return nil, fmt.Errorf("failed to create pr action: %w", err) } @@ -92,7 +92,7 @@ func (e *Evaluator) getVulnerableDependencies(ctx context.Context, pol map[strin pkgRepoCache := newRepoCache() for _, dep := range prdeps.Deps { - if dep.Dep == nil || dep.Dep.Version == "" { + if dep.Dep.Version == "" { continue } @@ -153,8 +153,8 @@ func (_ *Evaluator) getVulnDb(dbType vulnDbType, endpoint string) (vulnDb, error func (_ *Evaluator) queryVulnDb( ctx context.Context, db vulnDb, - dep *pbinternal.Dependency, - ecosystem pbinternal.DepEcosystem, + dep models.Dependency, + ecosystem models.DependencyEcosystem, ) (*VulnerabilityResponse, error) { req, err := db.NewQuery(ctx, dep, ecosystem) if err != nil { @@ -172,7 +172,7 @@ func (_ *Evaluator) queryVulnDb( // checkVulnerabilities checks whether a PR dependency contains any vulnerabilities. func (e *Evaluator) checkVulnerabilities( ctx context.Context, - dep *pbinternal.PrDependencies_ContextualDependency, + dep models.ContextualDependency, cfg *config, cache *repoCache, prHandler prStatusHandler, diff --git a/internal/engine/eval/vulncheck/vulndb.go b/internal/engine/eval/vulncheck/vulndb.go index 1297c78d4e..c7130bab80 100644 --- a/internal/engine/eval/vulncheck/vulndb.go +++ b/internal/engine/eval/vulncheck/vulndb.go @@ -26,7 +26,7 @@ import ( "github.com/hashicorp/go-version" - pbinternal "github.com/stacklok/minder/internal/proto" + "github.com/stacklok/minder/internal/engine/models" ) // Vulnerability is a vulnerability JSON representation @@ -46,8 +46,8 @@ type VulnerabilityResponse struct { // TODO(jakub): it's ugly that we depend on types from ingester/diff type vulnDb interface { - NewQuery(ctx context.Context, dep *pbinternal.Dependency, eco pbinternal.DepEcosystem) (*http.Request, error) - SendRecvRequest(r *http.Request, dep *pbinternal.Dependency) (*VulnerabilityResponse, error) + NewQuery(ctx context.Context, dep models.Dependency, eco models.DependencyEcosystem) (*http.Request, error) + SendRecvRequest(r *http.Request, dep models.Dependency) (*VulnerabilityResponse, error) } // OSVResponse is a response from the OSV database @@ -95,7 +95,7 @@ type OSVResponse struct { } `json:"vulns"` } -func toVulnerabilityResponse(osvResp *OSVResponse, dep *pbinternal.Dependency) *VulnerabilityResponse { +func toVulnerabilityResponse(osvResp *OSVResponse, dep models.Dependency) *VulnerabilityResponse { var vulnResp VulnerabilityResponse for _, osvVuln := range osvResp.Vulns { @@ -171,12 +171,12 @@ func newOsvDb(endpoint string) *osvdb { } } -func (o *osvdb) NewQuery(ctx context.Context, dep *pbinternal.Dependency, eco pbinternal.DepEcosystem) (*http.Request, error) { +func (o *osvdb) NewQuery(ctx context.Context, dep models.Dependency, eco models.DependencyEcosystem) (*http.Request, error) { reqBody := map[string]interface{}{ "version": dep.Version, "package": map[string]string{ "name": dep.Name, - "ecosystem": eco.AsString(), + "ecosystem": string(eco), }, } @@ -195,7 +195,7 @@ func (o *osvdb) NewQuery(ctx context.Context, dep *pbinternal.Dependency, eco pb return req, nil } -func (_ *osvdb) SendRecvRequest(r *http.Request, dep *pbinternal.Dependency) (*VulnerabilityResponse, error) { +func (_ *osvdb) SendRecvRequest(r *http.Request, dep models.Dependency) (*VulnerabilityResponse, error) { client := &http.Client{} resp, err := client.Do(r) if err != nil { diff --git a/internal/engine/eval/vulncheck/vulndb_test.go b/internal/engine/eval/vulncheck/vulndb_test.go index 81592afa70..49afbdd867 100644 --- a/internal/engine/eval/vulncheck/vulndb_test.go +++ b/internal/engine/eval/vulncheck/vulndb_test.go @@ -23,7 +23,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - pbinternal "github.com/stacklok/minder/internal/proto" + "github.com/stacklok/minder/internal/engine/models" ) const multipleRanges = ` @@ -306,7 +306,7 @@ func TestGoVulnDb(t *testing.T) { db := newOsvDb(vulnServer.URL) assert.NotNil(t, db, "Failed to create OSV DB") - dep := &pbinternal.Dependency{ + dep := models.Dependency{ Name: tt.depName, Version: tt.depVersion, } diff --git a/internal/engine/ingester/diff/diff.go b/internal/engine/ingester/diff/diff.go index 064cc50400..d1304840d4 100644 --- a/internal/engine/ingester/diff/diff.go +++ b/internal/engine/ingester/diff/diff.go @@ -28,7 +28,7 @@ import ( "google.golang.org/protobuf/reflect/protoreflect" engif "github.com/stacklok/minder/internal/engine/interfaces" - pbinternal "github.com/stacklok/minder/internal/proto" + "github.com/stacklok/minder/internal/engine/models" pb "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" provifv1 "github.com/stacklok/minder/pkg/providers/v1" ) @@ -95,7 +95,7 @@ func (di *Diff) Ingest( page := 0 switch di.cfg.GetType() { case "", pb.DiffTypeDep: - allDiffs := make([]*pbinternal.PrDependencies_ContextualDependency, 0) + allDiffs := make([]models.ContextualDependency, 0) for { prFiles, resp, err := di.cli.ListFiles(ctx, pr.RepoOwner, pr.RepoName, int(pr.Number), prFilesPerPage, page) if err != nil { @@ -118,14 +118,14 @@ func (di *Diff) Ingest( } return &engif.Result{ - Object: &pbinternal.PrDependencies{ - Pr: pr, + Object: &models.PRDependencies{ + PR: pr, Deps: allDiffs, }, }, nil case pb.DiffTypeFull: - allDiffs := make([]*pbinternal.PrContents_File, 0) + allDiffs := make([]models.PRFile, 0) for { prFiles, resp, err := di.cli.ListFiles(ctx, pr.RepoOwner, pr.RepoName, int(pr.Number), prFilesPerPage, page) if err != nil { @@ -137,7 +137,7 @@ func (di *Diff) Ingest( if err != nil { return nil, fmt.Errorf("error ingesting file %s: %w", file.GetFilename(), err) } - allDiffs = append(allDiffs, fileDiffs) + allDiffs = append(allDiffs, *fileDiffs) } if resp.NextPage == 0 { @@ -148,8 +148,8 @@ func (di *Diff) Ingest( } return &engif.Result{ - Object: &pbinternal.PrContents{ - Pr: pr, + Object: models.PRContents{ + PR: pr, Files: allDiffs, }, }, nil @@ -162,7 +162,7 @@ func (di *Diff) Ingest( func (di *Diff) ingestFileForDepDiff( filename, patchContents, patchUrl string, logger zerolog.Logger, -) ([]*pbinternal.PrDependencies_ContextualDependency, error) { +) ([]models.ContextualDependency, error) { parser := di.getParserForFile(filename, logger) if parser == nil { return nil, nil @@ -173,14 +173,13 @@ func (di *Diff) ingestFileForDepDiff( return nil, fmt.Errorf("error parsing file %s: %w", filename, err) } - batchCtxDeps := make([]*pbinternal.PrDependencies_ContextualDependency, 0, len(depBatch)) - for i := range depBatch { - dep := depBatch[i] - batchCtxDeps = append(batchCtxDeps, &pbinternal.PrDependencies_ContextualDependency{ + batchCtxDeps := make([]models.ContextualDependency, 0, len(depBatch)) + for _, dep := range depBatch { + batchCtxDeps = append(batchCtxDeps, models.ContextualDependency{ Dep: dep, - File: &pbinternal.PrDependencies_ContextualDependency_FilePatch{ + File: models.FilePatch{ Name: filename, - PatchUrl: patchUrl, + PatchURL: patchUrl, }, }) } @@ -192,8 +191,8 @@ func (di *Diff) ingestFileForDepDiff( // It scans through the patch line by line, identifying the changes made. // If it's a hunk header, it extracts the starting line number. If it's an addition, it records the line content and its number. // The function also increments the line number for context lines (lines that provide context but haven't been modified). -func ingestFileForFullDiff(filename, patch, patchUrl string) (*pbinternal.PrContents_File, error) { - var result []*pbinternal.PrContents_File_Line +func ingestFileForFullDiff(filename, patch, patchUrl string) (*models.PRFile, error) { + var result []models.PRFileLine scanner := bufio.NewScanner(strings.NewReader(patch)) regex := regexp.MustCompile(`@@ -\d+,\d+ \+(\d+),\d+ @@`) @@ -209,7 +208,7 @@ func ingestFileForFullDiff(filename, patch, patchUrl string) (*pbinternal.PrCont return nil, fmt.Errorf("error parsing line number from the hunk header: %w", err) } } else if strings.HasPrefix(line, "+") { - result = append(result, &pbinternal.PrContents_File_Line{ + result = append(result, models.PRFileLine{ Content: line[1:], // see the use of strconv.ParseInt above: this is a safe downcast LineNumber: int32(currentLineNumber), @@ -225,9 +224,9 @@ func ingestFileForFullDiff(filename, patch, patchUrl string) (*pbinternal.PrCont return nil, fmt.Errorf("error reading patch: %w", err) } - return &pbinternal.PrContents_File{ + return &models.PRFile{ Name: filename, - FilePatchUrl: patchUrl, + FilePatchURL: patchUrl, PatchLines: result, }, nil } diff --git a/internal/engine/ingester/diff/parse.go b/internal/engine/ingester/diff/parse.go index ff6cae2bb4..9768157b85 100644 --- a/internal/engine/ingester/diff/parse.go +++ b/internal/engine/ingester/diff/parse.go @@ -22,7 +22,7 @@ import ( "slices" "strings" - pbinternal "github.com/stacklok/minder/internal/proto" + "github.com/stacklok/minder/internal/engine/models" "github.com/stacklok/minder/internal/util" ) @@ -31,7 +31,7 @@ var ( dependencyNameRegex = regexp.MustCompile(`\s*"([^"]+)"\s*:\s*{\s*`) ) -type ecosystemParser func(string) ([]*pbinternal.Dependency, error) +type ecosystemParser func(string) ([]models.Dependency, error) func newEcosystemParser(eco DependencyEcosystem) ecosystemParser { switch strings.ToLower(string(eco)) { @@ -50,8 +50,8 @@ func newEcosystemParser(eco DependencyEcosystem) ecosystemParser { } } -func requirementsParse(patch string) ([]*pbinternal.Dependency, error) { - var deps []*pbinternal.Dependency +func requirementsParse(patch string) ([]models.Dependency, error) { + var deps []models.Dependency scanner := bufio.NewScanner(strings.NewReader(patch)) for scanner.Scan() { @@ -122,9 +122,9 @@ func pyReqNormalizeLine(line string) string { return strings.TrimSpace(line) } -func pyReqAddPkgName(depList []*pbinternal.Dependency, pkgName, version string) []*pbinternal.Dependency { - dep := &pbinternal.Dependency{ - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, +func pyReqAddPkgName(depList []models.Dependency, pkgName, version string) []models.Dependency { + dep := models.Dependency{ + Ecosystem: models.PyPIDependency, Name: pyNormalizeName(pkgName), Version: version, } @@ -137,8 +137,8 @@ func pyNormalizeName(pkgName string) string { return strings.ToLower(result) } -func goParse(patch string) ([]*pbinternal.Dependency, error) { - var deps []*pbinternal.Dependency +func goParse(patch string) ([]models.Dependency, error) { + var deps []models.Dependency scanner := bufio.NewScanner(strings.NewReader(patch)) // Iterate over the lines of the go.mod patch and parse the dependencies @@ -147,7 +147,7 @@ func goParse(patch string) ([]*pbinternal.Dependency, error) { dep := extractGoDepFromPatchLine(scanner.Text()) // If we failed to extract a dependency, or if it's already in the slice, skip it - if dep == nil || slices.ContainsFunc(deps, func(n *pbinternal.Dependency) bool { + if dep == nil || slices.ContainsFunc(deps, func(n models.Dependency) bool { if n.Name == dep.Name && n.Version == dep.Version { return true } @@ -157,7 +157,7 @@ func goParse(patch string) ([]*pbinternal.Dependency, error) { } // Add the dependency to the slice - deps = append(deps, dep) + deps = append(deps, *dep) } if err := scanner.Err(); err != nil { return nil, err @@ -165,7 +165,7 @@ func goParse(patch string) ([]*pbinternal.Dependency, error) { return deps, nil } -func extractGoDepFromPatchLine(line string) *pbinternal.Dependency { +func extractGoDepFromPatchLine(line string) *models.Dependency { // Look for lines that add dependencies. // We ignore lines that contain "// indirect" because they are transitive dependencies, and therefore // not actionable. @@ -179,8 +179,8 @@ func extractGoDepFromPatchLine(line string) *pbinternal.Dependency { return nil } - dep := &pbinternal.Dependency{ - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_GO, + dep := &models.Dependency{ + Ecosystem: models.GoDependency, } if fields[0] == "require" && fields[1] != "(" && len(fields) >= 3 { dep.Name = fields[1] @@ -204,10 +204,10 @@ func extractGoDepFromPatchLine(line string) *pbinternal.Dependency { return nil } -func npmParse(patch string) ([]*pbinternal.Dependency, error) { +func npmParse(patch string) ([]models.Dependency, error) { lines := strings.Split(patch, "\n") - var deps []*pbinternal.Dependency + var deps []models.Dependency for i, line := range lines { // Check if the line contains a version @@ -218,8 +218,8 @@ func npmParse(patch string) ([]*pbinternal.Dependency, error) { // The version is not always a dependency version. It may also be the version of the package in this repo, // or the version of the root project. See https://docs.npmjs.com/cli/v10/configuring-npm/package-lock-json if name != "" { - deps = append(deps, &pbinternal.Dependency{ - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, + deps = append(deps, models.Dependency{ + Ecosystem: models.NPMDependency, Name: name, Version: version, }) diff --git a/internal/engine/ingester/diff/parse_test.go b/internal/engine/ingester/diff/parse_test.go index 151e73183b..4690334a0b 100644 --- a/internal/engine/ingester/diff/parse_test.go +++ b/internal/engine/ingester/diff/parse_test.go @@ -19,9 +19,8 @@ import ( "testing" "github.com/stretchr/testify/assert" - "google.golang.org/protobuf/proto" - pbinternal "github.com/stacklok/minder/internal/proto" + "github.com/stacklok/minder/internal/engine/models" ) func TestGoParse(t *testing.T) { @@ -31,7 +30,7 @@ func TestGoParse(t *testing.T) { description string content string expectedCount int - expectedDependencies []*pbinternal.Dependency + expectedDependencies []models.Dependency }{ { description: "Single addition", @@ -41,9 +40,9 @@ func TestGoParse(t *testing.T) { github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 github.com/prometheus/client_golang v1.18.0`, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_GO, + Ecosystem: models.GoDependency, Name: "github.com/openfga/openfga", Version: "v1.4.3", }, @@ -68,9 +67,9 @@ func TestGoParse(t *testing.T) { - gotest.tools/v3 v3.4.0 // indirect k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect`, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_GO, + Ecosystem: models.GoDependency, Name: "go.opentelemetry.io/proto/otlp", Version: "v1.0.0", }, @@ -86,7 +85,7 @@ func TestGoParse(t *testing.T) { - gotest.tools/v3 v3.4.0 // indirect k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect`, expectedCount: 0, - expectedDependencies: []*pbinternal.Dependency{}, + expectedDependencies: []models.Dependency{}, }, { description: "Replace", @@ -97,9 +96,9 @@ func TestGoParse(t *testing.T) { + +replace github.com/opencontainers/runc => github.com/stacklok/runc v1.1.12`, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_GO, + Ecosystem: models.GoDependency, Name: "github.com/stacklok/runc", Version: "v1.1.12", }, @@ -114,7 +113,7 @@ func TestGoParse(t *testing.T) { + +replace github.com/opencontainers/runc => `, expectedCount: 0, - expectedDependencies: []*pbinternal.Dependency{}, + expectedDependencies: []models.Dependency{}, }, { description: "Bad Require", @@ -125,7 +124,7 @@ func TestGoParse(t *testing.T) { + +require github.com/opencontainers/runc`, expectedCount: 0, - expectedDependencies: []*pbinternal.Dependency{}, + expectedDependencies: []models.Dependency{}, }, } for _, tt := range tests { @@ -140,7 +139,7 @@ func TestGoParse(t *testing.T) { assert.Equal(t, tt.expectedCount, len(got), "mismatched dependency count") for i, expectedDep := range tt.expectedDependencies { - if !proto.Equal(expectedDep, got[i]) { + if expectedDep != got[i] { t.Errorf("mismatch at index %d: expected %v, got %v", i, expectedDep, got[i]) } } @@ -155,7 +154,7 @@ func TestPyPiParse(t *testing.T) { description string content string expectedCount int - expectedDependencies []*pbinternal.Dependency + expectedDependencies []models.Dependency }{ { description: "Single addition, exact version", @@ -163,9 +162,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests==2.19.0`, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Ecosystem: models.PyPIDependency, Name: "requests", Version: "2.19.0", }, @@ -178,9 +177,9 @@ func TestPyPiParse(t *testing.T) { +# this version has a CVE +requests==2.19.0`, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Ecosystem: models.PyPIDependency, Name: "requests", Version: "2.19.0", }, @@ -193,9 +192,9 @@ func TestPyPiParse(t *testing.T) { + +requests==2.19.0`, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Ecosystem: models.PyPIDependency, Name: "requests", Version: "2.19.0", }, @@ -207,9 +206,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests>=2.19.0`, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Ecosystem: models.PyPIDependency, Name: "requests", Version: "2.19.0", }, @@ -221,9 +220,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests>=2.19.0`, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Ecosystem: models.PyPIDependency, Name: "requests", Version: "2.19.0", }, @@ -235,9 +234,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests==2.19.0 # this version has a CVE`, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Ecosystem: models.PyPIDependency, Name: "requests", Version: "2.19.0", }, @@ -249,9 +248,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests==2.*`, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Ecosystem: models.PyPIDependency, Name: "requests", Version: "2", }, @@ -263,9 +262,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests`, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Ecosystem: models.PyPIDependency, Name: "requests", Version: "", }, @@ -277,9 +276,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests<=2.19.0`, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Ecosystem: models.PyPIDependency, Name: "requests", Version: "2.19.0", }, @@ -291,9 +290,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests<3,>=2.0`, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Ecosystem: models.PyPIDependency, Name: "requests", Version: "2.0", }, @@ -305,9 +304,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests>=2.0,<3`, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Ecosystem: models.PyPIDependency, Name: "requests", Version: "2.0", }, @@ -321,19 +320,20 @@ func TestPyPiParse(t *testing.T) { +pandas<0.25.0,>=0.24.0 +numpy==1.16.0`, expectedCount: 3, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Ecosystem: models.PyPIDependency, Name: "requests", Version: "2.0", }, { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + + Ecosystem: models.PyPIDependency, Name: "pandas", Version: "0.24.0", }, { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Ecosystem: models.PyPIDependency, Name: "numpy", Version: "1.16.0", }, @@ -346,7 +346,7 @@ func TestPyPiParse(t *testing.T) { # just a comment `, expectedCount: 0, - expectedDependencies: []*pbinternal.Dependency{}, + expectedDependencies: []models.Dependency{}, }, { description: "Single addition, uppercase", @@ -354,9 +354,9 @@ func TestPyPiParse(t *testing.T) { Flask + Django==3.2.21`, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, + Ecosystem: models.PyPIDependency, Name: "django", Version: "3.2.21", }, @@ -375,7 +375,7 @@ func TestPyPiParse(t *testing.T) { assert.Equal(t, tt.expectedCount, len(got), "mismatched dependency count") for i, expectedDep := range tt.expectedDependencies { - if !proto.Equal(expectedDep, got[i]) { + if expectedDep != got[i] { t.Errorf("mismatch at index %d: expected %v, got %v", i, expectedDep, got[i]) } } @@ -390,7 +390,7 @@ func TestNpmParse(t *testing.T) { description string content string expectedCount int - expectedDependencies []*pbinternal.Dependency + expectedDependencies []models.Dependency }{ { description: "New dependency addition", @@ -418,9 +418,9 @@ func TestNpmParse(t *testing.T) { "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", `, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, + Ecosystem: models.NPMDependency, Name: "chalk", Version: "5.3.0", }, @@ -443,9 +443,9 @@ func TestNpmParse(t *testing.T) { } `, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, + Ecosystem: models.NPMDependency, Name: "lodash", Version: "4.17.21", }, @@ -477,9 +477,9 @@ func TestNpmParse(t *testing.T) { +} `, expectedCount: 1, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, + Ecosystem: models.NPMDependency, Name: "lodash", Version: "4.17.21", }, @@ -517,14 +517,14 @@ func TestNpmParse(t *testing.T) { } `, expectedCount: 2, - expectedDependencies: []*pbinternal.Dependency{ + expectedDependencies: []models.Dependency{ { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, + Ecosystem: models.NPMDependency, Name: "@types/node", Version: "20.9.0", }, { - Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, + Ecosystem: models.NPMDependency, Name: "undici-types", Version: "5.26.5", }, @@ -543,7 +543,7 @@ func TestNpmParse(t *testing.T) { assert.Equal(t, tt.expectedCount, len(got), "mismatched dependency count") for i, expectedDep := range tt.expectedDependencies { - if !proto.Equal(expectedDep, got[i]) { + if expectedDep != got[i] { t.Errorf("mismatch at index %d: expected %v, got %v", i, expectedDep, got[i]) } } diff --git a/internal/engine/models/models.go b/internal/engine/models/models.go new file mode 100644 index 0000000000..e04d6c74ab --- /dev/null +++ b/internal/engine/models/models.go @@ -0,0 +1,74 @@ +// Copyright 2024 Stacklok, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package models contains domain models used by the engine +package models + +import pb "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" + +// DependencyEcosystem represents an enum of dependency languages +type DependencyEcosystem string + +// Enumerated values of DependencyEcosystem +const ( + NPMDependency DependencyEcosystem = "npm" + GoDependency DependencyEcosystem = "go" + PyPIDependency DependencyEcosystem = "pypi" +) + +// Dependency represents a package +type Dependency struct { + Ecosystem DependencyEcosystem + Name string + Version string +} + +// FilePatch represents the patch which introduced a dependency +type FilePatch struct { + Name string + PatchURL string +} + +// ContextualDependency represents a dependency along with where it was imported +type ContextualDependency struct { + Dep Dependency + File FilePatch +} + +// PRDependencies represents the dependencies introduced in a PR +type PRDependencies struct { + PR *pb.PullRequest + Deps []ContextualDependency +} + +// PRFileLine represents a changed line in a file in a PR +type PRFileLine struct { + // Deliberately left as an int32: a diff with more than 2^31 lines + // could lead to various problems while processing. + LineNumber int32 + Content string +} + +// PRFile represents a file within a PR +type PRFile struct { + Name string + FilePatchURL string + PatchLines []PRFileLine +} + +// PRContents represents a PR and its changes +type PRContents struct { + PR *pb.PullRequest + Files []PRFile +} diff --git a/internal/proto/internal.pb.go b/internal/proto/internal.pb.go index b2fb96739b..f1de3721a4 100644 --- a/internal/proto/internal.pb.go +++ b/internal/proto/internal.pb.go @@ -24,11 +24,9 @@ package proto import ( - v1 "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" - sync "sync" ) const ( @@ -38,566 +36,23 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -type DepEcosystem int32 - -const ( - DepEcosystem_DEP_ECOSYSTEM_UNSPECIFIED DepEcosystem = 0 - DepEcosystem_DEP_ECOSYSTEM_NPM DepEcosystem = 1 - DepEcosystem_DEP_ECOSYSTEM_GO DepEcosystem = 2 - DepEcosystem_DEP_ECOSYSTEM_PYPI DepEcosystem = 3 -) - -// Enum value maps for DepEcosystem. -var ( - DepEcosystem_name = map[int32]string{ - 0: "DEP_ECOSYSTEM_UNSPECIFIED", - 1: "DEP_ECOSYSTEM_NPM", - 2: "DEP_ECOSYSTEM_GO", - 3: "DEP_ECOSYSTEM_PYPI", - } - DepEcosystem_value = map[string]int32{ - "DEP_ECOSYSTEM_UNSPECIFIED": 0, - "DEP_ECOSYSTEM_NPM": 1, - "DEP_ECOSYSTEM_GO": 2, - "DEP_ECOSYSTEM_PYPI": 3, - } -) - -func (x DepEcosystem) Enum() *DepEcosystem { - p := new(DepEcosystem) - *p = x - return p -} - -func (x DepEcosystem) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (DepEcosystem) Descriptor() protoreflect.EnumDescriptor { - return file_internal_proto_enumTypes[0].Descriptor() -} - -func (DepEcosystem) Type() protoreflect.EnumType { - return &file_internal_proto_enumTypes[0] -} - -func (x DepEcosystem) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use DepEcosystem.Descriptor instead. -func (DepEcosystem) EnumDescriptor() ([]byte, []int) { - return file_internal_proto_rawDescGZIP(), []int{0} -} - -type Dependency struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Ecosystem DepEcosystem `protobuf:"varint,1,opt,name=ecosystem,proto3,enum=internal.DepEcosystem" json:"ecosystem,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` -} - -func (x *Dependency) Reset() { - *x = Dependency{} - if protoimpl.UnsafeEnabled { - mi := &file_internal_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Dependency) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Dependency) ProtoMessage() {} - -func (x *Dependency) ProtoReflect() protoreflect.Message { - mi := &file_internal_proto_msgTypes[0] - 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 Dependency.ProtoReflect.Descriptor instead. -func (*Dependency) Descriptor() ([]byte, []int) { - return file_internal_proto_rawDescGZIP(), []int{0} -} - -func (x *Dependency) GetEcosystem() DepEcosystem { - if x != nil { - return x.Ecosystem - } - return DepEcosystem_DEP_ECOSYSTEM_UNSPECIFIED -} - -func (x *Dependency) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Dependency) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -type PrDependencies struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Pr *v1.PullRequest `protobuf:"bytes,1,opt,name=pr,proto3" json:"pr,omitempty"` - Deps []*PrDependencies_ContextualDependency `protobuf:"bytes,2,rep,name=deps,proto3" json:"deps,omitempty"` -} - -func (x *PrDependencies) Reset() { - *x = PrDependencies{} - if protoimpl.UnsafeEnabled { - mi := &file_internal_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PrDependencies) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PrDependencies) ProtoMessage() {} - -func (x *PrDependencies) ProtoReflect() protoreflect.Message { - mi := &file_internal_proto_msgTypes[1] - 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 PrDependencies.ProtoReflect.Descriptor instead. -func (*PrDependencies) Descriptor() ([]byte, []int) { - return file_internal_proto_rawDescGZIP(), []int{1} -} - -func (x *PrDependencies) GetPr() *v1.PullRequest { - if x != nil { - return x.Pr - } - return nil -} - -func (x *PrDependencies) GetDeps() []*PrDependencies_ContextualDependency { - if x != nil { - return x.Deps - } - return nil -} - -type PrContents struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Pr *v1.PullRequest `protobuf:"bytes,1,opt,name=pr,proto3" json:"pr,omitempty"` - Files []*PrContents_File `protobuf:"bytes,2,rep,name=files,proto3" json:"files,omitempty"` -} - -func (x *PrContents) Reset() { - *x = PrContents{} - if protoimpl.UnsafeEnabled { - mi := &file_internal_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PrContents) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PrContents) ProtoMessage() {} - -func (x *PrContents) ProtoReflect() protoreflect.Message { - mi := &file_internal_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PrContents.ProtoReflect.Descriptor instead. -func (*PrContents) Descriptor() ([]byte, []int) { - return file_internal_proto_rawDescGZIP(), []int{2} -} - -func (x *PrContents) GetPr() *v1.PullRequest { - if x != nil { - return x.Pr - } - return nil -} - -func (x *PrContents) GetFiles() []*PrContents_File { - if x != nil { - return x.Files - } - return nil -} - -type PrDependencies_ContextualDependency struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Dep *Dependency `protobuf:"bytes,1,opt,name=dep,proto3" json:"dep,omitempty"` - File *PrDependencies_ContextualDependency_FilePatch `protobuf:"bytes,2,opt,name=file,proto3" json:"file,omitempty"` -} - -func (x *PrDependencies_ContextualDependency) Reset() { - *x = PrDependencies_ContextualDependency{} - if protoimpl.UnsafeEnabled { - mi := &file_internal_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PrDependencies_ContextualDependency) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PrDependencies_ContextualDependency) ProtoMessage() {} - -func (x *PrDependencies_ContextualDependency) ProtoReflect() protoreflect.Message { - mi := &file_internal_proto_msgTypes[3] - 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 PrDependencies_ContextualDependency.ProtoReflect.Descriptor instead. -func (*PrDependencies_ContextualDependency) Descriptor() ([]byte, []int) { - return file_internal_proto_rawDescGZIP(), []int{1, 0} -} - -func (x *PrDependencies_ContextualDependency) GetDep() *Dependency { - if x != nil { - return x.Dep - } - return nil -} - -func (x *PrDependencies_ContextualDependency) GetFile() *PrDependencies_ContextualDependency_FilePatch { - if x != nil { - return x.File - } - return nil -} - -type PrDependencies_ContextualDependency_FilePatch struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // file changed, e.g. package-lock.json - PatchUrl string `protobuf:"bytes,2,opt,name=patch_url,json=patchUrl,proto3" json:"patch_url,omitempty"` // points to the the raw patchfile -} - -func (x *PrDependencies_ContextualDependency_FilePatch) Reset() { - *x = PrDependencies_ContextualDependency_FilePatch{} - if protoimpl.UnsafeEnabled { - mi := &file_internal_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PrDependencies_ContextualDependency_FilePatch) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PrDependencies_ContextualDependency_FilePatch) ProtoMessage() {} - -func (x *PrDependencies_ContextualDependency_FilePatch) ProtoReflect() protoreflect.Message { - mi := &file_internal_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PrDependencies_ContextualDependency_FilePatch.ProtoReflect.Descriptor instead. -func (*PrDependencies_ContextualDependency_FilePatch) Descriptor() ([]byte, []int) { - return file_internal_proto_rawDescGZIP(), []int{1, 0, 0} -} - -func (x *PrDependencies_ContextualDependency_FilePatch) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *PrDependencies_ContextualDependency_FilePatch) GetPatchUrl() string { - if x != nil { - return x.PatchUrl - } - return "" -} - -type PrContents_File struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - FilePatchUrl string `protobuf:"bytes,2,opt,name=file_patch_url,json=filePatchUrl,proto3" json:"file_patch_url,omitempty"` - PatchLines []*PrContents_File_Line `protobuf:"bytes,3,rep,name=patch_lines,json=patchLines,proto3" json:"patch_lines,omitempty"` -} - -func (x *PrContents_File) Reset() { - *x = PrContents_File{} - if protoimpl.UnsafeEnabled { - mi := &file_internal_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PrContents_File) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PrContents_File) ProtoMessage() {} - -func (x *PrContents_File) ProtoReflect() protoreflect.Message { - mi := &file_internal_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PrContents_File.ProtoReflect.Descriptor instead. -func (*PrContents_File) Descriptor() ([]byte, []int) { - return file_internal_proto_rawDescGZIP(), []int{2, 0} -} - -func (x *PrContents_File) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *PrContents_File) GetFilePatchUrl() string { - if x != nil { - return x.FilePatchUrl - } - return "" -} - -func (x *PrContents_File) GetPatchLines() []*PrContents_File_Line { - if x != nil { - return x.PatchLines - } - return nil -} - -type PrContents_File_Line struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Deliberately left as an int32: a diff with more than 2^31 lines - // could lead to various problems while processing. - LineNumber int32 `protobuf:"varint,1,opt,name=line_number,json=lineNumber,proto3" json:"line_number,omitempty"` - Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` -} - -func (x *PrContents_File_Line) Reset() { - *x = PrContents_File_Line{} - if protoimpl.UnsafeEnabled { - mi := &file_internal_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PrContents_File_Line) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PrContents_File_Line) ProtoMessage() {} - -func (x *PrContents_File_Line) ProtoReflect() protoreflect.Message { - mi := &file_internal_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PrContents_File_Line.ProtoReflect.Descriptor instead. -func (*PrContents_File_Line) Descriptor() ([]byte, []int) { - return file_internal_proto_rawDescGZIP(), []int{2, 0, 0} -} - -func (x *PrContents_File_Line) GetLineNumber() int32 { - if x != nil { - return x.LineNumber - } - return 0 -} - -func (x *PrContents_File_Line) GetContent() string { - if x != nil { - return x.Content - } - return "" -} - var File_internal_proto protoreflect.FileDescriptor var file_internal_proto_rawDesc = []byte{ 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x12, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x1a, 0x16, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0x70, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, - 0x12, 0x34, 0x0a, 0x09, 0x65, 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x44, - 0x65, 0x70, 0x45, 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x09, 0x65, 0x63, 0x6f, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc7, 0x02, 0x0a, 0x0e, 0x50, 0x72, 0x44, 0x65, 0x70, 0x65, 0x6e, - 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x02, 0x70, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x02, 0x70, 0x72, 0x12, - 0x41, 0x0a, 0x04, 0x64, 0x65, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x50, 0x72, 0x44, 0x65, 0x70, 0x65, 0x6e, - 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, - 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x04, 0x64, 0x65, - 0x70, 0x73, 0x1a, 0xc9, 0x01, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, - 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x64, - 0x65, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x03, - 0x64, 0x65, 0x70, 0x12, 0x4b, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x37, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x50, 0x72, 0x44, - 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, - 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, - 0x1a, 0x3c, 0x0a, 0x09, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x74, 0x63, 0x68, 0x55, 0x72, 0x6c, 0x22, 0xac, - 0x02, 0x0a, 0x0a, 0x50, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, - 0x02, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x52, 0x02, 0x70, 0x72, 0x12, 0x2f, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, - 0x50, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, - 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0xc4, 0x01, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x63, - 0x68, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x69, 0x6c, - 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x55, 0x72, 0x6c, 0x12, 0x3f, 0x0a, 0x0b, 0x70, 0x61, 0x74, - 0x63, 0x68, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x50, 0x72, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x2e, 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x0a, - 0x70, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x1a, 0x41, 0x0a, 0x04, 0x4c, 0x69, - 0x6e, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2a, 0x72, 0x0a, - 0x0c, 0x44, 0x65, 0x70, 0x45, 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1d, 0x0a, - 0x19, 0x44, 0x45, 0x50, 0x5f, 0x45, 0x43, 0x4f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, - 0x44, 0x45, 0x50, 0x5f, 0x45, 0x43, 0x4f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x4e, 0x50, - 0x4d, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x45, 0x50, 0x5f, 0x45, 0x43, 0x4f, 0x53, 0x59, - 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x47, 0x4f, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x50, - 0x5f, 0x45, 0x43, 0x4f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x59, 0x50, 0x49, 0x10, - 0x03, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x6c, 0x6f, 0x6b, 0x2f, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_internal_proto_rawDescOnce sync.Once - file_internal_proto_rawDescData = file_internal_proto_rawDesc -) - -func file_internal_proto_rawDescGZIP() []byte { - file_internal_proto_rawDescOnce.Do(func() { - file_internal_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_proto_rawDescData) - }) - return file_internal_proto_rawDescData + 0x12, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x6c, 0x6f, + 0x6b, 0x2f, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -var file_internal_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_internal_proto_msgTypes = make([]protoimpl.MessageInfo, 7) -var file_internal_proto_goTypes = []any{ - (DepEcosystem)(0), // 0: internal.DepEcosystem - (*Dependency)(nil), // 1: internal.Dependency - (*PrDependencies)(nil), // 2: internal.PrDependencies - (*PrContents)(nil), // 3: internal.PrContents - (*PrDependencies_ContextualDependency)(nil), // 4: internal.PrDependencies.ContextualDependency - (*PrDependencies_ContextualDependency_FilePatch)(nil), // 5: internal.PrDependencies.ContextualDependency.FilePatch - (*PrContents_File)(nil), // 6: internal.PrContents.File - (*PrContents_File_Line)(nil), // 7: internal.PrContents.File.Line - (*v1.PullRequest)(nil), // 8: minder.v1.PullRequest -} +var file_internal_proto_goTypes = []any{} var file_internal_proto_depIdxs = []int32{ - 0, // 0: internal.Dependency.ecosystem:type_name -> internal.DepEcosystem - 8, // 1: internal.PrDependencies.pr:type_name -> minder.v1.PullRequest - 4, // 2: internal.PrDependencies.deps:type_name -> internal.PrDependencies.ContextualDependency - 8, // 3: internal.PrContents.pr:type_name -> minder.v1.PullRequest - 6, // 4: internal.PrContents.files:type_name -> internal.PrContents.File - 1, // 5: internal.PrDependencies.ContextualDependency.dep:type_name -> internal.Dependency - 5, // 6: internal.PrDependencies.ContextualDependency.file:type_name -> internal.PrDependencies.ContextualDependency.FilePatch - 7, // 7: internal.PrContents.File.patch_lines:type_name -> internal.PrContents.File.Line - 8, // [8:8] is the sub-list for method output_type - 8, // [8:8] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name } func init() { file_internal_proto_init() } @@ -605,106 +60,18 @@ func file_internal_proto_init() { if File_internal_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_internal_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Dependency); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_internal_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*PrDependencies); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_internal_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*PrContents); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_internal_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*PrDependencies_ContextualDependency); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_internal_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*PrDependencies_ContextualDependency_FilePatch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_internal_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*PrContents_File); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_internal_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*PrContents_File_Line); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_internal_proto_rawDesc, - NumEnums: 1, - NumMessages: 7, + NumEnums: 0, + NumMessages: 0, NumExtensions: 0, NumServices: 0, }, GoTypes: file_internal_proto_goTypes, DependencyIndexes: file_internal_proto_depIdxs, - EnumInfos: file_internal_proto_enumTypes, - MessageInfos: file_internal_proto_msgTypes, }.Build() File_internal_proto = out.File file_internal_proto_rawDesc = nil diff --git a/internal/proto/internal.proto b/internal/proto/internal.proto index 771858e7a9..1903430a31 100644 --- a/internal/proto/internal.proto +++ b/internal/proto/internal.proto @@ -18,53 +18,10 @@ syntax = "proto3"; // buf:lint:ignore PACKAGE_VERSION_SUFFIX package internal; -import "minder/v1/minder.proto"; - option go_package = "github.com/stacklok/minder/internal/proto"; -enum DepEcosystem { - DEP_ECOSYSTEM_UNSPECIFIED = 0; - DEP_ECOSYSTEM_NPM = 1; - DEP_ECOSYSTEM_GO = 2; - DEP_ECOSYSTEM_PYPI = 3; -} - -message Dependency { - DepEcosystem ecosystem = 1; - - string name = 2; - string version = 3; -} - -message PrDependencies { - message ContextualDependency { - message FilePatch { - string name = 1; // file changed, e.g. package-lock.json - string patch_url = 2; // points to the the raw patchfile - } - - Dependency dep = 1; - FilePatch file = 2; - } - - minder.v1.PullRequest pr = 1; - repeated ContextualDependency deps = 2; -} - -message PrContents { - message File { - string name = 1; - string file_patch_url = 2; - repeated Line patch_lines = 3; - - message Line { - // Deliberately left as an int32: a diff with more than 2^31 lines - // could lead to various problems while processing. - int32 line_number = 1; - string content = 2; - } - } - - minder.v1.PullRequest pr = 1; - repeated File files = 2; -} \ No newline at end of file +/* + * NOTE: Prefer Go structs over internal-only protobuf definitions unless + * there is a really strong case for using protobufs, e.g. interacting + * with a library which expects protobuf structs. + */ \ No newline at end of file diff --git a/internal/proto/pkg_ecosystems.go b/internal/proto/pkg_ecosystems.go deleted file mode 100644 index fe4f00b4e5..0000000000 --- a/internal/proto/pkg_ecosystems.go +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2023 Stacklok, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package proto - -// AsString returns the string representation of the DepEcosystem -func (ecosystem DepEcosystem) AsString() string { - switch ecosystem { - case DepEcosystem_DEP_ECOSYSTEM_NPM: - return "npm" - case DepEcosystem_DEP_ECOSYSTEM_GO: - return "Go" - case DepEcosystem_DEP_ECOSYSTEM_PYPI: - return "PyPI" - case DepEcosystem_DEP_ECOSYSTEM_UNSPECIFIED: - // this shouldn't happen - return "" - default: - return "" - } -} From 33ae09f416ec1204630b3b6172a7c40eeee8e8d5 Mon Sep 17 00:00:00 2001 From: Puerco Date: Fri, 12 Jul 2024 09:46:47 -0600 Subject: [PATCH 03/16] Wire new Release + SDLC Core Entities (#3839) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add release + core SDLC subjects to entities This commit adds 'release' plus some of the core subjects of the cd events spec as entities to the minder protos: ENTITY_RELEASE ENTITY_PIPELINE_RUN ENTITY_TASK_RUN ENTITY_BUILD Signed-off-by: Adolfo García Veytia (Puerco) * Proto: Add SDLC stubs This commit adds stub messages for the SDLC entities: Release PipelineRun TaskRun Build Signed-off-by: Adolfo García Veytia (Puerco) * Add SQL migrations for SDLC entities This commit adds up and down (although down is empty) migrations to add release and the core cd events subjects to the sql entities type. Signed-off-by: Adolfo García Veytia (Puerco) * SDLXC entities: Make gen (Run make gen) Signed-off-by: Adolfo García Veytia (Puerco) * Add SLDC entities to Profile This adds release and the core SLDX entity types to the profile functions Signed-off-by: Adolfo García Veytia (Puerco) * Add release+SLDC entities to controlplane This commit adds the release and SLDC entities to the control plane functions Signed-off-by: Adolfo García Veytia (Puerco) * Wire SDLC entities to engine This commit wires the SDLC entities to the engine functions and creates the With* functional options for the new types. Signed-off-by: Adolfo García Veytia (Puerco) * Handle SDLC ents telemetry with noops This commit adds NOOP cases to functions where the SDLC entities need to be implemented in the database or, where hardcoded entity types in functions prevent us from wiring up the values. Signed-off-by: Adolfo García Veytia (Puerco) * Handle SDLC entities in mindev * Add SDLC noops to history and exec aggregator Signed-off-by: Adolfo García Veytia (Puerco) --------- Signed-off-by: Adolfo García Veytia (Puerco) Co-authored-by: Radoslav Dimitrov --- cmd/dev/app/rule_type/rttst.go | 6 +- .../migrations/000074_sdlc_entities.down.sql | 13 + .../migrations/000074_sdlc_entities.up.sql | 22 + docs/docs/ref/proto.md | 32 + internal/controlplane/handlers_evalstatus.go | 11 +- internal/db/models.go | 4 + internal/eea/eea.go | 7 +- internal/engine/entities/entities.go | 16 + internal/engine/entities/entity_event.go | 76 + internal/engine/eval_status.go | 5 +- internal/engine/interfaces/interface.go | 4 + internal/history/service.go | 5 +- internal/logger/telemetry_store_watermill.go | 8 +- internal/profiles/service.go | 8 + internal/profiles/util.go | 20 + internal/profiles/validator.go | 4 + pkg/api/openapi/minder/v1/minder.swagger.json | 40 +- pkg/api/protobuf/go/minder/v1/entities.go | 20 +- pkg/api/protobuf/go/minder/v1/minder.pb.go | 5796 +++++++++-------- proto/minder/v1/minder.proto | 14 + 20 files changed, 3336 insertions(+), 2775 deletions(-) create mode 100644 database/migrations/000074_sdlc_entities.down.sql create mode 100644 database/migrations/000074_sdlc_entities.up.sql diff --git a/cmd/dev/app/rule_type/rttst.go b/cmd/dev/app/rule_type/rttst.go index f9d74ac67f..cd6fc14b54 100644 --- a/cmd/dev/app/rule_type/rttst.go +++ b/cmd/dev/app/rule_type/rttst.go @@ -287,8 +287,10 @@ func readEntityFromFile(fpath string, entType minderv1.Entity) (protoreflect.Pro out = &minderv1.Artifact{} case minderv1.Entity_ENTITY_PULL_REQUESTS: out = &minderv1.PullRequest{} - case minderv1.Entity_ENTITY_BUILD_ENVIRONMENTS: - return nil, fmt.Errorf("build environments not yet supported") + case minderv1.Entity_ENTITY_BUILD_ENVIRONMENTS, minderv1.Entity_ENTITY_RELEASE, + minderv1.Entity_ENTITY_PIPELINE_RUN, + minderv1.Entity_ENTITY_TASK_RUN, minderv1.Entity_ENTITY_BUILD: + return nil, fmt.Errorf("entity type not yet supported") case minderv1.Entity_ENTITY_UNSPECIFIED: return nil, fmt.Errorf("entity type unspecified") default: diff --git a/database/migrations/000074_sdlc_entities.down.sql b/database/migrations/000074_sdlc_entities.down.sql new file mode 100644 index 0000000000..ebf1a219a2 --- /dev/null +++ b/database/migrations/000074_sdlc_entities.down.sql @@ -0,0 +1,13 @@ +-- Copyright 2024 Stacklok, Inc +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. diff --git a/database/migrations/000074_sdlc_entities.up.sql b/database/migrations/000074_sdlc_entities.up.sql new file mode 100644 index 0000000000..7021f1b064 --- /dev/null +++ b/database/migrations/000074_sdlc_entities.up.sql @@ -0,0 +1,22 @@ +-- Copyright 2024 Stacklok, Inc +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +BEGIN TRANSACTION; + +ALTER TYPE entities ADD VALUE 'release'; +ALTER TYPE entities ADD VALUE 'pipeline_run'; +ALTER TYPE entities ADD VALUE 'task_run'; +ALTER TYPE entities ADD VALUE 'build'; + +COMMIT; diff --git a/docs/docs/ref/proto.md b/docs/docs/ref/proto.md index 093b303338..7be0a2cd56 100644 --- a/docs/docs/ref/proto.md +++ b/docs/docs/ref/proto.md @@ -321,6 +321,12 @@ and undefined so for the "let's not auto-register anything" case we'd just let t +Build + + + + + BuiltinType BuiltinType defines the builtin data evaluation. @@ -1711,6 +1717,12 @@ ListRuleTypesResponse is the response to list rule types. +PipelineRun + + + + + Profile Profile defines a profile that is user defined. @@ -1730,6 +1742,10 @@ DNS_STR = "[a-zA-Z0-9](?[-a-zA-Z0-9]{0,61}[a-zA-Z0-9])?" ($DNS_STR:)?$DNS_STR | | build_environment | Profile.Rule | repeated | | | artifact | Profile.Rule | repeated | | | pull_request | Profile.Rule | repeated | | +| release | Profile.Rule | repeated | | +| pipeline_run | Profile.Rule | repeated | | +| task_run | Profile.Rule | repeated | | +| build | Profile.Rule | repeated | | | selection | Profile.Selector | repeated | | | remediate | string | optional | whether and how to remediate (on,off,dry_run) this is optional and defaults to "off" | | alert | string | optional | whether and how to alert (on,off,dry_run) this is optional and defaults to "on" | @@ -1958,6 +1974,12 @@ RESTProviderConfig contains the configuration for the REST provider. +Release + +Stubs for the SDLC entities + + + RemoveRoleRequest @@ -2403,6 +2425,12 @@ Severity defines the severity of the rule. +TaskRun + + + + + UpdateProfileRequest @@ -2622,6 +2650,10 @@ Entity defines the entity that is supported by the provider. | ENTITY_BUILD_ENVIRONMENTS | 2 | | | ENTITY_ARTIFACTS | 3 | | | ENTITY_PULL_REQUESTS | 4 | | +| ENTITY_RELEASE | 5 | | +| ENTITY_PIPELINE_RUN | 6 | | +| ENTITY_TASK_RUN | 7 | | +| ENTITY_BUILD | 8 | | diff --git a/internal/controlplane/handlers_evalstatus.go b/internal/controlplane/handlers_evalstatus.go index 1e9e16c0f4..aa1aed5028 100644 --- a/internal/controlplane/handlers_evalstatus.go +++ b/internal/controlplane/handlers_evalstatus.go @@ -595,6 +595,14 @@ func dbEntityToEntity(dbEnt db.Entities) minderv1.Entity { return minderv1.Entity_ENTITY_REPOSITORIES case db.EntitiesBuildEnvironment: return minderv1.Entity_ENTITY_BUILD_ENVIRONMENTS + case db.EntitiesRelease: + return minderv1.Entity_ENTITY_RELEASE + case db.EntitiesPipelineRun: + return minderv1.Entity_ENTITY_PIPELINE_RUN + case db.EntitiesTaskRun: + return minderv1.Entity_ENTITY_TASK_RUN + case db.EntitiesBuild: + return minderv1.Entity_ENTITY_BUILD default: return minderv1.Entity_ENTITY_UNSPECIFIED } @@ -636,7 +644,8 @@ func getEntityName( row.RepoOwner.String, row.RepoName.String, ), nil - case db.EntitiesBuildEnvironment: + case db.EntitiesBuildEnvironment, db.EntitiesRelease, + db.EntitiesPipelineRun, db.EntitiesTaskRun, db.EntitiesBuild: return "", errors.New("invalid entity type") default: return "", errors.New("invalid entity type") diff --git a/internal/db/models.go b/internal/db/models.go index f0b99ed79e..a91ae7fcca 100644 --- a/internal/db/models.go +++ b/internal/db/models.go @@ -154,6 +154,10 @@ const ( EntitiesBuildEnvironment Entities = "build_environment" EntitiesArtifact Entities = "artifact" EntitiesPullRequest Entities = "pull_request" + EntitiesRelease Entities = "release" + EntitiesPipelineRun Entities = "pipeline_run" + EntitiesTaskRun Entities = "task_run" + EntitiesBuild Entities = "build" ) func (e *Entities) Scan(src interface{}) error { diff --git a/internal/eea/eea.go b/internal/eea/eea.go index 242492a89f..480a1a7d0d 100644 --- a/internal/eea/eea.go +++ b/internal/eea/eea.go @@ -302,10 +302,11 @@ func (e *EEA) buildEntityWrapper( return e.buildArtifactInfoWrapper(ctx, repoID, projID, artID) case db.EntitiesPullRequest: return e.buildPullRequestInfoWrapper(ctx, repoID, projID, prID) - case db.EntitiesBuildEnvironment: - return nil, fmt.Errorf("build environment entity not supported") + case db.EntitiesBuildEnvironment, db.EntitiesRelease, + db.EntitiesPipelineRun, db.EntitiesTaskRun, db.EntitiesBuild: + return nil, fmt.Errorf("entity type %q not yet supported", entity) default: - return nil, fmt.Errorf("unknown entity type: %s", entity) + return nil, fmt.Errorf("unknown entity type: %q", entity) } } diff --git a/internal/engine/entities/entities.go b/internal/engine/entities/entities.go index 162156b8e8..04a9b8909d 100644 --- a/internal/engine/entities/entities.go +++ b/internal/engine/entities/entities.go @@ -56,6 +56,14 @@ func EntityTypeFromDB(entity db.Entities) minderv1.Entity { return minderv1.Entity_ENTITY_ARTIFACTS case db.EntitiesPullRequest: return minderv1.Entity_ENTITY_PULL_REQUESTS + case db.EntitiesRelease: + return minderv1.Entity_ENTITY_RELEASE + case db.EntitiesPipelineRun: + return minderv1.Entity_ENTITY_PIPELINE_RUN + case db.EntitiesTaskRun: + return minderv1.Entity_ENTITY_TASK_RUN + case db.EntitiesBuild: + return minderv1.Entity_ENTITY_BUILD default: return minderv1.Entity_ENTITY_UNSPECIFIED } @@ -74,6 +82,14 @@ func EntityTypeToDB(entity minderv1.Entity) db.Entities { dbEnt = db.EntitiesArtifact case minderv1.Entity_ENTITY_PULL_REQUESTS: dbEnt = db.EntitiesPullRequest + case minderv1.Entity_ENTITY_RELEASE: + dbEnt = db.EntitiesRelease + case minderv1.Entity_ENTITY_PIPELINE_RUN: + dbEnt = db.EntitiesPipelineRun + case minderv1.Entity_ENTITY_TASK_RUN: + dbEnt = db.EntitiesTaskRun + case minderv1.Entity_ENTITY_BUILD: + dbEnt = db.EntitiesBuild case minderv1.Entity_ENTITY_UNSPECIFIED: // This shouldn't happen } diff --git a/internal/engine/entities/entity_event.go b/internal/engine/entities/entity_event.go index 08e3b8208a..ddb11aefb4 100644 --- a/internal/engine/entities/entity_event.go +++ b/internal/engine/entities/entity_event.go @@ -78,6 +78,14 @@ const ( ArtifactIDEventKey = "artifact_id" // PullRequestIDEventKey is the key for the pull request ID PullRequestIDEventKey = "pull_request_id" + // ReleaseIDEventKey is the key for the pull request ID + ReleaseIDEventKey = "release_id" + // PipelineRunIDEventKey is the key for a pipeline run + PipelineRunIDEventKey = "pipeline_run_id" + // TaskRunIDEventKey is the key for a task run + TaskRunIDEventKey = "task_run_id" + // BuildIDEventKey is the key for a build + BuildIDEventKey = "build_run_id" // ExecutionIDKey is the key for the execution ID. This is set when acquiring a lock. ExecutionIDKey = "execution_id" // ActionEventKey is the key for the action event @@ -129,6 +137,38 @@ func (eiw *EntityInfoWrapper) WithPullRequest(p *minderv1.PullRequest) *EntityIn return eiw } +// WithRelease sets a Release as the entity of the wrapper +func (eiw *EntityInfoWrapper) WithRelease(r *minderv1.Release) *EntityInfoWrapper { + eiw.Type = minderv1.Entity_ENTITY_RELEASE + eiw.Entity = r + + return eiw +} + +// WithPipelineRun sets a PipelineRun as the entity of the wrapper +func (eiw *EntityInfoWrapper) WithPipelineRun(plr *minderv1.PipelineRun) *EntityInfoWrapper { + eiw.Type = minderv1.Entity_ENTITY_PIPELINE_RUN + eiw.Entity = plr + + return eiw +} + +// WithTaskRun sets a TaskRun as the entity of the wrapper +func (eiw *EntityInfoWrapper) WithTaskRun(tr *minderv1.TaskRun) *EntityInfoWrapper { + eiw.Type = minderv1.Entity_ENTITY_TASK_RUN + eiw.Entity = tr + + return eiw +} + +// WithBuild sets a Build as the entity of the wrapper +func (eiw *EntityInfoWrapper) WithBuild(tr *minderv1.Build) *EntityInfoWrapper { + eiw.Type = minderv1.Entity_ENTITY_TASK_RUN + eiw.Entity = tr + + return eiw +} + // WithProjectID sets the project ID func (eiw *EntityInfoWrapper) WithProjectID(id uuid.UUID) *EntityInfoWrapper { eiw.ProjectID = id @@ -157,6 +197,34 @@ func (eiw *EntityInfoWrapper) WithPullRequestID(id uuid.UUID) *EntityInfoWrapper return eiw } +// WithReleaseID sets the release ID +func (eiw *EntityInfoWrapper) WithReleaseID(id uuid.UUID) *EntityInfoWrapper { + eiw.withID(ReleaseIDEventKey, id.String()) + + return eiw +} + +// WithPipelineRunID sets the pipeline run ID +func (eiw *EntityInfoWrapper) WithPipelineRunID(id uuid.UUID) *EntityInfoWrapper { + eiw.withID(PipelineRunIDEventKey, id.String()) + + return eiw +} + +// WithTaskRunID sets the pipeline run ID +func (eiw *EntityInfoWrapper) WithTaskRunID(id uuid.UUID) *EntityInfoWrapper { + eiw.withID(TaskRunIDEventKey, id.String()) + + return eiw +} + +// WithBuildID sets the pipeline run ID +func (eiw *EntityInfoWrapper) WithBuildID(id uuid.UUID) *EntityInfoWrapper { + eiw.withID(BuildIDEventKey, id.String()) + + return eiw +} + // WithExecutionID sets the execution ID func (eiw *EntityInfoWrapper) WithExecutionID(id uuid.UUID) *EntityInfoWrapper { eiw.ExecutionID = &id @@ -368,6 +436,14 @@ func pbEntityTypeToString(t minderv1.Entity) (string, error) { return VersionedArtifactEventEntityType, nil case minderv1.Entity_ENTITY_PULL_REQUESTS: return PullRequestEventEntityType, nil + case minderv1.Entity_ENTITY_RELEASE: + return "", fmt.Errorf("releases not yet supported") + case minderv1.Entity_ENTITY_PIPELINE_RUN: + return "", fmt.Errorf("pipeline runs not yet supported") + case minderv1.Entity_ENTITY_TASK_RUN: + return "", fmt.Errorf("task runs not yet supported") + case minderv1.Entity_ENTITY_BUILD: + return "", fmt.Errorf("builds not yet supported") case minderv1.Entity_ENTITY_BUILD_ENVIRONMENTS: return "", fmt.Errorf("build environments not yet supported") case minderv1.Entity_ENTITY_UNSPECIFIED: diff --git a/internal/engine/eval_status.go b/internal/engine/eval_status.go index d9cbf9ec76..789361a2cc 100644 --- a/internal/engine/eval_status.go +++ b/internal/engine/eval_status.go @@ -69,8 +69,9 @@ func (e *executor) createEvalStatusParams( entityID = params.RepoID case db.EntitiesPullRequest: entityID = params.PullRequestID - case db.EntitiesBuildEnvironment: - return nil, fmt.Errorf("build environment entity type not supported") + case db.EntitiesBuildEnvironment, db.EntitiesRelease, db.EntitiesPipelineRun, + db.EntitiesTaskRun, db.EntitiesBuild: + return nil, fmt.Errorf("entity type not yet supported") } ruleTypeName := sql.NullString{ diff --git a/internal/engine/interfaces/interface.go b/internal/engine/interfaces/interface.go index 563c6db884..c370cd8dad 100644 --- a/internal/engine/interfaces/interface.go +++ b/internal/engine/interfaces/interface.go @@ -137,6 +137,10 @@ type EvalStatusParams struct { ArtifactID uuid.NullUUID PullRequestID uuid.NullUUID ProjectID uuid.UUID + ReleaseID uuid.UUID + PipelineRunID uuid.UUID + TaskRunID uuid.UUID + BuildID uuid.UUID EntityType db.Entities RuleTypeID uuid.UUID EvalStatusFromDb *db.ListRuleEvaluationsByProfileIdRow diff --git a/internal/history/service.go b/internal/history/service.go index 5a48e86a1f..e90c2d10b6 100644 --- a/internal/history/service.go +++ b/internal/history/service.go @@ -191,9 +191,10 @@ func paramsFromEntity( params.PullRequestID = nullableEntityID case db.EntitiesArtifact: params.ArtifactID = nullableEntityID - case db.EntitiesBuildEnvironment: + case db.EntitiesBuildEnvironment, db.EntitiesRelease, + db.EntitiesPipelineRun, db.EntitiesTaskRun, db.EntitiesBuild: default: - return nil, fmt.Errorf("unknown entity %s", entityType) + return nil, fmt.Errorf("unknown entity %q", entityType) } return ¶ms, nil } diff --git a/internal/logger/telemetry_store_watermill.go b/internal/logger/telemetry_store_watermill.go index 816c91bfa5..c9c6ff43d4 100644 --- a/internal/logger/telemetry_store_watermill.go +++ b/internal/logger/telemetry_store_watermill.go @@ -94,7 +94,10 @@ func newTelemetryStoreFromEntity(inf *entities.EntityInfoWrapper) (*TelemetrySto ts.Artifact = ent case minderv1.Entity_ENTITY_PULL_REQUESTS: ts.PullRequest = ent - case minderv1.Entity_ENTITY_BUILD_ENVIRONMENTS: + case minderv1.Entity_ENTITY_BUILD_ENVIRONMENTS, + minderv1.Entity_ENTITY_RELEASE, minderv1.Entity_ENTITY_PIPELINE_RUN, + minderv1.Entity_ENTITY_TASK_RUN, minderv1.Entity_ENTITY_BUILD: + // Noop, see https://github.com/stacklok/minder/issues/3838 case minderv1.Entity_ENTITY_UNSPECIFIED: // Do nothing } @@ -121,6 +124,9 @@ func getEntityID(inf *entities.EntityInfoWrapper) (uuid.UUID, error) { ent = artID.UUID case minderv1.Entity_ENTITY_PULL_REQUESTS: ent = prID.UUID + case minderv1.Entity_ENTITY_RELEASE, minderv1.Entity_ENTITY_PIPELINE_RUN, + minderv1.Entity_ENTITY_TASK_RUN, minderv1.Entity_ENTITY_BUILD: + // Noop, see https://github.com/stacklok/minder/issues/3838 } return ent, nil diff --git a/internal/profiles/service.go b/internal/profiles/service.go index ccc60b7be1..93dd0665d1 100644 --- a/internal/profiles/service.go +++ b/internal/profiles/service.go @@ -158,6 +158,10 @@ func (p *profileService) CreateProfile( minderv1.Entity_ENTITY_ARTIFACTS: profile.GetArtifact(), minderv1.Entity_ENTITY_BUILD_ENVIRONMENTS: profile.GetBuildEnvironment(), minderv1.Entity_ENTITY_PULL_REQUESTS: profile.GetPullRequest(), + minderv1.Entity_ENTITY_RELEASE: profile.GetRelease(), + minderv1.Entity_ENTITY_PIPELINE_RUN: profile.GetPipelineRun(), + minderv1.Entity_ENTITY_TASK_RUN: profile.GetTaskRun(), + minderv1.Entity_ENTITY_BUILD: profile.GetBuild(), } { if err := createProfileRulesForEntity(ctx, ent, &newProfile, qtx, entRules, rulesInProf); err != nil { return nil, err @@ -259,6 +263,10 @@ func (p *profileService) UpdateProfile( minderv1.Entity_ENTITY_ARTIFACTS: profile.GetArtifact(), minderv1.Entity_ENTITY_BUILD_ENVIRONMENTS: profile.GetBuildEnvironment(), minderv1.Entity_ENTITY_PULL_REQUESTS: profile.GetPullRequest(), + minderv1.Entity_ENTITY_RELEASE: profile.GetRelease(), + minderv1.Entity_ENTITY_PIPELINE_RUN: profile.GetPipelineRun(), + minderv1.Entity_ENTITY_TASK_RUN: profile.GetTaskRun(), + minderv1.Entity_ENTITY_BUILD: profile.GetBuild(), } { if err = updateProfileRulesForEntity(ctx, ent, &updatedProfile, qtx, entRules, rules); err != nil { return nil, err diff --git a/internal/profiles/util.go b/internal/profiles/util.go index 6eb336d26c..d08437e4df 100644 --- a/internal/profiles/util.go +++ b/internal/profiles/util.go @@ -109,6 +109,14 @@ func GetRulesForEntity(p *pb.Profile, entity pb.Entity) ([]*pb.Profile_Rule, err return p.Artifact, nil case pb.Entity_ENTITY_PULL_REQUESTS: return p.PullRequest, nil + case pb.Entity_ENTITY_RELEASE: + return p.Release, nil + case pb.Entity_ENTITY_PIPELINE_RUN: + return p.PipelineRun, nil + case pb.Entity_ENTITY_TASK_RUN: + return p.TaskRun, nil + case pb.Entity_ENTITY_BUILD: + return p.Build, nil case pb.Entity_ENTITY_UNSPECIFIED: return nil, fmt.Errorf("entity type unspecified") default: @@ -123,6 +131,10 @@ func TraverseRuleTypesForEntities(p *pb.Profile, fn func(pb.Entity, *pb.Profile_ pb.Entity_ENTITY_BUILD_ENVIRONMENTS: p.BuildEnvironment, pb.Entity_ENTITY_ARTIFACTS: p.Artifact, pb.Entity_ENTITY_PULL_REQUESTS: p.PullRequest, + pb.Entity_ENTITY_RELEASE: p.Release, + pb.Entity_ENTITY_PIPELINE_RUN: p.PipelineRun, + pb.Entity_ENTITY_TASK_RUN: p.TaskRun, + pb.Entity_ENTITY_BUILD: p.Build, } for entity, rules := range pairs { @@ -322,6 +334,14 @@ func rowInfoToProfileMap( profile.Artifact = ruleset case pb.Entity_ENTITY_PULL_REQUESTS: profile.PullRequest = ruleset + case pb.Entity_ENTITY_RELEASE: + profile.Release = ruleset + case pb.Entity_ENTITY_PIPELINE_RUN: + profile.PipelineRun = ruleset + case pb.Entity_ENTITY_TASK_RUN: + profile.TaskRun = ruleset + case pb.Entity_ENTITY_BUILD: + profile.Build = ruleset case pb.Entity_ENTITY_UNSPECIFIED: // This shouldn't happen log.Printf("unknown entity found in database: %s", entity) diff --git a/internal/profiles/validator.go b/internal/profiles/validator.go index 9de2cd19c7..a8e11b6c43 100644 --- a/internal/profiles/validator.go +++ b/internal/profiles/validator.go @@ -166,6 +166,10 @@ func validateRuleNames(profile *minderv1.Profile) error { minderv1.Entity_ENTITY_ARTIFACTS: profile.GetArtifact(), minderv1.Entity_ENTITY_BUILD_ENVIRONMENTS: profile.GetBuildEnvironment(), minderv1.Entity_ENTITY_PULL_REQUESTS: profile.GetPullRequest(), + minderv1.Entity_ENTITY_RELEASE: profile.GetRelease(), + minderv1.Entity_ENTITY_PIPELINE_RUN: profile.GetPipelineRun(), + minderv1.Entity_ENTITY_TASK_RUN: profile.GetTaskRun(), + minderv1.Entity_ENTITY_BUILD: profile.GetBuild(), } { if err := validateRuleNamesForEntity(ent, entRules); err != nil { return err diff --git a/pkg/api/openapi/minder/v1/minder.swagger.json b/pkg/api/openapi/minder/v1/minder.swagger.json index 711f1afbc1..76f39105ab 100644 --- a/pkg/api/openapi/minder/v1/minder.swagger.json +++ b/pkg/api/openapi/minder/v1/minder.swagger.json @@ -1050,7 +1050,11 @@ "ENTITY_REPOSITORIES", "ENTITY_BUILD_ENVIRONMENTS", "ENTITY_ARTIFACTS", - "ENTITY_PULL_REQUESTS" + "ENTITY_PULL_REQUESTS", + "ENTITY_RELEASE", + "ENTITY_PIPELINE_RUN", + "ENTITY_TASK_RUN", + "ENTITY_BUILD" ], "default": "ENTITY_UNSPECIFIED" }, @@ -3573,7 +3577,11 @@ "ENTITY_REPOSITORIES", "ENTITY_BUILD_ENVIRONMENTS", "ENTITY_ARTIFACTS", - "ENTITY_PULL_REQUESTS" + "ENTITY_PULL_REQUESTS", + "ENTITY_RELEASE", + "ENTITY_PIPELINE_RUN", + "ENTITY_TASK_RUN", + "ENTITY_BUILD" ], "default": "ENTITY_UNSPECIFIED", "description": "Entity defines the entity that is supported by the provider." @@ -4259,6 +4267,34 @@ "$ref": "#/definitions/ProfileRule" } }, + "release": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ProfileRule" + } + }, + "pipelineRun": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ProfileRule" + } + }, + "taskRun": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ProfileRule" + } + }, + "build": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ProfileRule" + } + }, "selection": { "type": "array", "items": { diff --git a/pkg/api/protobuf/go/minder/v1/entities.go b/pkg/api/protobuf/go/minder/v1/entities.go index f8046f7db5..fb72fc71a6 100644 --- a/pkg/api/protobuf/go/minder/v1/entities.go +++ b/pkg/api/protobuf/go/minder/v1/entities.go @@ -29,6 +29,14 @@ const ( ArtifactEntity EntityType = "artifact" // PullRequestEntity is a pull request entity PullRequestEntity EntityType = "pull_request" + // ReleaseEntity is an entity abstracting a release + ReleaseEntity EntityType = "release" + // PipelineRunEntity is an entity abstracting a pipeline run (eg a workflow) + PipelineRunEntity EntityType = "pipeline_run" + // TaskRunEntity is an entity abstracting a task run (eg a step) + TaskRunEntity EntityType = "task_run" + // BuildEntity is an entity that represents a software build + BuildEntity EntityType = "build" // UnknownEntity is an explicitly unknown entity UnknownEntity EntityType = "unknown" ) @@ -45,6 +53,10 @@ var ( BuildEnvironmentEntity: Entity_ENTITY_BUILD_ENVIRONMENTS, ArtifactEntity: Entity_ENTITY_ARTIFACTS, PullRequestEntity: Entity_ENTITY_PULL_REQUESTS, + ReleaseEntity: Entity_ENTITY_RELEASE, + PipelineRunEntity: Entity_ENTITY_PIPELINE_RUN, + TaskRunEntity: Entity_ENTITY_TASK_RUN, + BuildEntity: Entity_ENTITY_BUILD, UnknownEntity: Entity_ENTITY_UNSPECIFIED, } pbToEntityType = map[Entity]EntityType{ @@ -52,6 +64,10 @@ var ( Entity_ENTITY_BUILD_ENVIRONMENTS: BuildEnvironmentEntity, Entity_ENTITY_ARTIFACTS: ArtifactEntity, Entity_ENTITY_PULL_REQUESTS: PullRequestEntity, + Entity_ENTITY_RELEASE: ReleaseEntity, + Entity_ENTITY_PIPELINE_RUN: PipelineRunEntity, + Entity_ENTITY_TASK_RUN: TaskRunEntity, + Entity_ENTITY_BUILD: BuildEntity, Entity_ENTITY_UNSPECIFIED: UnknownEntity, } ) @@ -60,7 +76,9 @@ var ( func (entity Entity) IsValid() bool { switch entity { case Entity_ENTITY_REPOSITORIES, Entity_ENTITY_BUILD_ENVIRONMENTS, - Entity_ENTITY_ARTIFACTS, Entity_ENTITY_PULL_REQUESTS: + Entity_ENTITY_ARTIFACTS, Entity_ENTITY_PULL_REQUESTS, + Entity_ENTITY_RELEASE, Entity_ENTITY_PIPELINE_RUN, + Entity_ENTITY_TASK_RUN, Entity_ENTITY_BUILD: return true case Entity_ENTITY_UNSPECIFIED: return false diff --git a/pkg/api/protobuf/go/minder/v1/minder.pb.go b/pkg/api/protobuf/go/minder/v1/minder.pb.go index 5027c75c92..698e53404c 100644 --- a/pkg/api/protobuf/go/minder/v1/minder.pb.go +++ b/pkg/api/protobuf/go/minder/v1/minder.pb.go @@ -304,6 +304,10 @@ const ( Entity_ENTITY_BUILD_ENVIRONMENTS Entity = 2 Entity_ENTITY_ARTIFACTS Entity = 3 Entity_ENTITY_PULL_REQUESTS Entity = 4 + Entity_ENTITY_RELEASE Entity = 5 + Entity_ENTITY_PIPELINE_RUN Entity = 6 + Entity_ENTITY_TASK_RUN Entity = 7 + Entity_ENTITY_BUILD Entity = 8 ) // Enum value maps for Entity. @@ -314,6 +318,10 @@ var ( 2: "ENTITY_BUILD_ENVIRONMENTS", 3: "ENTITY_ARTIFACTS", 4: "ENTITY_PULL_REQUESTS", + 5: "ENTITY_RELEASE", + 6: "ENTITY_PIPELINE_RUN", + 7: "ENTITY_TASK_RUN", + 8: "ENTITY_BUILD", } Entity_value = map[string]int32{ "ENTITY_UNSPECIFIED": 0, @@ -321,6 +329,10 @@ var ( "ENTITY_BUILD_ENVIRONMENTS": 2, "ENTITY_ARTIFACTS": 3, "ENTITY_PULL_REQUESTS": 4, + "ENTITY_RELEASE": 5, + "ENTITY_PIPELINE_RUN": 6, + "ENTITY_TASK_RUN": 7, + "ENTITY_BUILD": 8, } ) @@ -646,7 +658,7 @@ func (x Severity_Value) Number() protoreflect.EnumNumber { // Deprecated: Use Severity_Value.Descriptor instead. func (Severity_Value) EnumDescriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{102, 0} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{106, 0} } type RpcOptions struct { @@ -1461,6 +1473,159 @@ func (x *PullRequest) GetContext() *Context { return nil } +// Stubs for the SDLC entities +type Release struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Release) Reset() { + *x = Release{} + if protoimpl.UnsafeEnabled { + mi := &file_minder_v1_minder_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Release) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Release) ProtoMessage() {} + +func (x *Release) ProtoReflect() protoreflect.Message { + mi := &file_minder_v1_minder_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Release.ProtoReflect.Descriptor instead. +func (*Release) Descriptor() ([]byte, []int) { + return file_minder_v1_minder_proto_rawDescGZIP(), []int{12} +} + +type PipelineRun struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PipelineRun) Reset() { + *x = PipelineRun{} + if protoimpl.UnsafeEnabled { + mi := &file_minder_v1_minder_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PipelineRun) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PipelineRun) ProtoMessage() {} + +func (x *PipelineRun) ProtoReflect() protoreflect.Message { + mi := &file_minder_v1_minder_proto_msgTypes[13] + 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 PipelineRun.ProtoReflect.Descriptor instead. +func (*PipelineRun) Descriptor() ([]byte, []int) { + return file_minder_v1_minder_proto_rawDescGZIP(), []int{13} +} + +type TaskRun struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *TaskRun) Reset() { + *x = TaskRun{} + if protoimpl.UnsafeEnabled { + mi := &file_minder_v1_minder_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TaskRun) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TaskRun) ProtoMessage() {} + +func (x *TaskRun) ProtoReflect() protoreflect.Message { + mi := &file_minder_v1_minder_proto_msgTypes[14] + 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 TaskRun.ProtoReflect.Descriptor instead. +func (*TaskRun) Descriptor() ([]byte, []int) { + return file_minder_v1_minder_proto_rawDescGZIP(), []int{14} +} + +type Build struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Build) Reset() { + *x = Build{} + if protoimpl.UnsafeEnabled { + mi := &file_minder_v1_minder_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Build) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Build) ProtoMessage() {} + +func (x *Build) ProtoReflect() protoreflect.Message { + mi := &file_minder_v1_minder_proto_msgTypes[15] + 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 Build.ProtoReflect.Descriptor instead. +func (*Build) Descriptor() ([]byte, []int) { + return file_minder_v1_minder_proto_rawDescGZIP(), []int{15} +} + type GetInviteDetailsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1473,7 +1638,7 @@ type GetInviteDetailsRequest struct { func (x *GetInviteDetailsRequest) Reset() { *x = GetInviteDetailsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[12] + mi := &file_minder_v1_minder_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1486,7 +1651,7 @@ func (x *GetInviteDetailsRequest) String() string { func (*GetInviteDetailsRequest) ProtoMessage() {} func (x *GetInviteDetailsRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[12] + mi := &file_minder_v1_minder_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1499,7 +1664,7 @@ func (x *GetInviteDetailsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInviteDetailsRequest.ProtoReflect.Descriptor instead. func (*GetInviteDetailsRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{12} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{16} } func (x *GetInviteDetailsRequest) GetCode() string { @@ -1527,7 +1692,7 @@ type GetInviteDetailsResponse struct { func (x *GetInviteDetailsResponse) Reset() { *x = GetInviteDetailsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[13] + mi := &file_minder_v1_minder_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1540,7 +1705,7 @@ func (x *GetInviteDetailsResponse) String() string { func (*GetInviteDetailsResponse) ProtoMessage() {} func (x *GetInviteDetailsResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[13] + mi := &file_minder_v1_minder_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1553,7 +1718,7 @@ func (x *GetInviteDetailsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInviteDetailsResponse.ProtoReflect.Descriptor instead. func (*GetInviteDetailsResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{13} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{17} } func (x *GetInviteDetailsResponse) GetProjectDisplay() string { @@ -1593,7 +1758,7 @@ type CheckHealthRequest struct { func (x *CheckHealthRequest) Reset() { *x = CheckHealthRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[14] + mi := &file_minder_v1_minder_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1606,7 +1771,7 @@ func (x *CheckHealthRequest) String() string { func (*CheckHealthRequest) ProtoMessage() {} func (x *CheckHealthRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[14] + mi := &file_minder_v1_minder_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1619,7 +1784,7 @@ func (x *CheckHealthRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckHealthRequest.ProtoReflect.Descriptor instead. func (*CheckHealthRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{14} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{18} } type CheckHealthResponse struct { @@ -1633,7 +1798,7 @@ type CheckHealthResponse struct { func (x *CheckHealthResponse) Reset() { *x = CheckHealthResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[15] + mi := &file_minder_v1_minder_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1646,7 +1811,7 @@ func (x *CheckHealthResponse) String() string { func (*CheckHealthResponse) ProtoMessage() {} func (x *CheckHealthResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[15] + mi := &file_minder_v1_minder_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1659,7 +1824,7 @@ func (x *CheckHealthResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckHealthResponse.ProtoReflect.Descriptor instead. func (*CheckHealthResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{15} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{19} } func (x *CheckHealthResponse) GetStatus() string { @@ -1687,7 +1852,7 @@ type GetAuthorizationURLRequest struct { func (x *GetAuthorizationURLRequest) Reset() { *x = GetAuthorizationURLRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[16] + mi := &file_minder_v1_minder_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1700,7 +1865,7 @@ func (x *GetAuthorizationURLRequest) String() string { func (*GetAuthorizationURLRequest) ProtoMessage() {} func (x *GetAuthorizationURLRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[16] + mi := &file_minder_v1_minder_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1713,7 +1878,7 @@ func (x *GetAuthorizationURLRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAuthorizationURLRequest.ProtoReflect.Descriptor instead. func (*GetAuthorizationURLRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{16} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{20} } func (x *GetAuthorizationURLRequest) GetCli() bool { @@ -1777,7 +1942,7 @@ type GetAuthorizationURLResponse struct { func (x *GetAuthorizationURLResponse) Reset() { *x = GetAuthorizationURLResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[17] + mi := &file_minder_v1_minder_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1790,7 +1955,7 @@ func (x *GetAuthorizationURLResponse) String() string { func (*GetAuthorizationURLResponse) ProtoMessage() {} func (x *GetAuthorizationURLResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[17] + mi := &file_minder_v1_minder_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1803,7 +1968,7 @@ func (x *GetAuthorizationURLResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAuthorizationURLResponse.ProtoReflect.Descriptor instead. func (*GetAuthorizationURLResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{17} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{21} } func (x *GetAuthorizationURLResponse) GetUrl() string { @@ -1835,7 +2000,7 @@ type StoreProviderTokenRequest struct { func (x *StoreProviderTokenRequest) Reset() { *x = StoreProviderTokenRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[18] + mi := &file_minder_v1_minder_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1848,7 +2013,7 @@ func (x *StoreProviderTokenRequest) String() string { func (*StoreProviderTokenRequest) ProtoMessage() {} func (x *StoreProviderTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[18] + mi := &file_minder_v1_minder_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1861,7 +2026,7 @@ func (x *StoreProviderTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StoreProviderTokenRequest.ProtoReflect.Descriptor instead. func (*StoreProviderTokenRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{18} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{22} } // Deprecated: Marked as deprecated in minder/v1/minder.proto. @@ -1902,7 +2067,7 @@ type StoreProviderTokenResponse struct { func (x *StoreProviderTokenResponse) Reset() { *x = StoreProviderTokenResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[19] + mi := &file_minder_v1_minder_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1915,7 +2080,7 @@ func (x *StoreProviderTokenResponse) String() string { func (*StoreProviderTokenResponse) ProtoMessage() {} func (x *StoreProviderTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[19] + mi := &file_minder_v1_minder_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1928,7 +2093,7 @@ func (x *StoreProviderTokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StoreProviderTokenResponse.ProtoReflect.Descriptor instead. func (*StoreProviderTokenResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{19} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{23} } // Project API Objects @@ -1951,7 +2116,7 @@ type Project struct { func (x *Project) Reset() { *x = Project{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[20] + mi := &file_minder_v1_minder_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1964,7 +2129,7 @@ func (x *Project) String() string { func (*Project) ProtoMessage() {} func (x *Project) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[20] + mi := &file_minder_v1_minder_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1977,7 +2142,7 @@ func (x *Project) ProtoReflect() protoreflect.Message { // Deprecated: Use Project.ProtoReflect.Descriptor instead. func (*Project) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{20} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{24} } func (x *Project) GetProjectId() string { @@ -2035,7 +2200,7 @@ type ListRemoteRepositoriesFromProviderRequest struct { func (x *ListRemoteRepositoriesFromProviderRequest) Reset() { *x = ListRemoteRepositoriesFromProviderRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[21] + mi := &file_minder_v1_minder_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2048,7 +2213,7 @@ func (x *ListRemoteRepositoriesFromProviderRequest) String() string { func (*ListRemoteRepositoriesFromProviderRequest) ProtoMessage() {} func (x *ListRemoteRepositoriesFromProviderRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[21] + mi := &file_minder_v1_minder_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2061,7 +2226,7 @@ func (x *ListRemoteRepositoriesFromProviderRequest) ProtoReflect() protoreflect. // Deprecated: Use ListRemoteRepositoriesFromProviderRequest.ProtoReflect.Descriptor instead. func (*ListRemoteRepositoriesFromProviderRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{21} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{25} } // Deprecated: Marked as deprecated in minder/v1/minder.proto. @@ -2090,7 +2255,7 @@ type ListRemoteRepositoriesFromProviderResponse struct { func (x *ListRemoteRepositoriesFromProviderResponse) Reset() { *x = ListRemoteRepositoriesFromProviderResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[22] + mi := &file_minder_v1_minder_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2103,7 +2268,7 @@ func (x *ListRemoteRepositoriesFromProviderResponse) String() string { func (*ListRemoteRepositoriesFromProviderResponse) ProtoMessage() {} func (x *ListRemoteRepositoriesFromProviderResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[22] + mi := &file_minder_v1_minder_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2116,7 +2281,7 @@ func (x *ListRemoteRepositoriesFromProviderResponse) ProtoReflect() protoreflect // Deprecated: Use ListRemoteRepositoriesFromProviderResponse.ProtoReflect.Descriptor instead. func (*ListRemoteRepositoriesFromProviderResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{22} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{26} } func (x *ListRemoteRepositoriesFromProviderResponse) GetResults() []*UpstreamRepositoryRef { @@ -2145,7 +2310,7 @@ type UpstreamRepositoryRef struct { func (x *UpstreamRepositoryRef) Reset() { *x = UpstreamRepositoryRef{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[23] + mi := &file_minder_v1_minder_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2158,7 +2323,7 @@ func (x *UpstreamRepositoryRef) String() string { func (*UpstreamRepositoryRef) ProtoMessage() {} func (x *UpstreamRepositoryRef) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[23] + mi := &file_minder_v1_minder_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2171,7 +2336,7 @@ func (x *UpstreamRepositoryRef) ProtoReflect() protoreflect.Message { // Deprecated: Use UpstreamRepositoryRef.ProtoReflect.Descriptor instead. func (*UpstreamRepositoryRef) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{23} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{27} } func (x *UpstreamRepositoryRef) GetOwner() string { @@ -2237,7 +2402,7 @@ type Repository struct { func (x *Repository) Reset() { *x = Repository{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[24] + mi := &file_minder_v1_minder_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2250,7 +2415,7 @@ func (x *Repository) String() string { func (*Repository) ProtoMessage() {} func (x *Repository) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[24] + mi := &file_minder_v1_minder_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2263,7 +2428,7 @@ func (x *Repository) ProtoReflect() protoreflect.Message { // Deprecated: Use Repository.ProtoReflect.Descriptor instead. func (*Repository) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{24} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{28} } func (x *Repository) GetId() string { @@ -2406,7 +2571,7 @@ type RegisterRepositoryRequest struct { func (x *RegisterRepositoryRequest) Reset() { *x = RegisterRepositoryRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[25] + mi := &file_minder_v1_minder_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2419,7 +2584,7 @@ func (x *RegisterRepositoryRequest) String() string { func (*RegisterRepositoryRequest) ProtoMessage() {} func (x *RegisterRepositoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[25] + mi := &file_minder_v1_minder_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2432,7 +2597,7 @@ func (x *RegisterRepositoryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RegisterRepositoryRequest.ProtoReflect.Descriptor instead. func (*RegisterRepositoryRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{25} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{29} } // Deprecated: Marked as deprecated in minder/v1/minder.proto. @@ -2469,7 +2634,7 @@ type RegisterRepoResult struct { func (x *RegisterRepoResult) Reset() { *x = RegisterRepoResult{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[26] + mi := &file_minder_v1_minder_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2482,7 +2647,7 @@ func (x *RegisterRepoResult) String() string { func (*RegisterRepoResult) ProtoMessage() {} func (x *RegisterRepoResult) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[26] + mi := &file_minder_v1_minder_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2495,7 +2660,7 @@ func (x *RegisterRepoResult) ProtoReflect() protoreflect.Message { // Deprecated: Use RegisterRepoResult.ProtoReflect.Descriptor instead. func (*RegisterRepoResult) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{26} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{30} } func (x *RegisterRepoResult) GetRepository() *Repository { @@ -2523,7 +2688,7 @@ type RegisterRepositoryResponse struct { func (x *RegisterRepositoryResponse) Reset() { *x = RegisterRepositoryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[27] + mi := &file_minder_v1_minder_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2536,7 +2701,7 @@ func (x *RegisterRepositoryResponse) String() string { func (*RegisterRepositoryResponse) ProtoMessage() {} func (x *RegisterRepositoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[27] + mi := &file_minder_v1_minder_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2549,7 +2714,7 @@ func (x *RegisterRepositoryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RegisterRepositoryResponse.ProtoReflect.Descriptor instead. func (*RegisterRepositoryResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{27} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{31} } func (x *RegisterRepositoryResponse) GetResult() *RegisterRepoResult { @@ -2571,7 +2736,7 @@ type GetRepositoryByIdRequest struct { func (x *GetRepositoryByIdRequest) Reset() { *x = GetRepositoryByIdRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[28] + mi := &file_minder_v1_minder_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2584,7 +2749,7 @@ func (x *GetRepositoryByIdRequest) String() string { func (*GetRepositoryByIdRequest) ProtoMessage() {} func (x *GetRepositoryByIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[28] + mi := &file_minder_v1_minder_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2597,7 +2762,7 @@ func (x *GetRepositoryByIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepositoryByIdRequest.ProtoReflect.Descriptor instead. func (*GetRepositoryByIdRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{28} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{32} } func (x *GetRepositoryByIdRequest) GetRepositoryId() string { @@ -2625,7 +2790,7 @@ type GetRepositoryByIdResponse struct { func (x *GetRepositoryByIdResponse) Reset() { *x = GetRepositoryByIdResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[29] + mi := &file_minder_v1_minder_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2638,7 +2803,7 @@ func (x *GetRepositoryByIdResponse) String() string { func (*GetRepositoryByIdResponse) ProtoMessage() {} func (x *GetRepositoryByIdResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[29] + mi := &file_minder_v1_minder_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2651,7 +2816,7 @@ func (x *GetRepositoryByIdResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepositoryByIdResponse.ProtoReflect.Descriptor instead. func (*GetRepositoryByIdResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{29} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{33} } func (x *GetRepositoryByIdResponse) GetRepository() *Repository { @@ -2673,7 +2838,7 @@ type DeleteRepositoryByIdRequest struct { func (x *DeleteRepositoryByIdRequest) Reset() { *x = DeleteRepositoryByIdRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[30] + mi := &file_minder_v1_minder_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2686,7 +2851,7 @@ func (x *DeleteRepositoryByIdRequest) String() string { func (*DeleteRepositoryByIdRequest) ProtoMessage() {} func (x *DeleteRepositoryByIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[30] + mi := &file_minder_v1_minder_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2699,7 +2864,7 @@ func (x *DeleteRepositoryByIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRepositoryByIdRequest.ProtoReflect.Descriptor instead. func (*DeleteRepositoryByIdRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{30} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{34} } func (x *DeleteRepositoryByIdRequest) GetRepositoryId() string { @@ -2727,7 +2892,7 @@ type DeleteRepositoryByIdResponse struct { func (x *DeleteRepositoryByIdResponse) Reset() { *x = DeleteRepositoryByIdResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[31] + mi := &file_minder_v1_minder_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2740,7 +2905,7 @@ func (x *DeleteRepositoryByIdResponse) String() string { func (*DeleteRepositoryByIdResponse) ProtoMessage() {} func (x *DeleteRepositoryByIdResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[31] + mi := &file_minder_v1_minder_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2753,7 +2918,7 @@ func (x *DeleteRepositoryByIdResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRepositoryByIdResponse.ProtoReflect.Descriptor instead. func (*DeleteRepositoryByIdResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{31} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{35} } func (x *DeleteRepositoryByIdResponse) GetRepositoryId() string { @@ -2777,7 +2942,7 @@ type GetRepositoryByNameRequest struct { func (x *GetRepositoryByNameRequest) Reset() { *x = GetRepositoryByNameRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[32] + mi := &file_minder_v1_minder_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2790,7 +2955,7 @@ func (x *GetRepositoryByNameRequest) String() string { func (*GetRepositoryByNameRequest) ProtoMessage() {} func (x *GetRepositoryByNameRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[32] + mi := &file_minder_v1_minder_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2803,7 +2968,7 @@ func (x *GetRepositoryByNameRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepositoryByNameRequest.ProtoReflect.Descriptor instead. func (*GetRepositoryByNameRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{32} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{36} } // Deprecated: Marked as deprecated in minder/v1/minder.proto. @@ -2839,7 +3004,7 @@ type GetRepositoryByNameResponse struct { func (x *GetRepositoryByNameResponse) Reset() { *x = GetRepositoryByNameResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[33] + mi := &file_minder_v1_minder_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2852,7 +3017,7 @@ func (x *GetRepositoryByNameResponse) String() string { func (*GetRepositoryByNameResponse) ProtoMessage() {} func (x *GetRepositoryByNameResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[33] + mi := &file_minder_v1_minder_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2865,7 +3030,7 @@ func (x *GetRepositoryByNameResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepositoryByNameResponse.ProtoReflect.Descriptor instead. func (*GetRepositoryByNameResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{33} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{37} } func (x *GetRepositoryByNameResponse) GetRepository() *Repository { @@ -2889,7 +3054,7 @@ type DeleteRepositoryByNameRequest struct { func (x *DeleteRepositoryByNameRequest) Reset() { *x = DeleteRepositoryByNameRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[34] + mi := &file_minder_v1_minder_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2902,7 +3067,7 @@ func (x *DeleteRepositoryByNameRequest) String() string { func (*DeleteRepositoryByNameRequest) ProtoMessage() {} func (x *DeleteRepositoryByNameRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[34] + mi := &file_minder_v1_minder_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2915,7 +3080,7 @@ func (x *DeleteRepositoryByNameRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRepositoryByNameRequest.ProtoReflect.Descriptor instead. func (*DeleteRepositoryByNameRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{34} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{38} } // Deprecated: Marked as deprecated in minder/v1/minder.proto. @@ -2951,7 +3116,7 @@ type DeleteRepositoryByNameResponse struct { func (x *DeleteRepositoryByNameResponse) Reset() { *x = DeleteRepositoryByNameResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[35] + mi := &file_minder_v1_minder_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2964,7 +3129,7 @@ func (x *DeleteRepositoryByNameResponse) String() string { func (*DeleteRepositoryByNameResponse) ProtoMessage() {} func (x *DeleteRepositoryByNameResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[35] + mi := &file_minder_v1_minder_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2977,7 +3142,7 @@ func (x *DeleteRepositoryByNameResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRepositoryByNameResponse.ProtoReflect.Descriptor instead. func (*DeleteRepositoryByNameResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{35} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{39} } func (x *DeleteRepositoryByNameResponse) GetName() string { @@ -3002,7 +3167,7 @@ type ListRepositoriesRequest struct { func (x *ListRepositoriesRequest) Reset() { *x = ListRepositoriesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[36] + mi := &file_minder_v1_minder_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3015,7 +3180,7 @@ func (x *ListRepositoriesRequest) String() string { func (*ListRepositoriesRequest) ProtoMessage() {} func (x *ListRepositoriesRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[36] + mi := &file_minder_v1_minder_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3028,7 +3193,7 @@ func (x *ListRepositoriesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRepositoriesRequest.ProtoReflect.Descriptor instead. func (*ListRepositoriesRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{36} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{40} } // Deprecated: Marked as deprecated in minder/v1/minder.proto. @@ -3073,7 +3238,7 @@ type ListRepositoriesResponse struct { func (x *ListRepositoriesResponse) Reset() { *x = ListRepositoriesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[37] + mi := &file_minder_v1_minder_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3086,7 +3251,7 @@ func (x *ListRepositoriesResponse) String() string { func (*ListRepositoriesResponse) ProtoMessage() {} func (x *ListRepositoriesResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[37] + mi := &file_minder_v1_minder_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3099,7 +3264,7 @@ func (x *ListRepositoriesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRepositoriesResponse.ProtoReflect.Descriptor instead. func (*ListRepositoriesResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{37} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{41} } func (x *ListRepositoriesResponse) GetResults() []*Repository { @@ -3128,7 +3293,7 @@ type ReconcileEntityRegistrationRequest struct { func (x *ReconcileEntityRegistrationRequest) Reset() { *x = ReconcileEntityRegistrationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[38] + mi := &file_minder_v1_minder_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3141,7 +3306,7 @@ func (x *ReconcileEntityRegistrationRequest) String() string { func (*ReconcileEntityRegistrationRequest) ProtoMessage() {} func (x *ReconcileEntityRegistrationRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[38] + mi := &file_minder_v1_minder_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3154,7 +3319,7 @@ func (x *ReconcileEntityRegistrationRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ReconcileEntityRegistrationRequest.ProtoReflect.Descriptor instead. func (*ReconcileEntityRegistrationRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{38} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{42} } func (x *ReconcileEntityRegistrationRequest) GetContext() *Context { @@ -3180,7 +3345,7 @@ type ReconcileEntityRegistrationResponse struct { func (x *ReconcileEntityRegistrationResponse) Reset() { *x = ReconcileEntityRegistrationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[39] + mi := &file_minder_v1_minder_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3193,7 +3358,7 @@ func (x *ReconcileEntityRegistrationResponse) String() string { func (*ReconcileEntityRegistrationResponse) ProtoMessage() {} func (x *ReconcileEntityRegistrationResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[39] + mi := &file_minder_v1_minder_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3206,7 +3371,7 @@ func (x *ReconcileEntityRegistrationResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use ReconcileEntityRegistrationResponse.ProtoReflect.Descriptor instead. func (*ReconcileEntityRegistrationResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{39} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{43} } type VerifyProviderTokenFromRequest struct { @@ -3223,7 +3388,7 @@ type VerifyProviderTokenFromRequest struct { func (x *VerifyProviderTokenFromRequest) Reset() { *x = VerifyProviderTokenFromRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[40] + mi := &file_minder_v1_minder_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3236,7 +3401,7 @@ func (x *VerifyProviderTokenFromRequest) String() string { func (*VerifyProviderTokenFromRequest) ProtoMessage() {} func (x *VerifyProviderTokenFromRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[40] + mi := &file_minder_v1_minder_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3249,7 +3414,7 @@ func (x *VerifyProviderTokenFromRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyProviderTokenFromRequest.ProtoReflect.Descriptor instead. func (*VerifyProviderTokenFromRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{40} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{44} } // Deprecated: Marked as deprecated in minder/v1/minder.proto. @@ -3285,7 +3450,7 @@ type VerifyProviderTokenFromResponse struct { func (x *VerifyProviderTokenFromResponse) Reset() { *x = VerifyProviderTokenFromResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[41] + mi := &file_minder_v1_minder_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3298,7 +3463,7 @@ func (x *VerifyProviderTokenFromResponse) String() string { func (*VerifyProviderTokenFromResponse) ProtoMessage() {} func (x *VerifyProviderTokenFromResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[41] + mi := &file_minder_v1_minder_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3311,7 +3476,7 @@ func (x *VerifyProviderTokenFromResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyProviderTokenFromResponse.ProtoReflect.Descriptor instead. func (*VerifyProviderTokenFromResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{41} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{45} } func (x *VerifyProviderTokenFromResponse) GetStatus() string { @@ -3335,7 +3500,7 @@ type VerifyProviderCredentialRequest struct { func (x *VerifyProviderCredentialRequest) Reset() { *x = VerifyProviderCredentialRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[42] + mi := &file_minder_v1_minder_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3348,7 +3513,7 @@ func (x *VerifyProviderCredentialRequest) String() string { func (*VerifyProviderCredentialRequest) ProtoMessage() {} func (x *VerifyProviderCredentialRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[42] + mi := &file_minder_v1_minder_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3361,7 +3526,7 @@ func (x *VerifyProviderCredentialRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyProviderCredentialRequest.ProtoReflect.Descriptor instead. func (*VerifyProviderCredentialRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{42} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{46} } func (x *VerifyProviderCredentialRequest) GetContext() *Context { @@ -3392,7 +3557,7 @@ type VerifyProviderCredentialResponse struct { func (x *VerifyProviderCredentialResponse) Reset() { *x = VerifyProviderCredentialResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[43] + mi := &file_minder_v1_minder_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3405,7 +3570,7 @@ func (x *VerifyProviderCredentialResponse) String() string { func (*VerifyProviderCredentialResponse) ProtoMessage() {} func (x *VerifyProviderCredentialResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[43] + mi := &file_minder_v1_minder_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3418,7 +3583,7 @@ func (x *VerifyProviderCredentialResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyProviderCredentialResponse.ProtoReflect.Descriptor instead. func (*VerifyProviderCredentialResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{43} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{47} } func (x *VerifyProviderCredentialResponse) GetCreated() bool { @@ -3447,7 +3612,7 @@ type BranchProtection struct { func (x *BranchProtection) Reset() { *x = BranchProtection{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[44] + mi := &file_minder_v1_minder_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3460,7 +3625,7 @@ func (x *BranchProtection) String() string { func (*BranchProtection) ProtoMessage() {} func (x *BranchProtection) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[44] + mi := &file_minder_v1_minder_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3473,7 +3638,7 @@ func (x *BranchProtection) ProtoReflect() protoreflect.Message { // Deprecated: Use BranchProtection.ProtoReflect.Descriptor instead. func (*BranchProtection) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{44} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{48} } func (x *BranchProtection) GetBranch() string { @@ -3500,7 +3665,7 @@ type CreateUserRequest struct { func (x *CreateUserRequest) Reset() { *x = CreateUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[45] + mi := &file_minder_v1_minder_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3513,7 +3678,7 @@ func (x *CreateUserRequest) String() string { func (*CreateUserRequest) ProtoMessage() {} func (x *CreateUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[45] + mi := &file_minder_v1_minder_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3526,7 +3691,7 @@ func (x *CreateUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateUserRequest.ProtoReflect.Descriptor instead. func (*CreateUserRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{45} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{49} } type CreateUserResponse struct { @@ -3549,7 +3714,7 @@ type CreateUserResponse struct { func (x *CreateUserResponse) Reset() { *x = CreateUserResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[46] + mi := &file_minder_v1_minder_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3562,7 +3727,7 @@ func (x *CreateUserResponse) String() string { func (*CreateUserResponse) ProtoMessage() {} func (x *CreateUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[46] + mi := &file_minder_v1_minder_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3575,7 +3740,7 @@ func (x *CreateUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateUserResponse.ProtoReflect.Descriptor instead. func (*CreateUserResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{46} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{50} } func (x *CreateUserResponse) GetId() int32 { @@ -3645,7 +3810,7 @@ type DeleteUserRequest struct { func (x *DeleteUserRequest) Reset() { *x = DeleteUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[47] + mi := &file_minder_v1_minder_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3658,7 +3823,7 @@ func (x *DeleteUserRequest) String() string { func (*DeleteUserRequest) ProtoMessage() {} func (x *DeleteUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[47] + mi := &file_minder_v1_minder_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3671,7 +3836,7 @@ func (x *DeleteUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteUserRequest.ProtoReflect.Descriptor instead. func (*DeleteUserRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{47} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{51} } type DeleteUserResponse struct { @@ -3683,7 +3848,7 @@ type DeleteUserResponse struct { func (x *DeleteUserResponse) Reset() { *x = DeleteUserResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[48] + mi := &file_minder_v1_minder_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3696,7 +3861,7 @@ func (x *DeleteUserResponse) String() string { func (*DeleteUserResponse) ProtoMessage() {} func (x *DeleteUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[48] + mi := &file_minder_v1_minder_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3709,7 +3874,7 @@ func (x *DeleteUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteUserResponse.ProtoReflect.Descriptor instead. func (*DeleteUserResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{48} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{52} } // user record to be returned @@ -3727,7 +3892,7 @@ type UserRecord struct { func (x *UserRecord) Reset() { *x = UserRecord{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[49] + mi := &file_minder_v1_minder_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3740,7 +3905,7 @@ func (x *UserRecord) String() string { func (*UserRecord) ProtoMessage() {} func (x *UserRecord) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[49] + mi := &file_minder_v1_minder_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3753,7 +3918,7 @@ func (x *UserRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use UserRecord.ProtoReflect.Descriptor instead. func (*UserRecord) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{49} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{53} } func (x *UserRecord) GetId() int32 { @@ -3797,7 +3962,7 @@ type ProjectRole struct { func (x *ProjectRole) Reset() { *x = ProjectRole{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[50] + mi := &file_minder_v1_minder_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3810,7 +3975,7 @@ func (x *ProjectRole) String() string { func (*ProjectRole) ProtoMessage() {} func (x *ProjectRole) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[50] + mi := &file_minder_v1_minder_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3823,7 +3988,7 @@ func (x *ProjectRole) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectRole.ProtoReflect.Descriptor instead. func (*ProjectRole) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{50} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{54} } func (x *ProjectRole) GetRole() *Role { @@ -3850,7 +4015,7 @@ type GetUserRequest struct { func (x *GetUserRequest) Reset() { *x = GetUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[51] + mi := &file_minder_v1_minder_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3863,7 +4028,7 @@ func (x *GetUserRequest) String() string { func (*GetUserRequest) ProtoMessage() {} func (x *GetUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[51] + mi := &file_minder_v1_minder_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3876,7 +4041,7 @@ func (x *GetUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserRequest.ProtoReflect.Descriptor instead. func (*GetUserRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{51} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{55} } type GetUserResponse struct { @@ -3895,7 +4060,7 @@ type GetUserResponse struct { func (x *GetUserResponse) Reset() { *x = GetUserResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[52] + mi := &file_minder_v1_minder_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3908,7 +4073,7 @@ func (x *GetUserResponse) String() string { func (*GetUserResponse) ProtoMessage() {} func (x *GetUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[52] + mi := &file_minder_v1_minder_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3921,7 +4086,7 @@ func (x *GetUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserResponse.ProtoReflect.Descriptor instead. func (*GetUserResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{52} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{56} } func (x *GetUserResponse) GetUser() *UserRecord { @@ -3958,7 +4123,7 @@ type CreateProfileRequest struct { func (x *CreateProfileRequest) Reset() { *x = CreateProfileRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[53] + mi := &file_minder_v1_minder_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3971,7 +4136,7 @@ func (x *CreateProfileRequest) String() string { func (*CreateProfileRequest) ProtoMessage() {} func (x *CreateProfileRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[53] + mi := &file_minder_v1_minder_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3984,7 +4149,7 @@ func (x *CreateProfileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateProfileRequest.ProtoReflect.Descriptor instead. func (*CreateProfileRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{53} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{57} } func (x *CreateProfileRequest) GetProfile() *Profile { @@ -4005,7 +4170,7 @@ type CreateProfileResponse struct { func (x *CreateProfileResponse) Reset() { *x = CreateProfileResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[54] + mi := &file_minder_v1_minder_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4018,7 +4183,7 @@ func (x *CreateProfileResponse) String() string { func (*CreateProfileResponse) ProtoMessage() {} func (x *CreateProfileResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[54] + mi := &file_minder_v1_minder_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4031,7 +4196,7 @@ func (x *CreateProfileResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateProfileResponse.ProtoReflect.Descriptor instead. func (*CreateProfileResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{54} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{58} } func (x *CreateProfileResponse) GetProfile() *Profile { @@ -4052,7 +4217,7 @@ type UpdateProfileRequest struct { func (x *UpdateProfileRequest) Reset() { *x = UpdateProfileRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[55] + mi := &file_minder_v1_minder_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4065,7 +4230,7 @@ func (x *UpdateProfileRequest) String() string { func (*UpdateProfileRequest) ProtoMessage() {} func (x *UpdateProfileRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[55] + mi := &file_minder_v1_minder_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4078,7 +4243,7 @@ func (x *UpdateProfileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProfileRequest.ProtoReflect.Descriptor instead. func (*UpdateProfileRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{55} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{59} } func (x *UpdateProfileRequest) GetProfile() *Profile { @@ -4099,7 +4264,7 @@ type UpdateProfileResponse struct { func (x *UpdateProfileResponse) Reset() { *x = UpdateProfileResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[56] + mi := &file_minder_v1_minder_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4112,7 +4277,7 @@ func (x *UpdateProfileResponse) String() string { func (*UpdateProfileResponse) ProtoMessage() {} func (x *UpdateProfileResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[56] + mi := &file_minder_v1_minder_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4125,7 +4290,7 @@ func (x *UpdateProfileResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProfileResponse.ProtoReflect.Descriptor instead. func (*UpdateProfileResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{56} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{60} } func (x *UpdateProfileResponse) GetProfile() *Profile { @@ -4157,7 +4322,7 @@ type PatchProfileRequest struct { func (x *PatchProfileRequest) Reset() { *x = PatchProfileRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[57] + mi := &file_minder_v1_minder_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4170,7 +4335,7 @@ func (x *PatchProfileRequest) String() string { func (*PatchProfileRequest) ProtoMessage() {} func (x *PatchProfileRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[57] + mi := &file_minder_v1_minder_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4183,7 +4348,7 @@ func (x *PatchProfileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PatchProfileRequest.ProtoReflect.Descriptor instead. func (*PatchProfileRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{57} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{61} } func (x *PatchProfileRequest) GetContext() *Context { @@ -4225,7 +4390,7 @@ type PatchProfileResponse struct { func (x *PatchProfileResponse) Reset() { *x = PatchProfileResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[58] + mi := &file_minder_v1_minder_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4238,7 +4403,7 @@ func (x *PatchProfileResponse) String() string { func (*PatchProfileResponse) ProtoMessage() {} func (x *PatchProfileResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[58] + mi := &file_minder_v1_minder_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4251,7 +4416,7 @@ func (x *PatchProfileResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PatchProfileResponse.ProtoReflect.Descriptor instead. func (*PatchProfileResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{58} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{62} } func (x *PatchProfileResponse) GetProfile() *Profile { @@ -4275,7 +4440,7 @@ type DeleteProfileRequest struct { func (x *DeleteProfileRequest) Reset() { *x = DeleteProfileRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[59] + mi := &file_minder_v1_minder_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4288,7 +4453,7 @@ func (x *DeleteProfileRequest) String() string { func (*DeleteProfileRequest) ProtoMessage() {} func (x *DeleteProfileRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[59] + mi := &file_minder_v1_minder_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4301,7 +4466,7 @@ func (x *DeleteProfileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProfileRequest.ProtoReflect.Descriptor instead. func (*DeleteProfileRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{59} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{63} } func (x *DeleteProfileRequest) GetContext() *Context { @@ -4327,7 +4492,7 @@ type DeleteProfileResponse struct { func (x *DeleteProfileResponse) Reset() { *x = DeleteProfileResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[60] + mi := &file_minder_v1_minder_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4340,7 +4505,7 @@ func (x *DeleteProfileResponse) String() string { func (*DeleteProfileResponse) ProtoMessage() {} func (x *DeleteProfileResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[60] + mi := &file_minder_v1_minder_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4353,7 +4518,7 @@ func (x *DeleteProfileResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProfileResponse.ProtoReflect.Descriptor instead. func (*DeleteProfileResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{60} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{64} } // list profiles @@ -4375,7 +4540,7 @@ type ListProfilesRequest struct { func (x *ListProfilesRequest) Reset() { *x = ListProfilesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[61] + mi := &file_minder_v1_minder_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4388,7 +4553,7 @@ func (x *ListProfilesRequest) String() string { func (*ListProfilesRequest) ProtoMessage() {} func (x *ListProfilesRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[61] + mi := &file_minder_v1_minder_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4401,7 +4566,7 @@ func (x *ListProfilesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListProfilesRequest.ProtoReflect.Descriptor instead. func (*ListProfilesRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{61} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{65} } func (x *ListProfilesRequest) GetContext() *Context { @@ -4429,7 +4594,7 @@ type ListProfilesResponse struct { func (x *ListProfilesResponse) Reset() { *x = ListProfilesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[62] + mi := &file_minder_v1_minder_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4442,7 +4607,7 @@ func (x *ListProfilesResponse) String() string { func (*ListProfilesResponse) ProtoMessage() {} func (x *ListProfilesResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[62] + mi := &file_minder_v1_minder_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4455,7 +4620,7 @@ func (x *ListProfilesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListProfilesResponse.ProtoReflect.Descriptor instead. func (*ListProfilesResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{62} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{66} } func (x *ListProfilesResponse) GetProfiles() []*Profile { @@ -4480,7 +4645,7 @@ type GetProfileByIdRequest struct { func (x *GetProfileByIdRequest) Reset() { *x = GetProfileByIdRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[63] + mi := &file_minder_v1_minder_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4493,7 +4658,7 @@ func (x *GetProfileByIdRequest) String() string { func (*GetProfileByIdRequest) ProtoMessage() {} func (x *GetProfileByIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[63] + mi := &file_minder_v1_minder_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4506,7 +4671,7 @@ func (x *GetProfileByIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProfileByIdRequest.ProtoReflect.Descriptor instead. func (*GetProfileByIdRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{63} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{67} } func (x *GetProfileByIdRequest) GetContext() *Context { @@ -4534,7 +4699,7 @@ type GetProfileByIdResponse struct { func (x *GetProfileByIdResponse) Reset() { *x = GetProfileByIdResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[64] + mi := &file_minder_v1_minder_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4547,7 +4712,7 @@ func (x *GetProfileByIdResponse) String() string { func (*GetProfileByIdResponse) ProtoMessage() {} func (x *GetProfileByIdResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[64] + mi := &file_minder_v1_minder_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4560,7 +4725,7 @@ func (x *GetProfileByIdResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProfileByIdResponse.ProtoReflect.Descriptor instead. func (*GetProfileByIdResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{64} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{68} } func (x *GetProfileByIdResponse) GetProfile() *Profile { @@ -4591,7 +4756,7 @@ type ProfileStatus struct { func (x *ProfileStatus) Reset() { *x = ProfileStatus{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[65] + mi := &file_minder_v1_minder_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4604,7 +4769,7 @@ func (x *ProfileStatus) String() string { func (*ProfileStatus) ProtoMessage() {} func (x *ProfileStatus) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[65] + mi := &file_minder_v1_minder_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4617,7 +4782,7 @@ func (x *ProfileStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use ProfileStatus.ProtoReflect.Descriptor instead. func (*ProfileStatus) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{65} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{69} } func (x *ProfileStatus) GetProfileId() string { @@ -4674,7 +4839,7 @@ type EvalResultAlert struct { func (x *EvalResultAlert) Reset() { *x = EvalResultAlert{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[66] + mi := &file_minder_v1_minder_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4687,7 +4852,7 @@ func (x *EvalResultAlert) String() string { func (*EvalResultAlert) ProtoMessage() {} func (x *EvalResultAlert) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[66] + mi := &file_minder_v1_minder_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4700,7 +4865,7 @@ func (x *EvalResultAlert) ProtoReflect() protoreflect.Message { // Deprecated: Use EvalResultAlert.ProtoReflect.Descriptor instead. func (*EvalResultAlert) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{66} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{70} } func (x *EvalResultAlert) GetStatus() string { @@ -4782,7 +4947,7 @@ type RuleEvaluationStatus struct { func (x *RuleEvaluationStatus) Reset() { *x = RuleEvaluationStatus{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[67] + mi := &file_minder_v1_minder_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4795,7 +4960,7 @@ func (x *RuleEvaluationStatus) String() string { func (*RuleEvaluationStatus) ProtoMessage() {} func (x *RuleEvaluationStatus) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[67] + mi := &file_minder_v1_minder_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4808,7 +4973,7 @@ func (x *RuleEvaluationStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use RuleEvaluationStatus.ProtoReflect.Descriptor instead. func (*RuleEvaluationStatus) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{67} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{71} } func (x *RuleEvaluationStatus) GetProfileId() string { @@ -4961,7 +5126,7 @@ type EntityTypedId struct { func (x *EntityTypedId) Reset() { *x = EntityTypedId{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[68] + mi := &file_minder_v1_minder_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4974,7 +5139,7 @@ func (x *EntityTypedId) String() string { func (*EntityTypedId) ProtoMessage() {} func (x *EntityTypedId) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[68] + mi := &file_minder_v1_minder_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4987,7 +5152,7 @@ func (x *EntityTypedId) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityTypedId.ProtoReflect.Descriptor instead. func (*EntityTypedId) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{68} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{72} } func (x *EntityTypedId) GetType() Entity { @@ -5026,7 +5191,7 @@ type GetProfileStatusByNameRequest struct { func (x *GetProfileStatusByNameRequest) Reset() { *x = GetProfileStatusByNameRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[69] + mi := &file_minder_v1_minder_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5039,7 +5204,7 @@ func (x *GetProfileStatusByNameRequest) String() string { func (*GetProfileStatusByNameRequest) ProtoMessage() {} func (x *GetProfileStatusByNameRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[69] + mi := &file_minder_v1_minder_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5052,7 +5217,7 @@ func (x *GetProfileStatusByNameRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProfileStatusByNameRequest.ProtoReflect.Descriptor instead. func (*GetProfileStatusByNameRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{69} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{73} } func (x *GetProfileStatusByNameRequest) GetContext() *Context { @@ -5119,7 +5284,7 @@ type GetProfileStatusByNameResponse struct { func (x *GetProfileStatusByNameResponse) Reset() { *x = GetProfileStatusByNameResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[70] + mi := &file_minder_v1_minder_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5132,7 +5297,7 @@ func (x *GetProfileStatusByNameResponse) String() string { func (*GetProfileStatusByNameResponse) ProtoMessage() {} func (x *GetProfileStatusByNameResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[70] + mi := &file_minder_v1_minder_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5145,7 +5310,7 @@ func (x *GetProfileStatusByNameResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProfileStatusByNameResponse.ProtoReflect.Descriptor instead. func (*GetProfileStatusByNameResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{70} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{74} } func (x *GetProfileStatusByNameResponse) GetProfileStatus() *ProfileStatus { @@ -5174,7 +5339,7 @@ type GetProfileStatusByProjectRequest struct { func (x *GetProfileStatusByProjectRequest) Reset() { *x = GetProfileStatusByProjectRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[71] + mi := &file_minder_v1_minder_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5187,7 +5352,7 @@ func (x *GetProfileStatusByProjectRequest) String() string { func (*GetProfileStatusByProjectRequest) ProtoMessage() {} func (x *GetProfileStatusByProjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[71] + mi := &file_minder_v1_minder_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5200,7 +5365,7 @@ func (x *GetProfileStatusByProjectRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProfileStatusByProjectRequest.ProtoReflect.Descriptor instead. func (*GetProfileStatusByProjectRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{71} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{75} } func (x *GetProfileStatusByProjectRequest) GetContext() *Context { @@ -5222,7 +5387,7 @@ type GetProfileStatusByProjectResponse struct { func (x *GetProfileStatusByProjectResponse) Reset() { *x = GetProfileStatusByProjectResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[72] + mi := &file_minder_v1_minder_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5235,7 +5400,7 @@ func (x *GetProfileStatusByProjectResponse) String() string { func (*GetProfileStatusByProjectResponse) ProtoMessage() {} func (x *GetProfileStatusByProjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[72] + mi := &file_minder_v1_minder_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5248,7 +5413,7 @@ func (x *GetProfileStatusByProjectResponse) ProtoReflect() protoreflect.Message // Deprecated: Use GetProfileStatusByProjectResponse.ProtoReflect.Descriptor instead. func (*GetProfileStatusByProjectResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{72} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{76} } func (x *GetProfileStatusByProjectResponse) GetProfileStatus() []*ProfileStatus { @@ -5269,7 +5434,7 @@ type EntityAutoRegistrationConfig struct { func (x *EntityAutoRegistrationConfig) Reset() { *x = EntityAutoRegistrationConfig{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[73] + mi := &file_minder_v1_minder_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5282,7 +5447,7 @@ func (x *EntityAutoRegistrationConfig) String() string { func (*EntityAutoRegistrationConfig) ProtoMessage() {} func (x *EntityAutoRegistrationConfig) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[73] + mi := &file_minder_v1_minder_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5295,7 +5460,7 @@ func (x *EntityAutoRegistrationConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityAutoRegistrationConfig.ProtoReflect.Descriptor instead. func (*EntityAutoRegistrationConfig) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{73} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{77} } func (x *EntityAutoRegistrationConfig) GetEnabled() bool { @@ -5320,7 +5485,7 @@ type AutoRegistration struct { func (x *AutoRegistration) Reset() { *x = AutoRegistration{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[74] + mi := &file_minder_v1_minder_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5333,7 +5498,7 @@ func (x *AutoRegistration) String() string { func (*AutoRegistration) ProtoMessage() {} func (x *AutoRegistration) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[74] + mi := &file_minder_v1_minder_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5346,7 +5511,7 @@ func (x *AutoRegistration) ProtoReflect() protoreflect.Message { // Deprecated: Use AutoRegistration.ProtoReflect.Descriptor instead. func (*AutoRegistration) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{74} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{78} } func (x *AutoRegistration) GetEntities() map[string]*EntityAutoRegistrationConfig { @@ -5369,7 +5534,7 @@ type ProviderConfig struct { func (x *ProviderConfig) Reset() { *x = ProviderConfig{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[75] + mi := &file_minder_v1_minder_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5382,7 +5547,7 @@ func (x *ProviderConfig) String() string { func (*ProviderConfig) ProtoMessage() {} func (x *ProviderConfig) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[75] + mi := &file_minder_v1_minder_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5395,7 +5560,7 @@ func (x *ProviderConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ProviderConfig.ProtoReflect.Descriptor instead. func (*ProviderConfig) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{75} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{79} } func (x *ProviderConfig) GetAutoRegistration() *AutoRegistration { @@ -5418,7 +5583,7 @@ type RESTProviderConfig struct { func (x *RESTProviderConfig) Reset() { *x = RESTProviderConfig{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[76] + mi := &file_minder_v1_minder_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5431,7 +5596,7 @@ func (x *RESTProviderConfig) String() string { func (*RESTProviderConfig) ProtoMessage() {} func (x *RESTProviderConfig) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[76] + mi := &file_minder_v1_minder_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5444,7 +5609,7 @@ func (x *RESTProviderConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use RESTProviderConfig.ProtoReflect.Descriptor instead. func (*RESTProviderConfig) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{76} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{80} } func (x *RESTProviderConfig) GetBaseUrl() string { @@ -5473,7 +5638,7 @@ type GitHubProviderConfig struct { func (x *GitHubProviderConfig) Reset() { *x = GitHubProviderConfig{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[77] + mi := &file_minder_v1_minder_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5486,7 +5651,7 @@ func (x *GitHubProviderConfig) String() string { func (*GitHubProviderConfig) ProtoMessage() {} func (x *GitHubProviderConfig) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[77] + mi := &file_minder_v1_minder_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5499,7 +5664,7 @@ func (x *GitHubProviderConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use GitHubProviderConfig.ProtoReflect.Descriptor instead. func (*GitHubProviderConfig) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{77} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{81} } func (x *GitHubProviderConfig) GetEndpoint() string { @@ -5522,7 +5687,7 @@ type GitHubAppProviderConfig struct { func (x *GitHubAppProviderConfig) Reset() { *x = GitHubAppProviderConfig{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[78] + mi := &file_minder_v1_minder_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5535,7 +5700,7 @@ func (x *GitHubAppProviderConfig) String() string { func (*GitHubAppProviderConfig) ProtoMessage() {} func (x *GitHubAppProviderConfig) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[78] + mi := &file_minder_v1_minder_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5548,7 +5713,7 @@ func (x *GitHubAppProviderConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use GitHubAppProviderConfig.ProtoReflect.Descriptor instead. func (*GitHubAppProviderConfig) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{78} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{82} } func (x *GitHubAppProviderConfig) GetEndpoint() string { @@ -5573,7 +5738,7 @@ type DockerHubProviderConfig struct { func (x *DockerHubProviderConfig) Reset() { *x = DockerHubProviderConfig{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[79] + mi := &file_minder_v1_minder_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5586,7 +5751,7 @@ func (x *DockerHubProviderConfig) String() string { func (*DockerHubProviderConfig) ProtoMessage() {} func (x *DockerHubProviderConfig) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[79] + mi := &file_minder_v1_minder_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5599,7 +5764,7 @@ func (x *DockerHubProviderConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use DockerHubProviderConfig.ProtoReflect.Descriptor instead. func (*DockerHubProviderConfig) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{79} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{83} } func (x *DockerHubProviderConfig) GetNamespace() string { @@ -5624,7 +5789,7 @@ type GHCRProviderConfig struct { func (x *GHCRProviderConfig) Reset() { *x = GHCRProviderConfig{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[80] + mi := &file_minder_v1_minder_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5637,7 +5802,7 @@ func (x *GHCRProviderConfig) String() string { func (*GHCRProviderConfig) ProtoMessage() {} func (x *GHCRProviderConfig) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[80] + mi := &file_minder_v1_minder_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5650,7 +5815,7 @@ func (x *GHCRProviderConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use GHCRProviderConfig.ProtoReflect.Descriptor instead. func (*GHCRProviderConfig) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{80} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{84} } func (x *GHCRProviderConfig) GetNamespace() string { @@ -5677,7 +5842,7 @@ type Context struct { func (x *Context) Reset() { *x = Context{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[81] + mi := &file_minder_v1_minder_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5690,7 +5855,7 @@ func (x *Context) String() string { func (*Context) ProtoMessage() {} func (x *Context) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[81] + mi := &file_minder_v1_minder_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5703,7 +5868,7 @@ func (x *Context) ProtoReflect() protoreflect.Message { // Deprecated: Use Context.ProtoReflect.Descriptor instead. func (*Context) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{81} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{85} } func (x *Context) GetProvider() string { @@ -5742,7 +5907,7 @@ type ContextV2 struct { func (x *ContextV2) Reset() { *x = ContextV2{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[82] + mi := &file_minder_v1_minder_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5755,7 +5920,7 @@ func (x *ContextV2) String() string { func (*ContextV2) ProtoMessage() {} func (x *ContextV2) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[82] + mi := &file_minder_v1_minder_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5768,7 +5933,7 @@ func (x *ContextV2) ProtoReflect() protoreflect.Message { // Deprecated: Use ContextV2.ProtoReflect.Descriptor instead. func (*ContextV2) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{82} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{86} } func (x *ContextV2) GetProjectId() string { @@ -5798,7 +5963,7 @@ type ListRuleTypesRequest struct { func (x *ListRuleTypesRequest) Reset() { *x = ListRuleTypesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[83] + mi := &file_minder_v1_minder_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5811,7 +5976,7 @@ func (x *ListRuleTypesRequest) String() string { func (*ListRuleTypesRequest) ProtoMessage() {} func (x *ListRuleTypesRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[83] + mi := &file_minder_v1_minder_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5824,7 +5989,7 @@ func (x *ListRuleTypesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRuleTypesRequest.ProtoReflect.Descriptor instead. func (*ListRuleTypesRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{83} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{87} } func (x *ListRuleTypesRequest) GetContext() *Context { @@ -5847,7 +6012,7 @@ type ListRuleTypesResponse struct { func (x *ListRuleTypesResponse) Reset() { *x = ListRuleTypesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[84] + mi := &file_minder_v1_minder_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5860,7 +6025,7 @@ func (x *ListRuleTypesResponse) String() string { func (*ListRuleTypesResponse) ProtoMessage() {} func (x *ListRuleTypesResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[84] + mi := &file_minder_v1_minder_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5873,7 +6038,7 @@ func (x *ListRuleTypesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRuleTypesResponse.ProtoReflect.Descriptor instead. func (*ListRuleTypesResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{84} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{88} } func (x *ListRuleTypesResponse) GetRuleTypes() []*RuleType { @@ -5898,7 +6063,7 @@ type GetRuleTypeByNameRequest struct { func (x *GetRuleTypeByNameRequest) Reset() { *x = GetRuleTypeByNameRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[85] + mi := &file_minder_v1_minder_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5911,7 +6076,7 @@ func (x *GetRuleTypeByNameRequest) String() string { func (*GetRuleTypeByNameRequest) ProtoMessage() {} func (x *GetRuleTypeByNameRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[85] + mi := &file_minder_v1_minder_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5924,7 +6089,7 @@ func (x *GetRuleTypeByNameRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRuleTypeByNameRequest.ProtoReflect.Descriptor instead. func (*GetRuleTypeByNameRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{85} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{89} } func (x *GetRuleTypeByNameRequest) GetContext() *Context { @@ -5954,7 +6119,7 @@ type GetRuleTypeByNameResponse struct { func (x *GetRuleTypeByNameResponse) Reset() { *x = GetRuleTypeByNameResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[86] + mi := &file_minder_v1_minder_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5967,7 +6132,7 @@ func (x *GetRuleTypeByNameResponse) String() string { func (*GetRuleTypeByNameResponse) ProtoMessage() {} func (x *GetRuleTypeByNameResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[86] + mi := &file_minder_v1_minder_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5980,7 +6145,7 @@ func (x *GetRuleTypeByNameResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRuleTypeByNameResponse.ProtoReflect.Descriptor instead. func (*GetRuleTypeByNameResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{86} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{90} } func (x *GetRuleTypeByNameResponse) GetRuleType() *RuleType { @@ -6005,7 +6170,7 @@ type GetRuleTypeByIdRequest struct { func (x *GetRuleTypeByIdRequest) Reset() { *x = GetRuleTypeByIdRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[87] + mi := &file_minder_v1_minder_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6018,7 +6183,7 @@ func (x *GetRuleTypeByIdRequest) String() string { func (*GetRuleTypeByIdRequest) ProtoMessage() {} func (x *GetRuleTypeByIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[87] + mi := &file_minder_v1_minder_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6031,7 +6196,7 @@ func (x *GetRuleTypeByIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRuleTypeByIdRequest.ProtoReflect.Descriptor instead. func (*GetRuleTypeByIdRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{87} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{91} } func (x *GetRuleTypeByIdRequest) GetContext() *Context { @@ -6061,7 +6226,7 @@ type GetRuleTypeByIdResponse struct { func (x *GetRuleTypeByIdResponse) Reset() { *x = GetRuleTypeByIdResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[88] + mi := &file_minder_v1_minder_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6074,7 +6239,7 @@ func (x *GetRuleTypeByIdResponse) String() string { func (*GetRuleTypeByIdResponse) ProtoMessage() {} func (x *GetRuleTypeByIdResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[88] + mi := &file_minder_v1_minder_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6087,7 +6252,7 @@ func (x *GetRuleTypeByIdResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRuleTypeByIdResponse.ProtoReflect.Descriptor instead. func (*GetRuleTypeByIdResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{88} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{92} } func (x *GetRuleTypeByIdResponse) GetRuleType() *RuleType { @@ -6110,7 +6275,7 @@ type CreateRuleTypeRequest struct { func (x *CreateRuleTypeRequest) Reset() { *x = CreateRuleTypeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[89] + mi := &file_minder_v1_minder_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6123,7 +6288,7 @@ func (x *CreateRuleTypeRequest) String() string { func (*CreateRuleTypeRequest) ProtoMessage() {} func (x *CreateRuleTypeRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[89] + mi := &file_minder_v1_minder_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6136,7 +6301,7 @@ func (x *CreateRuleTypeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRuleTypeRequest.ProtoReflect.Descriptor instead. func (*CreateRuleTypeRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{89} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{93} } func (x *CreateRuleTypeRequest) GetRuleType() *RuleType { @@ -6159,7 +6324,7 @@ type CreateRuleTypeResponse struct { func (x *CreateRuleTypeResponse) Reset() { *x = CreateRuleTypeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[90] + mi := &file_minder_v1_minder_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6172,7 +6337,7 @@ func (x *CreateRuleTypeResponse) String() string { func (*CreateRuleTypeResponse) ProtoMessage() {} func (x *CreateRuleTypeResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[90] + mi := &file_minder_v1_minder_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6185,7 +6350,7 @@ func (x *CreateRuleTypeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRuleTypeResponse.ProtoReflect.Descriptor instead. func (*CreateRuleTypeResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{90} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{94} } func (x *CreateRuleTypeResponse) GetRuleType() *RuleType { @@ -6208,7 +6373,7 @@ type UpdateRuleTypeRequest struct { func (x *UpdateRuleTypeRequest) Reset() { *x = UpdateRuleTypeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[91] + mi := &file_minder_v1_minder_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6221,7 +6386,7 @@ func (x *UpdateRuleTypeRequest) String() string { func (*UpdateRuleTypeRequest) ProtoMessage() {} func (x *UpdateRuleTypeRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[91] + mi := &file_minder_v1_minder_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6234,7 +6399,7 @@ func (x *UpdateRuleTypeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRuleTypeRequest.ProtoReflect.Descriptor instead. func (*UpdateRuleTypeRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{91} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{95} } func (x *UpdateRuleTypeRequest) GetRuleType() *RuleType { @@ -6257,7 +6422,7 @@ type UpdateRuleTypeResponse struct { func (x *UpdateRuleTypeResponse) Reset() { *x = UpdateRuleTypeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[92] + mi := &file_minder_v1_minder_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6270,7 +6435,7 @@ func (x *UpdateRuleTypeResponse) String() string { func (*UpdateRuleTypeResponse) ProtoMessage() {} func (x *UpdateRuleTypeResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[92] + mi := &file_minder_v1_minder_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6283,7 +6448,7 @@ func (x *UpdateRuleTypeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRuleTypeResponse.ProtoReflect.Descriptor instead. func (*UpdateRuleTypeResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{92} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{96} } func (x *UpdateRuleTypeResponse) GetRuleType() *RuleType { @@ -6308,7 +6473,7 @@ type DeleteRuleTypeRequest struct { func (x *DeleteRuleTypeRequest) Reset() { *x = DeleteRuleTypeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[93] + mi := &file_minder_v1_minder_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6321,7 +6486,7 @@ func (x *DeleteRuleTypeRequest) String() string { func (*DeleteRuleTypeRequest) ProtoMessage() {} func (x *DeleteRuleTypeRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[93] + mi := &file_minder_v1_minder_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6334,7 +6499,7 @@ func (x *DeleteRuleTypeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRuleTypeRequest.ProtoReflect.Descriptor instead. func (*DeleteRuleTypeRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{93} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{97} } func (x *DeleteRuleTypeRequest) GetContext() *Context { @@ -6361,7 +6526,7 @@ type DeleteRuleTypeResponse struct { func (x *DeleteRuleTypeResponse) Reset() { *x = DeleteRuleTypeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[94] + mi := &file_minder_v1_minder_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6374,7 +6539,7 @@ func (x *DeleteRuleTypeResponse) String() string { func (*DeleteRuleTypeResponse) ProtoMessage() {} func (x *DeleteRuleTypeResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[94] + mi := &file_minder_v1_minder_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6387,7 +6552,7 @@ func (x *DeleteRuleTypeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRuleTypeResponse.ProtoReflect.Descriptor instead. func (*DeleteRuleTypeResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{94} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{98} } type ListEvaluationResultsRequest struct { @@ -6417,7 +6582,7 @@ type ListEvaluationResultsRequest struct { func (x *ListEvaluationResultsRequest) Reset() { *x = ListEvaluationResultsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[95] + mi := &file_minder_v1_minder_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6430,7 +6595,7 @@ func (x *ListEvaluationResultsRequest) String() string { func (*ListEvaluationResultsRequest) ProtoMessage() {} func (x *ListEvaluationResultsRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[95] + mi := &file_minder_v1_minder_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6443,7 +6608,7 @@ func (x *ListEvaluationResultsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEvaluationResultsRequest.ProtoReflect.Descriptor instead. func (*ListEvaluationResultsRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{95} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{99} } func (x *ListEvaluationResultsRequest) GetContext() *Context { @@ -6522,7 +6687,7 @@ type ListEvaluationResultsResponse struct { func (x *ListEvaluationResultsResponse) Reset() { *x = ListEvaluationResultsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[96] + mi := &file_minder_v1_minder_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6535,7 +6700,7 @@ func (x *ListEvaluationResultsResponse) String() string { func (*ListEvaluationResultsResponse) ProtoMessage() {} func (x *ListEvaluationResultsResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[96] + mi := &file_minder_v1_minder_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6548,7 +6713,7 @@ func (x *ListEvaluationResultsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEvaluationResultsResponse.ProtoReflect.Descriptor instead. func (*ListEvaluationResultsResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{96} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{100} } func (x *ListEvaluationResultsResponse) GetEntities() []*ListEvaluationResultsResponse_EntityEvaluationResults { @@ -6587,7 +6752,7 @@ type RestType struct { func (x *RestType) Reset() { *x = RestType{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[97] + mi := &file_minder_v1_minder_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6600,7 +6765,7 @@ func (x *RestType) String() string { func (*RestType) ProtoMessage() {} func (x *RestType) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[97] + mi := &file_minder_v1_minder_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6613,7 +6778,7 @@ func (x *RestType) ProtoReflect() protoreflect.Message { // Deprecated: Use RestType.ProtoReflect.Descriptor instead. func (*RestType) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{97} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{101} } func (x *RestType) GetEndpoint() string { @@ -6670,7 +6835,7 @@ type BuiltinType struct { func (x *BuiltinType) Reset() { *x = BuiltinType{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[98] + mi := &file_minder_v1_minder_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6683,7 +6848,7 @@ func (x *BuiltinType) String() string { func (*BuiltinType) ProtoMessage() {} func (x *BuiltinType) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[98] + mi := &file_minder_v1_minder_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6696,7 +6861,7 @@ func (x *BuiltinType) ProtoReflect() protoreflect.Message { // Deprecated: Use BuiltinType.ProtoReflect.Descriptor instead. func (*BuiltinType) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{98} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{102} } func (x *BuiltinType) GetMethod() string { @@ -6716,7 +6881,7 @@ type ArtifactType struct { func (x *ArtifactType) Reset() { *x = ArtifactType{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[99] + mi := &file_minder_v1_minder_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6729,7 +6894,7 @@ func (x *ArtifactType) String() string { func (*ArtifactType) ProtoMessage() {} func (x *ArtifactType) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[99] + mi := &file_minder_v1_minder_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6742,7 +6907,7 @@ func (x *ArtifactType) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtifactType.ProtoReflect.Descriptor instead. func (*ArtifactType) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{99} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{103} } // GitType defines the git data ingester. @@ -6760,7 +6925,7 @@ type GitType struct { func (x *GitType) Reset() { *x = GitType{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[100] + mi := &file_minder_v1_minder_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6773,7 +6938,7 @@ func (x *GitType) String() string { func (*GitType) ProtoMessage() {} func (x *GitType) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[100] + mi := &file_minder_v1_minder_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6786,7 +6951,7 @@ func (x *GitType) ProtoReflect() protoreflect.Message { // Deprecated: Use GitType.ProtoReflect.Descriptor instead. func (*GitType) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{100} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{104} } func (x *GitType) GetCloneUrl() string { @@ -6821,7 +6986,7 @@ type DiffType struct { func (x *DiffType) Reset() { *x = DiffType{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[101] + mi := &file_minder_v1_minder_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6834,7 +6999,7 @@ func (x *DiffType) String() string { func (*DiffType) ProtoMessage() {} func (x *DiffType) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[101] + mi := &file_minder_v1_minder_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6847,7 +7012,7 @@ func (x *DiffType) ProtoReflect() protoreflect.Message { // Deprecated: Use DiffType.ProtoReflect.Descriptor instead. func (*DiffType) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{101} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{105} } func (x *DiffType) GetEcosystems() []*DiffType_Ecosystem { @@ -6877,7 +7042,7 @@ type Severity struct { func (x *Severity) Reset() { *x = Severity{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[102] + mi := &file_minder_v1_minder_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6890,7 +7055,7 @@ func (x *Severity) String() string { func (*Severity) ProtoMessage() {} func (x *Severity) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[102] + mi := &file_minder_v1_minder_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6903,7 +7068,7 @@ func (x *Severity) ProtoReflect() protoreflect.Message { // Deprecated: Use Severity.ProtoReflect.Descriptor instead. func (*Severity) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{102} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{106} } func (x *Severity) GetValue() Severity_Value { @@ -6942,7 +7107,7 @@ type RuleType struct { func (x *RuleType) Reset() { *x = RuleType{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[103] + mi := &file_minder_v1_minder_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6955,7 +7120,7 @@ func (x *RuleType) String() string { func (*RuleType) ProtoMessage() {} func (x *RuleType) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[103] + mi := &file_minder_v1_minder_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6968,7 +7133,7 @@ func (x *RuleType) ProtoReflect() protoreflect.Message { // Deprecated: Use RuleType.ProtoReflect.Descriptor instead. func (*RuleType) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107} } func (x *RuleType) GetId() string { @@ -7058,6 +7223,10 @@ type Profile struct { BuildEnvironment []*Profile_Rule `protobuf:"bytes,5,rep,name=build_environment,json=buildEnvironment,proto3" json:"build_environment,omitempty"` Artifact []*Profile_Rule `protobuf:"bytes,6,rep,name=artifact,proto3" json:"artifact,omitempty"` PullRequest []*Profile_Rule `protobuf:"bytes,7,rep,name=pull_request,json=pullRequest,proto3" json:"pull_request,omitempty"` + Release []*Profile_Rule `protobuf:"bytes,15,rep,name=release,proto3" json:"release,omitempty"` + PipelineRun []*Profile_Rule `protobuf:"bytes,16,rep,name=pipeline_run,json=pipelineRun,proto3" json:"pipeline_run,omitempty"` + TaskRun []*Profile_Rule `protobuf:"bytes,17,rep,name=task_run,json=taskRun,proto3" json:"task_run,omitempty"` + Build []*Profile_Rule `protobuf:"bytes,18,rep,name=build,proto3" json:"build,omitempty"` Selection []*Profile_Selector `protobuf:"bytes,14,rep,name=selection,proto3" json:"selection,omitempty"` // whether and how to remediate (on,off,dry_run) // this is optional and defaults to "off" @@ -7076,7 +7245,7 @@ type Profile struct { func (x *Profile) Reset() { *x = Profile{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[104] + mi := &file_minder_v1_minder_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7089,7 +7258,7 @@ func (x *Profile) String() string { func (*Profile) ProtoMessage() {} func (x *Profile) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[104] + mi := &file_minder_v1_minder_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7102,7 +7271,7 @@ func (x *Profile) ProtoReflect() protoreflect.Message { // Deprecated: Use Profile.ProtoReflect.Descriptor instead. func (*Profile) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{104} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{108} } func (x *Profile) GetContext() *Context { @@ -7161,6 +7330,34 @@ func (x *Profile) GetPullRequest() []*Profile_Rule { return nil } +func (x *Profile) GetRelease() []*Profile_Rule { + if x != nil { + return x.Release + } + return nil +} + +func (x *Profile) GetPipelineRun() []*Profile_Rule { + if x != nil { + return x.PipelineRun + } + return nil +} + +func (x *Profile) GetTaskRun() []*Profile_Rule { + if x != nil { + return x.TaskRun + } + return nil +} + +func (x *Profile) GetBuild() []*Profile_Rule { + if x != nil { + return x.Build + } + return nil +} + func (x *Profile) GetSelection() []*Profile_Selector { if x != nil { return x.Selection @@ -7212,7 +7409,7 @@ type ListProjectsRequest struct { func (x *ListProjectsRequest) Reset() { *x = ListProjectsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[105] + mi := &file_minder_v1_minder_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7225,7 +7422,7 @@ func (x *ListProjectsRequest) String() string { func (*ListProjectsRequest) ProtoMessage() {} func (x *ListProjectsRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[105] + mi := &file_minder_v1_minder_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7238,7 +7435,7 @@ func (x *ListProjectsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListProjectsRequest.ProtoReflect.Descriptor instead. func (*ListProjectsRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{105} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{109} } type ListProjectsResponse struct { @@ -7252,7 +7449,7 @@ type ListProjectsResponse struct { func (x *ListProjectsResponse) Reset() { *x = ListProjectsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[106] + mi := &file_minder_v1_minder_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7265,7 +7462,7 @@ func (x *ListProjectsResponse) String() string { func (*ListProjectsResponse) ProtoMessage() {} func (x *ListProjectsResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[106] + mi := &file_minder_v1_minder_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7278,7 +7475,7 @@ func (x *ListProjectsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListProjectsResponse.ProtoReflect.Descriptor instead. func (*ListProjectsResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{106} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{110} } func (x *ListProjectsResponse) GetProjects() []*Project { @@ -7302,7 +7499,7 @@ type CreateProjectRequest struct { func (x *CreateProjectRequest) Reset() { *x = CreateProjectRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[107] + mi := &file_minder_v1_minder_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7315,7 +7512,7 @@ func (x *CreateProjectRequest) String() string { func (*CreateProjectRequest) ProtoMessage() {} func (x *CreateProjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[107] + mi := &file_minder_v1_minder_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7328,7 +7525,7 @@ func (x *CreateProjectRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateProjectRequest.ProtoReflect.Descriptor instead. func (*CreateProjectRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{107} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{111} } func (x *CreateProjectRequest) GetContext() *Context { @@ -7357,7 +7554,7 @@ type CreateProjectResponse struct { func (x *CreateProjectResponse) Reset() { *x = CreateProjectResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[108] + mi := &file_minder_v1_minder_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7370,7 +7567,7 @@ func (x *CreateProjectResponse) String() string { func (*CreateProjectResponse) ProtoMessage() {} func (x *CreateProjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[108] + mi := &file_minder_v1_minder_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7383,7 +7580,7 @@ func (x *CreateProjectResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateProjectResponse.ProtoReflect.Descriptor instead. func (*CreateProjectResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{108} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{112} } func (x *CreateProjectResponse) GetProject() *Project { @@ -7405,7 +7602,7 @@ type DeleteProjectRequest struct { func (x *DeleteProjectRequest) Reset() { *x = DeleteProjectRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[109] + mi := &file_minder_v1_minder_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7418,7 +7615,7 @@ func (x *DeleteProjectRequest) String() string { func (*DeleteProjectRequest) ProtoMessage() {} func (x *DeleteProjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[109] + mi := &file_minder_v1_minder_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7431,7 +7628,7 @@ func (x *DeleteProjectRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProjectRequest.ProtoReflect.Descriptor instead. func (*DeleteProjectRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{109} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{113} } func (x *DeleteProjectRequest) GetContext() *Context { @@ -7453,7 +7650,7 @@ type DeleteProjectResponse struct { func (x *DeleteProjectResponse) Reset() { *x = DeleteProjectResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[110] + mi := &file_minder_v1_minder_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7466,7 +7663,7 @@ func (x *DeleteProjectResponse) String() string { func (*DeleteProjectResponse) ProtoMessage() {} func (x *DeleteProjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[110] + mi := &file_minder_v1_minder_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7479,7 +7676,7 @@ func (x *DeleteProjectResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProjectResponse.ProtoReflect.Descriptor instead. func (*DeleteProjectResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{110} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{114} } func (x *DeleteProjectResponse) GetProjectId() string { @@ -7505,7 +7702,7 @@ type UpdateProjectRequest struct { func (x *UpdateProjectRequest) Reset() { *x = UpdateProjectRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[111] + mi := &file_minder_v1_minder_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7518,7 +7715,7 @@ func (x *UpdateProjectRequest) String() string { func (*UpdateProjectRequest) ProtoMessage() {} func (x *UpdateProjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[111] + mi := &file_minder_v1_minder_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7531,7 +7728,7 @@ func (x *UpdateProjectRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProjectRequest.ProtoReflect.Descriptor instead. func (*UpdateProjectRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{111} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{115} } func (x *UpdateProjectRequest) GetContext() *Context { @@ -7567,7 +7764,7 @@ type UpdateProjectResponse struct { func (x *UpdateProjectResponse) Reset() { *x = UpdateProjectResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[112] + mi := &file_minder_v1_minder_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7580,7 +7777,7 @@ func (x *UpdateProjectResponse) String() string { func (*UpdateProjectResponse) ProtoMessage() {} func (x *UpdateProjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[112] + mi := &file_minder_v1_minder_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7593,7 +7790,7 @@ func (x *UpdateProjectResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProjectResponse.ProtoReflect.Descriptor instead. func (*UpdateProjectResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{112} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{116} } func (x *UpdateProjectResponse) GetProject() *Project { @@ -7617,7 +7814,7 @@ type ProjectPatch struct { func (x *ProjectPatch) Reset() { *x = ProjectPatch{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[113] + mi := &file_minder_v1_minder_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7630,7 +7827,7 @@ func (x *ProjectPatch) String() string { func (*ProjectPatch) ProtoMessage() {} func (x *ProjectPatch) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[113] + mi := &file_minder_v1_minder_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7643,7 +7840,7 @@ func (x *ProjectPatch) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectPatch.ProtoReflect.Descriptor instead. func (*ProjectPatch) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{113} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{117} } func (x *ProjectPatch) GetDisplayName() string { @@ -7677,7 +7874,7 @@ type PatchProjectRequest struct { func (x *PatchProjectRequest) Reset() { *x = PatchProjectRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[114] + mi := &file_minder_v1_minder_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7690,7 +7887,7 @@ func (x *PatchProjectRequest) String() string { func (*PatchProjectRequest) ProtoMessage() {} func (x *PatchProjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[114] + mi := &file_minder_v1_minder_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7703,7 +7900,7 @@ func (x *PatchProjectRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PatchProjectRequest.ProtoReflect.Descriptor instead. func (*PatchProjectRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{114} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{118} } func (x *PatchProjectRequest) GetContext() *Context { @@ -7739,7 +7936,7 @@ type PatchProjectResponse struct { func (x *PatchProjectResponse) Reset() { *x = PatchProjectResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[115] + mi := &file_minder_v1_minder_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7752,7 +7949,7 @@ func (x *PatchProjectResponse) String() string { func (*PatchProjectResponse) ProtoMessage() {} func (x *PatchProjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[115] + mi := &file_minder_v1_minder_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7765,7 +7962,7 @@ func (x *PatchProjectResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PatchProjectResponse.ProtoReflect.Descriptor instead. func (*PatchProjectResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{115} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{119} } func (x *PatchProjectResponse) GetProject() *Project { @@ -7789,7 +7986,7 @@ type ListChildProjectsRequest struct { func (x *ListChildProjectsRequest) Reset() { *x = ListChildProjectsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[116] + mi := &file_minder_v1_minder_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7802,7 +7999,7 @@ func (x *ListChildProjectsRequest) String() string { func (*ListChildProjectsRequest) ProtoMessage() {} func (x *ListChildProjectsRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[116] + mi := &file_minder_v1_minder_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7815,7 +8012,7 @@ func (x *ListChildProjectsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListChildProjectsRequest.ProtoReflect.Descriptor instead. func (*ListChildProjectsRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{116} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{120} } func (x *ListChildProjectsRequest) GetContext() *ContextV2 { @@ -7843,7 +8040,7 @@ type ListChildProjectsResponse struct { func (x *ListChildProjectsResponse) Reset() { *x = ListChildProjectsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[117] + mi := &file_minder_v1_minder_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7856,7 +8053,7 @@ func (x *ListChildProjectsResponse) String() string { func (*ListChildProjectsResponse) ProtoMessage() {} func (x *ListChildProjectsResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[117] + mi := &file_minder_v1_minder_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7869,7 +8066,7 @@ func (x *ListChildProjectsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListChildProjectsResponse.ProtoReflect.Descriptor instead. func (*ListChildProjectsResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{117} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{121} } func (x *ListChildProjectsResponse) GetProjects() []*Project { @@ -7893,7 +8090,7 @@ type CreateEntityReconciliationTaskRequest struct { func (x *CreateEntityReconciliationTaskRequest) Reset() { *x = CreateEntityReconciliationTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[118] + mi := &file_minder_v1_minder_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7906,7 +8103,7 @@ func (x *CreateEntityReconciliationTaskRequest) String() string { func (*CreateEntityReconciliationTaskRequest) ProtoMessage() {} func (x *CreateEntityReconciliationTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[118] + mi := &file_minder_v1_minder_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7919,7 +8116,7 @@ func (x *CreateEntityReconciliationTaskRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use CreateEntityReconciliationTaskRequest.ProtoReflect.Descriptor instead. func (*CreateEntityReconciliationTaskRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{118} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{122} } func (x *CreateEntityReconciliationTaskRequest) GetEntity() *EntityTypedId { @@ -7945,7 +8142,7 @@ type CreateEntityReconciliationTaskResponse struct { func (x *CreateEntityReconciliationTaskResponse) Reset() { *x = CreateEntityReconciliationTaskResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[119] + mi := &file_minder_v1_minder_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7958,7 +8155,7 @@ func (x *CreateEntityReconciliationTaskResponse) String() string { func (*CreateEntityReconciliationTaskResponse) ProtoMessage() {} func (x *CreateEntityReconciliationTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[119] + mi := &file_minder_v1_minder_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7971,7 +8168,7 @@ func (x *CreateEntityReconciliationTaskResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use CreateEntityReconciliationTaskResponse.ProtoReflect.Descriptor instead. func (*CreateEntityReconciliationTaskResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{119} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{123} } type ListRolesRequest struct { @@ -7986,7 +8183,7 @@ type ListRolesRequest struct { func (x *ListRolesRequest) Reset() { *x = ListRolesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[120] + mi := &file_minder_v1_minder_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7999,7 +8196,7 @@ func (x *ListRolesRequest) String() string { func (*ListRolesRequest) ProtoMessage() {} func (x *ListRolesRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[120] + mi := &file_minder_v1_minder_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8012,7 +8209,7 @@ func (x *ListRolesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRolesRequest.ProtoReflect.Descriptor instead. func (*ListRolesRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{120} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{124} } func (x *ListRolesRequest) GetContext() *Context { @@ -8033,7 +8230,7 @@ type ListRolesResponse struct { func (x *ListRolesResponse) Reset() { *x = ListRolesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[121] + mi := &file_minder_v1_minder_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8046,7 +8243,7 @@ func (x *ListRolesResponse) String() string { func (*ListRolesResponse) ProtoMessage() {} func (x *ListRolesResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[121] + mi := &file_minder_v1_minder_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8059,7 +8256,7 @@ func (x *ListRolesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRolesResponse.ProtoReflect.Descriptor instead. func (*ListRolesResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{121} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{125} } func (x *ListRolesResponse) GetRoles() []*Role { @@ -8081,7 +8278,7 @@ type ListRoleAssignmentsRequest struct { func (x *ListRoleAssignmentsRequest) Reset() { *x = ListRoleAssignmentsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[122] + mi := &file_minder_v1_minder_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8094,7 +8291,7 @@ func (x *ListRoleAssignmentsRequest) String() string { func (*ListRoleAssignmentsRequest) ProtoMessage() {} func (x *ListRoleAssignmentsRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[122] + mi := &file_minder_v1_minder_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8107,7 +8304,7 @@ func (x *ListRoleAssignmentsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRoleAssignmentsRequest.ProtoReflect.Descriptor instead. func (*ListRoleAssignmentsRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{122} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{126} } func (x *ListRoleAssignmentsRequest) GetContext() *Context { @@ -8133,7 +8330,7 @@ type ListRoleAssignmentsResponse struct { func (x *ListRoleAssignmentsResponse) Reset() { *x = ListRoleAssignmentsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[123] + mi := &file_minder_v1_minder_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8146,7 +8343,7 @@ func (x *ListRoleAssignmentsResponse) String() string { func (*ListRoleAssignmentsResponse) ProtoMessage() {} func (x *ListRoleAssignmentsResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[123] + mi := &file_minder_v1_minder_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8159,7 +8356,7 @@ func (x *ListRoleAssignmentsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRoleAssignmentsResponse.ProtoReflect.Descriptor instead. func (*ListRoleAssignmentsResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{123} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{127} } func (x *ListRoleAssignmentsResponse) GetRoleAssignments() []*RoleAssignment { @@ -8190,7 +8387,7 @@ type AssignRoleRequest struct { func (x *AssignRoleRequest) Reset() { *x = AssignRoleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[124] + mi := &file_minder_v1_minder_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8203,7 +8400,7 @@ func (x *AssignRoleRequest) String() string { func (*AssignRoleRequest) ProtoMessage() {} func (x *AssignRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[124] + mi := &file_minder_v1_minder_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8216,7 +8413,7 @@ func (x *AssignRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AssignRoleRequest.ProtoReflect.Descriptor instead. func (*AssignRoleRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{124} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{128} } func (x *AssignRoleRequest) GetContext() *Context { @@ -8249,7 +8446,7 @@ type AssignRoleResponse struct { func (x *AssignRoleResponse) Reset() { *x = AssignRoleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[125] + mi := &file_minder_v1_minder_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8262,7 +8459,7 @@ func (x *AssignRoleResponse) String() string { func (*AssignRoleResponse) ProtoMessage() {} func (x *AssignRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[125] + mi := &file_minder_v1_minder_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8275,7 +8472,7 @@ func (x *AssignRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AssignRoleResponse.ProtoReflect.Descriptor instead. func (*AssignRoleResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{125} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{129} } func (x *AssignRoleResponse) GetRoleAssignment() *RoleAssignment { @@ -8312,7 +8509,7 @@ type UpdateRoleRequest struct { func (x *UpdateRoleRequest) Reset() { *x = UpdateRoleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[126] + mi := &file_minder_v1_minder_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8325,7 +8522,7 @@ func (x *UpdateRoleRequest) String() string { func (*UpdateRoleRequest) ProtoMessage() {} func (x *UpdateRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[126] + mi := &file_minder_v1_minder_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8338,7 +8535,7 @@ func (x *UpdateRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRoleRequest.ProtoReflect.Descriptor instead. func (*UpdateRoleRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{126} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{130} } func (x *UpdateRoleRequest) GetContext() *Context { @@ -8383,7 +8580,7 @@ type UpdateRoleResponse struct { func (x *UpdateRoleResponse) Reset() { *x = UpdateRoleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[127] + mi := &file_minder_v1_minder_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8396,7 +8593,7 @@ func (x *UpdateRoleResponse) String() string { func (*UpdateRoleResponse) ProtoMessage() {} func (x *UpdateRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[127] + mi := &file_minder_v1_minder_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8409,7 +8606,7 @@ func (x *UpdateRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRoleResponse.ProtoReflect.Descriptor instead. func (*UpdateRoleResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{127} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{131} } func (x *UpdateRoleResponse) GetRoleAssignments() []*RoleAssignment { @@ -8440,7 +8637,7 @@ type RemoveRoleRequest struct { func (x *RemoveRoleRequest) Reset() { *x = RemoveRoleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[128] + mi := &file_minder_v1_minder_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8453,7 +8650,7 @@ func (x *RemoveRoleRequest) String() string { func (*RemoveRoleRequest) ProtoMessage() {} func (x *RemoveRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[128] + mi := &file_minder_v1_minder_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8466,7 +8663,7 @@ func (x *RemoveRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveRoleRequest.ProtoReflect.Descriptor instead. func (*RemoveRoleRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{128} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{132} } func (x *RemoveRoleRequest) GetContext() *Context { @@ -8497,7 +8694,7 @@ type RemoveRoleResponse struct { func (x *RemoveRoleResponse) Reset() { *x = RemoveRoleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[129] + mi := &file_minder_v1_minder_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8510,7 +8707,7 @@ func (x *RemoveRoleResponse) String() string { func (*RemoveRoleResponse) ProtoMessage() {} func (x *RemoveRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[129] + mi := &file_minder_v1_minder_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8523,7 +8720,7 @@ func (x *RemoveRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveRoleResponse.ProtoReflect.Descriptor instead. func (*RemoveRoleResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{129} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{133} } func (x *RemoveRoleResponse) GetRoleAssignment() *RoleAssignment { @@ -8556,7 +8753,7 @@ type Role struct { func (x *Role) Reset() { *x = Role{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[130] + mi := &file_minder_v1_minder_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8569,7 +8766,7 @@ func (x *Role) String() string { func (*Role) ProtoMessage() {} func (x *Role) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[130] + mi := &file_minder_v1_minder_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8582,7 +8779,7 @@ func (x *Role) ProtoReflect() protoreflect.Message { // Deprecated: Use Role.ProtoReflect.Descriptor instead. func (*Role) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{130} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{134} } func (x *Role) GetName() string { @@ -8630,7 +8827,7 @@ type RoleAssignment struct { func (x *RoleAssignment) Reset() { *x = RoleAssignment{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[131] + mi := &file_minder_v1_minder_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8643,7 +8840,7 @@ func (x *RoleAssignment) String() string { func (*RoleAssignment) ProtoMessage() {} func (x *RoleAssignment) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[131] + mi := &file_minder_v1_minder_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8656,7 +8853,7 @@ func (x *RoleAssignment) ProtoReflect() protoreflect.Message { // Deprecated: Use RoleAssignment.ProtoReflect.Descriptor instead. func (*RoleAssignment) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{131} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{135} } func (x *RoleAssignment) GetRole() string { @@ -8717,7 +8914,7 @@ type ListInvitationsRequest struct { func (x *ListInvitationsRequest) Reset() { *x = ListInvitationsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[132] + mi := &file_minder_v1_minder_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8730,7 +8927,7 @@ func (x *ListInvitationsRequest) String() string { func (*ListInvitationsRequest) ProtoMessage() {} func (x *ListInvitationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[132] + mi := &file_minder_v1_minder_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8743,7 +8940,7 @@ func (x *ListInvitationsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListInvitationsRequest.ProtoReflect.Descriptor instead. func (*ListInvitationsRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{132} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{136} } type ListInvitationsResponse struct { @@ -8757,7 +8954,7 @@ type ListInvitationsResponse struct { func (x *ListInvitationsResponse) Reset() { *x = ListInvitationsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[133] + mi := &file_minder_v1_minder_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8770,7 +8967,7 @@ func (x *ListInvitationsResponse) String() string { func (*ListInvitationsResponse) ProtoMessage() {} func (x *ListInvitationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[133] + mi := &file_minder_v1_minder_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8783,7 +8980,7 @@ func (x *ListInvitationsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListInvitationsResponse.ProtoReflect.Descriptor instead. func (*ListInvitationsResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{133} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{137} } func (x *ListInvitationsResponse) GetInvitations() []*Invitation { @@ -8807,7 +9004,7 @@ type ResolveInvitationRequest struct { func (x *ResolveInvitationRequest) Reset() { *x = ResolveInvitationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[134] + mi := &file_minder_v1_minder_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8820,7 +9017,7 @@ func (x *ResolveInvitationRequest) String() string { func (*ResolveInvitationRequest) ProtoMessage() {} func (x *ResolveInvitationRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[134] + mi := &file_minder_v1_minder_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8833,7 +9030,7 @@ func (x *ResolveInvitationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveInvitationRequest.ProtoReflect.Descriptor instead. func (*ResolveInvitationRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{134} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{138} } func (x *ResolveInvitationRequest) GetCode() string { @@ -8872,7 +9069,7 @@ type ResolveInvitationResponse struct { func (x *ResolveInvitationResponse) Reset() { *x = ResolveInvitationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[135] + mi := &file_minder_v1_minder_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8885,7 +9082,7 @@ func (x *ResolveInvitationResponse) String() string { func (*ResolveInvitationResponse) ProtoMessage() {} func (x *ResolveInvitationResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[135] + mi := &file_minder_v1_minder_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8898,7 +9095,7 @@ func (x *ResolveInvitationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveInvitationResponse.ProtoReflect.Descriptor instead. func (*ResolveInvitationResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{135} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{139} } func (x *ResolveInvitationResponse) GetRole() string { @@ -8979,7 +9176,7 @@ type Invitation struct { func (x *Invitation) Reset() { *x = Invitation{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[136] + mi := &file_minder_v1_minder_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8992,7 +9189,7 @@ func (x *Invitation) String() string { func (*Invitation) ProtoMessage() {} func (x *Invitation) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[136] + mi := &file_minder_v1_minder_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9005,7 +9202,7 @@ func (x *Invitation) ProtoReflect() protoreflect.Message { // Deprecated: Use Invitation.ProtoReflect.Descriptor instead. func (*Invitation) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{136} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{140} } func (x *Invitation) GetRole() string { @@ -9106,7 +9303,7 @@ type GetProviderRequest struct { func (x *GetProviderRequest) Reset() { *x = GetProviderRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[137] + mi := &file_minder_v1_minder_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9119,7 +9316,7 @@ func (x *GetProviderRequest) String() string { func (*GetProviderRequest) ProtoMessage() {} func (x *GetProviderRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[137] + mi := &file_minder_v1_minder_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9132,7 +9329,7 @@ func (x *GetProviderRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProviderRequest.ProtoReflect.Descriptor instead. func (*GetProviderRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{137} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{141} } func (x *GetProviderRequest) GetContext() *Context { @@ -9161,7 +9358,7 @@ type GetProviderResponse struct { func (x *GetProviderResponse) Reset() { *x = GetProviderResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[138] + mi := &file_minder_v1_minder_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9174,7 +9371,7 @@ func (x *GetProviderResponse) String() string { func (*GetProviderResponse) ProtoMessage() {} func (x *GetProviderResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[138] + mi := &file_minder_v1_minder_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9187,7 +9384,7 @@ func (x *GetProviderResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProviderResponse.ProtoReflect.Descriptor instead. func (*GetProviderResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{138} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{142} } func (x *GetProviderResponse) GetProvider() *Provider { @@ -9213,7 +9410,7 @@ type ListProvidersRequest struct { func (x *ListProvidersRequest) Reset() { *x = ListProvidersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[139] + mi := &file_minder_v1_minder_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9226,7 +9423,7 @@ func (x *ListProvidersRequest) String() string { func (*ListProvidersRequest) ProtoMessage() {} func (x *ListProvidersRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[139] + mi := &file_minder_v1_minder_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9239,7 +9436,7 @@ func (x *ListProvidersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListProvidersRequest.ProtoReflect.Descriptor instead. func (*ListProvidersRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{139} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{143} } func (x *ListProvidersRequest) GetContext() *Context { @@ -9276,7 +9473,7 @@ type ListProvidersResponse struct { func (x *ListProvidersResponse) Reset() { *x = ListProvidersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[140] + mi := &file_minder_v1_minder_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9289,7 +9486,7 @@ func (x *ListProvidersResponse) String() string { func (*ListProvidersResponse) ProtoMessage() {} func (x *ListProvidersResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[140] + mi := &file_minder_v1_minder_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9302,7 +9499,7 @@ func (x *ListProvidersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListProvidersResponse.ProtoReflect.Descriptor instead. func (*ListProvidersResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{140} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{144} } func (x *ListProvidersResponse) GetProviders() []*Provider { @@ -9333,7 +9530,7 @@ type CreateProviderRequest struct { func (x *CreateProviderRequest) Reset() { *x = CreateProviderRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[141] + mi := &file_minder_v1_minder_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9346,7 +9543,7 @@ func (x *CreateProviderRequest) String() string { func (*CreateProviderRequest) ProtoMessage() {} func (x *CreateProviderRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[141] + mi := &file_minder_v1_minder_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9359,7 +9556,7 @@ func (x *CreateProviderRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateProviderRequest.ProtoReflect.Descriptor instead. func (*CreateProviderRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{141} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{145} } func (x *CreateProviderRequest) GetContext() *Context { @@ -9391,7 +9588,7 @@ type CreateProviderResponse struct { func (x *CreateProviderResponse) Reset() { *x = CreateProviderResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[142] + mi := &file_minder_v1_minder_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9404,7 +9601,7 @@ func (x *CreateProviderResponse) String() string { func (*CreateProviderResponse) ProtoMessage() {} func (x *CreateProviderResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[142] + mi := &file_minder_v1_minder_proto_msgTypes[146] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9417,7 +9614,7 @@ func (x *CreateProviderResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateProviderResponse.ProtoReflect.Descriptor instead. func (*CreateProviderResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{142} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{146} } func (x *CreateProviderResponse) GetProvider() *Provider { @@ -9447,7 +9644,7 @@ type DeleteProviderRequest struct { func (x *DeleteProviderRequest) Reset() { *x = DeleteProviderRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[143] + mi := &file_minder_v1_minder_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9460,7 +9657,7 @@ func (x *DeleteProviderRequest) String() string { func (*DeleteProviderRequest) ProtoMessage() {} func (x *DeleteProviderRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[143] + mi := &file_minder_v1_minder_proto_msgTypes[147] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9473,7 +9670,7 @@ func (x *DeleteProviderRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProviderRequest.ProtoReflect.Descriptor instead. func (*DeleteProviderRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{143} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{147} } func (x *DeleteProviderRequest) GetContext() *Context { @@ -9495,7 +9692,7 @@ type DeleteProviderResponse struct { func (x *DeleteProviderResponse) Reset() { *x = DeleteProviderResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[144] + mi := &file_minder_v1_minder_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9508,7 +9705,7 @@ func (x *DeleteProviderResponse) String() string { func (*DeleteProviderResponse) ProtoMessage() {} func (x *DeleteProviderResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[144] + mi := &file_minder_v1_minder_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9521,7 +9718,7 @@ func (x *DeleteProviderResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProviderResponse.ProtoReflect.Descriptor instead. func (*DeleteProviderResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{144} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{148} } func (x *DeleteProviderResponse) GetName() string { @@ -9545,7 +9742,7 @@ type DeleteProviderByIDRequest struct { func (x *DeleteProviderByIDRequest) Reset() { *x = DeleteProviderByIDRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[145] + mi := &file_minder_v1_minder_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9558,7 +9755,7 @@ func (x *DeleteProviderByIDRequest) String() string { func (*DeleteProviderByIDRequest) ProtoMessage() {} func (x *DeleteProviderByIDRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[145] + mi := &file_minder_v1_minder_proto_msgTypes[149] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9571,7 +9768,7 @@ func (x *DeleteProviderByIDRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProviderByIDRequest.ProtoReflect.Descriptor instead. func (*DeleteProviderByIDRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{145} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{149} } func (x *DeleteProviderByIDRequest) GetContext() *Context { @@ -9600,7 +9797,7 @@ type DeleteProviderByIDResponse struct { func (x *DeleteProviderByIDResponse) Reset() { *x = DeleteProviderByIDResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[146] + mi := &file_minder_v1_minder_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9613,7 +9810,7 @@ func (x *DeleteProviderByIDResponse) String() string { func (*DeleteProviderByIDResponse) ProtoMessage() {} func (x *DeleteProviderByIDResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[146] + mi := &file_minder_v1_minder_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9626,7 +9823,7 @@ func (x *DeleteProviderByIDResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProviderByIDResponse.ProtoReflect.Descriptor instead. func (*DeleteProviderByIDResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{146} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{150} } func (x *DeleteProviderByIDResponse) GetId() string { @@ -9648,7 +9845,7 @@ type GetUnclaimedProvidersRequest struct { func (x *GetUnclaimedProvidersRequest) Reset() { *x = GetUnclaimedProvidersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[147] + mi := &file_minder_v1_minder_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9661,7 +9858,7 @@ func (x *GetUnclaimedProvidersRequest) String() string { func (*GetUnclaimedProvidersRequest) ProtoMessage() {} func (x *GetUnclaimedProvidersRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[147] + mi := &file_minder_v1_minder_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9674,7 +9871,7 @@ func (x *GetUnclaimedProvidersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUnclaimedProvidersRequest.ProtoReflect.Descriptor instead. func (*GetUnclaimedProvidersRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{147} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{151} } func (x *GetUnclaimedProvidersRequest) GetContext() *Context { @@ -9698,7 +9895,7 @@ type GetUnclaimedProvidersResponse struct { func (x *GetUnclaimedProvidersResponse) Reset() { *x = GetUnclaimedProvidersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[148] + mi := &file_minder_v1_minder_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9711,7 +9908,7 @@ func (x *GetUnclaimedProvidersResponse) String() string { func (*GetUnclaimedProvidersResponse) ProtoMessage() {} func (x *GetUnclaimedProvidersResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[148] + mi := &file_minder_v1_minder_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9724,7 +9921,7 @@ func (x *GetUnclaimedProvidersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUnclaimedProvidersResponse.ProtoReflect.Descriptor instead. func (*GetUnclaimedProvidersResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{148} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{152} } func (x *GetUnclaimedProvidersResponse) GetProviders() []*ProviderParameter { @@ -9746,7 +9943,7 @@ type ListProviderClassesRequest struct { func (x *ListProviderClassesRequest) Reset() { *x = ListProviderClassesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[149] + mi := &file_minder_v1_minder_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9759,7 +9956,7 @@ func (x *ListProviderClassesRequest) String() string { func (*ListProviderClassesRequest) ProtoMessage() {} func (x *ListProviderClassesRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[149] + mi := &file_minder_v1_minder_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9772,7 +9969,7 @@ func (x *ListProviderClassesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListProviderClassesRequest.ProtoReflect.Descriptor instead. func (*ListProviderClassesRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{149} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{153} } func (x *ListProviderClassesRequest) GetContext() *Context { @@ -9794,7 +9991,7 @@ type ListProviderClassesResponse struct { func (x *ListProviderClassesResponse) Reset() { *x = ListProviderClassesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[150] + mi := &file_minder_v1_minder_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9807,7 +10004,7 @@ func (x *ListProviderClassesResponse) String() string { func (*ListProviderClassesResponse) ProtoMessage() {} func (x *ListProviderClassesResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[150] + mi := &file_minder_v1_minder_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9820,7 +10017,7 @@ func (x *ListProviderClassesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListProviderClassesResponse.ProtoReflect.Descriptor instead. func (*ListProviderClassesResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{150} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{154} } func (x *ListProviderClassesResponse) GetProviderClasses() []string { @@ -9843,7 +10040,7 @@ type PatchProviderRequest struct { func (x *PatchProviderRequest) Reset() { *x = PatchProviderRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[151] + mi := &file_minder_v1_minder_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9856,7 +10053,7 @@ func (x *PatchProviderRequest) String() string { func (*PatchProviderRequest) ProtoMessage() {} func (x *PatchProviderRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[151] + mi := &file_minder_v1_minder_proto_msgTypes[155] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9869,7 +10066,7 @@ func (x *PatchProviderRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PatchProviderRequest.ProtoReflect.Descriptor instead. func (*PatchProviderRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{151} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{155} } func (x *PatchProviderRequest) GetContext() *Context { @@ -9904,7 +10101,7 @@ type PatchProviderResponse struct { func (x *PatchProviderResponse) Reset() { *x = PatchProviderResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[152] + mi := &file_minder_v1_minder_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9917,7 +10114,7 @@ func (x *PatchProviderResponse) String() string { func (*PatchProviderResponse) ProtoMessage() {} func (x *PatchProviderResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[152] + mi := &file_minder_v1_minder_proto_msgTypes[156] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9930,7 +10127,7 @@ func (x *PatchProviderResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PatchProviderResponse.ProtoReflect.Descriptor instead. func (*PatchProviderResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{152} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{156} } func (x *PatchProviderResponse) GetProvider() *Provider { @@ -9952,7 +10149,7 @@ type AuthorizationParams struct { func (x *AuthorizationParams) Reset() { *x = AuthorizationParams{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[153] + mi := &file_minder_v1_minder_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9965,7 +10162,7 @@ func (x *AuthorizationParams) String() string { func (*AuthorizationParams) ProtoMessage() {} func (x *AuthorizationParams) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[153] + mi := &file_minder_v1_minder_proto_msgTypes[157] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9978,7 +10175,7 @@ func (x *AuthorizationParams) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizationParams.ProtoReflect.Descriptor instead. func (*AuthorizationParams) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{153} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{157} } func (x *AuthorizationParams) GetAuthorizationUrl() string { @@ -10002,7 +10199,7 @@ type ProviderParameter struct { func (x *ProviderParameter) Reset() { *x = ProviderParameter{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[154] + mi := &file_minder_v1_minder_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10015,7 +10212,7 @@ func (x *ProviderParameter) String() string { func (*ProviderParameter) ProtoMessage() {} func (x *ProviderParameter) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[154] + mi := &file_minder_v1_minder_proto_msgTypes[158] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10028,7 +10225,7 @@ func (x *ProviderParameter) ProtoReflect() protoreflect.Message { // Deprecated: Use ProviderParameter.ProtoReflect.Descriptor instead. func (*ProviderParameter) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{154} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{158} } func (m *ProviderParameter) GetParameters() isProviderParameter_Parameters { @@ -10077,7 +10274,7 @@ type GitHubAppParams struct { func (x *GitHubAppParams) Reset() { *x = GitHubAppParams{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[155] + mi := &file_minder_v1_minder_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10090,7 +10287,7 @@ func (x *GitHubAppParams) String() string { func (*GitHubAppParams) ProtoMessage() {} func (x *GitHubAppParams) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[155] + mi := &file_minder_v1_minder_proto_msgTypes[159] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10103,7 +10300,7 @@ func (x *GitHubAppParams) ProtoReflect() protoreflect.Message { // Deprecated: Use GitHubAppParams.ProtoReflect.Descriptor instead. func (*GitHubAppParams) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{155} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{159} } func (x *GitHubAppParams) GetInstallationId() int64 { @@ -10157,7 +10354,7 @@ type Provider struct { func (x *Provider) Reset() { *x = Provider{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[156] + mi := &file_minder_v1_minder_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10170,7 +10367,7 @@ func (x *Provider) String() string { func (*Provider) ProtoMessage() {} func (x *Provider) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[156] + mi := &file_minder_v1_minder_proto_msgTypes[160] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10183,7 +10380,7 @@ func (x *Provider) ProtoReflect() protoreflect.Message { // Deprecated: Use Provider.ProtoReflect.Descriptor instead. func (*Provider) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{156} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{160} } func (x *Provider) GetName() string { @@ -10283,7 +10480,7 @@ type ListEvaluationHistoryRequest struct { func (x *ListEvaluationHistoryRequest) Reset() { *x = ListEvaluationHistoryRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[157] + mi := &file_minder_v1_minder_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10296,7 +10493,7 @@ func (x *ListEvaluationHistoryRequest) String() string { func (*ListEvaluationHistoryRequest) ProtoMessage() {} func (x *ListEvaluationHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[157] + mi := &file_minder_v1_minder_proto_msgTypes[161] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10309,7 +10506,7 @@ func (x *ListEvaluationHistoryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEvaluationHistoryRequest.ProtoReflect.Descriptor instead. func (*ListEvaluationHistoryRequest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{157} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{161} } func (x *ListEvaluationHistoryRequest) GetContext() *Context { @@ -10402,7 +10599,7 @@ type ListEvaluationHistoryResponse struct { func (x *ListEvaluationHistoryResponse) Reset() { *x = ListEvaluationHistoryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[158] + mi := &file_minder_v1_minder_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10415,7 +10612,7 @@ func (x *ListEvaluationHistoryResponse) String() string { func (*ListEvaluationHistoryResponse) ProtoMessage() {} func (x *ListEvaluationHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[158] + mi := &file_minder_v1_minder_proto_msgTypes[162] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10428,7 +10625,7 @@ func (x *ListEvaluationHistoryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEvaluationHistoryResponse.ProtoReflect.Descriptor instead. func (*ListEvaluationHistoryResponse) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{158} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{162} } func (x *ListEvaluationHistoryResponse) GetData() []*EvaluationHistory { @@ -10467,7 +10664,7 @@ type EvaluationHistory struct { func (x *EvaluationHistory) Reset() { *x = EvaluationHistory{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[159] + mi := &file_minder_v1_minder_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10480,7 +10677,7 @@ func (x *EvaluationHistory) String() string { func (*EvaluationHistory) ProtoMessage() {} func (x *EvaluationHistory) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[159] + mi := &file_minder_v1_minder_proto_msgTypes[163] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10493,7 +10690,7 @@ func (x *EvaluationHistory) ProtoReflect() protoreflect.Message { // Deprecated: Use EvaluationHistory.ProtoReflect.Descriptor instead. func (*EvaluationHistory) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{159} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{163} } func (x *EvaluationHistory) GetEntity() *EvaluationHistoryEntity { @@ -10554,7 +10751,7 @@ type EvaluationHistoryEntity struct { func (x *EvaluationHistoryEntity) Reset() { *x = EvaluationHistoryEntity{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[160] + mi := &file_minder_v1_minder_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10567,7 +10764,7 @@ func (x *EvaluationHistoryEntity) String() string { func (*EvaluationHistoryEntity) ProtoMessage() {} func (x *EvaluationHistoryEntity) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[160] + mi := &file_minder_v1_minder_proto_msgTypes[164] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10580,7 +10777,7 @@ func (x *EvaluationHistoryEntity) ProtoReflect() protoreflect.Message { // Deprecated: Use EvaluationHistoryEntity.ProtoReflect.Descriptor instead. func (*EvaluationHistoryEntity) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{160} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{164} } func (x *EvaluationHistoryEntity) GetId() string { @@ -10620,7 +10817,7 @@ type EvaluationHistoryRule struct { func (x *EvaluationHistoryRule) Reset() { *x = EvaluationHistoryRule{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[161] + mi := &file_minder_v1_minder_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10633,7 +10830,7 @@ func (x *EvaluationHistoryRule) String() string { func (*EvaluationHistoryRule) ProtoMessage() {} func (x *EvaluationHistoryRule) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[161] + mi := &file_minder_v1_minder_proto_msgTypes[165] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10646,7 +10843,7 @@ func (x *EvaluationHistoryRule) ProtoReflect() protoreflect.Message { // Deprecated: Use EvaluationHistoryRule.ProtoReflect.Descriptor instead. func (*EvaluationHistoryRule) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{161} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{165} } func (x *EvaluationHistoryRule) GetName() string { @@ -10686,7 +10883,7 @@ type EvaluationHistoryStatus struct { func (x *EvaluationHistoryStatus) Reset() { *x = EvaluationHistoryStatus{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[162] + mi := &file_minder_v1_minder_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10699,7 +10896,7 @@ func (x *EvaluationHistoryStatus) String() string { func (*EvaluationHistoryStatus) ProtoMessage() {} func (x *EvaluationHistoryStatus) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[162] + mi := &file_minder_v1_minder_proto_msgTypes[166] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10712,7 +10909,7 @@ func (x *EvaluationHistoryStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use EvaluationHistoryStatus.ProtoReflect.Descriptor instead. func (*EvaluationHistoryStatus) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{162} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{166} } func (x *EvaluationHistoryStatus) GetStatus() string { @@ -10745,7 +10942,7 @@ type EvaluationHistoryRemediation struct { func (x *EvaluationHistoryRemediation) Reset() { *x = EvaluationHistoryRemediation{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[163] + mi := &file_minder_v1_minder_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10758,7 +10955,7 @@ func (x *EvaluationHistoryRemediation) String() string { func (*EvaluationHistoryRemediation) ProtoMessage() {} func (x *EvaluationHistoryRemediation) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[163] + mi := &file_minder_v1_minder_proto_msgTypes[167] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10771,7 +10968,7 @@ func (x *EvaluationHistoryRemediation) ProtoReflect() protoreflect.Message { // Deprecated: Use EvaluationHistoryRemediation.ProtoReflect.Descriptor instead. func (*EvaluationHistoryRemediation) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{163} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{167} } func (x *EvaluationHistoryRemediation) GetStatus() string { @@ -10804,7 +11001,7 @@ type EvaluationHistoryAlert struct { func (x *EvaluationHistoryAlert) Reset() { *x = EvaluationHistoryAlert{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[164] + mi := &file_minder_v1_minder_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10817,7 +11014,7 @@ func (x *EvaluationHistoryAlert) String() string { func (*EvaluationHistoryAlert) ProtoMessage() {} func (x *EvaluationHistoryAlert) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[164] + mi := &file_minder_v1_minder_proto_msgTypes[168] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10830,7 +11027,7 @@ func (x *EvaluationHistoryAlert) ProtoReflect() protoreflect.Message { // Deprecated: Use EvaluationHistoryAlert.ProtoReflect.Descriptor instead. func (*EvaluationHistoryAlert) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{164} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{168} } func (x *EvaluationHistoryAlert) GetStatus() string { @@ -10859,7 +11056,7 @@ type RegisterRepoResult_Status struct { func (x *RegisterRepoResult_Status) Reset() { *x = RegisterRepoResult_Status{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[165] + mi := &file_minder_v1_minder_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10872,7 +11069,7 @@ func (x *RegisterRepoResult_Status) String() string { func (*RegisterRepoResult_Status) ProtoMessage() {} func (x *RegisterRepoResult_Status) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[165] + mi := &file_minder_v1_minder_proto_msgTypes[169] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10885,7 +11082,7 @@ func (x *RegisterRepoResult_Status) ProtoReflect() protoreflect.Message { // Deprecated: Use RegisterRepoResult_Status.ProtoReflect.Descriptor instead. func (*RegisterRepoResult_Status) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{26, 0} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{30, 0} } func (x *RegisterRepoResult_Status) GetSuccess() bool { @@ -10917,7 +11114,7 @@ type ListEvaluationResultsResponse_EntityProfileEvaluationResults struct { func (x *ListEvaluationResultsResponse_EntityProfileEvaluationResults) Reset() { *x = ListEvaluationResultsResponse_EntityProfileEvaluationResults{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[168] + mi := &file_minder_v1_minder_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10930,7 +11127,7 @@ func (x *ListEvaluationResultsResponse_EntityProfileEvaluationResults) String() func (*ListEvaluationResultsResponse_EntityProfileEvaluationResults) ProtoMessage() {} func (x *ListEvaluationResultsResponse_EntityProfileEvaluationResults) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[168] + mi := &file_minder_v1_minder_proto_msgTypes[172] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10943,7 +11140,7 @@ func (x *ListEvaluationResultsResponse_EntityProfileEvaluationResults) ProtoRefl // Deprecated: Use ListEvaluationResultsResponse_EntityProfileEvaluationResults.ProtoReflect.Descriptor instead. func (*ListEvaluationResultsResponse_EntityProfileEvaluationResults) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{96, 0} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{100, 0} } func (x *ListEvaluationResultsResponse_EntityProfileEvaluationResults) GetProfileStatus() *ProfileStatus { @@ -10972,7 +11169,7 @@ type ListEvaluationResultsResponse_EntityEvaluationResults struct { func (x *ListEvaluationResultsResponse_EntityEvaluationResults) Reset() { *x = ListEvaluationResultsResponse_EntityEvaluationResults{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[169] + mi := &file_minder_v1_minder_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10985,7 +11182,7 @@ func (x *ListEvaluationResultsResponse_EntityEvaluationResults) String() string func (*ListEvaluationResultsResponse_EntityEvaluationResults) ProtoMessage() {} func (x *ListEvaluationResultsResponse_EntityEvaluationResults) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[169] + mi := &file_minder_v1_minder_proto_msgTypes[173] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10998,7 +11195,7 @@ func (x *ListEvaluationResultsResponse_EntityEvaluationResults) ProtoReflect() p // Deprecated: Use ListEvaluationResultsResponse_EntityEvaluationResults.ProtoReflect.Descriptor instead. func (*ListEvaluationResultsResponse_EntityEvaluationResults) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{96, 1} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{100, 1} } func (x *ListEvaluationResultsResponse_EntityEvaluationResults) GetEntity() *EntityTypedId { @@ -11027,7 +11224,7 @@ type RestType_Fallback struct { func (x *RestType_Fallback) Reset() { *x = RestType_Fallback{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[170] + mi := &file_minder_v1_minder_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11040,7 +11237,7 @@ func (x *RestType_Fallback) String() string { func (*RestType_Fallback) ProtoMessage() {} func (x *RestType_Fallback) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[170] + mi := &file_minder_v1_minder_proto_msgTypes[174] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11053,7 +11250,7 @@ func (x *RestType_Fallback) ProtoReflect() protoreflect.Message { // Deprecated: Use RestType_Fallback.ProtoReflect.Descriptor instead. func (*RestType_Fallback) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{97, 0} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{101, 0} } func (x *RestType_Fallback) GetHttpCode() int32 { @@ -11084,7 +11281,7 @@ type DiffType_Ecosystem struct { func (x *DiffType_Ecosystem) Reset() { *x = DiffType_Ecosystem{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[171] + mi := &file_minder_v1_minder_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11097,7 +11294,7 @@ func (x *DiffType_Ecosystem) String() string { func (*DiffType_Ecosystem) ProtoMessage() {} func (x *DiffType_Ecosystem) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[171] + mi := &file_minder_v1_minder_proto_msgTypes[175] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11110,7 +11307,7 @@ func (x *DiffType_Ecosystem) ProtoReflect() protoreflect.Message { // Deprecated: Use DiffType_Ecosystem.ProtoReflect.Descriptor instead. func (*DiffType_Ecosystem) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{101, 0} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{105, 0} } func (x *DiffType_Ecosystem) GetName() string { @@ -11150,7 +11347,7 @@ type RuleType_Definition struct { func (x *RuleType_Definition) Reset() { *x = RuleType_Definition{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[172] + mi := &file_minder_v1_minder_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11163,7 +11360,7 @@ func (x *RuleType_Definition) String() string { func (*RuleType_Definition) ProtoMessage() {} func (x *RuleType_Definition) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[172] + mi := &file_minder_v1_minder_proto_msgTypes[176] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11176,7 +11373,7 @@ func (x *RuleType_Definition) ProtoReflect() protoreflect.Message { // Deprecated: Use RuleType_Definition.ProtoReflect.Descriptor instead. func (*RuleType_Definition) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103, 0} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107, 0} } func (x *RuleType_Definition) GetInEntity() string { @@ -11253,7 +11450,7 @@ type RuleType_Definition_Ingest struct { func (x *RuleType_Definition_Ingest) Reset() { *x = RuleType_Definition_Ingest{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[173] + mi := &file_minder_v1_minder_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11266,7 +11463,7 @@ func (x *RuleType_Definition_Ingest) String() string { func (*RuleType_Definition_Ingest) ProtoMessage() {} func (x *RuleType_Definition_Ingest) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[173] + mi := &file_minder_v1_minder_proto_msgTypes[177] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11279,7 +11476,7 @@ func (x *RuleType_Definition_Ingest) ProtoReflect() protoreflect.Message { // Deprecated: Use RuleType_Definition_Ingest.ProtoReflect.Descriptor instead. func (*RuleType_Definition_Ingest) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103, 0, 0} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107, 0, 0} } func (x *RuleType_Definition_Ingest) GetType() string { @@ -11353,7 +11550,7 @@ type RuleType_Definition_Eval struct { func (x *RuleType_Definition_Eval) Reset() { *x = RuleType_Definition_Eval{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[174] + mi := &file_minder_v1_minder_proto_msgTypes[178] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11366,7 +11563,7 @@ func (x *RuleType_Definition_Eval) String() string { func (*RuleType_Definition_Eval) ProtoMessage() {} func (x *RuleType_Definition_Eval) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[174] + mi := &file_minder_v1_minder_proto_msgTypes[178] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11379,7 +11576,7 @@ func (x *RuleType_Definition_Eval) ProtoReflect() protoreflect.Message { // Deprecated: Use RuleType_Definition_Eval.ProtoReflect.Descriptor instead. func (*RuleType_Definition_Eval) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103, 0, 1} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107, 0, 1} } func (x *RuleType_Definition_Eval) GetType() string { @@ -11438,7 +11635,7 @@ type RuleType_Definition_Remediate struct { func (x *RuleType_Definition_Remediate) Reset() { *x = RuleType_Definition_Remediate{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[175] + mi := &file_minder_v1_minder_proto_msgTypes[179] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11451,7 +11648,7 @@ func (x *RuleType_Definition_Remediate) String() string { func (*RuleType_Definition_Remediate) ProtoMessage() {} func (x *RuleType_Definition_Remediate) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[175] + mi := &file_minder_v1_minder_proto_msgTypes[179] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11464,7 +11661,7 @@ func (x *RuleType_Definition_Remediate) ProtoReflect() protoreflect.Message { // Deprecated: Use RuleType_Definition_Remediate.ProtoReflect.Descriptor instead. func (*RuleType_Definition_Remediate) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103, 0, 2} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107, 0, 2} } func (x *RuleType_Definition_Remediate) GetType() string { @@ -11507,7 +11704,7 @@ type RuleType_Definition_Alert struct { func (x *RuleType_Definition_Alert) Reset() { *x = RuleType_Definition_Alert{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[176] + mi := &file_minder_v1_minder_proto_msgTypes[180] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11520,7 +11717,7 @@ func (x *RuleType_Definition_Alert) String() string { func (*RuleType_Definition_Alert) ProtoMessage() {} func (x *RuleType_Definition_Alert) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[176] + mi := &file_minder_v1_minder_proto_msgTypes[180] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11533,7 +11730,7 @@ func (x *RuleType_Definition_Alert) ProtoReflect() protoreflect.Message { // Deprecated: Use RuleType_Definition_Alert.ProtoReflect.Descriptor instead. func (*RuleType_Definition_Alert) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103, 0, 3} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107, 0, 3} } func (x *RuleType_Definition_Alert) GetType() string { @@ -11564,7 +11761,7 @@ type RuleType_Definition_Eval_JQComparison struct { func (x *RuleType_Definition_Eval_JQComparison) Reset() { *x = RuleType_Definition_Eval_JQComparison{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[177] + mi := &file_minder_v1_minder_proto_msgTypes[181] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11577,7 +11774,7 @@ func (x *RuleType_Definition_Eval_JQComparison) String() string { func (*RuleType_Definition_Eval_JQComparison) ProtoMessage() {} func (x *RuleType_Definition_Eval_JQComparison) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[177] + mi := &file_minder_v1_minder_proto_msgTypes[181] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11590,7 +11787,7 @@ func (x *RuleType_Definition_Eval_JQComparison) ProtoReflect() protoreflect.Mess // Deprecated: Use RuleType_Definition_Eval_JQComparison.ProtoReflect.Descriptor instead. func (*RuleType_Definition_Eval_JQComparison) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103, 0, 1, 0} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107, 0, 1, 0} } func (x *RuleType_Definition_Eval_JQComparison) GetIngested() *RuleType_Definition_Eval_JQComparison_Operator { @@ -11635,7 +11832,7 @@ type RuleType_Definition_Eval_Rego struct { func (x *RuleType_Definition_Eval_Rego) Reset() { *x = RuleType_Definition_Eval_Rego{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[178] + mi := &file_minder_v1_minder_proto_msgTypes[182] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11648,7 +11845,7 @@ func (x *RuleType_Definition_Eval_Rego) String() string { func (*RuleType_Definition_Eval_Rego) ProtoMessage() {} func (x *RuleType_Definition_Eval_Rego) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[178] + mi := &file_minder_v1_minder_proto_msgTypes[182] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11661,7 +11858,7 @@ func (x *RuleType_Definition_Eval_Rego) ProtoReflect() protoreflect.Message { // Deprecated: Use RuleType_Definition_Eval_Rego.ProtoReflect.Descriptor instead. func (*RuleType_Definition_Eval_Rego) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103, 0, 1, 1} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107, 0, 1, 1} } func (x *RuleType_Definition_Eval_Rego) GetType() string { @@ -11694,7 +11891,7 @@ type RuleType_Definition_Eval_Vulncheck struct { func (x *RuleType_Definition_Eval_Vulncheck) Reset() { *x = RuleType_Definition_Eval_Vulncheck{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[179] + mi := &file_minder_v1_minder_proto_msgTypes[183] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11707,7 +11904,7 @@ func (x *RuleType_Definition_Eval_Vulncheck) String() string { func (*RuleType_Definition_Eval_Vulncheck) ProtoMessage() {} func (x *RuleType_Definition_Eval_Vulncheck) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[179] + mi := &file_minder_v1_minder_proto_msgTypes[183] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11720,7 +11917,7 @@ func (x *RuleType_Definition_Eval_Vulncheck) ProtoReflect() protoreflect.Message // Deprecated: Use RuleType_Definition_Eval_Vulncheck.ProtoReflect.Descriptor instead. func (*RuleType_Definition_Eval_Vulncheck) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103, 0, 1, 2} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107, 0, 1, 2} } type RuleType_Definition_Eval_Trusty struct { @@ -11736,7 +11933,7 @@ type RuleType_Definition_Eval_Trusty struct { func (x *RuleType_Definition_Eval_Trusty) Reset() { *x = RuleType_Definition_Eval_Trusty{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[180] + mi := &file_minder_v1_minder_proto_msgTypes[184] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11749,7 +11946,7 @@ func (x *RuleType_Definition_Eval_Trusty) String() string { func (*RuleType_Definition_Eval_Trusty) ProtoMessage() {} func (x *RuleType_Definition_Eval_Trusty) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[180] + mi := &file_minder_v1_minder_proto_msgTypes[184] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11762,7 +11959,7 @@ func (x *RuleType_Definition_Eval_Trusty) ProtoReflect() protoreflect.Message { // Deprecated: Use RuleType_Definition_Eval_Trusty.ProtoReflect.Descriptor instead. func (*RuleType_Definition_Eval_Trusty) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103, 0, 1, 3} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107, 0, 1, 3} } func (x *RuleType_Definition_Eval_Trusty) GetEndpoint() string { @@ -11783,7 +11980,7 @@ type RuleType_Definition_Eval_Homoglyphs struct { func (x *RuleType_Definition_Eval_Homoglyphs) Reset() { *x = RuleType_Definition_Eval_Homoglyphs{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[181] + mi := &file_minder_v1_minder_proto_msgTypes[185] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11796,7 +11993,7 @@ func (x *RuleType_Definition_Eval_Homoglyphs) String() string { func (*RuleType_Definition_Eval_Homoglyphs) ProtoMessage() {} func (x *RuleType_Definition_Eval_Homoglyphs) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[181] + mi := &file_minder_v1_minder_proto_msgTypes[185] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11809,7 +12006,7 @@ func (x *RuleType_Definition_Eval_Homoglyphs) ProtoReflect() protoreflect.Messag // Deprecated: Use RuleType_Definition_Eval_Homoglyphs.ProtoReflect.Descriptor instead. func (*RuleType_Definition_Eval_Homoglyphs) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103, 0, 1, 4} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107, 0, 1, 4} } func (x *RuleType_Definition_Eval_Homoglyphs) GetType() string { @@ -11830,7 +12027,7 @@ type RuleType_Definition_Eval_JQComparison_Operator struct { func (x *RuleType_Definition_Eval_JQComparison_Operator) Reset() { *x = RuleType_Definition_Eval_JQComparison_Operator{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[182] + mi := &file_minder_v1_minder_proto_msgTypes[186] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11843,7 +12040,7 @@ func (x *RuleType_Definition_Eval_JQComparison_Operator) String() string { func (*RuleType_Definition_Eval_JQComparison_Operator) ProtoMessage() {} func (x *RuleType_Definition_Eval_JQComparison_Operator) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[182] + mi := &file_minder_v1_minder_proto_msgTypes[186] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11856,7 +12053,7 @@ func (x *RuleType_Definition_Eval_JQComparison_Operator) ProtoReflect() protoref // Deprecated: Use RuleType_Definition_Eval_JQComparison_Operator.ProtoReflect.Descriptor instead. func (*RuleType_Definition_Eval_JQComparison_Operator) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103, 0, 1, 0, 0} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107, 0, 1, 0, 0} } func (x *RuleType_Definition_Eval_JQComparison_Operator) GetDef() string { @@ -11877,7 +12074,7 @@ type RuleType_Definition_Remediate_GhBranchProtectionType struct { func (x *RuleType_Definition_Remediate_GhBranchProtectionType) Reset() { *x = RuleType_Definition_Remediate_GhBranchProtectionType{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[183] + mi := &file_minder_v1_minder_proto_msgTypes[187] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11890,7 +12087,7 @@ func (x *RuleType_Definition_Remediate_GhBranchProtectionType) String() string { func (*RuleType_Definition_Remediate_GhBranchProtectionType) ProtoMessage() {} func (x *RuleType_Definition_Remediate_GhBranchProtectionType) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[183] + mi := &file_minder_v1_minder_proto_msgTypes[187] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11903,7 +12100,7 @@ func (x *RuleType_Definition_Remediate_GhBranchProtectionType) ProtoReflect() pr // Deprecated: Use RuleType_Definition_Remediate_GhBranchProtectionType.ProtoReflect.Descriptor instead. func (*RuleType_Definition_Remediate_GhBranchProtectionType) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103, 0, 2, 0} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107, 0, 2, 0} } func (x *RuleType_Definition_Remediate_GhBranchProtectionType) GetPatch() string { @@ -11941,7 +12138,7 @@ type RuleType_Definition_Remediate_PullRequestRemediation struct { func (x *RuleType_Definition_Remediate_PullRequestRemediation) Reset() { *x = RuleType_Definition_Remediate_PullRequestRemediation{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[184] + mi := &file_minder_v1_minder_proto_msgTypes[188] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11954,7 +12151,7 @@ func (x *RuleType_Definition_Remediate_PullRequestRemediation) String() string { func (*RuleType_Definition_Remediate_PullRequestRemediation) ProtoMessage() {} func (x *RuleType_Definition_Remediate_PullRequestRemediation) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[184] + mi := &file_minder_v1_minder_proto_msgTypes[188] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11967,7 +12164,7 @@ func (x *RuleType_Definition_Remediate_PullRequestRemediation) ProtoReflect() pr // Deprecated: Use RuleType_Definition_Remediate_PullRequestRemediation.ProtoReflect.Descriptor instead. func (*RuleType_Definition_Remediate_PullRequestRemediation) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103, 0, 2, 1} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107, 0, 2, 1} } func (x *RuleType_Definition_Remediate_PullRequestRemediation) GetTitle() string { @@ -12026,7 +12223,7 @@ type RuleType_Definition_Remediate_PullRequestRemediation_Content struct { func (x *RuleType_Definition_Remediate_PullRequestRemediation_Content) Reset() { *x = RuleType_Definition_Remediate_PullRequestRemediation_Content{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[185] + mi := &file_minder_v1_minder_proto_msgTypes[189] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12039,7 +12236,7 @@ func (x *RuleType_Definition_Remediate_PullRequestRemediation_Content) String() func (*RuleType_Definition_Remediate_PullRequestRemediation_Content) ProtoMessage() {} func (x *RuleType_Definition_Remediate_PullRequestRemediation_Content) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[185] + mi := &file_minder_v1_minder_proto_msgTypes[189] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12052,7 +12249,7 @@ func (x *RuleType_Definition_Remediate_PullRequestRemediation_Content) ProtoRefl // Deprecated: Use RuleType_Definition_Remediate_PullRequestRemediation_Content.ProtoReflect.Descriptor instead. func (*RuleType_Definition_Remediate_PullRequestRemediation_Content) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103, 0, 2, 1, 0} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107, 0, 2, 1, 0} } func (x *RuleType_Definition_Remediate_PullRequestRemediation_Content) GetPath() string { @@ -12095,7 +12292,7 @@ type RuleType_Definition_Remediate_PullRequestRemediation_ActionsReplaceTagsWith func (x *RuleType_Definition_Remediate_PullRequestRemediation_ActionsReplaceTagsWithSha) Reset() { *x = RuleType_Definition_Remediate_PullRequestRemediation_ActionsReplaceTagsWithSha{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[186] + mi := &file_minder_v1_minder_proto_msgTypes[190] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12109,7 +12306,7 @@ func (*RuleType_Definition_Remediate_PullRequestRemediation_ActionsReplaceTagsWi } func (x *RuleType_Definition_Remediate_PullRequestRemediation_ActionsReplaceTagsWithSha) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[186] + mi := &file_minder_v1_minder_proto_msgTypes[190] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12122,7 +12319,7 @@ func (x *RuleType_Definition_Remediate_PullRequestRemediation_ActionsReplaceTags // Deprecated: Use RuleType_Definition_Remediate_PullRequestRemediation_ActionsReplaceTagsWithSha.ProtoReflect.Descriptor instead. func (*RuleType_Definition_Remediate_PullRequestRemediation_ActionsReplaceTagsWithSha) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103, 0, 2, 1, 1} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107, 0, 2, 1, 1} } func (x *RuleType_Definition_Remediate_PullRequestRemediation_ActionsReplaceTagsWithSha) GetExclude() []string { @@ -12143,7 +12340,7 @@ type RuleType_Definition_Alert_AlertTypeSA struct { func (x *RuleType_Definition_Alert_AlertTypeSA) Reset() { *x = RuleType_Definition_Alert_AlertTypeSA{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[187] + mi := &file_minder_v1_minder_proto_msgTypes[191] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12156,7 +12353,7 @@ func (x *RuleType_Definition_Alert_AlertTypeSA) String() string { func (*RuleType_Definition_Alert_AlertTypeSA) ProtoMessage() {} func (x *RuleType_Definition_Alert_AlertTypeSA) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[187] + mi := &file_minder_v1_minder_proto_msgTypes[191] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12169,7 +12366,7 @@ func (x *RuleType_Definition_Alert_AlertTypeSA) ProtoReflect() protoreflect.Mess // Deprecated: Use RuleType_Definition_Alert_AlertTypeSA.ProtoReflect.Descriptor instead. func (*RuleType_Definition_Alert_AlertTypeSA) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{103, 0, 3, 0} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{107, 0, 3, 0} } func (x *RuleType_Definition_Alert_AlertTypeSA) GetSeverity() string { @@ -12200,7 +12397,7 @@ type Profile_Rule struct { func (x *Profile_Rule) Reset() { *x = Profile_Rule{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[188] + mi := &file_minder_v1_minder_proto_msgTypes[192] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12213,7 +12410,7 @@ func (x *Profile_Rule) String() string { func (*Profile_Rule) ProtoMessage() {} func (x *Profile_Rule) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[188] + mi := &file_minder_v1_minder_proto_msgTypes[192] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12226,7 +12423,7 @@ func (x *Profile_Rule) ProtoReflect() protoreflect.Message { // Deprecated: Use Profile_Rule.ProtoReflect.Descriptor instead. func (*Profile_Rule) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{104, 0} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{108, 0} } func (x *Profile_Rule) GetType() string { @@ -12275,7 +12472,7 @@ type Profile_Selector struct { func (x *Profile_Selector) Reset() { *x = Profile_Selector{} if protoimpl.UnsafeEnabled { - mi := &file_minder_v1_minder_proto_msgTypes[189] + mi := &file_minder_v1_minder_proto_msgTypes[193] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12288,7 +12485,7 @@ func (x *Profile_Selector) String() string { func (*Profile_Selector) ProtoMessage() {} func (x *Profile_Selector) ProtoReflect() protoreflect.Message { - mi := &file_minder_v1_minder_proto_msgTypes[189] + mi := &file_minder_v1_minder_proto_msgTypes[193] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12301,7 +12498,7 @@ func (x *Profile_Selector) ProtoReflect() protoreflect.Message { // Deprecated: Use Profile_Selector.ProtoReflect.Descriptor instead. func (*Profile_Selector) Descriptor() ([]byte, []int) { - return file_minder_v1_minder_proto_rawDescGZIP(), []int{104, 1} + return file_minder_v1_minder_proto_rawDescGZIP(), []int{108, 1} } func (x *Profile_Selector) GetId() string { @@ -12494,968 +12691,984 @@ var file_minder_v1_minder_proto_rawDesc = []byte{ 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x3c, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x63, 0x6f, 0x64, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x22, 0xc1, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x69, 0x73, - 0x70, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x70, - 0x6c, 0x61, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2d, - 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xb2, 0x02, - 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x63, 0x6c, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x63, 0x6c, 0x69, 0x12, 0x12, - 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, - 0x72, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, - 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x01, 0x52, 0x0b, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x6c, - 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, - 0x10, 0x03, 0x22, 0x45, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xb7, 0x01, 0x0a, 0x19, 0x53, 0x74, - 0x6f, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x05, 0x6f, 0x77, - 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x77, 0x6e, - 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4a, 0x04, 0x08, - 0x02, 0x10, 0x03, 0x22, 0x1c, 0x0a, 0x1a, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0xf7, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1d, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, - 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, - 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x7f, 0x0a, 0x29, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x68, 0x0a, 0x2a, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x69, - 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x66, 0x52, 0x07, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xa8, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x66, - 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, - 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x65, 0x70, - 0x6f, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x09, 0x0a, 0x07, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x22, 0x0d, 0x0a, 0x0b, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x75, 0x6e, + 0x22, 0x09, 0x0a, 0x07, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6e, 0x22, 0x07, 0x0a, 0x05, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x22, 0x3c, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x22, 0xc1, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2d, 0x0a, 0x13, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xb2, 0x02, 0x0a, 0x1a, + 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6c, + 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x63, 0x6c, 0x69, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, + 0x12, 0x19, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, + 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x72, 0x65, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x01, 0x52, 0x0b, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x6c, 0x88, 0x01, + 0x01, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x63, + 0x6c, 0x61, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6f, 0x77, + 0x6e, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x5f, 0x75, 0x72, 0x6c, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, + 0x22, 0x45, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, + 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xb7, 0x01, 0x0a, 0x19, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, + 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, - 0x64, 0x22, 0xf2, 0x04, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, - 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x48, 0x01, 0x52, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, - 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x6f, - 0x6f, 0x6b, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x6f, 0x6f, 0x6b, 0x55, 0x72, 0x6c, 0x12, - 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x1b, - 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x68, - 0x6f, 0x6f, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x68, 0x6f, 0x6f, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x6f, 0x6b, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x6f, - 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x75, 0x75, - 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x6f, 0x6b, 0x55, 0x75, - 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x6b, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x46, 0x6f, 0x72, 0x6b, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, - 0x73, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, - 0x65, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x22, 0xb1, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x12, 0x40, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, + 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x02, 0x10, + 0x03, 0x22, 0x1c, 0x0a, 0x1a, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xf7, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x7f, 0x0a, 0x29, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0xd2, 0x01, 0x0a, 0x12, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x72, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, - 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x47, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, - 0x53, 0x0a, 0x1a, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, - 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x22, 0x6d, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x22, 0x52, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x35, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x72, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x70, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x74, 0x65, 0x78, 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x68, 0x0a, 0x2a, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x66, 0x52, 0x07, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x22, 0xa8, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x66, 0x12, 0x14, + 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, + 0x77, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, + 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x22, + 0xf2, 0x04, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x13, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x48, 0x01, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x6f, 0x6f, + 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x6f, 0x6f, 0x6b, + 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x6f, 0x6f, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, + 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, + 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x6f, + 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, + 0x6f, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x6f, 0x6b, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x75, 0x75, 0x69, 0x64, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x6f, 0x6b, 0x55, 0x75, 0x69, 0x64, + 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, + 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x6b, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x69, 0x73, 0x46, 0x6f, 0x72, 0x6b, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x25, + 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, + 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, + 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x42, + 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x65, 0x64, 0x22, 0xb1, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x12, 0x40, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0xd2, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x35, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x1a, 0x47, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x53, 0x0a, + 0x1a, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x69, + 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x22, 0x6d, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, + 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x22, 0x52, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, + 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x70, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, + 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x43, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x22, 0x84, 0x01, 0x0a, + 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4a, 0x04, 0x08, + 0x02, 0x10, 0x03, 0x22, 0x54, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x72, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x87, 0x01, 0x0a, 0x1d, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4a, 0x04, 0x08, + 0x02, 0x10, 0x03, 0x22, 0x34, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x17, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x43, 0x0a, 0x1c, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x22, 0x84, - 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, - 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4a, - 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x54, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, - 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x87, 0x01, 0x0a, 0x1d, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, - 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4a, - 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x34, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x17, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, - 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, - 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, - 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x52, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x22, 0x63, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x2f, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 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, 0x6a, 0x0a, 0x22, 0x52, 0x65, 0x63, 0x6f, - 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, - 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x22, 0x25, 0x0a, 0x23, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, - 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x1e, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, - 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x38, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, + 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x0a, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x22, 0x63, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, + 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 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, 0x6a, 0x0a, 0x22, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, + 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x22, 0x25, 0x0a, 0x23, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x1e, 0x56, 0x65, + 0x72, 0x69, 0x66, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, + 0x18, 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x39, 0x0a, 0x1f, 0x56, 0x65, + 0x72, 0x69, 0x66, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x7a, 0x0a, 0x1f, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x39, 0x0a, 0x1f, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x7a, 0x0a, 0x1f, 0x56, 0x65, 0x72, 0x69, 0x66, - 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, - 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, - 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6e, 0x72, 0x6f, - 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x6f, - 0x6e, 0x63, 0x65, 0x22, 0x61, 0x0a, 0x20, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x4d, 0x0a, 0x10, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, - 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xd6, 0x02, 0x0a, 0x12, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x2b, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, - 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x29, 0x0a, 0x10, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x75, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x22, 0x19, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x14, - 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd4, 0x01, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, - 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x39, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0x60, 0x0a, 0x0b, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x72, 0x6f, - 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, - 0x2c, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x16, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4a, - 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0xbb, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x75, 0x73, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x48, 0x00, - 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, - 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x42, - 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x3b, 0x0a, - 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x0c, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x22, 0x4a, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, - 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, - 0x45, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x4a, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4a, 0x04, 0x08, 0x02, - 0x10, 0x03, 0x22, 0x45, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x6e, 0x63, + 0x65, 0x22, 0x61, 0x0a, 0x20, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x4d, 0x0a, 0x10, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x50, 0x72, + 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xd6, 0x02, 0x0a, 0x12, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x2b, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x10, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, + 0x10, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x22, 0x19, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x14, 0x0a, 0x12, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xd4, 0x01, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x75, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x39, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0x60, 0x0a, 0x0b, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x2c, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x16, 0x0a, 0x0e, 0x47, + 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4a, 0x04, 0x08, + 0x01, 0x10, 0x02, 0x22, 0xbb, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x48, 0x00, 0x52, 0x04, + 0x75, 0x73, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x0d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x75, 0x73, 0x65, + 0x72, 0x22, 0x4a, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, + 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x45, 0x0a, + 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x22, 0x4a, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, + 0x22, 0x45, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, + 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0xba, 0x01, 0x0a, 0x13, 0x50, 0x61, 0x74, 0x63, + 0x68, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, + 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0xba, 0x01, 0x0a, 0x13, 0x50, 0x61, - 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x28, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x44, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x54, 0x0a, 0x14, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x66, 0x0a, 0x13, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x44, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x54, 0x0a, 0x14, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x22, 0x46, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x55, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x22, 0x46, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0xe9, 0x01, 0x0a, 0x0d, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, - 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, - 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x70, 0x6c, - 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x94, 0x01, 0x0a, 0x0f, 0x45, 0x76, 0x61, 0x6c, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, - 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xbd, 0x07, - 0x0a, 0x14, 0x52, 0x75, 0x6c, 0x65, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1f, - 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x50, - 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x75, 0x6c, 0x65, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x75, - 0x69, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x75, - 0x69, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x59, 0x0a, 0x18, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x16, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x2f, 0x0a, 0x13, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x72, - 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x75, 0x6c, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x75, 0x6c, 0x65, 0x5f, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2f, 0x0a, - 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x76, 0x65, - 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2c, - 0x0a, 0x12, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x75, 0x6c, 0x65, - 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, - 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, - 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x72, 0x75, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x1a, 0x3d, 0x0a, 0x0f, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0x46, 0x0a, - 0x0d, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49, 0x64, 0x12, 0x25, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x6d, - 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xf7, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, - 0x64, 0x49, 0x64, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x61, - 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x16, 0x0a, - 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, - 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, - 0xb8, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x55, 0x0a, 0x16, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x65, 0x76, 0x61, 0x6c, - 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x66, 0x0a, 0x13, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x21, + 0x0a, 0x0c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x22, 0x46, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, + 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, + 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x55, 0x0a, 0x15, 0x47, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x22, 0x46, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x79, + 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, + 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0xe9, 0x01, 0x0a, 0x0d, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x12, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x94, 0x01, 0x0a, 0x0f, 0x45, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xbd, 0x07, 0x0a, 0x14, 0x52, 0x75, 0x6c, 0x65, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x14, 0x72, 0x75, 0x6c, 0x65, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x50, 0x0a, 0x20, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, - 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x64, 0x0a, 0x21, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x42, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3f, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x22, 0x49, 0x0a, 0x1c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x41, 0x75, 0x74, 0x6f, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, - 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xbf, 0x01, - 0x0a, 0x10, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x64, 0x0a, 0x0d, 0x45, 0x6e, 0x74, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x69, - 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x41, 0x75, - 0x74, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x75, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x4d, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, - 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x61, 0x75, 0x74, - 0x6f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, - 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x41, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x54, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x0a, 0x08, - 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x44, 0x0a, 0x14, 0x47, 0x69, 0x74, - 0x48, 0x75, 0x62, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x1f, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x88, - 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, - 0x74, 0x0a, 0x17, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x41, 0x70, 0x70, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x08, 0x65, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, - 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, - 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x08, 0x61, 0x70, 0x70, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x52, 0x07, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x4a, 0x0a, 0x17, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x48, - 0x75, 0x62, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x21, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x22, 0x45, 0x0a, 0x12, 0x47, 0x48, 0x43, 0x52, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x14, 0x72, 0x65, 0x74, 0x69, 0x72, 0x65, 0x64, 0x5f, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x02, 0x52, 0x13, 0x72, 0x65, 0x74, 0x69, 0x72, 0x65, 0x64, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x74, 0x69, 0x72, 0x65, - 0x64, 0x5f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x46, - 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x56, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x44, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, - 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, - 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x4b, 0x0a, 0x15, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, - 0x72, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x5c, 0x0a, 0x18, 0x47, 0x65, 0x74, - 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x09, + 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, + 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x50, 0x0a, 0x0b, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, + 0x6c, 0x65, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, + 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x64, + 0x61, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x75, 0x69, 0x64, + 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x11, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x59, 0x0a, 0x18, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x48, 0x00, 0x52, 0x16, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2f, + 0x0a, 0x13, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x72, 0x65, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, + 0x24, 0x0a, 0x0e, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x52, 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x73, + 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, + 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2c, 0x0a, 0x12, + 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x75, 0x6c, 0x65, 0x45, 0x76, + 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, + 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x55, 0x72, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x72, 0x75, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x1a, + 0x3d, 0x0a, 0x0f, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x1b, + 0x0a, 0x19, 0x5f, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0x46, 0x0a, 0x0d, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x6d, 0x69, 0x6e, + 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x22, 0xf7, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x75, - 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49, + 0x64, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x16, 0x0a, 0x04, 0x72, + 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x72, + 0x75, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, + 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3f, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x55, 0x0a, 0x16, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, + 0x6c, 0x65, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x14, 0x72, 0x75, 0x6c, 0x65, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x50, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x64, 0x0a, 0x21, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3f, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x22, 0x49, 0x0a, 0x1c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x1d, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xbf, 0x01, 0x0a, 0x10, + 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x45, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x75, 0x74, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x64, 0x0a, 0x0d, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x41, 0x75, 0x74, 0x6f, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x75, 0x0a, + 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x4d, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x69, 0x6e, + 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x61, 0x75, 0x74, 0x6f, 0x52, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x14, + 0x0a, 0x12, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x41, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x54, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x61, + 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, + 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, + 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x44, 0x0a, 0x14, 0x47, 0x69, 0x74, 0x48, 0x75, + 0x62, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x1f, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x88, 0x01, 0x01, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x74, 0x0a, + 0x17, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x41, 0x70, 0x70, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, + 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x52, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x22, 0x4a, 0x0a, 0x17, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x48, 0x75, 0x62, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, + 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01, + 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, + 0x45, 0x0a, 0x12, 0x47, 0x48, 0x43, 0x52, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x36, 0x0a, 0x14, 0x72, 0x65, 0x74, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x02, 0x52, 0x13, 0x72, 0x65, 0x74, 0x69, 0x72, 0x65, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x74, 0x69, 0x72, 0x65, 0x64, 0x5f, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x46, 0x0a, 0x09, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x56, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x22, 0x44, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6c, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x4b, 0x0a, 0x15, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x72, 0x75, + 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x5c, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x52, 0x75, + 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6c, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, + 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4b, 0x0a, 0x17, + 0x47, 0x65, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x49, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, + 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x08, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4f, 0x0a, 0x15, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x4a, 0x0a, 0x16, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x72, 0x75, - 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6c, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4b, - 0x0a, 0x17, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x49, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x72, 0x75, 0x6c, - 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, - 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4f, 0x0a, 0x15, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x72, 0x75, - 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x4a, 0x0a, 0x16, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, - 0x72, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4f, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x30, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4f, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x30, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x4a, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x30, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x4a, 0x0a, 0x16, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x72, 0x75, 0x6c, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x55, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, - 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x18, 0x0a, 0x16, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x45, - 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1a, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49, 0x64, - 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x72, 0x75, 0x6c, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xdd, 0x03, 0x0a, 0x1d, 0x4c, 0x69, - 0x73, 0x74, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x08, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, - 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, - 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x45, 0x76, - 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, - 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x9c, 0x01, 0x0a, 0x1e, 0x45, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x76, 0x61, 0x6c, 0x75, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x0e, - 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, - 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, - 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x45, - 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x1a, 0xb0, 0x01, 0x0a, 0x17, 0x45, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x79, 0x70, 0x65, 0x22, 0x55, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6c, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x61, + 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x12, 0x1a, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, + 0x23, 0x0a, 0x0c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49, 0x64, 0x52, 0x06, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x63, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xdd, 0x03, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, - 0x02, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x87, 0x02, 0x0a, 0x08, 0x52, 0x65, - 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, - 0x05, 0x70, 0x61, 0x72, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, - 0x72, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x46, 0x61, 0x6c, 0x6c, 0x62, - 0x61, 0x63, 0x6b, 0x52, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x1a, 0x3b, 0x0a, - 0x08, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x74, 0x74, - 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x68, 0x74, - 0x74, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x62, - 0x6f, 0x64, 0x79, 0x22, 0x25, 0x0a, 0x0b, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x0e, 0x0a, 0x0c, 0x41, 0x72, - 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3e, 0x0a, 0x07, 0x47, 0x69, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, - 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x98, 0x01, 0x0a, 0x08, 0x44, - 0x69, 0x66, 0x66, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x65, 0x63, 0x6f, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x69, - 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x54, 0x79, 0x70, 0x65, - 0x2e, 0x45, 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x0a, 0x65, 0x63, 0x6f, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x39, 0x0a, 0x09, 0x45, 0x63, - 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, - 0x65, 0x70, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, - 0x70, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x88, 0x02, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, - 0x74, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x19, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, - 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0xca, 0x01, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x15, 0x0a, - 0x11, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x0d, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x55, 0x4e, - 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x1a, 0x0b, 0xea, 0xdc, 0x14, 0x07, 0x75, 0x6e, 0x6b, - 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x18, 0x0a, 0x0a, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x49, 0x4e, - 0x46, 0x4f, 0x10, 0x02, 0x1a, 0x08, 0xea, 0xdc, 0x14, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x16, - 0x0a, 0x09, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x03, 0x1a, 0x07, 0xea, - 0xdc, 0x14, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x1c, 0x0a, 0x0c, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, - 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x10, 0x04, 0x1a, 0x0a, 0xea, 0xdc, 0x14, 0x06, 0x6d, 0x65, - 0x64, 0x69, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x0a, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x48, 0x49, - 0x47, 0x48, 0x10, 0x05, 0x1a, 0x08, 0xea, 0xdc, 0x14, 0x04, 0x68, 0x69, 0x67, 0x68, 0x12, 0x20, - 0x0a, 0x0e, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, - 0x10, 0x06, 0x1a, 0x0c, 0xea, 0xdc, 0x14, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, - 0x22, 0x98, 0x18, 0x0a, 0x08, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, - 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x30, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x67, - 0x75, 0x69, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, - 0x75, 0x69, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, - 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, - 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x1a, 0xe9, 0x15, 0x0a, 0x0a, 0x44, 0x65, 0x66, - 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x5f, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x45, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x52, 0x0a, 0x72, 0x75, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x3f, - 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, - 0x0b, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x88, 0x01, 0x01, 0x12, - 0x3d, 0x0a, 0x06, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x52, 0x06, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x12, 0x37, - 0x0a, 0x04, 0x65, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x08, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x6d, 0x69, + 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x61, 0x6c, + 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x45, 0x76, 0x61, 0x6c, + 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x08, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x9c, 0x01, 0x0a, 0x1e, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x0e, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, + 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x45, 0x76, 0x61, + 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x07, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x1a, 0xb0, 0x01, 0x0a, 0x17, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x64, 0x49, 0x64, 0x52, 0x06, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x12, 0x63, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x76, + 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, + 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x87, 0x02, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x70, + 0x61, 0x72, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x73, + 0x65, 0x12, 0x38, 0x0a, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, + 0x6b, 0x52, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x1a, 0x3b, 0x0a, 0x08, 0x46, + 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x74, 0x74, 0x70, 0x5f, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x68, 0x74, 0x74, 0x70, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x62, 0x6f, 0x64, + 0x79, 0x22, 0x25, 0x0a, 0x0b, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x0e, 0x0a, 0x0c, 0x41, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3e, 0x0a, 0x07, 0x47, 0x69, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, 0x6c, + 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x98, 0x01, 0x0a, 0x08, 0x44, 0x69, 0x66, + 0x66, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x65, 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, + 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x0a, 0x65, 0x63, 0x6f, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x39, 0x0a, 0x09, 0x45, 0x63, 0x6f, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x70, + 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x70, 0x66, + 0x69, 0x6c, 0x65, 0x22, 0x88, 0x02, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, + 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x19, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x76, 0x65, + 0x72, 0x69, 0x74, 0x79, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0xca, 0x01, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x56, + 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x0d, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x1a, 0x0b, 0xea, 0xdc, 0x14, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x12, 0x18, 0x0a, 0x0a, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, + 0x10, 0x02, 0x1a, 0x08, 0xea, 0xdc, 0x14, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x09, + 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x03, 0x1a, 0x07, 0xea, 0xdc, 0x14, + 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x1c, 0x0a, 0x0c, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x45, + 0x44, 0x49, 0x55, 0x4d, 0x10, 0x04, 0x1a, 0x0a, 0xea, 0xdc, 0x14, 0x06, 0x6d, 0x65, 0x64, 0x69, + 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x0a, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x48, 0x49, 0x47, 0x48, + 0x10, 0x05, 0x1a, 0x08, 0xea, 0xdc, 0x14, 0x04, 0x68, 0x69, 0x67, 0x68, 0x12, 0x20, 0x0a, 0x0e, + 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x06, + 0x1a, 0x0c, 0xea, 0xdc, 0x14, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x22, 0x98, + 0x18, 0x0a, 0x08, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x30, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x75, 0x69, + 0x64, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x75, 0x69, + 0x64, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, + 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, + 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x1a, 0xe9, 0x15, 0x0a, 0x0a, 0x44, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x12, 0x38, 0x0a, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x52, 0x0a, 0x72, 0x75, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x3f, 0x0a, 0x0c, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, + 0x06, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, + 0x67, 0x65, 0x73, 0x74, 0x52, 0x06, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x04, + 0x65, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x69, 0x6e, + 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, + 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x52, + 0x04, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x46, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, + 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, + 0x74, 0x65, 0x52, 0x09, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, + 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, + 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x1a, 0xc7, 0x02, 0x0a, 0x06, 0x49, 0x6e, + 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x65, 0x73, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x72, + 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x48, + 0x01, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, + 0x08, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x02, 0x52, 0x08, 0x61, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x03, 0x67, 0x69, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x03, 0x52, 0x03, 0x67, 0x69, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x04, 0x64, 0x69, 0x66, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x66, + 0x66, 0x54, 0x79, 0x70, 0x65, 0x48, 0x04, 0x52, 0x04, 0x64, 0x69, 0x66, 0x66, 0x88, 0x01, 0x01, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x62, 0x75, + 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, + 0x63, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x69, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x64, + 0x69, 0x66, 0x66, 0x1a, 0xe3, 0x06, 0x0a, 0x04, 0x45, 0x76, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x40, 0x0a, 0x02, 0x6a, 0x71, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, - 0x6c, 0x52, 0x04, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x46, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x65, 0x64, - 0x69, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, - 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x65, 0x64, - 0x69, 0x61, 0x74, 0x65, 0x52, 0x09, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x12, - 0x3a, 0x0a, 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, - 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x1a, 0xc7, 0x02, 0x0a, 0x06, - 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x65, - 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, - 0x04, 0x72, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x07, 0x62, 0x75, 0x69, 0x6c, - 0x74, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x48, 0x01, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x38, 0x0a, 0x08, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, - 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x02, 0x52, 0x08, 0x61, 0x72, - 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x03, 0x67, 0x69, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x03, 0x52, 0x03, 0x67, 0x69, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x04, 0x64, 0x69, 0x66, 0x66, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x69, 0x66, 0x66, 0x54, 0x79, 0x70, 0x65, 0x48, 0x04, 0x52, 0x04, 0x64, 0x69, 0x66, 0x66, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, - 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x72, 0x74, 0x69, - 0x66, 0x61, 0x63, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x69, 0x74, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x64, 0x69, 0x66, 0x66, 0x1a, 0xe3, 0x06, 0x0a, 0x04, 0x45, 0x76, 0x61, 0x6c, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x40, 0x0a, 0x02, 0x6a, 0x71, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, + 0x6c, 0x2e, 0x4a, 0x51, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x52, 0x02, + 0x6a, 0x71, 0x12, 0x41, 0x0a, 0x04, 0x72, 0x65, 0x67, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x67, 0x6f, 0x48, 0x00, 0x52, 0x04, 0x72, 0x65, + 0x67, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x09, 0x76, 0x75, 0x6c, 0x6e, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x2e, 0x56, 0x75, + 0x6c, 0x6e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x01, 0x52, 0x09, 0x76, 0x75, 0x6c, 0x6e, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x06, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x2e, 0x54, 0x72, 0x75, + 0x73, 0x74, 0x79, 0x48, 0x02, 0x52, 0x06, 0x74, 0x72, 0x75, 0x73, 0x74, 0x79, 0x88, 0x01, 0x01, + 0x12, 0x53, 0x0a, 0x0a, 0x68, 0x6f, 0x6d, 0x6f, 0x67, 0x6c, 0x79, 0x70, 0x68, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x2e, 0x48, 0x6f, 0x6d, 0x6f, 0x67, 0x6c, + 0x79, 0x70, 0x68, 0x73, 0x48, 0x03, 0x52, 0x0a, 0x68, 0x6f, 0x6d, 0x6f, 0x67, 0x6c, 0x79, 0x70, + 0x68, 0x73, 0x88, 0x01, 0x01, 0x1a, 0xd8, 0x01, 0x0a, 0x0c, 0x4a, 0x51, 0x43, 0x6f, 0x6d, 0x70, + 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x08, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, + 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x2e, 0x4a, 0x51, + 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x52, 0x08, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x53, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x2e, 0x4a, 0x51, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, - 0x52, 0x02, 0x6a, 0x71, 0x12, 0x41, 0x0a, 0x04, 0x72, 0x65, 0x67, 0x6f, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x67, 0x6f, 0x48, 0x00, 0x52, 0x04, - 0x72, 0x65, 0x67, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x09, 0x76, 0x75, 0x6c, 0x6e, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, - 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x2e, - 0x56, 0x75, 0x6c, 0x6e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x01, 0x52, 0x09, 0x76, 0x75, 0x6c, - 0x6e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x06, 0x74, 0x72, 0x75, - 0x73, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, - 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x2e, 0x54, - 0x72, 0x75, 0x73, 0x74, 0x79, 0x48, 0x02, 0x52, 0x06, 0x74, 0x72, 0x75, 0x73, 0x74, 0x79, 0x88, - 0x01, 0x01, 0x12, 0x53, 0x0a, 0x0a, 0x68, 0x6f, 0x6d, 0x6f, 0x67, 0x6c, 0x79, 0x70, 0x68, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x2e, 0x48, 0x6f, 0x6d, 0x6f, - 0x67, 0x6c, 0x79, 0x70, 0x68, 0x73, 0x48, 0x03, 0x52, 0x0a, 0x68, 0x6f, 0x6d, 0x6f, 0x67, 0x6c, - 0x79, 0x70, 0x68, 0x73, 0x88, 0x01, 0x01, 0x1a, 0xd8, 0x01, 0x0a, 0x0c, 0x4a, 0x51, 0x43, 0x6f, - 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x08, 0x69, 0x6e, 0x67, 0x65, - 0x73, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, - 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x2e, - 0x4a, 0x51, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, - 0x53, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x39, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x2e, 0x4a, 0x51, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, - 0x6f, 0x6e, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x1a, 0x1c, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x12, 0x10, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, - 0x65, 0x66, 0x1a, 0x71, 0x0a, 0x04, 0x52, 0x65, 0x67, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x65, 0x66, - 0x12, 0x2e, 0x0a, 0x10, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x76, 0x69, - 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x88, 0x01, 0x01, - 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x1a, 0x0b, 0x0a, 0x09, 0x56, 0x75, 0x6c, 0x6e, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x1a, 0x24, 0x0a, 0x06, 0x54, 0x72, 0x75, 0x73, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, - 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x1a, 0x20, 0x0a, 0x0a, 0x48, 0x6f, 0x6d, 0x6f, - 0x67, 0x6c, 0x79, 0x70, 0x68, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x72, - 0x65, 0x67, 0x6f, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x76, 0x75, 0x6c, 0x6e, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x79, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x68, 0x6f, 0x6d, 0x6f, 0x67, 0x6c, 0x79, 0x70, 0x68, 0x73, 0x1a, 0xc2, 0x07, 0x0a, 0x09, - 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, - 0x04, 0x72, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, - 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x48, 0x00, 0x52, 0x04, 0x72, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x76, 0x0a, 0x14, 0x67, - 0x68, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, - 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, - 0x61, 0x74, 0x65, 0x2e, 0x47, 0x68, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x74, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x48, 0x01, 0x52, 0x12, 0x67, 0x68, + 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x1a, 0x1c, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, + 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x65, 0x66, + 0x1a, 0x71, 0x0a, 0x04, 0x52, 0x65, 0x67, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x64, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x2e, + 0x0a, 0x10, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x76, 0x69, 0x6f, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x88, 0x01, 0x01, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x1a, 0x0b, 0x0a, 0x09, 0x56, 0x75, 0x6c, 0x6e, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x1a, 0x24, 0x0a, 0x06, 0x54, 0x72, 0x75, 0x73, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x1a, 0x20, 0x0a, 0x0a, 0x48, 0x6f, 0x6d, 0x6f, 0x67, 0x6c, + 0x79, 0x70, 0x68, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x72, 0x65, 0x67, + 0x6f, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x76, 0x75, 0x6c, 0x6e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x68, + 0x6f, 0x6d, 0x6f, 0x67, 0x6c, 0x79, 0x70, 0x68, 0x73, 0x1a, 0xc2, 0x07, 0x0a, 0x09, 0x52, 0x65, + 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x72, + 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, + 0x52, 0x04, 0x72, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x76, 0x0a, 0x14, 0x67, 0x68, 0x5f, + 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, + 0x65, 0x2e, 0x47, 0x68, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x48, 0x01, 0x52, 0x12, 0x67, 0x68, 0x42, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x67, 0x0a, 0x0c, 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, + 0x65, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0b, 0x70, 0x75, 0x6c, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x2e, 0x0a, 0x16, 0x47, 0x68, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x0c, 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, - 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, - 0x61, 0x74, 0x65, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, - 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0b, 0x70, 0x75, - 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x2e, 0x0a, 0x16, - 0x47, 0x68, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x1a, 0xae, 0x04, 0x0a, - 0x16, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x65, - 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, - 0x79, 0x12, 0x63, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x75, - 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0xa0, - 0x01, 0x0a, 0x1d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x68, 0x61, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x59, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, - 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x65, - 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x54, 0x61, 0x67, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x68, - 0x61, 0x48, 0x00, 0x52, 0x19, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x54, 0x61, 0x67, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x68, 0x61, 0x88, 0x01, - 0x01, 0x1a, 0x71, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x1a, 0x35, 0x0a, 0x19, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x54, 0x61, 0x67, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x68, - 0x61, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x42, 0x20, 0x0a, 0x1e, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, - 0x74, 0x61, 0x67, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x68, 0x61, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x67, 0x68, 0x5f, 0x62, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0xc0, 0x01, 0x0a, 0x05, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x62, - 0x0a, 0x11, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x61, 0x64, 0x76, 0x69, 0x73, - 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, - 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x53, 0x41, 0x48, 0x00, 0x52, 0x10, 0x73, - 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x88, - 0x01, 0x01, 0x1a, 0x29, 0x0a, 0x0b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x53, - 0x41, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x42, 0x14, 0x0a, - 0x12, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x61, 0x64, 0x76, 0x69, 0x73, - 0x6f, 0x72, 0x79, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x22, 0xc8, 0x06, 0x0a, 0x07, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x37, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x52, - 0x75, 0x6c, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, - 0x44, 0x0a, 0x11, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x52, - 0x75, 0x6c, 0x65, 0x52, 0x10, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x08, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, - 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, - 0x52, 0x08, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x70, 0x75, - 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0b, 0x70, 0x75, 0x6c, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x1a, 0xae, 0x04, 0x0a, 0x16, 0x50, + 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, + 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, + 0x63, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x47, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, + 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x75, 0x6c, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0xa0, 0x01, 0x0a, + 0x1d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x5f, 0x74, 0x61, 0x67, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x59, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x2e, 0x50, + 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x54, 0x61, 0x67, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x68, 0x61, 0x48, + 0x00, 0x52, 0x19, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x54, 0x61, 0x67, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x68, 0x61, 0x88, 0x01, 0x01, 0x1a, + 0x71, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, + 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x12, 0x17, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x1a, 0x35, 0x0a, 0x19, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x54, 0x61, 0x67, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x68, 0x61, 0x12, + 0x18, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x61, + 0x67, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x68, 0x61, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x72, 0x65, 0x73, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x67, 0x68, 0x5f, 0x62, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, + 0x0d, 0x5f, 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0xc0, + 0x01, 0x0a, 0x05, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x62, 0x0a, 0x11, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x65, 0x66, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x53, 0x41, 0x48, 0x00, 0x52, 0x10, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x88, 0x01, 0x01, + 0x1a, 0x29, 0x0a, 0x0b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x53, 0x41, 0x12, + 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, + 0x79, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x22, 0x9a, 0x08, 0x0a, 0x07, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x12, 0x37, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, + 0x65, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x44, 0x0a, + 0x11, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, + 0x65, 0x52, 0x10, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x08, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x08, + 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x70, 0x75, 0x6c, 0x6c, + 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0b, 0x70, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x18, + 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, + 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x70, 0x69, 0x70, 0x65, 0x6c, + 0x69, 0x6e, 0x65, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0b, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, + 0x52, 0x75, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x72, 0x75, 0x6e, 0x18, + 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x07, + 0x74, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6e, 0x12, 0x2d, 0x0a, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, + 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, + 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x39, 0x0a, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, @@ -14061,7 +14274,7 @@ var file_minder_v1_minder_proto_rawDesc = []byte{ 0x45, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x03, 0x2a, - 0x88, 0x01, 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x4e, + 0xdc, 0x01, 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x45, 0x53, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x45, @@ -14069,609 +14282,614 @@ var file_minder_v1_minder_proto_rawDesc = []byte{ 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, 0x53, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x55, 0x4c, 0x4c, 0x5f, - 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x53, 0x10, 0x04, 0x2a, 0x97, 0x02, 0x0a, 0x0c, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x50, - 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x14, 0x50, 0x52, - 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x49, 0x54, 0x48, - 0x55, 0x42, 0x10, 0x01, 0x1a, 0x0a, 0xea, 0xdc, 0x14, 0x06, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x12, 0x20, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x10, 0x02, 0x1a, 0x08, 0xea, 0xdc, 0x14, 0x04, 0x72, 0x65, - 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x47, 0x49, 0x54, 0x10, 0x03, 0x1a, 0x07, 0xea, 0xdc, 0x14, 0x03, 0x67, - 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x43, 0x49, 0x10, 0x04, 0x1a, 0x07, 0xea, 0xdc, 0x14, 0x03, 0x6f, - 0x63, 0x69, 0x12, 0x2e, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x45, 0x52, 0x10, - 0x05, 0x1a, 0x0f, 0xea, 0xdc, 0x14, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x2d, 0x6c, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x12, 0x30, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x45, 0x52, - 0x10, 0x06, 0x1a, 0x10, 0xea, 0xdc, 0x14, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2d, 0x6c, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x2a, 0xd5, 0x01, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, - 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x15, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, - 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x10, - 0x01, 0x1a, 0x0a, 0xea, 0xdc, 0x14, 0x06, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x12, 0x2d, 0x0a, - 0x19, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, - 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x5f, 0x41, 0x50, 0x50, 0x10, 0x02, 0x1a, 0x0e, 0xea, 0xdc, - 0x14, 0x0a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2d, 0x61, 0x70, 0x70, 0x12, 0x21, 0x0a, 0x13, - 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x47, - 0x48, 0x43, 0x52, 0x10, 0x03, 0x1a, 0x08, 0xea, 0xdc, 0x14, 0x04, 0x67, 0x68, 0x63, 0x72, 0x12, - 0x2b, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x41, 0x53, - 0x53, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x48, 0x55, 0x42, 0x10, 0x04, 0x1a, 0x0d, 0xea, - 0xdc, 0x14, 0x09, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x68, 0x75, 0x62, 0x2a, 0xa9, 0x02, 0x0a, - 0x11, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x17, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, - 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4e, 0x4f, 0x4e, - 0x45, 0x10, 0x01, 0x1a, 0x08, 0xea, 0xdc, 0x14, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x12, 0x31, 0x0a, - 0x1d, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, - 0x4c, 0x4f, 0x57, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10, 0x02, - 0x1a, 0x0e, 0xea, 0xdc, 0x14, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, - 0x12, 0x59, 0x0a, 0x31, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4f, 0x41, 0x55, 0x54, 0x48, 0x32, 0x5f, 0x41, 0x55, - 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x44, 0x45, - 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x03, 0x1a, 0x22, 0xea, 0xdc, 0x14, 0x1e, 0x6f, 0x61, 0x75, - 0x74, 0x68, 0x32, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x3b, 0x0a, 0x22, 0x41, - 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4c, 0x4f, - 0x57, 0x5f, 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x46, 0x4c, 0x4f, - 0x57, 0x10, 0x04, 0x1a, 0x13, 0xea, 0xdc, 0x14, 0x0f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, - 0x61, 0x70, 0x70, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x2a, 0xbb, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, - 0x1d, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x53, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x22, 0x0a, 0x15, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x53, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x01, 0x1a, 0x07, 0xea, 0xdc, 0x14, - 0x03, 0x73, 0x65, 0x74, 0x12, 0x26, 0x0a, 0x17, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, - 0x41, 0x4c, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, - 0x02, 0x1a, 0x09, 0xea, 0xdc, 0x14, 0x05, 0x75, 0x6e, 0x73, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x20, - 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x42, 0x4c, 0x45, - 0x10, 0x03, 0x1a, 0x12, 0xea, 0xdc, 0x14, 0x0e, 0x6e, 0x6f, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x32, 0x7d, 0x0a, 0x0d, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x1d, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0xaa, 0xf8, 0x18, 0x04, 0x10, 0x01, 0x30, 0x01, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x68, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x32, 0xbc, 0x03, 0x0a, 0x0f, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x95, 0x01, 0x0a, 0x0d, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x6d, 0x69, - 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, 0x69, - 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, - 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, - 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x0d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x5a, 0x13, - 0x12, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x73, 0x12, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x7d, 0x12, 0x7f, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, - 0x42, 0x79, 0x49, 0x64, 0x12, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x42, 0x79, 0x49, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x42, - 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0xaa, 0xf8, 0x18, - 0x04, 0x30, 0x03, 0x38, 0x0d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x2f, 0x7b, 0x69, - 0x64, 0x7d, 0x12, 0x8f, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x53, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, + 0x54, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x4c, 0x45, 0x41, 0x53, 0x45, 0x10, 0x05, 0x12, 0x17, + 0x0a, 0x13, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x4c, 0x49, 0x4e, + 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x54, 0x49, 0x54, + 0x59, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x52, 0x55, 0x4e, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, + 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x08, 0x2a, 0x97, + 0x02, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1d, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, + 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x10, 0x01, 0x1a, 0x0a, 0xea, 0xdc, 0x14, 0x06, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x12, 0x20, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x10, 0x02, 0x1a, 0x08, 0xea, 0xdc, + 0x14, 0x04, 0x72, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, + 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x49, 0x54, 0x10, 0x03, 0x1a, 0x07, 0xea, + 0xdc, 0x14, 0x03, 0x67, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, + 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x43, 0x49, 0x10, 0x04, 0x1a, 0x07, 0xea, + 0xdc, 0x14, 0x03, 0x6f, 0x63, 0x69, 0x12, 0x2e, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, + 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x5f, 0x4c, 0x49, 0x53, + 0x54, 0x45, 0x52, 0x10, 0x05, 0x1a, 0x0f, 0xea, 0xdc, 0x14, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x2d, + 0x6c, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, + 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x4c, 0x49, + 0x53, 0x54, 0x45, 0x52, 0x10, 0x06, 0x1a, 0x10, 0xea, 0xdc, 0x14, 0x0c, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x72, 0x2a, 0xd5, 0x01, 0x0a, 0x0d, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, + 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x15, 0x50, 0x52, + 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x47, 0x49, 0x54, + 0x48, 0x55, 0x42, 0x10, 0x01, 0x1a, 0x0a, 0xea, 0xdc, 0x14, 0x06, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x12, 0x2d, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x43, 0x4c, + 0x41, 0x53, 0x53, 0x5f, 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x5f, 0x41, 0x50, 0x50, 0x10, 0x02, + 0x1a, 0x0e, 0xea, 0xdc, 0x14, 0x0a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2d, 0x61, 0x70, 0x70, + 0x12, 0x21, 0x0a, 0x13, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x41, + 0x53, 0x53, 0x5f, 0x47, 0x48, 0x43, 0x52, 0x10, 0x03, 0x1a, 0x08, 0xea, 0xdc, 0x14, 0x04, 0x67, + 0x68, 0x63, 0x72, 0x12, 0x2b, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, + 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x48, 0x55, 0x42, 0x10, + 0x04, 0x1a, 0x0d, 0xea, 0xdc, 0x14, 0x09, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x68, 0x75, 0x62, + 0x2a, 0xa9, 0x02, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, + 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x17, 0x41, 0x55, + 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x57, + 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x1a, 0x08, 0xea, 0xdc, 0x14, 0x04, 0x6e, 0x6f, 0x6e, + 0x65, 0x12, 0x31, 0x0a, 0x1d, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x50, + 0x55, 0x54, 0x10, 0x02, 0x1a, 0x0e, 0xea, 0xdc, 0x14, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x12, 0x59, 0x0a, 0x31, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4f, 0x41, 0x55, 0x54, 0x48, + 0x32, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x03, 0x1a, 0x22, 0xea, 0xdc, 0x14, + 0x1e, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x12, + 0x3b, 0x0a, 0x22, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x5f, 0x41, 0x50, 0x50, + 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x04, 0x1a, 0x13, 0xea, 0xdc, 0x14, 0x0f, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x2a, 0xbb, 0x01, 0x0a, + 0x10, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x53, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x15, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, + 0x41, 0x4c, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x01, 0x1a, + 0x07, 0xea, 0xdc, 0x14, 0x03, 0x73, 0x65, 0x74, 0x12, 0x26, 0x0a, 0x17, 0x43, 0x52, 0x45, 0x44, + 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x45, 0x54, 0x10, 0x02, 0x1a, 0x09, 0xea, 0xdc, 0x14, 0x05, 0x75, 0x6e, 0x73, 0x65, 0x74, + 0x12, 0x38, 0x0a, 0x20, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x53, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x1a, 0x12, 0xea, 0xdc, 0x14, 0x0e, 0x6e, 0x6f, 0x74, 0x5f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x32, 0x7d, 0x0a, 0x0d, 0x48, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x0b, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x1d, 0x2e, 0x6d, 0x69, 0x6e, + 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0xaa, 0xf8, 0x18, 0x04, 0x10, + 0x01, 0x30, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x32, 0xbc, 0x03, 0x0a, 0x0f, 0x41, 0x72, + 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x95, 0x01, + 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x12, + 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x41, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x0d, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x33, 0x5a, 0x13, 0x12, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x72, + 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x12, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x7d, 0x12, 0x7f, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x42, 0x79, 0x49, 0x64, 0x12, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, - 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, - 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x2f, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x0d, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x3d, 0x2a, 0x2a, 0x7d, 0x32, 0xb6, 0x05, 0x0a, 0x0c, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x52, 0x4c, 0x12, 0x25, 0x2e, - 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0xaa, 0xf8, - 0x18, 0x04, 0x30, 0x03, 0x38, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x75, 0x72, 0x6c, 0x12, 0xac, - 0x01, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x24, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x69, - 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x49, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x17, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x5a, 0x17, 0x3a, 0x01, 0x2a, 0x22, 0x12, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x1d, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0xd2, 0x01, - 0x0a, 0x17, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x60, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4f, - 0x5a, 0x21, 0x12, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, - 0x2f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x2f, 0x7b, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x7d, 0x12, 0x2a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, - 0x68, 0x2f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x7d, 0x88, - 0x02, 0x01, 0x12, 0x98, 0x01, 0x0a, 0x18, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, - 0x2a, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, + 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6d, 0x69, + 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, + 0x61, 0x63, 0x74, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x25, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x0d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, + 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, + 0x74, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x8f, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x72, + 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x2e, 0x6d, + 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, + 0x0d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x2a, 0x2a, 0x7d, 0x32, 0xb6, 0x05, 0x0a, 0x0c, 0x4f, 0x41, 0x75, + 0x74, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x13, 0x47, 0x65, + 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x52, + 0x4c, 0x12, 0x25, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x52, + 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x20, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, + 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x75, + 0x72, 0x6c, 0x12, 0xac, 0x01, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x24, 0x2e, 0x6d, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x25, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x17, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x5a, 0x17, 0x3a, 0x01, 0x2a, 0x22, 0x12, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x22, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0xd2, 0x01, 0x0a, 0x17, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x29, 0x2e, + 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x72, 0x6f, + 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x60, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x17, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x4f, 0x5a, 0x21, 0x12, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x2f, 0x7b, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x7d, 0x12, 0x2a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x7d, 0x88, 0x02, 0x01, 0x12, 0x98, 0x01, 0x0a, 0x18, 0x56, 0x65, 0x72, 0x69, 0x66, + 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x12, 0x2a, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2b, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6d, 0x69, - 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, - 0x38, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x32, 0xe9, 0x0a, - 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0xc7, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x24, 0x2e, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x25, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x64, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, - 0x0a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x56, 0x3a, 0x01, 0x2a, 0x5a, 0x20, 0x3a, 0x01, 0x2a, 0x22, - 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x22, 0x2f, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0xf1, 0x01, - 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x12, 0x34, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, - 0x6d, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x5e, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x50, 0x5a, 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x12, 0x2f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2f, - 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x12, 0xad, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x69, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0xaa, 0xf8, + 0x18, 0x04, 0x30, 0x03, 0x38, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x65, 0x72, 0x69, 0x66, + 0x79, 0x32, 0xe9, 0x0a, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xc7, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x24, + 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x64, 0xaa, 0xf8, 0x18, + 0x04, 0x30, 0x03, 0x38, 0x0a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x56, 0x3a, 0x01, 0x2a, 0x5a, 0x20, + 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x22, 0x2f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x12, 0xf1, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x34, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, + 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, + 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x22, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x50, 0x5a, 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x2f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0xad, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x50, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x09, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x5a, - 0x16, 0x12, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x28, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x7d, 0x12, 0x95, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x12, 0x23, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, - 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x35, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x09, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x27, 0x12, 0x25, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x69, 0x64, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xd0, 0x01, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x25, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x6a, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x09, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5c, - 0x5a, 0x23, 0x12, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x6e, 0x61, - 0x6d, 0x65, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x9e, 0x01, 0x0a, - 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x42, 0x79, 0x49, 0x64, 0x12, 0x26, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, - 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, + 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x50, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x09, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x42, 0x5a, 0x16, 0x12, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x28, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, + 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x7d, 0x12, 0x95, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x12, 0x23, 0x2e, 0x6d, 0x69, + 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x24, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x0c, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x2a, 0x25, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x09, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x69, 0x64, 0x2f, 0x7b, 0x72, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xd9, 0x01, - 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, - 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, 0xaa, - 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x0c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5c, 0x5a, 0x23, 0x2a, - 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x2a, - 0x2a, 0x7d, 0x2a, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2f, - 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x2a, 0x2a, 0x7d, 0x32, 0xce, 0x04, 0x0a, 0x0b, 0x55, 0x73, - 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x68, 0x0a, 0x0a, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0xaa, 0xf8, 0x18, 0x02, 0x30, 0x02, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x11, 0x3a, 0x01, 0x2a, 0x22, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x75, - 0x73, 0x65, 0x72, 0x12, 0x65, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, - 0x72, 0x12, 0x1c, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1d, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, - 0xaa, 0xf8, 0x18, 0x02, 0x30, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x2a, 0x0c, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x12, 0x5c, 0x0a, 0x07, 0x47, 0x65, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1a, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0xaa, 0xf8, - 0x18, 0x02, 0x30, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x12, 0x80, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, - 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x2e, 0x6d, - 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x22, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x26, 0xaa, 0xf8, 0x18, 0x02, 0x30, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1a, 0x12, 0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, - 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x8c, 0x01, 0x0a, 0x11, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x23, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0xaa, 0xf8, - 0x18, 0x02, 0x30, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x63, 0x6f, 0x64, 0x65, 0x7d, 0x32, 0xb7, 0x0e, 0x0a, 0x0e, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x76, 0x0a, - 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1f, - 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x22, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x14, 0x3a, 0x01, 0x2a, 0x22, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x76, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0xaa, 0xf8, 0x18, 0x04, 0x30, - 0x03, 0x38, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x3a, 0x01, 0x2a, 0x1a, 0x0f, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x7c, 0x0a, - 0x0c, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1e, 0x2e, - 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, - 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, - 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x05, - 0x70, 0x61, 0x74, 0x63, 0x68, 0x32, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x78, 0x0a, 0x0d, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x6d, - 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xd0, 0x01, + 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6d, + 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x09, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x5c, 0x5a, 0x23, 0x12, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x2a, 0x2a, 0x7d, + 0x12, 0x9e, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x12, 0x26, 0x2e, 0x6d, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x27, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, + 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0xaa, 0xf8, 0x18, 0x04, + 0x30, 0x03, 0x38, 0x0c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x2a, 0x25, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x69, + 0x64, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, + 0x7d, 0x12, 0xd9, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x2e, 0x6d, + 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x6a, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x0c, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x5c, 0x5a, 0x23, 0x2a, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x2a, 0x2a, 0x7d, 0x2a, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x6e, + 0x61, 0x6d, 0x65, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x2a, 0x2a, 0x7d, 0x32, 0xce, 0x04, + 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x68, 0x0a, + 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x6d, 0x69, + 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0xaa, 0xf8, 0x18, 0x02, 0x30, 0x02, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x3a, 0x01, 0x2a, 0x22, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x12, 0x65, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x1a, 0xaa, 0xf8, 0x18, 0x02, 0x30, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, + 0x2a, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x12, 0x5c, + 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x6d, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1a, 0xaa, 0xf8, 0x18, 0x02, 0x30, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x12, 0x80, 0x01, 0x0a, + 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0xaa, 0xf8, 0x18, 0x02, 0x30, 0x02, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x75, + 0x73, 0x65, 0x72, 0x2f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x8c, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x69, 0x6e, + 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x2c, 0xaa, 0xf8, 0x18, 0x02, 0x30, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1e, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x69, 0x6e, 0x76, + 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x63, 0x6f, 0x64, 0x65, 0x7d, 0x32, 0xb7, + 0x0e, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x76, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x1e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x3a, 0x01, 0x2a, 0x22, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x76, 0x0a, 0x0d, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, + 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x69, + 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0xaa, + 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x3a, 0x01, 0x2a, + 0x1a, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x12, 0x7c, 0x0a, 0x0c, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x12, 0x1e, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, + 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, + 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x2b, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x1f, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1d, 0x3a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x32, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, + 0x78, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x12, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x24, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x20, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x16, 0x2a, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x71, 0x0a, 0x0c, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x6d, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0xaa, 0xf8, 0x18, 0x04, + 0x30, 0x03, 0x38, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x7b, 0x0a, 0x0e, + 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x79, 0x49, 0x64, 0x12, 0x20, + 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x24, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x1d, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xa4, 0x01, 0x0a, 0x16, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, + 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0xaa, 0xf8, 0x18, 0x04, 0x30, + 0x03, 0x38, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x9e, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2b, + 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6d, 0x69, + 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0xaa, 0xf8, 0x18, 0x04, 0x30, + 0x03, 0x38, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x76, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x19, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, + 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x23, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x4e, 0x61, + 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0xaa, 0xf8, 0x18, 0x04, + 0x30, 0x03, 0x38, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6e, 0x61, + 0x6d, 0x65, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x80, 0x01, 0x0a, + 0x0f, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x49, 0x64, + 0x12, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x49, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, + 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, + 0x7b, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x1a, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x7b, 0x0a, 0x0e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, + 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x24, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x1b, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x1a, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x7d, 0x0a, 0x0e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x69, + 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, + 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x24, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x2a, - 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x71, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x1d, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x7b, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x79, 0x49, 0x64, 0x12, 0x20, 0x2e, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, - 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x24, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, - 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xa4, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x28, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, 0x4e, - 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x21, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x9e, 0x01, 0x0a, - 0x19, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x42, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2b, 0x2e, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x21, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x76, 0x0a, - 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1f, - 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x22, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x14, 0x12, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6c, 0x65, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6c, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x2e, 0x6d, 0x69, - 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x24, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x19, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x80, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x49, 0x64, 0x12, 0x21, 0x2e, 0x6d, - 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6c, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x22, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, - 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x26, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x19, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6c, - 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x7b, 0x0a, 0x0e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x2e, - 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x24, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x1a, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, - 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x7b, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, - 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x24, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, - 0x01, 0x2a, 0x1a, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6c, 0x65, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x7d, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0xaa, 0xf8, - 0x18, 0x04, 0x30, 0x03, 0x38, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2f, - 0x7b, 0x69, 0x64, 0x7d, 0x32, 0xb0, 0x02, 0x0a, 0x12, 0x45, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x15, - 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x27, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, - 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, - 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, - 0x38, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x8b, 0x01, 0x0a, 0x15, 0x4c, 0x69, - 0x73, 0x74, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x12, 0x27, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d, - 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x61, - 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x21, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x32, 0x8a, 0x05, 0x0a, 0x12, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x71, - 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x6d, 0x69, - 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x05, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x6f, 0x6c, 0x65, - 0x73, 0x12, 0x95, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x73, - 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x73, - 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x26, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, - 0x38, 0x06, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x73, - 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x78, 0x0a, 0x0a, 0x41, 0x73, 0x73, - 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x1c, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x07, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x22, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x73, 0x73, - 0x69, 0x67, 0x6e, 0x12, 0x78, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, - 0x65, 0x12, 0x1c, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1d, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, - 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, - 0x2a, 0x22, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x75, 0x0a, - 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x1c, 0x2e, 0x6d, 0x69, - 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x6f, + 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x26, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, + 0x2a, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x32, 0xb0, 0x02, 0x0a, 0x12, 0x45, 0x76, 0x61, + 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x8b, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x27, 0x2e, 0x6d, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0xaa, 0xf8, + 0x18, 0x04, 0x30, 0x03, 0x38, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x8b, 0x01, + 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x27, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x28, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0xaa, 0xf8, 0x18, 0x04, + 0x30, 0x03, 0x38, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x32, 0x8a, 0x05, 0x0a, 0x12, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x71, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, + 0x1b, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6d, + 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0xaa, 0xf8, 0x18, 0x04, + 0x30, 0x03, 0x38, 0x05, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, + 0x6c, 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x2e, + 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, + 0x6c, 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0xaa, 0xf8, + 0x18, 0x04, 0x30, 0x03, 0x38, 0x06, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x78, 0x0a, + 0x0a, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x1c, 0x2e, 0x6d, 0x69, + 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, - 0x38, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x32, 0xc5, 0x07, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x71, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1e, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0xaa, 0xf8, 0x18, 0x04, 0x30, - 0x02, 0x38, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x77, 0x0a, 0x0d, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x2e, 0x6d, - 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, - 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x23, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, - 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x12, 0x9e, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x69, - 0x6c, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x69, 0x6c, 0x64, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x24, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x68, 0x69, 0x6c, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x02, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x69, - 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x12, 0x74, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, + 0x38, 0x07, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x22, 0x1a, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x78, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x1c, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x2d, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x25, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x22, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x12, 0x75, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, + 0x1c, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, + 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0xaa, 0xf8, + 0x18, 0x04, 0x30, 0x03, 0x38, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x32, 0xc5, 0x07, 0x0a, 0x0f, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x71, 0x0a, 0x0c, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1e, 0x2e, 0x6d, + 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, + 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0xaa, + 0xf8, 0x18, 0x04, 0x30, 0x02, 0x38, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, + 0x77, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x23, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x01, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x9e, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x23, + 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x68, 0x69, 0x6c, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0xaa, 0xf8, 0x18, 0x04, 0x30, + 0x03, 0x38, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x12, 0x74, 0x0a, 0x0d, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, + 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x69, + 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0xaa, + 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x04, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x2a, 0x10, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, + 0x77, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x23, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x03, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a, 0x1a, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x78, 0x0a, 0x0c, 0x50, 0x61, 0x74, 0x63, + 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0xaa, 0xf8, 0x18, 0x04, 0x30, + 0x03, 0x38, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, + 0x32, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x12, 0xbb, 0x01, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x30, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, + 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0xaa, 0xf8, 0x18, 0x04, + 0x30, 0x03, 0x38, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x01, 0x2a, 0x22, 0x21, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, + 0x32, 0xd5, 0x09, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x7c, 0x0a, 0x0d, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0xaa, 0xf8, 0x18, 0x04, 0x30, - 0x03, 0x38, 0x04, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x2a, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x77, 0x0a, 0x0d, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x2e, 0x6d, - 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, - 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x23, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, - 0x01, 0x2a, 0x1a, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x12, 0x78, 0x0a, 0x0c, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x03, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x32, 0x10, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0xbb, - 0x01, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, - 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, - 0x6b, 0x12, 0x30, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, - 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x63, 0x6f, - 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x23, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x01, 0x2a, 0x22, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x32, 0xd5, 0x09, 0x0a, - 0x10, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x7c, 0x0a, 0x0d, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x17, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x32, 0x11, 0x2f, 0x61, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0xaa, 0xf8, 0x18, 0x04, 0x30, + 0x03, 0x38, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, + 0x32, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x73, 0x12, 0x76, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x28, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1a, 0x12, 0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x75, 0x0a, 0x0d, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x2e, 0x6d, + 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, + 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x21, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, + 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x73, 0x12, 0x7b, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0xaa, 0xf8, 0x18, 0x04, 0x30, + 0x03, 0x38, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, - 0x76, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1d, - 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, - 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0xaa, - 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, + 0x78, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x12, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x18, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x89, 0x01, 0x0a, 0x12, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x79, 0x49, 0x44, + 0x12, 0x24, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x79, 0x49, 0x44, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0xaa, + 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x0c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x75, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0xaa, 0xf8, 0x18, - 0x04, 0x30, 0x03, 0x38, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x7b, - 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x12, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x16, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x78, 0x0a, 0x0e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x20, 0x2e, - 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x21, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x18, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x89, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x79, 0x49, 0x44, 0x12, 0x24, 0x2e, 0x6d, - 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x79, 0x49, - 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0xaa, 0xf8, 0x18, 0x04, 0x30, - 0x03, 0x38, 0x0c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, - 0x7d, 0x12, 0x8e, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x63, 0x6c, 0x61, 0x69, 0x6d, - 0x65, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x27, 0x2e, 0x6d, 0x69, - 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x63, 0x6c, 0x61, - 0x69, 0x6d, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, - 0xaa, 0xf8, 0x18, 0x02, 0x30, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x73, 0x12, 0x8e, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x26, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0xaa, 0xf8, 0x18, 0x04, 0x30, - 0x03, 0x38, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x65, 0x73, 0x12, 0xae, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, - 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x30, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x24, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x61, 0x6c, 0x6c, 0x32, 0x92, 0x01, 0x0a, 0x0d, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x22, 0x2e, 0x6d, 0x69, - 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, - 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x23, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, - 0x6e, 0x76, 0x69, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0xaa, 0xf8, 0x18, 0x02, 0x30, 0x01, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x17, 0x12, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x69, - 0x74, 0x65, 0x2f, 0x7b, 0x63, 0x6f, 0x64, 0x65, 0x7d, 0x3a, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xcd, 0xcb, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x88, 0x01, 0x01, 0x3a, 0x58, 0x0a, 0x0b, 0x72, 0x70, 0x63, 0x5f, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x85, 0x8f, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, - 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x70, 0x63, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x72, 0x70, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, - 0x3a, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x6c, 0x6f, 0x6b, 0x2f, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, - 0x6f, 0x2f, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x8e, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x63, + 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, + 0x27, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, + 0x6e, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, + 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x22, 0xaa, 0xf8, 0x18, 0x02, 0x30, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, + 0x12, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x79, 0x2f, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x8e, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x25, + 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0xaa, + 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0xae, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x63, 0x6f, + 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0xaa, 0xf8, 0x18, 0x04, 0x30, 0x03, 0x38, 0x24, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2f, 0x72, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6c, 0x6c, 0x32, 0x92, 0x01, 0x0a, 0x0d, 0x49, 0x6e, 0x76, + 0x69, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x10, 0x47, + 0x65, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, + 0x22, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0xaa, 0xf8, 0x18, 0x02, 0x30, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x2f, 0x7b, 0x63, 0x6f, 0x64, 0x65, 0x7d, 0x3a, 0x3a, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xcd, 0xcb, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x3a, 0x58, 0x0a, 0x0b, 0x72, 0x70, 0x63, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x85, 0x8f, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x70, 0x63, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x72, 0x70, 0x63, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x42, 0x3a, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x6c, 0x6f, 0x6b, 0x2f, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x2f, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -14687,7 +14905,7 @@ func file_minder_v1_minder_proto_rawDescGZIP() []byte { } var file_minder_v1_minder_proto_enumTypes = make([]protoimpl.EnumInfo, 9) -var file_minder_v1_minder_proto_msgTypes = make([]protoimpl.MessageInfo, 190) +var file_minder_v1_minder_proto_msgTypes = make([]protoimpl.MessageInfo, 194) var file_minder_v1_minder_proto_goTypes = []any{ (ObjectOwner)(0), // 0: minder.v1.ObjectOwner (Relation)(0), // 1: minder.v1.Relation @@ -14710,524 +14928,532 @@ var file_minder_v1_minder_proto_goTypes = []any{ (*GetArtifactByNameRequest)(nil), // 18: minder.v1.GetArtifactByNameRequest (*GetArtifactByNameResponse)(nil), // 19: minder.v1.GetArtifactByNameResponse (*PullRequest)(nil), // 20: minder.v1.PullRequest - (*GetInviteDetailsRequest)(nil), // 21: minder.v1.GetInviteDetailsRequest - (*GetInviteDetailsResponse)(nil), // 22: minder.v1.GetInviteDetailsResponse - (*CheckHealthRequest)(nil), // 23: minder.v1.CheckHealthRequest - (*CheckHealthResponse)(nil), // 24: minder.v1.CheckHealthResponse - (*GetAuthorizationURLRequest)(nil), // 25: minder.v1.GetAuthorizationURLRequest - (*GetAuthorizationURLResponse)(nil), // 26: minder.v1.GetAuthorizationURLResponse - (*StoreProviderTokenRequest)(nil), // 27: minder.v1.StoreProviderTokenRequest - (*StoreProviderTokenResponse)(nil), // 28: minder.v1.StoreProviderTokenResponse - (*Project)(nil), // 29: minder.v1.Project - (*ListRemoteRepositoriesFromProviderRequest)(nil), // 30: minder.v1.ListRemoteRepositoriesFromProviderRequest - (*ListRemoteRepositoriesFromProviderResponse)(nil), // 31: minder.v1.ListRemoteRepositoriesFromProviderResponse - (*UpstreamRepositoryRef)(nil), // 32: minder.v1.UpstreamRepositoryRef - (*Repository)(nil), // 33: minder.v1.Repository - (*RegisterRepositoryRequest)(nil), // 34: minder.v1.RegisterRepositoryRequest - (*RegisterRepoResult)(nil), // 35: minder.v1.RegisterRepoResult - (*RegisterRepositoryResponse)(nil), // 36: minder.v1.RegisterRepositoryResponse - (*GetRepositoryByIdRequest)(nil), // 37: minder.v1.GetRepositoryByIdRequest - (*GetRepositoryByIdResponse)(nil), // 38: minder.v1.GetRepositoryByIdResponse - (*DeleteRepositoryByIdRequest)(nil), // 39: minder.v1.DeleteRepositoryByIdRequest - (*DeleteRepositoryByIdResponse)(nil), // 40: minder.v1.DeleteRepositoryByIdResponse - (*GetRepositoryByNameRequest)(nil), // 41: minder.v1.GetRepositoryByNameRequest - (*GetRepositoryByNameResponse)(nil), // 42: minder.v1.GetRepositoryByNameResponse - (*DeleteRepositoryByNameRequest)(nil), // 43: minder.v1.DeleteRepositoryByNameRequest - (*DeleteRepositoryByNameResponse)(nil), // 44: minder.v1.DeleteRepositoryByNameResponse - (*ListRepositoriesRequest)(nil), // 45: minder.v1.ListRepositoriesRequest - (*ListRepositoriesResponse)(nil), // 46: minder.v1.ListRepositoriesResponse - (*ReconcileEntityRegistrationRequest)(nil), // 47: minder.v1.ReconcileEntityRegistrationRequest - (*ReconcileEntityRegistrationResponse)(nil), // 48: minder.v1.ReconcileEntityRegistrationResponse - (*VerifyProviderTokenFromRequest)(nil), // 49: minder.v1.VerifyProviderTokenFromRequest - (*VerifyProviderTokenFromResponse)(nil), // 50: minder.v1.VerifyProviderTokenFromResponse - (*VerifyProviderCredentialRequest)(nil), // 51: minder.v1.VerifyProviderCredentialRequest - (*VerifyProviderCredentialResponse)(nil), // 52: minder.v1.VerifyProviderCredentialResponse - (*BranchProtection)(nil), // 53: minder.v1.BranchProtection - (*CreateUserRequest)(nil), // 54: minder.v1.CreateUserRequest - (*CreateUserResponse)(nil), // 55: minder.v1.CreateUserResponse - (*DeleteUserRequest)(nil), // 56: minder.v1.DeleteUserRequest - (*DeleteUserResponse)(nil), // 57: minder.v1.DeleteUserResponse - (*UserRecord)(nil), // 58: minder.v1.UserRecord - (*ProjectRole)(nil), // 59: minder.v1.ProjectRole - (*GetUserRequest)(nil), // 60: minder.v1.GetUserRequest - (*GetUserResponse)(nil), // 61: minder.v1.GetUserResponse - (*CreateProfileRequest)(nil), // 62: minder.v1.CreateProfileRequest - (*CreateProfileResponse)(nil), // 63: minder.v1.CreateProfileResponse - (*UpdateProfileRequest)(nil), // 64: minder.v1.UpdateProfileRequest - (*UpdateProfileResponse)(nil), // 65: minder.v1.UpdateProfileResponse - (*PatchProfileRequest)(nil), // 66: minder.v1.PatchProfileRequest - (*PatchProfileResponse)(nil), // 67: minder.v1.PatchProfileResponse - (*DeleteProfileRequest)(nil), // 68: minder.v1.DeleteProfileRequest - (*DeleteProfileResponse)(nil), // 69: minder.v1.DeleteProfileResponse - (*ListProfilesRequest)(nil), // 70: minder.v1.ListProfilesRequest - (*ListProfilesResponse)(nil), // 71: minder.v1.ListProfilesResponse - (*GetProfileByIdRequest)(nil), // 72: minder.v1.GetProfileByIdRequest - (*GetProfileByIdResponse)(nil), // 73: minder.v1.GetProfileByIdResponse - (*ProfileStatus)(nil), // 74: minder.v1.ProfileStatus - (*EvalResultAlert)(nil), // 75: minder.v1.EvalResultAlert - (*RuleEvaluationStatus)(nil), // 76: minder.v1.RuleEvaluationStatus - (*EntityTypedId)(nil), // 77: minder.v1.EntityTypedId - (*GetProfileStatusByNameRequest)(nil), // 78: minder.v1.GetProfileStatusByNameRequest - (*GetProfileStatusByNameResponse)(nil), // 79: minder.v1.GetProfileStatusByNameResponse - (*GetProfileStatusByProjectRequest)(nil), // 80: minder.v1.GetProfileStatusByProjectRequest - (*GetProfileStatusByProjectResponse)(nil), // 81: minder.v1.GetProfileStatusByProjectResponse - (*EntityAutoRegistrationConfig)(nil), // 82: minder.v1.EntityAutoRegistrationConfig - (*AutoRegistration)(nil), // 83: minder.v1.AutoRegistration - (*ProviderConfig)(nil), // 84: minder.v1.ProviderConfig - (*RESTProviderConfig)(nil), // 85: minder.v1.RESTProviderConfig - (*GitHubProviderConfig)(nil), // 86: minder.v1.GitHubProviderConfig - (*GitHubAppProviderConfig)(nil), // 87: minder.v1.GitHubAppProviderConfig - (*DockerHubProviderConfig)(nil), // 88: minder.v1.DockerHubProviderConfig - (*GHCRProviderConfig)(nil), // 89: minder.v1.GHCRProviderConfig - (*Context)(nil), // 90: minder.v1.Context - (*ContextV2)(nil), // 91: minder.v1.ContextV2 - (*ListRuleTypesRequest)(nil), // 92: minder.v1.ListRuleTypesRequest - (*ListRuleTypesResponse)(nil), // 93: minder.v1.ListRuleTypesResponse - (*GetRuleTypeByNameRequest)(nil), // 94: minder.v1.GetRuleTypeByNameRequest - (*GetRuleTypeByNameResponse)(nil), // 95: minder.v1.GetRuleTypeByNameResponse - (*GetRuleTypeByIdRequest)(nil), // 96: minder.v1.GetRuleTypeByIdRequest - (*GetRuleTypeByIdResponse)(nil), // 97: minder.v1.GetRuleTypeByIdResponse - (*CreateRuleTypeRequest)(nil), // 98: minder.v1.CreateRuleTypeRequest - (*CreateRuleTypeResponse)(nil), // 99: minder.v1.CreateRuleTypeResponse - (*UpdateRuleTypeRequest)(nil), // 100: minder.v1.UpdateRuleTypeRequest - (*UpdateRuleTypeResponse)(nil), // 101: minder.v1.UpdateRuleTypeResponse - (*DeleteRuleTypeRequest)(nil), // 102: minder.v1.DeleteRuleTypeRequest - (*DeleteRuleTypeResponse)(nil), // 103: minder.v1.DeleteRuleTypeResponse - (*ListEvaluationResultsRequest)(nil), // 104: minder.v1.ListEvaluationResultsRequest - (*ListEvaluationResultsResponse)(nil), // 105: minder.v1.ListEvaluationResultsResponse - (*RestType)(nil), // 106: minder.v1.RestType - (*BuiltinType)(nil), // 107: minder.v1.BuiltinType - (*ArtifactType)(nil), // 108: minder.v1.ArtifactType - (*GitType)(nil), // 109: minder.v1.GitType - (*DiffType)(nil), // 110: minder.v1.DiffType - (*Severity)(nil), // 111: minder.v1.Severity - (*RuleType)(nil), // 112: minder.v1.RuleType - (*Profile)(nil), // 113: minder.v1.Profile - (*ListProjectsRequest)(nil), // 114: minder.v1.ListProjectsRequest - (*ListProjectsResponse)(nil), // 115: minder.v1.ListProjectsResponse - (*CreateProjectRequest)(nil), // 116: minder.v1.CreateProjectRequest - (*CreateProjectResponse)(nil), // 117: minder.v1.CreateProjectResponse - (*DeleteProjectRequest)(nil), // 118: minder.v1.DeleteProjectRequest - (*DeleteProjectResponse)(nil), // 119: minder.v1.DeleteProjectResponse - (*UpdateProjectRequest)(nil), // 120: minder.v1.UpdateProjectRequest - (*UpdateProjectResponse)(nil), // 121: minder.v1.UpdateProjectResponse - (*ProjectPatch)(nil), // 122: minder.v1.ProjectPatch - (*PatchProjectRequest)(nil), // 123: minder.v1.PatchProjectRequest - (*PatchProjectResponse)(nil), // 124: minder.v1.PatchProjectResponse - (*ListChildProjectsRequest)(nil), // 125: minder.v1.ListChildProjectsRequest - (*ListChildProjectsResponse)(nil), // 126: minder.v1.ListChildProjectsResponse - (*CreateEntityReconciliationTaskRequest)(nil), // 127: minder.v1.CreateEntityReconciliationTaskRequest - (*CreateEntityReconciliationTaskResponse)(nil), // 128: minder.v1.CreateEntityReconciliationTaskResponse - (*ListRolesRequest)(nil), // 129: minder.v1.ListRolesRequest - (*ListRolesResponse)(nil), // 130: minder.v1.ListRolesResponse - (*ListRoleAssignmentsRequest)(nil), // 131: minder.v1.ListRoleAssignmentsRequest - (*ListRoleAssignmentsResponse)(nil), // 132: minder.v1.ListRoleAssignmentsResponse - (*AssignRoleRequest)(nil), // 133: minder.v1.AssignRoleRequest - (*AssignRoleResponse)(nil), // 134: minder.v1.AssignRoleResponse - (*UpdateRoleRequest)(nil), // 135: minder.v1.UpdateRoleRequest - (*UpdateRoleResponse)(nil), // 136: minder.v1.UpdateRoleResponse - (*RemoveRoleRequest)(nil), // 137: minder.v1.RemoveRoleRequest - (*RemoveRoleResponse)(nil), // 138: minder.v1.RemoveRoleResponse - (*Role)(nil), // 139: minder.v1.Role - (*RoleAssignment)(nil), // 140: minder.v1.RoleAssignment - (*ListInvitationsRequest)(nil), // 141: minder.v1.ListInvitationsRequest - (*ListInvitationsResponse)(nil), // 142: minder.v1.ListInvitationsResponse - (*ResolveInvitationRequest)(nil), // 143: minder.v1.ResolveInvitationRequest - (*ResolveInvitationResponse)(nil), // 144: minder.v1.ResolveInvitationResponse - (*Invitation)(nil), // 145: minder.v1.Invitation - (*GetProviderRequest)(nil), // 146: minder.v1.GetProviderRequest - (*GetProviderResponse)(nil), // 147: minder.v1.GetProviderResponse - (*ListProvidersRequest)(nil), // 148: minder.v1.ListProvidersRequest - (*ListProvidersResponse)(nil), // 149: minder.v1.ListProvidersResponse - (*CreateProviderRequest)(nil), // 150: minder.v1.CreateProviderRequest - (*CreateProviderResponse)(nil), // 151: minder.v1.CreateProviderResponse - (*DeleteProviderRequest)(nil), // 152: minder.v1.DeleteProviderRequest - (*DeleteProviderResponse)(nil), // 153: minder.v1.DeleteProviderResponse - (*DeleteProviderByIDRequest)(nil), // 154: minder.v1.DeleteProviderByIDRequest - (*DeleteProviderByIDResponse)(nil), // 155: minder.v1.DeleteProviderByIDResponse - (*GetUnclaimedProvidersRequest)(nil), // 156: minder.v1.GetUnclaimedProvidersRequest - (*GetUnclaimedProvidersResponse)(nil), // 157: minder.v1.GetUnclaimedProvidersResponse - (*ListProviderClassesRequest)(nil), // 158: minder.v1.ListProviderClassesRequest - (*ListProviderClassesResponse)(nil), // 159: minder.v1.ListProviderClassesResponse - (*PatchProviderRequest)(nil), // 160: minder.v1.PatchProviderRequest - (*PatchProviderResponse)(nil), // 161: minder.v1.PatchProviderResponse - (*AuthorizationParams)(nil), // 162: minder.v1.AuthorizationParams - (*ProviderParameter)(nil), // 163: minder.v1.ProviderParameter - (*GitHubAppParams)(nil), // 164: minder.v1.GitHubAppParams - (*Provider)(nil), // 165: minder.v1.Provider - (*ListEvaluationHistoryRequest)(nil), // 166: minder.v1.ListEvaluationHistoryRequest - (*ListEvaluationHistoryResponse)(nil), // 167: minder.v1.ListEvaluationHistoryResponse - (*EvaluationHistory)(nil), // 168: minder.v1.EvaluationHistory - (*EvaluationHistoryEntity)(nil), // 169: minder.v1.EvaluationHistoryEntity - (*EvaluationHistoryRule)(nil), // 170: minder.v1.EvaluationHistoryRule - (*EvaluationHistoryStatus)(nil), // 171: minder.v1.EvaluationHistoryStatus - (*EvaluationHistoryRemediation)(nil), // 172: minder.v1.EvaluationHistoryRemediation - (*EvaluationHistoryAlert)(nil), // 173: minder.v1.EvaluationHistoryAlert - (*RegisterRepoResult_Status)(nil), // 174: minder.v1.RegisterRepoResult.Status - nil, // 175: minder.v1.RuleEvaluationStatus.EntityInfoEntry - nil, // 176: minder.v1.AutoRegistration.EntitiesEntry - (*ListEvaluationResultsResponse_EntityProfileEvaluationResults)(nil), // 177: minder.v1.ListEvaluationResultsResponse.EntityProfileEvaluationResults - (*ListEvaluationResultsResponse_EntityEvaluationResults)(nil), // 178: minder.v1.ListEvaluationResultsResponse.EntityEvaluationResults - (*RestType_Fallback)(nil), // 179: minder.v1.RestType.Fallback - (*DiffType_Ecosystem)(nil), // 180: minder.v1.DiffType.Ecosystem - (*RuleType_Definition)(nil), // 181: minder.v1.RuleType.Definition - (*RuleType_Definition_Ingest)(nil), // 182: minder.v1.RuleType.Definition.Ingest - (*RuleType_Definition_Eval)(nil), // 183: minder.v1.RuleType.Definition.Eval - (*RuleType_Definition_Remediate)(nil), // 184: minder.v1.RuleType.Definition.Remediate - (*RuleType_Definition_Alert)(nil), // 185: minder.v1.RuleType.Definition.Alert - (*RuleType_Definition_Eval_JQComparison)(nil), // 186: minder.v1.RuleType.Definition.Eval.JQComparison - (*RuleType_Definition_Eval_Rego)(nil), // 187: minder.v1.RuleType.Definition.Eval.Rego - (*RuleType_Definition_Eval_Vulncheck)(nil), // 188: minder.v1.RuleType.Definition.Eval.Vulncheck - (*RuleType_Definition_Eval_Trusty)(nil), // 189: minder.v1.RuleType.Definition.Eval.Trusty - (*RuleType_Definition_Eval_Homoglyphs)(nil), // 190: minder.v1.RuleType.Definition.Eval.Homoglyphs - (*RuleType_Definition_Eval_JQComparison_Operator)(nil), // 191: minder.v1.RuleType.Definition.Eval.JQComparison.Operator - (*RuleType_Definition_Remediate_GhBranchProtectionType)(nil), // 192: minder.v1.RuleType.Definition.Remediate.GhBranchProtectionType - (*RuleType_Definition_Remediate_PullRequestRemediation)(nil), // 193: minder.v1.RuleType.Definition.Remediate.PullRequestRemediation - (*RuleType_Definition_Remediate_PullRequestRemediation_Content)(nil), // 194: minder.v1.RuleType.Definition.Remediate.PullRequestRemediation.Content - (*RuleType_Definition_Remediate_PullRequestRemediation_ActionsReplaceTagsWithSha)(nil), // 195: minder.v1.RuleType.Definition.Remediate.PullRequestRemediation.ActionsReplaceTagsWithSha - (*RuleType_Definition_Alert_AlertTypeSA)(nil), // 196: minder.v1.RuleType.Definition.Alert.AlertTypeSA - (*Profile_Rule)(nil), // 197: minder.v1.Profile.Rule - (*Profile_Selector)(nil), // 198: minder.v1.Profile.Selector - (*timestamppb.Timestamp)(nil), // 199: google.protobuf.Timestamp - (*structpb.Struct)(nil), // 200: google.protobuf.Struct - (*fieldmaskpb.FieldMask)(nil), // 201: google.protobuf.FieldMask - (*descriptorpb.EnumValueOptions)(nil), // 202: google.protobuf.EnumValueOptions - (*descriptorpb.MethodOptions)(nil), // 203: google.protobuf.MethodOptions + (*Release)(nil), // 21: minder.v1.Release + (*PipelineRun)(nil), // 22: minder.v1.PipelineRun + (*TaskRun)(nil), // 23: minder.v1.TaskRun + (*Build)(nil), // 24: minder.v1.Build + (*GetInviteDetailsRequest)(nil), // 25: minder.v1.GetInviteDetailsRequest + (*GetInviteDetailsResponse)(nil), // 26: minder.v1.GetInviteDetailsResponse + (*CheckHealthRequest)(nil), // 27: minder.v1.CheckHealthRequest + (*CheckHealthResponse)(nil), // 28: minder.v1.CheckHealthResponse + (*GetAuthorizationURLRequest)(nil), // 29: minder.v1.GetAuthorizationURLRequest + (*GetAuthorizationURLResponse)(nil), // 30: minder.v1.GetAuthorizationURLResponse + (*StoreProviderTokenRequest)(nil), // 31: minder.v1.StoreProviderTokenRequest + (*StoreProviderTokenResponse)(nil), // 32: minder.v1.StoreProviderTokenResponse + (*Project)(nil), // 33: minder.v1.Project + (*ListRemoteRepositoriesFromProviderRequest)(nil), // 34: minder.v1.ListRemoteRepositoriesFromProviderRequest + (*ListRemoteRepositoriesFromProviderResponse)(nil), // 35: minder.v1.ListRemoteRepositoriesFromProviderResponse + (*UpstreamRepositoryRef)(nil), // 36: minder.v1.UpstreamRepositoryRef + (*Repository)(nil), // 37: minder.v1.Repository + (*RegisterRepositoryRequest)(nil), // 38: minder.v1.RegisterRepositoryRequest + (*RegisterRepoResult)(nil), // 39: minder.v1.RegisterRepoResult + (*RegisterRepositoryResponse)(nil), // 40: minder.v1.RegisterRepositoryResponse + (*GetRepositoryByIdRequest)(nil), // 41: minder.v1.GetRepositoryByIdRequest + (*GetRepositoryByIdResponse)(nil), // 42: minder.v1.GetRepositoryByIdResponse + (*DeleteRepositoryByIdRequest)(nil), // 43: minder.v1.DeleteRepositoryByIdRequest + (*DeleteRepositoryByIdResponse)(nil), // 44: minder.v1.DeleteRepositoryByIdResponse + (*GetRepositoryByNameRequest)(nil), // 45: minder.v1.GetRepositoryByNameRequest + (*GetRepositoryByNameResponse)(nil), // 46: minder.v1.GetRepositoryByNameResponse + (*DeleteRepositoryByNameRequest)(nil), // 47: minder.v1.DeleteRepositoryByNameRequest + (*DeleteRepositoryByNameResponse)(nil), // 48: minder.v1.DeleteRepositoryByNameResponse + (*ListRepositoriesRequest)(nil), // 49: minder.v1.ListRepositoriesRequest + (*ListRepositoriesResponse)(nil), // 50: minder.v1.ListRepositoriesResponse + (*ReconcileEntityRegistrationRequest)(nil), // 51: minder.v1.ReconcileEntityRegistrationRequest + (*ReconcileEntityRegistrationResponse)(nil), // 52: minder.v1.ReconcileEntityRegistrationResponse + (*VerifyProviderTokenFromRequest)(nil), // 53: minder.v1.VerifyProviderTokenFromRequest + (*VerifyProviderTokenFromResponse)(nil), // 54: minder.v1.VerifyProviderTokenFromResponse + (*VerifyProviderCredentialRequest)(nil), // 55: minder.v1.VerifyProviderCredentialRequest + (*VerifyProviderCredentialResponse)(nil), // 56: minder.v1.VerifyProviderCredentialResponse + (*BranchProtection)(nil), // 57: minder.v1.BranchProtection + (*CreateUserRequest)(nil), // 58: minder.v1.CreateUserRequest + (*CreateUserResponse)(nil), // 59: minder.v1.CreateUserResponse + (*DeleteUserRequest)(nil), // 60: minder.v1.DeleteUserRequest + (*DeleteUserResponse)(nil), // 61: minder.v1.DeleteUserResponse + (*UserRecord)(nil), // 62: minder.v1.UserRecord + (*ProjectRole)(nil), // 63: minder.v1.ProjectRole + (*GetUserRequest)(nil), // 64: minder.v1.GetUserRequest + (*GetUserResponse)(nil), // 65: minder.v1.GetUserResponse + (*CreateProfileRequest)(nil), // 66: minder.v1.CreateProfileRequest + (*CreateProfileResponse)(nil), // 67: minder.v1.CreateProfileResponse + (*UpdateProfileRequest)(nil), // 68: minder.v1.UpdateProfileRequest + (*UpdateProfileResponse)(nil), // 69: minder.v1.UpdateProfileResponse + (*PatchProfileRequest)(nil), // 70: minder.v1.PatchProfileRequest + (*PatchProfileResponse)(nil), // 71: minder.v1.PatchProfileResponse + (*DeleteProfileRequest)(nil), // 72: minder.v1.DeleteProfileRequest + (*DeleteProfileResponse)(nil), // 73: minder.v1.DeleteProfileResponse + (*ListProfilesRequest)(nil), // 74: minder.v1.ListProfilesRequest + (*ListProfilesResponse)(nil), // 75: minder.v1.ListProfilesResponse + (*GetProfileByIdRequest)(nil), // 76: minder.v1.GetProfileByIdRequest + (*GetProfileByIdResponse)(nil), // 77: minder.v1.GetProfileByIdResponse + (*ProfileStatus)(nil), // 78: minder.v1.ProfileStatus + (*EvalResultAlert)(nil), // 79: minder.v1.EvalResultAlert + (*RuleEvaluationStatus)(nil), // 80: minder.v1.RuleEvaluationStatus + (*EntityTypedId)(nil), // 81: minder.v1.EntityTypedId + (*GetProfileStatusByNameRequest)(nil), // 82: minder.v1.GetProfileStatusByNameRequest + (*GetProfileStatusByNameResponse)(nil), // 83: minder.v1.GetProfileStatusByNameResponse + (*GetProfileStatusByProjectRequest)(nil), // 84: minder.v1.GetProfileStatusByProjectRequest + (*GetProfileStatusByProjectResponse)(nil), // 85: minder.v1.GetProfileStatusByProjectResponse + (*EntityAutoRegistrationConfig)(nil), // 86: minder.v1.EntityAutoRegistrationConfig + (*AutoRegistration)(nil), // 87: minder.v1.AutoRegistration + (*ProviderConfig)(nil), // 88: minder.v1.ProviderConfig + (*RESTProviderConfig)(nil), // 89: minder.v1.RESTProviderConfig + (*GitHubProviderConfig)(nil), // 90: minder.v1.GitHubProviderConfig + (*GitHubAppProviderConfig)(nil), // 91: minder.v1.GitHubAppProviderConfig + (*DockerHubProviderConfig)(nil), // 92: minder.v1.DockerHubProviderConfig + (*GHCRProviderConfig)(nil), // 93: minder.v1.GHCRProviderConfig + (*Context)(nil), // 94: minder.v1.Context + (*ContextV2)(nil), // 95: minder.v1.ContextV2 + (*ListRuleTypesRequest)(nil), // 96: minder.v1.ListRuleTypesRequest + (*ListRuleTypesResponse)(nil), // 97: minder.v1.ListRuleTypesResponse + (*GetRuleTypeByNameRequest)(nil), // 98: minder.v1.GetRuleTypeByNameRequest + (*GetRuleTypeByNameResponse)(nil), // 99: minder.v1.GetRuleTypeByNameResponse + (*GetRuleTypeByIdRequest)(nil), // 100: minder.v1.GetRuleTypeByIdRequest + (*GetRuleTypeByIdResponse)(nil), // 101: minder.v1.GetRuleTypeByIdResponse + (*CreateRuleTypeRequest)(nil), // 102: minder.v1.CreateRuleTypeRequest + (*CreateRuleTypeResponse)(nil), // 103: minder.v1.CreateRuleTypeResponse + (*UpdateRuleTypeRequest)(nil), // 104: minder.v1.UpdateRuleTypeRequest + (*UpdateRuleTypeResponse)(nil), // 105: minder.v1.UpdateRuleTypeResponse + (*DeleteRuleTypeRequest)(nil), // 106: minder.v1.DeleteRuleTypeRequest + (*DeleteRuleTypeResponse)(nil), // 107: minder.v1.DeleteRuleTypeResponse + (*ListEvaluationResultsRequest)(nil), // 108: minder.v1.ListEvaluationResultsRequest + (*ListEvaluationResultsResponse)(nil), // 109: minder.v1.ListEvaluationResultsResponse + (*RestType)(nil), // 110: minder.v1.RestType + (*BuiltinType)(nil), // 111: minder.v1.BuiltinType + (*ArtifactType)(nil), // 112: minder.v1.ArtifactType + (*GitType)(nil), // 113: minder.v1.GitType + (*DiffType)(nil), // 114: minder.v1.DiffType + (*Severity)(nil), // 115: minder.v1.Severity + (*RuleType)(nil), // 116: minder.v1.RuleType + (*Profile)(nil), // 117: minder.v1.Profile + (*ListProjectsRequest)(nil), // 118: minder.v1.ListProjectsRequest + (*ListProjectsResponse)(nil), // 119: minder.v1.ListProjectsResponse + (*CreateProjectRequest)(nil), // 120: minder.v1.CreateProjectRequest + (*CreateProjectResponse)(nil), // 121: minder.v1.CreateProjectResponse + (*DeleteProjectRequest)(nil), // 122: minder.v1.DeleteProjectRequest + (*DeleteProjectResponse)(nil), // 123: minder.v1.DeleteProjectResponse + (*UpdateProjectRequest)(nil), // 124: minder.v1.UpdateProjectRequest + (*UpdateProjectResponse)(nil), // 125: minder.v1.UpdateProjectResponse + (*ProjectPatch)(nil), // 126: minder.v1.ProjectPatch + (*PatchProjectRequest)(nil), // 127: minder.v1.PatchProjectRequest + (*PatchProjectResponse)(nil), // 128: minder.v1.PatchProjectResponse + (*ListChildProjectsRequest)(nil), // 129: minder.v1.ListChildProjectsRequest + (*ListChildProjectsResponse)(nil), // 130: minder.v1.ListChildProjectsResponse + (*CreateEntityReconciliationTaskRequest)(nil), // 131: minder.v1.CreateEntityReconciliationTaskRequest + (*CreateEntityReconciliationTaskResponse)(nil), // 132: minder.v1.CreateEntityReconciliationTaskResponse + (*ListRolesRequest)(nil), // 133: minder.v1.ListRolesRequest + (*ListRolesResponse)(nil), // 134: minder.v1.ListRolesResponse + (*ListRoleAssignmentsRequest)(nil), // 135: minder.v1.ListRoleAssignmentsRequest + (*ListRoleAssignmentsResponse)(nil), // 136: minder.v1.ListRoleAssignmentsResponse + (*AssignRoleRequest)(nil), // 137: minder.v1.AssignRoleRequest + (*AssignRoleResponse)(nil), // 138: minder.v1.AssignRoleResponse + (*UpdateRoleRequest)(nil), // 139: minder.v1.UpdateRoleRequest + (*UpdateRoleResponse)(nil), // 140: minder.v1.UpdateRoleResponse + (*RemoveRoleRequest)(nil), // 141: minder.v1.RemoveRoleRequest + (*RemoveRoleResponse)(nil), // 142: minder.v1.RemoveRoleResponse + (*Role)(nil), // 143: minder.v1.Role + (*RoleAssignment)(nil), // 144: minder.v1.RoleAssignment + (*ListInvitationsRequest)(nil), // 145: minder.v1.ListInvitationsRequest + (*ListInvitationsResponse)(nil), // 146: minder.v1.ListInvitationsResponse + (*ResolveInvitationRequest)(nil), // 147: minder.v1.ResolveInvitationRequest + (*ResolveInvitationResponse)(nil), // 148: minder.v1.ResolveInvitationResponse + (*Invitation)(nil), // 149: minder.v1.Invitation + (*GetProviderRequest)(nil), // 150: minder.v1.GetProviderRequest + (*GetProviderResponse)(nil), // 151: minder.v1.GetProviderResponse + (*ListProvidersRequest)(nil), // 152: minder.v1.ListProvidersRequest + (*ListProvidersResponse)(nil), // 153: minder.v1.ListProvidersResponse + (*CreateProviderRequest)(nil), // 154: minder.v1.CreateProviderRequest + (*CreateProviderResponse)(nil), // 155: minder.v1.CreateProviderResponse + (*DeleteProviderRequest)(nil), // 156: minder.v1.DeleteProviderRequest + (*DeleteProviderResponse)(nil), // 157: minder.v1.DeleteProviderResponse + (*DeleteProviderByIDRequest)(nil), // 158: minder.v1.DeleteProviderByIDRequest + (*DeleteProviderByIDResponse)(nil), // 159: minder.v1.DeleteProviderByIDResponse + (*GetUnclaimedProvidersRequest)(nil), // 160: minder.v1.GetUnclaimedProvidersRequest + (*GetUnclaimedProvidersResponse)(nil), // 161: minder.v1.GetUnclaimedProvidersResponse + (*ListProviderClassesRequest)(nil), // 162: minder.v1.ListProviderClassesRequest + (*ListProviderClassesResponse)(nil), // 163: minder.v1.ListProviderClassesResponse + (*PatchProviderRequest)(nil), // 164: minder.v1.PatchProviderRequest + (*PatchProviderResponse)(nil), // 165: minder.v1.PatchProviderResponse + (*AuthorizationParams)(nil), // 166: minder.v1.AuthorizationParams + (*ProviderParameter)(nil), // 167: minder.v1.ProviderParameter + (*GitHubAppParams)(nil), // 168: minder.v1.GitHubAppParams + (*Provider)(nil), // 169: minder.v1.Provider + (*ListEvaluationHistoryRequest)(nil), // 170: minder.v1.ListEvaluationHistoryRequest + (*ListEvaluationHistoryResponse)(nil), // 171: minder.v1.ListEvaluationHistoryResponse + (*EvaluationHistory)(nil), // 172: minder.v1.EvaluationHistory + (*EvaluationHistoryEntity)(nil), // 173: minder.v1.EvaluationHistoryEntity + (*EvaluationHistoryRule)(nil), // 174: minder.v1.EvaluationHistoryRule + (*EvaluationHistoryStatus)(nil), // 175: minder.v1.EvaluationHistoryStatus + (*EvaluationHistoryRemediation)(nil), // 176: minder.v1.EvaluationHistoryRemediation + (*EvaluationHistoryAlert)(nil), // 177: minder.v1.EvaluationHistoryAlert + (*RegisterRepoResult_Status)(nil), // 178: minder.v1.RegisterRepoResult.Status + nil, // 179: minder.v1.RuleEvaluationStatus.EntityInfoEntry + nil, // 180: minder.v1.AutoRegistration.EntitiesEntry + (*ListEvaluationResultsResponse_EntityProfileEvaluationResults)(nil), // 181: minder.v1.ListEvaluationResultsResponse.EntityProfileEvaluationResults + (*ListEvaluationResultsResponse_EntityEvaluationResults)(nil), // 182: minder.v1.ListEvaluationResultsResponse.EntityEvaluationResults + (*RestType_Fallback)(nil), // 183: minder.v1.RestType.Fallback + (*DiffType_Ecosystem)(nil), // 184: minder.v1.DiffType.Ecosystem + (*RuleType_Definition)(nil), // 185: minder.v1.RuleType.Definition + (*RuleType_Definition_Ingest)(nil), // 186: minder.v1.RuleType.Definition.Ingest + (*RuleType_Definition_Eval)(nil), // 187: minder.v1.RuleType.Definition.Eval + (*RuleType_Definition_Remediate)(nil), // 188: minder.v1.RuleType.Definition.Remediate + (*RuleType_Definition_Alert)(nil), // 189: minder.v1.RuleType.Definition.Alert + (*RuleType_Definition_Eval_JQComparison)(nil), // 190: minder.v1.RuleType.Definition.Eval.JQComparison + (*RuleType_Definition_Eval_Rego)(nil), // 191: minder.v1.RuleType.Definition.Eval.Rego + (*RuleType_Definition_Eval_Vulncheck)(nil), // 192: minder.v1.RuleType.Definition.Eval.Vulncheck + (*RuleType_Definition_Eval_Trusty)(nil), // 193: minder.v1.RuleType.Definition.Eval.Trusty + (*RuleType_Definition_Eval_Homoglyphs)(nil), // 194: minder.v1.RuleType.Definition.Eval.Homoglyphs + (*RuleType_Definition_Eval_JQComparison_Operator)(nil), // 195: minder.v1.RuleType.Definition.Eval.JQComparison.Operator + (*RuleType_Definition_Remediate_GhBranchProtectionType)(nil), // 196: minder.v1.RuleType.Definition.Remediate.GhBranchProtectionType + (*RuleType_Definition_Remediate_PullRequestRemediation)(nil), // 197: minder.v1.RuleType.Definition.Remediate.PullRequestRemediation + (*RuleType_Definition_Remediate_PullRequestRemediation_Content)(nil), // 198: minder.v1.RuleType.Definition.Remediate.PullRequestRemediation.Content + (*RuleType_Definition_Remediate_PullRequestRemediation_ActionsReplaceTagsWithSha)(nil), // 199: minder.v1.RuleType.Definition.Remediate.PullRequestRemediation.ActionsReplaceTagsWithSha + (*RuleType_Definition_Alert_AlertTypeSA)(nil), // 200: minder.v1.RuleType.Definition.Alert.AlertTypeSA + (*Profile_Rule)(nil), // 201: minder.v1.Profile.Rule + (*Profile_Selector)(nil), // 202: minder.v1.Profile.Selector + (*timestamppb.Timestamp)(nil), // 203: google.protobuf.Timestamp + (*structpb.Struct)(nil), // 204: google.protobuf.Struct + (*fieldmaskpb.FieldMask)(nil), // 205: google.protobuf.FieldMask + (*descriptorpb.EnumValueOptions)(nil), // 206: google.protobuf.EnumValueOptions + (*descriptorpb.MethodOptions)(nil), // 207: google.protobuf.MethodOptions } var file_minder_v1_minder_proto_depIdxs = []int32{ 2, // 0: minder.v1.RpcOptions.target_resource:type_name -> minder.v1.TargetResource 1, // 1: minder.v1.RpcOptions.relation:type_name -> minder.v1.Relation 10, // 2: minder.v1.CursorPage.next:type_name -> minder.v1.Cursor 10, // 3: minder.v1.CursorPage.prev:type_name -> minder.v1.Cursor - 90, // 4: minder.v1.ListArtifactsRequest.context:type_name -> minder.v1.Context + 94, // 4: minder.v1.ListArtifactsRequest.context:type_name -> minder.v1.Context 14, // 5: minder.v1.ListArtifactsResponse.results:type_name -> minder.v1.Artifact 15, // 6: minder.v1.Artifact.versions:type_name -> minder.v1.ArtifactVersion - 199, // 7: minder.v1.Artifact.created_at:type_name -> google.protobuf.Timestamp - 90, // 8: minder.v1.Artifact.context:type_name -> minder.v1.Context - 199, // 9: minder.v1.ArtifactVersion.created_at:type_name -> google.protobuf.Timestamp - 90, // 10: minder.v1.GetArtifactByIdRequest.context:type_name -> minder.v1.Context + 203, // 7: minder.v1.Artifact.created_at:type_name -> google.protobuf.Timestamp + 94, // 8: minder.v1.Artifact.context:type_name -> minder.v1.Context + 203, // 9: minder.v1.ArtifactVersion.created_at:type_name -> google.protobuf.Timestamp + 94, // 10: minder.v1.GetArtifactByIdRequest.context:type_name -> minder.v1.Context 14, // 11: minder.v1.GetArtifactByIdResponse.artifact:type_name -> minder.v1.Artifact 15, // 12: minder.v1.GetArtifactByIdResponse.versions:type_name -> minder.v1.ArtifactVersion - 90, // 13: minder.v1.GetArtifactByNameRequest.context:type_name -> minder.v1.Context + 94, // 13: minder.v1.GetArtifactByNameRequest.context:type_name -> minder.v1.Context 14, // 14: minder.v1.GetArtifactByNameResponse.artifact:type_name -> minder.v1.Artifact 15, // 15: minder.v1.GetArtifactByNameResponse.versions:type_name -> minder.v1.ArtifactVersion - 90, // 16: minder.v1.PullRequest.context:type_name -> minder.v1.Context - 199, // 17: minder.v1.GetInviteDetailsResponse.expires_at:type_name -> google.protobuf.Timestamp - 90, // 18: minder.v1.GetAuthorizationURLRequest.context:type_name -> minder.v1.Context - 200, // 19: minder.v1.GetAuthorizationURLRequest.config:type_name -> google.protobuf.Struct - 90, // 20: minder.v1.StoreProviderTokenRequest.context:type_name -> minder.v1.Context - 199, // 21: minder.v1.Project.created_at:type_name -> google.protobuf.Timestamp - 199, // 22: minder.v1.Project.updated_at:type_name -> google.protobuf.Timestamp - 90, // 23: minder.v1.ListRemoteRepositoriesFromProviderRequest.context:type_name -> minder.v1.Context - 32, // 24: minder.v1.ListRemoteRepositoriesFromProviderResponse.results:type_name -> minder.v1.UpstreamRepositoryRef - 90, // 25: minder.v1.UpstreamRepositoryRef.context:type_name -> minder.v1.Context - 90, // 26: minder.v1.Repository.context:type_name -> minder.v1.Context - 199, // 27: minder.v1.Repository.created_at:type_name -> google.protobuf.Timestamp - 199, // 28: minder.v1.Repository.updated_at:type_name -> google.protobuf.Timestamp - 32, // 29: minder.v1.RegisterRepositoryRequest.repository:type_name -> minder.v1.UpstreamRepositoryRef - 90, // 30: minder.v1.RegisterRepositoryRequest.context:type_name -> minder.v1.Context - 33, // 31: minder.v1.RegisterRepoResult.repository:type_name -> minder.v1.Repository - 174, // 32: minder.v1.RegisterRepoResult.status:type_name -> minder.v1.RegisterRepoResult.Status - 35, // 33: minder.v1.RegisterRepositoryResponse.result:type_name -> minder.v1.RegisterRepoResult - 90, // 34: minder.v1.GetRepositoryByIdRequest.context:type_name -> minder.v1.Context - 33, // 35: minder.v1.GetRepositoryByIdResponse.repository:type_name -> minder.v1.Repository - 90, // 36: minder.v1.DeleteRepositoryByIdRequest.context:type_name -> minder.v1.Context - 90, // 37: minder.v1.GetRepositoryByNameRequest.context:type_name -> minder.v1.Context - 33, // 38: minder.v1.GetRepositoryByNameResponse.repository:type_name -> minder.v1.Repository - 90, // 39: minder.v1.DeleteRepositoryByNameRequest.context:type_name -> minder.v1.Context - 90, // 40: minder.v1.ListRepositoriesRequest.context:type_name -> minder.v1.Context - 33, // 41: minder.v1.ListRepositoriesResponse.results:type_name -> minder.v1.Repository - 90, // 42: minder.v1.ReconcileEntityRegistrationRequest.context:type_name -> minder.v1.Context - 199, // 43: minder.v1.VerifyProviderTokenFromRequest.timestamp:type_name -> google.protobuf.Timestamp - 90, // 44: minder.v1.VerifyProviderTokenFromRequest.context:type_name -> minder.v1.Context - 90, // 45: minder.v1.VerifyProviderCredentialRequest.context:type_name -> minder.v1.Context - 199, // 46: minder.v1.CreateUserResponse.created_at:type_name -> google.protobuf.Timestamp - 90, // 47: minder.v1.CreateUserResponse.context:type_name -> minder.v1.Context - 199, // 48: minder.v1.UserRecord.created_at:type_name -> google.protobuf.Timestamp - 199, // 49: minder.v1.UserRecord.updated_at:type_name -> google.protobuf.Timestamp - 139, // 50: minder.v1.ProjectRole.role:type_name -> minder.v1.Role - 29, // 51: minder.v1.ProjectRole.project:type_name -> minder.v1.Project - 58, // 52: minder.v1.GetUserResponse.user:type_name -> minder.v1.UserRecord - 29, // 53: minder.v1.GetUserResponse.projects:type_name -> minder.v1.Project - 59, // 54: minder.v1.GetUserResponse.project_roles:type_name -> minder.v1.ProjectRole - 113, // 55: minder.v1.CreateProfileRequest.profile:type_name -> minder.v1.Profile - 113, // 56: minder.v1.CreateProfileResponse.profile:type_name -> minder.v1.Profile - 113, // 57: minder.v1.UpdateProfileRequest.profile:type_name -> minder.v1.Profile - 113, // 58: minder.v1.UpdateProfileResponse.profile:type_name -> minder.v1.Profile - 90, // 59: minder.v1.PatchProfileRequest.context:type_name -> minder.v1.Context - 113, // 60: minder.v1.PatchProfileRequest.patch:type_name -> minder.v1.Profile - 201, // 61: minder.v1.PatchProfileRequest.update_mask:type_name -> google.protobuf.FieldMask - 113, // 62: minder.v1.PatchProfileResponse.profile:type_name -> minder.v1.Profile - 90, // 63: minder.v1.DeleteProfileRequest.context:type_name -> minder.v1.Context - 90, // 64: minder.v1.ListProfilesRequest.context:type_name -> minder.v1.Context - 113, // 65: minder.v1.ListProfilesResponse.profiles:type_name -> minder.v1.Profile - 90, // 66: minder.v1.GetProfileByIdRequest.context:type_name -> minder.v1.Context - 113, // 67: minder.v1.GetProfileByIdResponse.profile:type_name -> minder.v1.Profile - 199, // 68: minder.v1.ProfileStatus.last_updated:type_name -> google.protobuf.Timestamp - 199, // 69: minder.v1.EvalResultAlert.last_updated:type_name -> google.protobuf.Timestamp - 199, // 70: minder.v1.RuleEvaluationStatus.last_updated:type_name -> google.protobuf.Timestamp - 175, // 71: minder.v1.RuleEvaluationStatus.entity_info:type_name -> minder.v1.RuleEvaluationStatus.EntityInfoEntry - 199, // 72: minder.v1.RuleEvaluationStatus.remediation_last_updated:type_name -> google.protobuf.Timestamp - 75, // 73: minder.v1.RuleEvaluationStatus.alert:type_name -> minder.v1.EvalResultAlert - 111, // 74: minder.v1.RuleEvaluationStatus.severity:type_name -> minder.v1.Severity + 94, // 16: minder.v1.PullRequest.context:type_name -> minder.v1.Context + 203, // 17: minder.v1.GetInviteDetailsResponse.expires_at:type_name -> google.protobuf.Timestamp + 94, // 18: minder.v1.GetAuthorizationURLRequest.context:type_name -> minder.v1.Context + 204, // 19: minder.v1.GetAuthorizationURLRequest.config:type_name -> google.protobuf.Struct + 94, // 20: minder.v1.StoreProviderTokenRequest.context:type_name -> minder.v1.Context + 203, // 21: minder.v1.Project.created_at:type_name -> google.protobuf.Timestamp + 203, // 22: minder.v1.Project.updated_at:type_name -> google.protobuf.Timestamp + 94, // 23: minder.v1.ListRemoteRepositoriesFromProviderRequest.context:type_name -> minder.v1.Context + 36, // 24: minder.v1.ListRemoteRepositoriesFromProviderResponse.results:type_name -> minder.v1.UpstreamRepositoryRef + 94, // 25: minder.v1.UpstreamRepositoryRef.context:type_name -> minder.v1.Context + 94, // 26: minder.v1.Repository.context:type_name -> minder.v1.Context + 203, // 27: minder.v1.Repository.created_at:type_name -> google.protobuf.Timestamp + 203, // 28: minder.v1.Repository.updated_at:type_name -> google.protobuf.Timestamp + 36, // 29: minder.v1.RegisterRepositoryRequest.repository:type_name -> minder.v1.UpstreamRepositoryRef + 94, // 30: minder.v1.RegisterRepositoryRequest.context:type_name -> minder.v1.Context + 37, // 31: minder.v1.RegisterRepoResult.repository:type_name -> minder.v1.Repository + 178, // 32: minder.v1.RegisterRepoResult.status:type_name -> minder.v1.RegisterRepoResult.Status + 39, // 33: minder.v1.RegisterRepositoryResponse.result:type_name -> minder.v1.RegisterRepoResult + 94, // 34: minder.v1.GetRepositoryByIdRequest.context:type_name -> minder.v1.Context + 37, // 35: minder.v1.GetRepositoryByIdResponse.repository:type_name -> minder.v1.Repository + 94, // 36: minder.v1.DeleteRepositoryByIdRequest.context:type_name -> minder.v1.Context + 94, // 37: minder.v1.GetRepositoryByNameRequest.context:type_name -> minder.v1.Context + 37, // 38: minder.v1.GetRepositoryByNameResponse.repository:type_name -> minder.v1.Repository + 94, // 39: minder.v1.DeleteRepositoryByNameRequest.context:type_name -> minder.v1.Context + 94, // 40: minder.v1.ListRepositoriesRequest.context:type_name -> minder.v1.Context + 37, // 41: minder.v1.ListRepositoriesResponse.results:type_name -> minder.v1.Repository + 94, // 42: minder.v1.ReconcileEntityRegistrationRequest.context:type_name -> minder.v1.Context + 203, // 43: minder.v1.VerifyProviderTokenFromRequest.timestamp:type_name -> google.protobuf.Timestamp + 94, // 44: minder.v1.VerifyProviderTokenFromRequest.context:type_name -> minder.v1.Context + 94, // 45: minder.v1.VerifyProviderCredentialRequest.context:type_name -> minder.v1.Context + 203, // 46: minder.v1.CreateUserResponse.created_at:type_name -> google.protobuf.Timestamp + 94, // 47: minder.v1.CreateUserResponse.context:type_name -> minder.v1.Context + 203, // 48: minder.v1.UserRecord.created_at:type_name -> google.protobuf.Timestamp + 203, // 49: minder.v1.UserRecord.updated_at:type_name -> google.protobuf.Timestamp + 143, // 50: minder.v1.ProjectRole.role:type_name -> minder.v1.Role + 33, // 51: minder.v1.ProjectRole.project:type_name -> minder.v1.Project + 62, // 52: minder.v1.GetUserResponse.user:type_name -> minder.v1.UserRecord + 33, // 53: minder.v1.GetUserResponse.projects:type_name -> minder.v1.Project + 63, // 54: minder.v1.GetUserResponse.project_roles:type_name -> minder.v1.ProjectRole + 117, // 55: minder.v1.CreateProfileRequest.profile:type_name -> minder.v1.Profile + 117, // 56: minder.v1.CreateProfileResponse.profile:type_name -> minder.v1.Profile + 117, // 57: minder.v1.UpdateProfileRequest.profile:type_name -> minder.v1.Profile + 117, // 58: minder.v1.UpdateProfileResponse.profile:type_name -> minder.v1.Profile + 94, // 59: minder.v1.PatchProfileRequest.context:type_name -> minder.v1.Context + 117, // 60: minder.v1.PatchProfileRequest.patch:type_name -> minder.v1.Profile + 205, // 61: minder.v1.PatchProfileRequest.update_mask:type_name -> google.protobuf.FieldMask + 117, // 62: minder.v1.PatchProfileResponse.profile:type_name -> minder.v1.Profile + 94, // 63: minder.v1.DeleteProfileRequest.context:type_name -> minder.v1.Context + 94, // 64: minder.v1.ListProfilesRequest.context:type_name -> minder.v1.Context + 117, // 65: minder.v1.ListProfilesResponse.profiles:type_name -> minder.v1.Profile + 94, // 66: minder.v1.GetProfileByIdRequest.context:type_name -> minder.v1.Context + 117, // 67: minder.v1.GetProfileByIdResponse.profile:type_name -> minder.v1.Profile + 203, // 68: minder.v1.ProfileStatus.last_updated:type_name -> google.protobuf.Timestamp + 203, // 69: minder.v1.EvalResultAlert.last_updated:type_name -> google.protobuf.Timestamp + 203, // 70: minder.v1.RuleEvaluationStatus.last_updated:type_name -> google.protobuf.Timestamp + 179, // 71: minder.v1.RuleEvaluationStatus.entity_info:type_name -> minder.v1.RuleEvaluationStatus.EntityInfoEntry + 203, // 72: minder.v1.RuleEvaluationStatus.remediation_last_updated:type_name -> google.protobuf.Timestamp + 79, // 73: minder.v1.RuleEvaluationStatus.alert:type_name -> minder.v1.EvalResultAlert + 115, // 74: minder.v1.RuleEvaluationStatus.severity:type_name -> minder.v1.Severity 3, // 75: minder.v1.EntityTypedId.type:type_name -> minder.v1.Entity - 90, // 76: minder.v1.GetProfileStatusByNameRequest.context:type_name -> minder.v1.Context - 77, // 77: minder.v1.GetProfileStatusByNameRequest.entity:type_name -> minder.v1.EntityTypedId - 74, // 78: minder.v1.GetProfileStatusByNameResponse.profile_status:type_name -> minder.v1.ProfileStatus - 76, // 79: minder.v1.GetProfileStatusByNameResponse.rule_evaluation_status:type_name -> minder.v1.RuleEvaluationStatus - 90, // 80: minder.v1.GetProfileStatusByProjectRequest.context:type_name -> minder.v1.Context - 74, // 81: minder.v1.GetProfileStatusByProjectResponse.profile_status:type_name -> minder.v1.ProfileStatus - 176, // 82: minder.v1.AutoRegistration.entities:type_name -> minder.v1.AutoRegistration.EntitiesEntry - 83, // 83: minder.v1.ProviderConfig.auto_registration:type_name -> minder.v1.AutoRegistration - 90, // 84: minder.v1.ListRuleTypesRequest.context:type_name -> minder.v1.Context - 112, // 85: minder.v1.ListRuleTypesResponse.rule_types:type_name -> minder.v1.RuleType - 90, // 86: minder.v1.GetRuleTypeByNameRequest.context:type_name -> minder.v1.Context - 112, // 87: minder.v1.GetRuleTypeByNameResponse.rule_type:type_name -> minder.v1.RuleType - 90, // 88: minder.v1.GetRuleTypeByIdRequest.context:type_name -> minder.v1.Context - 112, // 89: minder.v1.GetRuleTypeByIdResponse.rule_type:type_name -> minder.v1.RuleType - 112, // 90: minder.v1.CreateRuleTypeRequest.rule_type:type_name -> minder.v1.RuleType - 112, // 91: minder.v1.CreateRuleTypeResponse.rule_type:type_name -> minder.v1.RuleType - 112, // 92: minder.v1.UpdateRuleTypeRequest.rule_type:type_name -> minder.v1.RuleType - 112, // 93: minder.v1.UpdateRuleTypeResponse.rule_type:type_name -> minder.v1.RuleType - 90, // 94: minder.v1.DeleteRuleTypeRequest.context:type_name -> minder.v1.Context - 90, // 95: minder.v1.ListEvaluationResultsRequest.context:type_name -> minder.v1.Context - 77, // 96: minder.v1.ListEvaluationResultsRequest.entity:type_name -> minder.v1.EntityTypedId - 178, // 97: minder.v1.ListEvaluationResultsResponse.entities:type_name -> minder.v1.ListEvaluationResultsResponse.EntityEvaluationResults - 179, // 98: minder.v1.RestType.fallback:type_name -> minder.v1.RestType.Fallback - 180, // 99: minder.v1.DiffType.ecosystems:type_name -> minder.v1.DiffType.Ecosystem + 94, // 76: minder.v1.GetProfileStatusByNameRequest.context:type_name -> minder.v1.Context + 81, // 77: minder.v1.GetProfileStatusByNameRequest.entity:type_name -> minder.v1.EntityTypedId + 78, // 78: minder.v1.GetProfileStatusByNameResponse.profile_status:type_name -> minder.v1.ProfileStatus + 80, // 79: minder.v1.GetProfileStatusByNameResponse.rule_evaluation_status:type_name -> minder.v1.RuleEvaluationStatus + 94, // 80: minder.v1.GetProfileStatusByProjectRequest.context:type_name -> minder.v1.Context + 78, // 81: minder.v1.GetProfileStatusByProjectResponse.profile_status:type_name -> minder.v1.ProfileStatus + 180, // 82: minder.v1.AutoRegistration.entities:type_name -> minder.v1.AutoRegistration.EntitiesEntry + 87, // 83: minder.v1.ProviderConfig.auto_registration:type_name -> minder.v1.AutoRegistration + 94, // 84: minder.v1.ListRuleTypesRequest.context:type_name -> minder.v1.Context + 116, // 85: minder.v1.ListRuleTypesResponse.rule_types:type_name -> minder.v1.RuleType + 94, // 86: minder.v1.GetRuleTypeByNameRequest.context:type_name -> minder.v1.Context + 116, // 87: minder.v1.GetRuleTypeByNameResponse.rule_type:type_name -> minder.v1.RuleType + 94, // 88: minder.v1.GetRuleTypeByIdRequest.context:type_name -> minder.v1.Context + 116, // 89: minder.v1.GetRuleTypeByIdResponse.rule_type:type_name -> minder.v1.RuleType + 116, // 90: minder.v1.CreateRuleTypeRequest.rule_type:type_name -> minder.v1.RuleType + 116, // 91: minder.v1.CreateRuleTypeResponse.rule_type:type_name -> minder.v1.RuleType + 116, // 92: minder.v1.UpdateRuleTypeRequest.rule_type:type_name -> minder.v1.RuleType + 116, // 93: minder.v1.UpdateRuleTypeResponse.rule_type:type_name -> minder.v1.RuleType + 94, // 94: minder.v1.DeleteRuleTypeRequest.context:type_name -> minder.v1.Context + 94, // 95: minder.v1.ListEvaluationResultsRequest.context:type_name -> minder.v1.Context + 81, // 96: minder.v1.ListEvaluationResultsRequest.entity:type_name -> minder.v1.EntityTypedId + 182, // 97: minder.v1.ListEvaluationResultsResponse.entities:type_name -> minder.v1.ListEvaluationResultsResponse.EntityEvaluationResults + 183, // 98: minder.v1.RestType.fallback:type_name -> minder.v1.RestType.Fallback + 184, // 99: minder.v1.DiffType.ecosystems:type_name -> minder.v1.DiffType.Ecosystem 8, // 100: minder.v1.Severity.value:type_name -> minder.v1.Severity.Value - 90, // 101: minder.v1.RuleType.context:type_name -> minder.v1.Context - 181, // 102: minder.v1.RuleType.def:type_name -> minder.v1.RuleType.Definition - 111, // 103: minder.v1.RuleType.severity:type_name -> minder.v1.Severity - 90, // 104: minder.v1.Profile.context:type_name -> minder.v1.Context - 197, // 105: minder.v1.Profile.repository:type_name -> minder.v1.Profile.Rule - 197, // 106: minder.v1.Profile.build_environment:type_name -> minder.v1.Profile.Rule - 197, // 107: minder.v1.Profile.artifact:type_name -> minder.v1.Profile.Rule - 197, // 108: minder.v1.Profile.pull_request:type_name -> minder.v1.Profile.Rule - 198, // 109: minder.v1.Profile.selection:type_name -> minder.v1.Profile.Selector - 29, // 110: minder.v1.ListProjectsResponse.projects:type_name -> minder.v1.Project - 90, // 111: minder.v1.CreateProjectRequest.context:type_name -> minder.v1.Context - 29, // 112: minder.v1.CreateProjectResponse.project:type_name -> minder.v1.Project - 90, // 113: minder.v1.DeleteProjectRequest.context:type_name -> minder.v1.Context - 90, // 114: minder.v1.UpdateProjectRequest.context:type_name -> minder.v1.Context - 29, // 115: minder.v1.UpdateProjectResponse.project:type_name -> minder.v1.Project - 90, // 116: minder.v1.PatchProjectRequest.context:type_name -> minder.v1.Context - 122, // 117: minder.v1.PatchProjectRequest.patch:type_name -> minder.v1.ProjectPatch - 201, // 118: minder.v1.PatchProjectRequest.update_mask:type_name -> google.protobuf.FieldMask - 29, // 119: minder.v1.PatchProjectResponse.project:type_name -> minder.v1.Project - 91, // 120: minder.v1.ListChildProjectsRequest.context:type_name -> minder.v1.ContextV2 - 29, // 121: minder.v1.ListChildProjectsResponse.projects:type_name -> minder.v1.Project - 77, // 122: minder.v1.CreateEntityReconciliationTaskRequest.entity:type_name -> minder.v1.EntityTypedId - 90, // 123: minder.v1.CreateEntityReconciliationTaskRequest.context:type_name -> minder.v1.Context - 90, // 124: minder.v1.ListRolesRequest.context:type_name -> minder.v1.Context - 139, // 125: minder.v1.ListRolesResponse.roles:type_name -> minder.v1.Role - 90, // 126: minder.v1.ListRoleAssignmentsRequest.context:type_name -> minder.v1.Context - 140, // 127: minder.v1.ListRoleAssignmentsResponse.role_assignments:type_name -> minder.v1.RoleAssignment - 145, // 128: minder.v1.ListRoleAssignmentsResponse.invitations:type_name -> minder.v1.Invitation - 90, // 129: minder.v1.AssignRoleRequest.context:type_name -> minder.v1.Context - 140, // 130: minder.v1.AssignRoleRequest.role_assignment:type_name -> minder.v1.RoleAssignment - 140, // 131: minder.v1.AssignRoleResponse.role_assignment:type_name -> minder.v1.RoleAssignment - 145, // 132: minder.v1.AssignRoleResponse.invitation:type_name -> minder.v1.Invitation - 90, // 133: minder.v1.UpdateRoleRequest.context:type_name -> minder.v1.Context - 140, // 134: minder.v1.UpdateRoleResponse.role_assignments:type_name -> minder.v1.RoleAssignment - 145, // 135: minder.v1.UpdateRoleResponse.invitations:type_name -> minder.v1.Invitation - 90, // 136: minder.v1.RemoveRoleRequest.context:type_name -> minder.v1.Context - 140, // 137: minder.v1.RemoveRoleRequest.role_assignment:type_name -> minder.v1.RoleAssignment - 140, // 138: minder.v1.RemoveRoleResponse.role_assignment:type_name -> minder.v1.RoleAssignment - 145, // 139: minder.v1.RemoveRoleResponse.invitation:type_name -> minder.v1.Invitation - 145, // 140: minder.v1.ListInvitationsResponse.invitations:type_name -> minder.v1.Invitation - 199, // 141: minder.v1.Invitation.created_at:type_name -> google.protobuf.Timestamp - 199, // 142: minder.v1.Invitation.expires_at:type_name -> google.protobuf.Timestamp - 90, // 143: minder.v1.GetProviderRequest.context:type_name -> minder.v1.Context - 165, // 144: minder.v1.GetProviderResponse.provider:type_name -> minder.v1.Provider - 90, // 145: minder.v1.ListProvidersRequest.context:type_name -> minder.v1.Context - 165, // 146: minder.v1.ListProvidersResponse.providers:type_name -> minder.v1.Provider - 90, // 147: minder.v1.CreateProviderRequest.context:type_name -> minder.v1.Context - 165, // 148: minder.v1.CreateProviderRequest.provider:type_name -> minder.v1.Provider - 165, // 149: minder.v1.CreateProviderResponse.provider:type_name -> minder.v1.Provider - 162, // 150: minder.v1.CreateProviderResponse.authorization:type_name -> minder.v1.AuthorizationParams - 90, // 151: minder.v1.DeleteProviderRequest.context:type_name -> minder.v1.Context - 90, // 152: minder.v1.DeleteProviderByIDRequest.context:type_name -> minder.v1.Context - 90, // 153: minder.v1.GetUnclaimedProvidersRequest.context:type_name -> minder.v1.Context - 163, // 154: minder.v1.GetUnclaimedProvidersResponse.providers:type_name -> minder.v1.ProviderParameter - 90, // 155: minder.v1.ListProviderClassesRequest.context:type_name -> minder.v1.Context - 90, // 156: minder.v1.PatchProviderRequest.context:type_name -> minder.v1.Context - 165, // 157: minder.v1.PatchProviderRequest.patch:type_name -> minder.v1.Provider - 201, // 158: minder.v1.PatchProviderRequest.update_mask:type_name -> google.protobuf.FieldMask - 165, // 159: minder.v1.PatchProviderResponse.provider:type_name -> minder.v1.Provider - 164, // 160: minder.v1.ProviderParameter.github_app:type_name -> minder.v1.GitHubAppParams - 4, // 161: minder.v1.Provider.implements:type_name -> minder.v1.ProviderType - 200, // 162: minder.v1.Provider.config:type_name -> google.protobuf.Struct - 6, // 163: minder.v1.Provider.auth_flows:type_name -> minder.v1.AuthorizationFlow - 163, // 164: minder.v1.Provider.parameters:type_name -> minder.v1.ProviderParameter - 90, // 165: minder.v1.ListEvaluationHistoryRequest.context:type_name -> minder.v1.Context - 199, // 166: minder.v1.ListEvaluationHistoryRequest.from:type_name -> google.protobuf.Timestamp - 199, // 167: minder.v1.ListEvaluationHistoryRequest.to:type_name -> google.protobuf.Timestamp - 10, // 168: minder.v1.ListEvaluationHistoryRequest.cursor:type_name -> minder.v1.Cursor - 168, // 169: minder.v1.ListEvaluationHistoryResponse.data:type_name -> minder.v1.EvaluationHistory - 11, // 170: minder.v1.ListEvaluationHistoryResponse.page:type_name -> minder.v1.CursorPage - 169, // 171: minder.v1.EvaluationHistory.entity:type_name -> minder.v1.EvaluationHistoryEntity - 170, // 172: minder.v1.EvaluationHistory.rule:type_name -> minder.v1.EvaluationHistoryRule - 171, // 173: minder.v1.EvaluationHistory.status:type_name -> minder.v1.EvaluationHistoryStatus - 173, // 174: minder.v1.EvaluationHistory.alert:type_name -> minder.v1.EvaluationHistoryAlert - 172, // 175: minder.v1.EvaluationHistory.remediation:type_name -> minder.v1.EvaluationHistoryRemediation - 199, // 176: minder.v1.EvaluationHistory.evaluated_at:type_name -> google.protobuf.Timestamp - 3, // 177: minder.v1.EvaluationHistoryEntity.type:type_name -> minder.v1.Entity - 82, // 178: minder.v1.AutoRegistration.EntitiesEntry.value:type_name -> minder.v1.EntityAutoRegistrationConfig - 74, // 179: minder.v1.ListEvaluationResultsResponse.EntityProfileEvaluationResults.profile_status:type_name -> minder.v1.ProfileStatus - 76, // 180: minder.v1.ListEvaluationResultsResponse.EntityProfileEvaluationResults.results:type_name -> minder.v1.RuleEvaluationStatus - 77, // 181: minder.v1.ListEvaluationResultsResponse.EntityEvaluationResults.entity:type_name -> minder.v1.EntityTypedId - 177, // 182: minder.v1.ListEvaluationResultsResponse.EntityEvaluationResults.profiles:type_name -> minder.v1.ListEvaluationResultsResponse.EntityProfileEvaluationResults - 200, // 183: minder.v1.RuleType.Definition.rule_schema:type_name -> google.protobuf.Struct - 200, // 184: minder.v1.RuleType.Definition.param_schema:type_name -> google.protobuf.Struct - 182, // 185: minder.v1.RuleType.Definition.ingest:type_name -> minder.v1.RuleType.Definition.Ingest - 183, // 186: minder.v1.RuleType.Definition.eval:type_name -> minder.v1.RuleType.Definition.Eval - 184, // 187: minder.v1.RuleType.Definition.remediate:type_name -> minder.v1.RuleType.Definition.Remediate - 185, // 188: minder.v1.RuleType.Definition.alert:type_name -> minder.v1.RuleType.Definition.Alert - 106, // 189: minder.v1.RuleType.Definition.Ingest.rest:type_name -> minder.v1.RestType - 107, // 190: minder.v1.RuleType.Definition.Ingest.builtin:type_name -> minder.v1.BuiltinType - 108, // 191: minder.v1.RuleType.Definition.Ingest.artifact:type_name -> minder.v1.ArtifactType - 109, // 192: minder.v1.RuleType.Definition.Ingest.git:type_name -> minder.v1.GitType - 110, // 193: minder.v1.RuleType.Definition.Ingest.diff:type_name -> minder.v1.DiffType - 186, // 194: minder.v1.RuleType.Definition.Eval.jq:type_name -> minder.v1.RuleType.Definition.Eval.JQComparison - 187, // 195: minder.v1.RuleType.Definition.Eval.rego:type_name -> minder.v1.RuleType.Definition.Eval.Rego - 188, // 196: minder.v1.RuleType.Definition.Eval.vulncheck:type_name -> minder.v1.RuleType.Definition.Eval.Vulncheck - 189, // 197: minder.v1.RuleType.Definition.Eval.trusty:type_name -> minder.v1.RuleType.Definition.Eval.Trusty - 190, // 198: minder.v1.RuleType.Definition.Eval.homoglyphs:type_name -> minder.v1.RuleType.Definition.Eval.Homoglyphs - 106, // 199: minder.v1.RuleType.Definition.Remediate.rest:type_name -> minder.v1.RestType - 192, // 200: minder.v1.RuleType.Definition.Remediate.gh_branch_protection:type_name -> minder.v1.RuleType.Definition.Remediate.GhBranchProtectionType - 193, // 201: minder.v1.RuleType.Definition.Remediate.pull_request:type_name -> minder.v1.RuleType.Definition.Remediate.PullRequestRemediation - 196, // 202: minder.v1.RuleType.Definition.Alert.security_advisory:type_name -> minder.v1.RuleType.Definition.Alert.AlertTypeSA - 191, // 203: minder.v1.RuleType.Definition.Eval.JQComparison.ingested:type_name -> minder.v1.RuleType.Definition.Eval.JQComparison.Operator - 191, // 204: minder.v1.RuleType.Definition.Eval.JQComparison.profile:type_name -> minder.v1.RuleType.Definition.Eval.JQComparison.Operator - 194, // 205: minder.v1.RuleType.Definition.Remediate.PullRequestRemediation.contents:type_name -> minder.v1.RuleType.Definition.Remediate.PullRequestRemediation.Content - 195, // 206: minder.v1.RuleType.Definition.Remediate.PullRequestRemediation.actions_replace_tags_with_sha:type_name -> minder.v1.RuleType.Definition.Remediate.PullRequestRemediation.ActionsReplaceTagsWithSha - 200, // 207: minder.v1.Profile.Rule.params:type_name -> google.protobuf.Struct - 200, // 208: minder.v1.Profile.Rule.def:type_name -> google.protobuf.Struct - 202, // 209: minder.v1.name:extendee -> google.protobuf.EnumValueOptions - 203, // 210: minder.v1.rpc_options:extendee -> google.protobuf.MethodOptions - 9, // 211: minder.v1.rpc_options:type_name -> minder.v1.RpcOptions - 23, // 212: minder.v1.HealthService.CheckHealth:input_type -> minder.v1.CheckHealthRequest - 12, // 213: minder.v1.ArtifactService.ListArtifacts:input_type -> minder.v1.ListArtifactsRequest - 16, // 214: minder.v1.ArtifactService.GetArtifactById:input_type -> minder.v1.GetArtifactByIdRequest - 18, // 215: minder.v1.ArtifactService.GetArtifactByName:input_type -> minder.v1.GetArtifactByNameRequest - 25, // 216: minder.v1.OAuthService.GetAuthorizationURL:input_type -> minder.v1.GetAuthorizationURLRequest - 27, // 217: minder.v1.OAuthService.StoreProviderToken:input_type -> minder.v1.StoreProviderTokenRequest - 49, // 218: minder.v1.OAuthService.VerifyProviderTokenFrom:input_type -> minder.v1.VerifyProviderTokenFromRequest - 51, // 219: minder.v1.OAuthService.VerifyProviderCredential:input_type -> minder.v1.VerifyProviderCredentialRequest - 34, // 220: minder.v1.RepositoryService.RegisterRepository:input_type -> minder.v1.RegisterRepositoryRequest - 30, // 221: minder.v1.RepositoryService.ListRemoteRepositoriesFromProvider:input_type -> minder.v1.ListRemoteRepositoriesFromProviderRequest - 45, // 222: minder.v1.RepositoryService.ListRepositories:input_type -> minder.v1.ListRepositoriesRequest - 37, // 223: minder.v1.RepositoryService.GetRepositoryById:input_type -> minder.v1.GetRepositoryByIdRequest - 41, // 224: minder.v1.RepositoryService.GetRepositoryByName:input_type -> minder.v1.GetRepositoryByNameRequest - 39, // 225: minder.v1.RepositoryService.DeleteRepositoryById:input_type -> minder.v1.DeleteRepositoryByIdRequest - 43, // 226: minder.v1.RepositoryService.DeleteRepositoryByName:input_type -> minder.v1.DeleteRepositoryByNameRequest - 54, // 227: minder.v1.UserService.CreateUser:input_type -> minder.v1.CreateUserRequest - 56, // 228: minder.v1.UserService.DeleteUser:input_type -> minder.v1.DeleteUserRequest - 60, // 229: minder.v1.UserService.GetUser:input_type -> minder.v1.GetUserRequest - 141, // 230: minder.v1.UserService.ListInvitations:input_type -> minder.v1.ListInvitationsRequest - 143, // 231: minder.v1.UserService.ResolveInvitation:input_type -> minder.v1.ResolveInvitationRequest - 62, // 232: minder.v1.ProfileService.CreateProfile:input_type -> minder.v1.CreateProfileRequest - 64, // 233: minder.v1.ProfileService.UpdateProfile:input_type -> minder.v1.UpdateProfileRequest - 66, // 234: minder.v1.ProfileService.PatchProfile:input_type -> minder.v1.PatchProfileRequest - 68, // 235: minder.v1.ProfileService.DeleteProfile:input_type -> minder.v1.DeleteProfileRequest - 70, // 236: minder.v1.ProfileService.ListProfiles:input_type -> minder.v1.ListProfilesRequest - 72, // 237: minder.v1.ProfileService.GetProfileById:input_type -> minder.v1.GetProfileByIdRequest - 78, // 238: minder.v1.ProfileService.GetProfileStatusByName:input_type -> minder.v1.GetProfileStatusByNameRequest - 80, // 239: minder.v1.ProfileService.GetProfileStatusByProject:input_type -> minder.v1.GetProfileStatusByProjectRequest - 92, // 240: minder.v1.ProfileService.ListRuleTypes:input_type -> minder.v1.ListRuleTypesRequest - 94, // 241: minder.v1.ProfileService.GetRuleTypeByName:input_type -> minder.v1.GetRuleTypeByNameRequest - 96, // 242: minder.v1.ProfileService.GetRuleTypeById:input_type -> minder.v1.GetRuleTypeByIdRequest - 98, // 243: minder.v1.ProfileService.CreateRuleType:input_type -> minder.v1.CreateRuleTypeRequest - 100, // 244: minder.v1.ProfileService.UpdateRuleType:input_type -> minder.v1.UpdateRuleTypeRequest - 102, // 245: minder.v1.ProfileService.DeleteRuleType:input_type -> minder.v1.DeleteRuleTypeRequest - 104, // 246: minder.v1.EvalResultsService.ListEvaluationResults:input_type -> minder.v1.ListEvaluationResultsRequest - 166, // 247: minder.v1.EvalResultsService.ListEvaluationHistory:input_type -> minder.v1.ListEvaluationHistoryRequest - 129, // 248: minder.v1.PermissionsService.ListRoles:input_type -> minder.v1.ListRolesRequest - 131, // 249: minder.v1.PermissionsService.ListRoleAssignments:input_type -> minder.v1.ListRoleAssignmentsRequest - 133, // 250: minder.v1.PermissionsService.AssignRole:input_type -> minder.v1.AssignRoleRequest - 135, // 251: minder.v1.PermissionsService.UpdateRole:input_type -> minder.v1.UpdateRoleRequest - 137, // 252: minder.v1.PermissionsService.RemoveRole:input_type -> minder.v1.RemoveRoleRequest - 114, // 253: minder.v1.ProjectsService.ListProjects:input_type -> minder.v1.ListProjectsRequest - 116, // 254: minder.v1.ProjectsService.CreateProject:input_type -> minder.v1.CreateProjectRequest - 125, // 255: minder.v1.ProjectsService.ListChildProjects:input_type -> minder.v1.ListChildProjectsRequest - 118, // 256: minder.v1.ProjectsService.DeleteProject:input_type -> minder.v1.DeleteProjectRequest - 120, // 257: minder.v1.ProjectsService.UpdateProject:input_type -> minder.v1.UpdateProjectRequest - 123, // 258: minder.v1.ProjectsService.PatchProject:input_type -> minder.v1.PatchProjectRequest - 127, // 259: minder.v1.ProjectsService.CreateEntityReconciliationTask:input_type -> minder.v1.CreateEntityReconciliationTaskRequest - 160, // 260: minder.v1.ProvidersService.PatchProvider:input_type -> minder.v1.PatchProviderRequest - 146, // 261: minder.v1.ProvidersService.GetProvider:input_type -> minder.v1.GetProviderRequest - 148, // 262: minder.v1.ProvidersService.ListProviders:input_type -> minder.v1.ListProvidersRequest - 150, // 263: minder.v1.ProvidersService.CreateProvider:input_type -> minder.v1.CreateProviderRequest - 152, // 264: minder.v1.ProvidersService.DeleteProvider:input_type -> minder.v1.DeleteProviderRequest - 154, // 265: minder.v1.ProvidersService.DeleteProviderByID:input_type -> minder.v1.DeleteProviderByIDRequest - 156, // 266: minder.v1.ProvidersService.GetUnclaimedProviders:input_type -> minder.v1.GetUnclaimedProvidersRequest - 158, // 267: minder.v1.ProvidersService.ListProviderClasses:input_type -> minder.v1.ListProviderClassesRequest - 47, // 268: minder.v1.ProvidersService.ReconcileEntityRegistration:input_type -> minder.v1.ReconcileEntityRegistrationRequest - 21, // 269: minder.v1.InviteService.GetInviteDetails:input_type -> minder.v1.GetInviteDetailsRequest - 24, // 270: minder.v1.HealthService.CheckHealth:output_type -> minder.v1.CheckHealthResponse - 13, // 271: minder.v1.ArtifactService.ListArtifacts:output_type -> minder.v1.ListArtifactsResponse - 17, // 272: minder.v1.ArtifactService.GetArtifactById:output_type -> minder.v1.GetArtifactByIdResponse - 19, // 273: minder.v1.ArtifactService.GetArtifactByName:output_type -> minder.v1.GetArtifactByNameResponse - 26, // 274: minder.v1.OAuthService.GetAuthorizationURL:output_type -> minder.v1.GetAuthorizationURLResponse - 28, // 275: minder.v1.OAuthService.StoreProviderToken:output_type -> minder.v1.StoreProviderTokenResponse - 50, // 276: minder.v1.OAuthService.VerifyProviderTokenFrom:output_type -> minder.v1.VerifyProviderTokenFromResponse - 52, // 277: minder.v1.OAuthService.VerifyProviderCredential:output_type -> minder.v1.VerifyProviderCredentialResponse - 36, // 278: minder.v1.RepositoryService.RegisterRepository:output_type -> minder.v1.RegisterRepositoryResponse - 31, // 279: minder.v1.RepositoryService.ListRemoteRepositoriesFromProvider:output_type -> minder.v1.ListRemoteRepositoriesFromProviderResponse - 46, // 280: minder.v1.RepositoryService.ListRepositories:output_type -> minder.v1.ListRepositoriesResponse - 38, // 281: minder.v1.RepositoryService.GetRepositoryById:output_type -> minder.v1.GetRepositoryByIdResponse - 42, // 282: minder.v1.RepositoryService.GetRepositoryByName:output_type -> minder.v1.GetRepositoryByNameResponse - 40, // 283: minder.v1.RepositoryService.DeleteRepositoryById:output_type -> minder.v1.DeleteRepositoryByIdResponse - 44, // 284: minder.v1.RepositoryService.DeleteRepositoryByName:output_type -> minder.v1.DeleteRepositoryByNameResponse - 55, // 285: minder.v1.UserService.CreateUser:output_type -> minder.v1.CreateUserResponse - 57, // 286: minder.v1.UserService.DeleteUser:output_type -> minder.v1.DeleteUserResponse - 61, // 287: minder.v1.UserService.GetUser:output_type -> minder.v1.GetUserResponse - 142, // 288: minder.v1.UserService.ListInvitations:output_type -> minder.v1.ListInvitationsResponse - 144, // 289: minder.v1.UserService.ResolveInvitation:output_type -> minder.v1.ResolveInvitationResponse - 63, // 290: minder.v1.ProfileService.CreateProfile:output_type -> minder.v1.CreateProfileResponse - 65, // 291: minder.v1.ProfileService.UpdateProfile:output_type -> minder.v1.UpdateProfileResponse - 67, // 292: minder.v1.ProfileService.PatchProfile:output_type -> minder.v1.PatchProfileResponse - 69, // 293: minder.v1.ProfileService.DeleteProfile:output_type -> minder.v1.DeleteProfileResponse - 71, // 294: minder.v1.ProfileService.ListProfiles:output_type -> minder.v1.ListProfilesResponse - 73, // 295: minder.v1.ProfileService.GetProfileById:output_type -> minder.v1.GetProfileByIdResponse - 79, // 296: minder.v1.ProfileService.GetProfileStatusByName:output_type -> minder.v1.GetProfileStatusByNameResponse - 81, // 297: minder.v1.ProfileService.GetProfileStatusByProject:output_type -> minder.v1.GetProfileStatusByProjectResponse - 93, // 298: minder.v1.ProfileService.ListRuleTypes:output_type -> minder.v1.ListRuleTypesResponse - 95, // 299: minder.v1.ProfileService.GetRuleTypeByName:output_type -> minder.v1.GetRuleTypeByNameResponse - 97, // 300: minder.v1.ProfileService.GetRuleTypeById:output_type -> minder.v1.GetRuleTypeByIdResponse - 99, // 301: minder.v1.ProfileService.CreateRuleType:output_type -> minder.v1.CreateRuleTypeResponse - 101, // 302: minder.v1.ProfileService.UpdateRuleType:output_type -> minder.v1.UpdateRuleTypeResponse - 103, // 303: minder.v1.ProfileService.DeleteRuleType:output_type -> minder.v1.DeleteRuleTypeResponse - 105, // 304: minder.v1.EvalResultsService.ListEvaluationResults:output_type -> minder.v1.ListEvaluationResultsResponse - 167, // 305: minder.v1.EvalResultsService.ListEvaluationHistory:output_type -> minder.v1.ListEvaluationHistoryResponse - 130, // 306: minder.v1.PermissionsService.ListRoles:output_type -> minder.v1.ListRolesResponse - 132, // 307: minder.v1.PermissionsService.ListRoleAssignments:output_type -> minder.v1.ListRoleAssignmentsResponse - 134, // 308: minder.v1.PermissionsService.AssignRole:output_type -> minder.v1.AssignRoleResponse - 136, // 309: minder.v1.PermissionsService.UpdateRole:output_type -> minder.v1.UpdateRoleResponse - 138, // 310: minder.v1.PermissionsService.RemoveRole:output_type -> minder.v1.RemoveRoleResponse - 115, // 311: minder.v1.ProjectsService.ListProjects:output_type -> minder.v1.ListProjectsResponse - 117, // 312: minder.v1.ProjectsService.CreateProject:output_type -> minder.v1.CreateProjectResponse - 126, // 313: minder.v1.ProjectsService.ListChildProjects:output_type -> minder.v1.ListChildProjectsResponse - 119, // 314: minder.v1.ProjectsService.DeleteProject:output_type -> minder.v1.DeleteProjectResponse - 121, // 315: minder.v1.ProjectsService.UpdateProject:output_type -> minder.v1.UpdateProjectResponse - 124, // 316: minder.v1.ProjectsService.PatchProject:output_type -> minder.v1.PatchProjectResponse - 128, // 317: minder.v1.ProjectsService.CreateEntityReconciliationTask:output_type -> minder.v1.CreateEntityReconciliationTaskResponse - 161, // 318: minder.v1.ProvidersService.PatchProvider:output_type -> minder.v1.PatchProviderResponse - 147, // 319: minder.v1.ProvidersService.GetProvider:output_type -> minder.v1.GetProviderResponse - 149, // 320: minder.v1.ProvidersService.ListProviders:output_type -> minder.v1.ListProvidersResponse - 151, // 321: minder.v1.ProvidersService.CreateProvider:output_type -> minder.v1.CreateProviderResponse - 153, // 322: minder.v1.ProvidersService.DeleteProvider:output_type -> minder.v1.DeleteProviderResponse - 155, // 323: minder.v1.ProvidersService.DeleteProviderByID:output_type -> minder.v1.DeleteProviderByIDResponse - 157, // 324: minder.v1.ProvidersService.GetUnclaimedProviders:output_type -> minder.v1.GetUnclaimedProvidersResponse - 159, // 325: minder.v1.ProvidersService.ListProviderClasses:output_type -> minder.v1.ListProviderClassesResponse - 48, // 326: minder.v1.ProvidersService.ReconcileEntityRegistration:output_type -> minder.v1.ReconcileEntityRegistrationResponse - 22, // 327: minder.v1.InviteService.GetInviteDetails:output_type -> minder.v1.GetInviteDetailsResponse - 270, // [270:328] is the sub-list for method output_type - 212, // [212:270] is the sub-list for method input_type - 211, // [211:212] is the sub-list for extension type_name - 209, // [209:211] is the sub-list for extension extendee - 0, // [0:209] is the sub-list for field type_name + 94, // 101: minder.v1.RuleType.context:type_name -> minder.v1.Context + 185, // 102: minder.v1.RuleType.def:type_name -> minder.v1.RuleType.Definition + 115, // 103: minder.v1.RuleType.severity:type_name -> minder.v1.Severity + 94, // 104: minder.v1.Profile.context:type_name -> minder.v1.Context + 201, // 105: minder.v1.Profile.repository:type_name -> minder.v1.Profile.Rule + 201, // 106: minder.v1.Profile.build_environment:type_name -> minder.v1.Profile.Rule + 201, // 107: minder.v1.Profile.artifact:type_name -> minder.v1.Profile.Rule + 201, // 108: minder.v1.Profile.pull_request:type_name -> minder.v1.Profile.Rule + 201, // 109: minder.v1.Profile.release:type_name -> minder.v1.Profile.Rule + 201, // 110: minder.v1.Profile.pipeline_run:type_name -> minder.v1.Profile.Rule + 201, // 111: minder.v1.Profile.task_run:type_name -> minder.v1.Profile.Rule + 201, // 112: minder.v1.Profile.build:type_name -> minder.v1.Profile.Rule + 202, // 113: minder.v1.Profile.selection:type_name -> minder.v1.Profile.Selector + 33, // 114: minder.v1.ListProjectsResponse.projects:type_name -> minder.v1.Project + 94, // 115: minder.v1.CreateProjectRequest.context:type_name -> minder.v1.Context + 33, // 116: minder.v1.CreateProjectResponse.project:type_name -> minder.v1.Project + 94, // 117: minder.v1.DeleteProjectRequest.context:type_name -> minder.v1.Context + 94, // 118: minder.v1.UpdateProjectRequest.context:type_name -> minder.v1.Context + 33, // 119: minder.v1.UpdateProjectResponse.project:type_name -> minder.v1.Project + 94, // 120: minder.v1.PatchProjectRequest.context:type_name -> minder.v1.Context + 126, // 121: minder.v1.PatchProjectRequest.patch:type_name -> minder.v1.ProjectPatch + 205, // 122: minder.v1.PatchProjectRequest.update_mask:type_name -> google.protobuf.FieldMask + 33, // 123: minder.v1.PatchProjectResponse.project:type_name -> minder.v1.Project + 95, // 124: minder.v1.ListChildProjectsRequest.context:type_name -> minder.v1.ContextV2 + 33, // 125: minder.v1.ListChildProjectsResponse.projects:type_name -> minder.v1.Project + 81, // 126: minder.v1.CreateEntityReconciliationTaskRequest.entity:type_name -> minder.v1.EntityTypedId + 94, // 127: minder.v1.CreateEntityReconciliationTaskRequest.context:type_name -> minder.v1.Context + 94, // 128: minder.v1.ListRolesRequest.context:type_name -> minder.v1.Context + 143, // 129: minder.v1.ListRolesResponse.roles:type_name -> minder.v1.Role + 94, // 130: minder.v1.ListRoleAssignmentsRequest.context:type_name -> minder.v1.Context + 144, // 131: minder.v1.ListRoleAssignmentsResponse.role_assignments:type_name -> minder.v1.RoleAssignment + 149, // 132: minder.v1.ListRoleAssignmentsResponse.invitations:type_name -> minder.v1.Invitation + 94, // 133: minder.v1.AssignRoleRequest.context:type_name -> minder.v1.Context + 144, // 134: minder.v1.AssignRoleRequest.role_assignment:type_name -> minder.v1.RoleAssignment + 144, // 135: minder.v1.AssignRoleResponse.role_assignment:type_name -> minder.v1.RoleAssignment + 149, // 136: minder.v1.AssignRoleResponse.invitation:type_name -> minder.v1.Invitation + 94, // 137: minder.v1.UpdateRoleRequest.context:type_name -> minder.v1.Context + 144, // 138: minder.v1.UpdateRoleResponse.role_assignments:type_name -> minder.v1.RoleAssignment + 149, // 139: minder.v1.UpdateRoleResponse.invitations:type_name -> minder.v1.Invitation + 94, // 140: minder.v1.RemoveRoleRequest.context:type_name -> minder.v1.Context + 144, // 141: minder.v1.RemoveRoleRequest.role_assignment:type_name -> minder.v1.RoleAssignment + 144, // 142: minder.v1.RemoveRoleResponse.role_assignment:type_name -> minder.v1.RoleAssignment + 149, // 143: minder.v1.RemoveRoleResponse.invitation:type_name -> minder.v1.Invitation + 149, // 144: minder.v1.ListInvitationsResponse.invitations:type_name -> minder.v1.Invitation + 203, // 145: minder.v1.Invitation.created_at:type_name -> google.protobuf.Timestamp + 203, // 146: minder.v1.Invitation.expires_at:type_name -> google.protobuf.Timestamp + 94, // 147: minder.v1.GetProviderRequest.context:type_name -> minder.v1.Context + 169, // 148: minder.v1.GetProviderResponse.provider:type_name -> minder.v1.Provider + 94, // 149: minder.v1.ListProvidersRequest.context:type_name -> minder.v1.Context + 169, // 150: minder.v1.ListProvidersResponse.providers:type_name -> minder.v1.Provider + 94, // 151: minder.v1.CreateProviderRequest.context:type_name -> minder.v1.Context + 169, // 152: minder.v1.CreateProviderRequest.provider:type_name -> minder.v1.Provider + 169, // 153: minder.v1.CreateProviderResponse.provider:type_name -> minder.v1.Provider + 166, // 154: minder.v1.CreateProviderResponse.authorization:type_name -> minder.v1.AuthorizationParams + 94, // 155: minder.v1.DeleteProviderRequest.context:type_name -> minder.v1.Context + 94, // 156: minder.v1.DeleteProviderByIDRequest.context:type_name -> minder.v1.Context + 94, // 157: minder.v1.GetUnclaimedProvidersRequest.context:type_name -> minder.v1.Context + 167, // 158: minder.v1.GetUnclaimedProvidersResponse.providers:type_name -> minder.v1.ProviderParameter + 94, // 159: minder.v1.ListProviderClassesRequest.context:type_name -> minder.v1.Context + 94, // 160: minder.v1.PatchProviderRequest.context:type_name -> minder.v1.Context + 169, // 161: minder.v1.PatchProviderRequest.patch:type_name -> minder.v1.Provider + 205, // 162: minder.v1.PatchProviderRequest.update_mask:type_name -> google.protobuf.FieldMask + 169, // 163: minder.v1.PatchProviderResponse.provider:type_name -> minder.v1.Provider + 168, // 164: minder.v1.ProviderParameter.github_app:type_name -> minder.v1.GitHubAppParams + 4, // 165: minder.v1.Provider.implements:type_name -> minder.v1.ProviderType + 204, // 166: minder.v1.Provider.config:type_name -> google.protobuf.Struct + 6, // 167: minder.v1.Provider.auth_flows:type_name -> minder.v1.AuthorizationFlow + 167, // 168: minder.v1.Provider.parameters:type_name -> minder.v1.ProviderParameter + 94, // 169: minder.v1.ListEvaluationHistoryRequest.context:type_name -> minder.v1.Context + 203, // 170: minder.v1.ListEvaluationHistoryRequest.from:type_name -> google.protobuf.Timestamp + 203, // 171: minder.v1.ListEvaluationHistoryRequest.to:type_name -> google.protobuf.Timestamp + 10, // 172: minder.v1.ListEvaluationHistoryRequest.cursor:type_name -> minder.v1.Cursor + 172, // 173: minder.v1.ListEvaluationHistoryResponse.data:type_name -> minder.v1.EvaluationHistory + 11, // 174: minder.v1.ListEvaluationHistoryResponse.page:type_name -> minder.v1.CursorPage + 173, // 175: minder.v1.EvaluationHistory.entity:type_name -> minder.v1.EvaluationHistoryEntity + 174, // 176: minder.v1.EvaluationHistory.rule:type_name -> minder.v1.EvaluationHistoryRule + 175, // 177: minder.v1.EvaluationHistory.status:type_name -> minder.v1.EvaluationHistoryStatus + 177, // 178: minder.v1.EvaluationHistory.alert:type_name -> minder.v1.EvaluationHistoryAlert + 176, // 179: minder.v1.EvaluationHistory.remediation:type_name -> minder.v1.EvaluationHistoryRemediation + 203, // 180: minder.v1.EvaluationHistory.evaluated_at:type_name -> google.protobuf.Timestamp + 3, // 181: minder.v1.EvaluationHistoryEntity.type:type_name -> minder.v1.Entity + 86, // 182: minder.v1.AutoRegistration.EntitiesEntry.value:type_name -> minder.v1.EntityAutoRegistrationConfig + 78, // 183: minder.v1.ListEvaluationResultsResponse.EntityProfileEvaluationResults.profile_status:type_name -> minder.v1.ProfileStatus + 80, // 184: minder.v1.ListEvaluationResultsResponse.EntityProfileEvaluationResults.results:type_name -> minder.v1.RuleEvaluationStatus + 81, // 185: minder.v1.ListEvaluationResultsResponse.EntityEvaluationResults.entity:type_name -> minder.v1.EntityTypedId + 181, // 186: minder.v1.ListEvaluationResultsResponse.EntityEvaluationResults.profiles:type_name -> minder.v1.ListEvaluationResultsResponse.EntityProfileEvaluationResults + 204, // 187: minder.v1.RuleType.Definition.rule_schema:type_name -> google.protobuf.Struct + 204, // 188: minder.v1.RuleType.Definition.param_schema:type_name -> google.protobuf.Struct + 186, // 189: minder.v1.RuleType.Definition.ingest:type_name -> minder.v1.RuleType.Definition.Ingest + 187, // 190: minder.v1.RuleType.Definition.eval:type_name -> minder.v1.RuleType.Definition.Eval + 188, // 191: minder.v1.RuleType.Definition.remediate:type_name -> minder.v1.RuleType.Definition.Remediate + 189, // 192: minder.v1.RuleType.Definition.alert:type_name -> minder.v1.RuleType.Definition.Alert + 110, // 193: minder.v1.RuleType.Definition.Ingest.rest:type_name -> minder.v1.RestType + 111, // 194: minder.v1.RuleType.Definition.Ingest.builtin:type_name -> minder.v1.BuiltinType + 112, // 195: minder.v1.RuleType.Definition.Ingest.artifact:type_name -> minder.v1.ArtifactType + 113, // 196: minder.v1.RuleType.Definition.Ingest.git:type_name -> minder.v1.GitType + 114, // 197: minder.v1.RuleType.Definition.Ingest.diff:type_name -> minder.v1.DiffType + 190, // 198: minder.v1.RuleType.Definition.Eval.jq:type_name -> minder.v1.RuleType.Definition.Eval.JQComparison + 191, // 199: minder.v1.RuleType.Definition.Eval.rego:type_name -> minder.v1.RuleType.Definition.Eval.Rego + 192, // 200: minder.v1.RuleType.Definition.Eval.vulncheck:type_name -> minder.v1.RuleType.Definition.Eval.Vulncheck + 193, // 201: minder.v1.RuleType.Definition.Eval.trusty:type_name -> minder.v1.RuleType.Definition.Eval.Trusty + 194, // 202: minder.v1.RuleType.Definition.Eval.homoglyphs:type_name -> minder.v1.RuleType.Definition.Eval.Homoglyphs + 110, // 203: minder.v1.RuleType.Definition.Remediate.rest:type_name -> minder.v1.RestType + 196, // 204: minder.v1.RuleType.Definition.Remediate.gh_branch_protection:type_name -> minder.v1.RuleType.Definition.Remediate.GhBranchProtectionType + 197, // 205: minder.v1.RuleType.Definition.Remediate.pull_request:type_name -> minder.v1.RuleType.Definition.Remediate.PullRequestRemediation + 200, // 206: minder.v1.RuleType.Definition.Alert.security_advisory:type_name -> minder.v1.RuleType.Definition.Alert.AlertTypeSA + 195, // 207: minder.v1.RuleType.Definition.Eval.JQComparison.ingested:type_name -> minder.v1.RuleType.Definition.Eval.JQComparison.Operator + 195, // 208: minder.v1.RuleType.Definition.Eval.JQComparison.profile:type_name -> minder.v1.RuleType.Definition.Eval.JQComparison.Operator + 198, // 209: minder.v1.RuleType.Definition.Remediate.PullRequestRemediation.contents:type_name -> minder.v1.RuleType.Definition.Remediate.PullRequestRemediation.Content + 199, // 210: minder.v1.RuleType.Definition.Remediate.PullRequestRemediation.actions_replace_tags_with_sha:type_name -> minder.v1.RuleType.Definition.Remediate.PullRequestRemediation.ActionsReplaceTagsWithSha + 204, // 211: minder.v1.Profile.Rule.params:type_name -> google.protobuf.Struct + 204, // 212: minder.v1.Profile.Rule.def:type_name -> google.protobuf.Struct + 206, // 213: minder.v1.name:extendee -> google.protobuf.EnumValueOptions + 207, // 214: minder.v1.rpc_options:extendee -> google.protobuf.MethodOptions + 9, // 215: minder.v1.rpc_options:type_name -> minder.v1.RpcOptions + 27, // 216: minder.v1.HealthService.CheckHealth:input_type -> minder.v1.CheckHealthRequest + 12, // 217: minder.v1.ArtifactService.ListArtifacts:input_type -> minder.v1.ListArtifactsRequest + 16, // 218: minder.v1.ArtifactService.GetArtifactById:input_type -> minder.v1.GetArtifactByIdRequest + 18, // 219: minder.v1.ArtifactService.GetArtifactByName:input_type -> minder.v1.GetArtifactByNameRequest + 29, // 220: minder.v1.OAuthService.GetAuthorizationURL:input_type -> minder.v1.GetAuthorizationURLRequest + 31, // 221: minder.v1.OAuthService.StoreProviderToken:input_type -> minder.v1.StoreProviderTokenRequest + 53, // 222: minder.v1.OAuthService.VerifyProviderTokenFrom:input_type -> minder.v1.VerifyProviderTokenFromRequest + 55, // 223: minder.v1.OAuthService.VerifyProviderCredential:input_type -> minder.v1.VerifyProviderCredentialRequest + 38, // 224: minder.v1.RepositoryService.RegisterRepository:input_type -> minder.v1.RegisterRepositoryRequest + 34, // 225: minder.v1.RepositoryService.ListRemoteRepositoriesFromProvider:input_type -> minder.v1.ListRemoteRepositoriesFromProviderRequest + 49, // 226: minder.v1.RepositoryService.ListRepositories:input_type -> minder.v1.ListRepositoriesRequest + 41, // 227: minder.v1.RepositoryService.GetRepositoryById:input_type -> minder.v1.GetRepositoryByIdRequest + 45, // 228: minder.v1.RepositoryService.GetRepositoryByName:input_type -> minder.v1.GetRepositoryByNameRequest + 43, // 229: minder.v1.RepositoryService.DeleteRepositoryById:input_type -> minder.v1.DeleteRepositoryByIdRequest + 47, // 230: minder.v1.RepositoryService.DeleteRepositoryByName:input_type -> minder.v1.DeleteRepositoryByNameRequest + 58, // 231: minder.v1.UserService.CreateUser:input_type -> minder.v1.CreateUserRequest + 60, // 232: minder.v1.UserService.DeleteUser:input_type -> minder.v1.DeleteUserRequest + 64, // 233: minder.v1.UserService.GetUser:input_type -> minder.v1.GetUserRequest + 145, // 234: minder.v1.UserService.ListInvitations:input_type -> minder.v1.ListInvitationsRequest + 147, // 235: minder.v1.UserService.ResolveInvitation:input_type -> minder.v1.ResolveInvitationRequest + 66, // 236: minder.v1.ProfileService.CreateProfile:input_type -> minder.v1.CreateProfileRequest + 68, // 237: minder.v1.ProfileService.UpdateProfile:input_type -> minder.v1.UpdateProfileRequest + 70, // 238: minder.v1.ProfileService.PatchProfile:input_type -> minder.v1.PatchProfileRequest + 72, // 239: minder.v1.ProfileService.DeleteProfile:input_type -> minder.v1.DeleteProfileRequest + 74, // 240: minder.v1.ProfileService.ListProfiles:input_type -> minder.v1.ListProfilesRequest + 76, // 241: minder.v1.ProfileService.GetProfileById:input_type -> minder.v1.GetProfileByIdRequest + 82, // 242: minder.v1.ProfileService.GetProfileStatusByName:input_type -> minder.v1.GetProfileStatusByNameRequest + 84, // 243: minder.v1.ProfileService.GetProfileStatusByProject:input_type -> minder.v1.GetProfileStatusByProjectRequest + 96, // 244: minder.v1.ProfileService.ListRuleTypes:input_type -> minder.v1.ListRuleTypesRequest + 98, // 245: minder.v1.ProfileService.GetRuleTypeByName:input_type -> minder.v1.GetRuleTypeByNameRequest + 100, // 246: minder.v1.ProfileService.GetRuleTypeById:input_type -> minder.v1.GetRuleTypeByIdRequest + 102, // 247: minder.v1.ProfileService.CreateRuleType:input_type -> minder.v1.CreateRuleTypeRequest + 104, // 248: minder.v1.ProfileService.UpdateRuleType:input_type -> minder.v1.UpdateRuleTypeRequest + 106, // 249: minder.v1.ProfileService.DeleteRuleType:input_type -> minder.v1.DeleteRuleTypeRequest + 108, // 250: minder.v1.EvalResultsService.ListEvaluationResults:input_type -> minder.v1.ListEvaluationResultsRequest + 170, // 251: minder.v1.EvalResultsService.ListEvaluationHistory:input_type -> minder.v1.ListEvaluationHistoryRequest + 133, // 252: minder.v1.PermissionsService.ListRoles:input_type -> minder.v1.ListRolesRequest + 135, // 253: minder.v1.PermissionsService.ListRoleAssignments:input_type -> minder.v1.ListRoleAssignmentsRequest + 137, // 254: minder.v1.PermissionsService.AssignRole:input_type -> minder.v1.AssignRoleRequest + 139, // 255: minder.v1.PermissionsService.UpdateRole:input_type -> minder.v1.UpdateRoleRequest + 141, // 256: minder.v1.PermissionsService.RemoveRole:input_type -> minder.v1.RemoveRoleRequest + 118, // 257: minder.v1.ProjectsService.ListProjects:input_type -> minder.v1.ListProjectsRequest + 120, // 258: minder.v1.ProjectsService.CreateProject:input_type -> minder.v1.CreateProjectRequest + 129, // 259: minder.v1.ProjectsService.ListChildProjects:input_type -> minder.v1.ListChildProjectsRequest + 122, // 260: minder.v1.ProjectsService.DeleteProject:input_type -> minder.v1.DeleteProjectRequest + 124, // 261: minder.v1.ProjectsService.UpdateProject:input_type -> minder.v1.UpdateProjectRequest + 127, // 262: minder.v1.ProjectsService.PatchProject:input_type -> minder.v1.PatchProjectRequest + 131, // 263: minder.v1.ProjectsService.CreateEntityReconciliationTask:input_type -> minder.v1.CreateEntityReconciliationTaskRequest + 164, // 264: minder.v1.ProvidersService.PatchProvider:input_type -> minder.v1.PatchProviderRequest + 150, // 265: minder.v1.ProvidersService.GetProvider:input_type -> minder.v1.GetProviderRequest + 152, // 266: minder.v1.ProvidersService.ListProviders:input_type -> minder.v1.ListProvidersRequest + 154, // 267: minder.v1.ProvidersService.CreateProvider:input_type -> minder.v1.CreateProviderRequest + 156, // 268: minder.v1.ProvidersService.DeleteProvider:input_type -> minder.v1.DeleteProviderRequest + 158, // 269: minder.v1.ProvidersService.DeleteProviderByID:input_type -> minder.v1.DeleteProviderByIDRequest + 160, // 270: minder.v1.ProvidersService.GetUnclaimedProviders:input_type -> minder.v1.GetUnclaimedProvidersRequest + 162, // 271: minder.v1.ProvidersService.ListProviderClasses:input_type -> minder.v1.ListProviderClassesRequest + 51, // 272: minder.v1.ProvidersService.ReconcileEntityRegistration:input_type -> minder.v1.ReconcileEntityRegistrationRequest + 25, // 273: minder.v1.InviteService.GetInviteDetails:input_type -> minder.v1.GetInviteDetailsRequest + 28, // 274: minder.v1.HealthService.CheckHealth:output_type -> minder.v1.CheckHealthResponse + 13, // 275: minder.v1.ArtifactService.ListArtifacts:output_type -> minder.v1.ListArtifactsResponse + 17, // 276: minder.v1.ArtifactService.GetArtifactById:output_type -> minder.v1.GetArtifactByIdResponse + 19, // 277: minder.v1.ArtifactService.GetArtifactByName:output_type -> minder.v1.GetArtifactByNameResponse + 30, // 278: minder.v1.OAuthService.GetAuthorizationURL:output_type -> minder.v1.GetAuthorizationURLResponse + 32, // 279: minder.v1.OAuthService.StoreProviderToken:output_type -> minder.v1.StoreProviderTokenResponse + 54, // 280: minder.v1.OAuthService.VerifyProviderTokenFrom:output_type -> minder.v1.VerifyProviderTokenFromResponse + 56, // 281: minder.v1.OAuthService.VerifyProviderCredential:output_type -> minder.v1.VerifyProviderCredentialResponse + 40, // 282: minder.v1.RepositoryService.RegisterRepository:output_type -> minder.v1.RegisterRepositoryResponse + 35, // 283: minder.v1.RepositoryService.ListRemoteRepositoriesFromProvider:output_type -> minder.v1.ListRemoteRepositoriesFromProviderResponse + 50, // 284: minder.v1.RepositoryService.ListRepositories:output_type -> minder.v1.ListRepositoriesResponse + 42, // 285: minder.v1.RepositoryService.GetRepositoryById:output_type -> minder.v1.GetRepositoryByIdResponse + 46, // 286: minder.v1.RepositoryService.GetRepositoryByName:output_type -> minder.v1.GetRepositoryByNameResponse + 44, // 287: minder.v1.RepositoryService.DeleteRepositoryById:output_type -> minder.v1.DeleteRepositoryByIdResponse + 48, // 288: minder.v1.RepositoryService.DeleteRepositoryByName:output_type -> minder.v1.DeleteRepositoryByNameResponse + 59, // 289: minder.v1.UserService.CreateUser:output_type -> minder.v1.CreateUserResponse + 61, // 290: minder.v1.UserService.DeleteUser:output_type -> minder.v1.DeleteUserResponse + 65, // 291: minder.v1.UserService.GetUser:output_type -> minder.v1.GetUserResponse + 146, // 292: minder.v1.UserService.ListInvitations:output_type -> minder.v1.ListInvitationsResponse + 148, // 293: minder.v1.UserService.ResolveInvitation:output_type -> minder.v1.ResolveInvitationResponse + 67, // 294: minder.v1.ProfileService.CreateProfile:output_type -> minder.v1.CreateProfileResponse + 69, // 295: minder.v1.ProfileService.UpdateProfile:output_type -> minder.v1.UpdateProfileResponse + 71, // 296: minder.v1.ProfileService.PatchProfile:output_type -> minder.v1.PatchProfileResponse + 73, // 297: minder.v1.ProfileService.DeleteProfile:output_type -> minder.v1.DeleteProfileResponse + 75, // 298: minder.v1.ProfileService.ListProfiles:output_type -> minder.v1.ListProfilesResponse + 77, // 299: minder.v1.ProfileService.GetProfileById:output_type -> minder.v1.GetProfileByIdResponse + 83, // 300: minder.v1.ProfileService.GetProfileStatusByName:output_type -> minder.v1.GetProfileStatusByNameResponse + 85, // 301: minder.v1.ProfileService.GetProfileStatusByProject:output_type -> minder.v1.GetProfileStatusByProjectResponse + 97, // 302: minder.v1.ProfileService.ListRuleTypes:output_type -> minder.v1.ListRuleTypesResponse + 99, // 303: minder.v1.ProfileService.GetRuleTypeByName:output_type -> minder.v1.GetRuleTypeByNameResponse + 101, // 304: minder.v1.ProfileService.GetRuleTypeById:output_type -> minder.v1.GetRuleTypeByIdResponse + 103, // 305: minder.v1.ProfileService.CreateRuleType:output_type -> minder.v1.CreateRuleTypeResponse + 105, // 306: minder.v1.ProfileService.UpdateRuleType:output_type -> minder.v1.UpdateRuleTypeResponse + 107, // 307: minder.v1.ProfileService.DeleteRuleType:output_type -> minder.v1.DeleteRuleTypeResponse + 109, // 308: minder.v1.EvalResultsService.ListEvaluationResults:output_type -> minder.v1.ListEvaluationResultsResponse + 171, // 309: minder.v1.EvalResultsService.ListEvaluationHistory:output_type -> minder.v1.ListEvaluationHistoryResponse + 134, // 310: minder.v1.PermissionsService.ListRoles:output_type -> minder.v1.ListRolesResponse + 136, // 311: minder.v1.PermissionsService.ListRoleAssignments:output_type -> minder.v1.ListRoleAssignmentsResponse + 138, // 312: minder.v1.PermissionsService.AssignRole:output_type -> minder.v1.AssignRoleResponse + 140, // 313: minder.v1.PermissionsService.UpdateRole:output_type -> minder.v1.UpdateRoleResponse + 142, // 314: minder.v1.PermissionsService.RemoveRole:output_type -> minder.v1.RemoveRoleResponse + 119, // 315: minder.v1.ProjectsService.ListProjects:output_type -> minder.v1.ListProjectsResponse + 121, // 316: minder.v1.ProjectsService.CreateProject:output_type -> minder.v1.CreateProjectResponse + 130, // 317: minder.v1.ProjectsService.ListChildProjects:output_type -> minder.v1.ListChildProjectsResponse + 123, // 318: minder.v1.ProjectsService.DeleteProject:output_type -> minder.v1.DeleteProjectResponse + 125, // 319: minder.v1.ProjectsService.UpdateProject:output_type -> minder.v1.UpdateProjectResponse + 128, // 320: minder.v1.ProjectsService.PatchProject:output_type -> minder.v1.PatchProjectResponse + 132, // 321: minder.v1.ProjectsService.CreateEntityReconciliationTask:output_type -> minder.v1.CreateEntityReconciliationTaskResponse + 165, // 322: minder.v1.ProvidersService.PatchProvider:output_type -> minder.v1.PatchProviderResponse + 151, // 323: minder.v1.ProvidersService.GetProvider:output_type -> minder.v1.GetProviderResponse + 153, // 324: minder.v1.ProvidersService.ListProviders:output_type -> minder.v1.ListProvidersResponse + 155, // 325: minder.v1.ProvidersService.CreateProvider:output_type -> minder.v1.CreateProviderResponse + 157, // 326: minder.v1.ProvidersService.DeleteProvider:output_type -> minder.v1.DeleteProviderResponse + 159, // 327: minder.v1.ProvidersService.DeleteProviderByID:output_type -> minder.v1.DeleteProviderByIDResponse + 161, // 328: minder.v1.ProvidersService.GetUnclaimedProviders:output_type -> minder.v1.GetUnclaimedProvidersResponse + 163, // 329: minder.v1.ProvidersService.ListProviderClasses:output_type -> minder.v1.ListProviderClassesResponse + 52, // 330: minder.v1.ProvidersService.ReconcileEntityRegistration:output_type -> minder.v1.ReconcileEntityRegistrationResponse + 26, // 331: minder.v1.InviteService.GetInviteDetails:output_type -> minder.v1.GetInviteDetailsResponse + 274, // [274:332] is the sub-list for method output_type + 216, // [216:274] is the sub-list for method input_type + 215, // [215:216] is the sub-list for extension type_name + 213, // [213:215] is the sub-list for extension extendee + 0, // [0:213] is the sub-list for field type_name } func init() { file_minder_v1_minder_proto_init() } @@ -15381,7 +15607,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*GetInviteDetailsRequest); i { + switch v := v.(*Release); i { case 0: return &v.state case 1: @@ -15393,7 +15619,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*GetInviteDetailsResponse); i { + switch v := v.(*PipelineRun); i { case 0: return &v.state case 1: @@ -15405,7 +15631,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*CheckHealthRequest); i { + switch v := v.(*TaskRun); i { case 0: return &v.state case 1: @@ -15417,7 +15643,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*CheckHealthResponse); i { + switch v := v.(*Build); i { case 0: return &v.state case 1: @@ -15429,7 +15655,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*GetAuthorizationURLRequest); i { + switch v := v.(*GetInviteDetailsRequest); i { case 0: return &v.state case 1: @@ -15441,7 +15667,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*GetAuthorizationURLResponse); i { + switch v := v.(*GetInviteDetailsResponse); i { case 0: return &v.state case 1: @@ -15453,7 +15679,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*StoreProviderTokenRequest); i { + switch v := v.(*CheckHealthRequest); i { case 0: return &v.state case 1: @@ -15465,7 +15691,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*StoreProviderTokenResponse); i { + switch v := v.(*CheckHealthResponse); i { case 0: return &v.state case 1: @@ -15477,7 +15703,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*Project); i { + switch v := v.(*GetAuthorizationURLRequest); i { case 0: return &v.state case 1: @@ -15489,7 +15715,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*ListRemoteRepositoriesFromProviderRequest); i { + switch v := v.(*GetAuthorizationURLResponse); i { case 0: return &v.state case 1: @@ -15501,7 +15727,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*ListRemoteRepositoriesFromProviderResponse); i { + switch v := v.(*StoreProviderTokenRequest); i { case 0: return &v.state case 1: @@ -15513,7 +15739,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*UpstreamRepositoryRef); i { + switch v := v.(*StoreProviderTokenResponse); i { case 0: return &v.state case 1: @@ -15525,7 +15751,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*Repository); i { + switch v := v.(*Project); i { case 0: return &v.state case 1: @@ -15537,7 +15763,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*RegisterRepositoryRequest); i { + switch v := v.(*ListRemoteRepositoriesFromProviderRequest); i { case 0: return &v.state case 1: @@ -15549,7 +15775,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*RegisterRepoResult); i { + switch v := v.(*ListRemoteRepositoriesFromProviderResponse); i { case 0: return &v.state case 1: @@ -15561,7 +15787,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*RegisterRepositoryResponse); i { + switch v := v.(*UpstreamRepositoryRef); i { case 0: return &v.state case 1: @@ -15573,7 +15799,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*GetRepositoryByIdRequest); i { + switch v := v.(*Repository); i { case 0: return &v.state case 1: @@ -15585,7 +15811,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*GetRepositoryByIdResponse); i { + switch v := v.(*RegisterRepositoryRequest); i { case 0: return &v.state case 1: @@ -15597,7 +15823,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*DeleteRepositoryByIdRequest); i { + switch v := v.(*RegisterRepoResult); i { case 0: return &v.state case 1: @@ -15609,7 +15835,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[31].Exporter = func(v any, i int) any { - switch v := v.(*DeleteRepositoryByIdResponse); i { + switch v := v.(*RegisterRepositoryResponse); i { case 0: return &v.state case 1: @@ -15621,7 +15847,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[32].Exporter = func(v any, i int) any { - switch v := v.(*GetRepositoryByNameRequest); i { + switch v := v.(*GetRepositoryByIdRequest); i { case 0: return &v.state case 1: @@ -15633,7 +15859,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[33].Exporter = func(v any, i int) any { - switch v := v.(*GetRepositoryByNameResponse); i { + switch v := v.(*GetRepositoryByIdResponse); i { case 0: return &v.state case 1: @@ -15645,7 +15871,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[34].Exporter = func(v any, i int) any { - switch v := v.(*DeleteRepositoryByNameRequest); i { + switch v := v.(*DeleteRepositoryByIdRequest); i { case 0: return &v.state case 1: @@ -15657,7 +15883,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[35].Exporter = func(v any, i int) any { - switch v := v.(*DeleteRepositoryByNameResponse); i { + switch v := v.(*DeleteRepositoryByIdResponse); i { case 0: return &v.state case 1: @@ -15669,7 +15895,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[36].Exporter = func(v any, i int) any { - switch v := v.(*ListRepositoriesRequest); i { + switch v := v.(*GetRepositoryByNameRequest); i { case 0: return &v.state case 1: @@ -15681,7 +15907,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[37].Exporter = func(v any, i int) any { - switch v := v.(*ListRepositoriesResponse); i { + switch v := v.(*GetRepositoryByNameResponse); i { case 0: return &v.state case 1: @@ -15693,7 +15919,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[38].Exporter = func(v any, i int) any { - switch v := v.(*ReconcileEntityRegistrationRequest); i { + switch v := v.(*DeleteRepositoryByNameRequest); i { case 0: return &v.state case 1: @@ -15705,7 +15931,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[39].Exporter = func(v any, i int) any { - switch v := v.(*ReconcileEntityRegistrationResponse); i { + switch v := v.(*DeleteRepositoryByNameResponse); i { case 0: return &v.state case 1: @@ -15717,7 +15943,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[40].Exporter = func(v any, i int) any { - switch v := v.(*VerifyProviderTokenFromRequest); i { + switch v := v.(*ListRepositoriesRequest); i { case 0: return &v.state case 1: @@ -15729,7 +15955,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[41].Exporter = func(v any, i int) any { - switch v := v.(*VerifyProviderTokenFromResponse); i { + switch v := v.(*ListRepositoriesResponse); i { case 0: return &v.state case 1: @@ -15741,7 +15967,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[42].Exporter = func(v any, i int) any { - switch v := v.(*VerifyProviderCredentialRequest); i { + switch v := v.(*ReconcileEntityRegistrationRequest); i { case 0: return &v.state case 1: @@ -15753,7 +15979,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[43].Exporter = func(v any, i int) any { - switch v := v.(*VerifyProviderCredentialResponse); i { + switch v := v.(*ReconcileEntityRegistrationResponse); i { case 0: return &v.state case 1: @@ -15765,7 +15991,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[44].Exporter = func(v any, i int) any { - switch v := v.(*BranchProtection); i { + switch v := v.(*VerifyProviderTokenFromRequest); i { case 0: return &v.state case 1: @@ -15777,7 +16003,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[45].Exporter = func(v any, i int) any { - switch v := v.(*CreateUserRequest); i { + switch v := v.(*VerifyProviderTokenFromResponse); i { case 0: return &v.state case 1: @@ -15789,7 +16015,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[46].Exporter = func(v any, i int) any { - switch v := v.(*CreateUserResponse); i { + switch v := v.(*VerifyProviderCredentialRequest); i { case 0: return &v.state case 1: @@ -15801,7 +16027,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[47].Exporter = func(v any, i int) any { - switch v := v.(*DeleteUserRequest); i { + switch v := v.(*VerifyProviderCredentialResponse); i { case 0: return &v.state case 1: @@ -15813,7 +16039,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[48].Exporter = func(v any, i int) any { - switch v := v.(*DeleteUserResponse); i { + switch v := v.(*BranchProtection); i { case 0: return &v.state case 1: @@ -15825,7 +16051,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[49].Exporter = func(v any, i int) any { - switch v := v.(*UserRecord); i { + switch v := v.(*CreateUserRequest); i { case 0: return &v.state case 1: @@ -15837,7 +16063,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[50].Exporter = func(v any, i int) any { - switch v := v.(*ProjectRole); i { + switch v := v.(*CreateUserResponse); i { case 0: return &v.state case 1: @@ -15849,7 +16075,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[51].Exporter = func(v any, i int) any { - switch v := v.(*GetUserRequest); i { + switch v := v.(*DeleteUserRequest); i { case 0: return &v.state case 1: @@ -15861,7 +16087,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[52].Exporter = func(v any, i int) any { - switch v := v.(*GetUserResponse); i { + switch v := v.(*DeleteUserResponse); i { case 0: return &v.state case 1: @@ -15873,7 +16099,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[53].Exporter = func(v any, i int) any { - switch v := v.(*CreateProfileRequest); i { + switch v := v.(*UserRecord); i { case 0: return &v.state case 1: @@ -15885,7 +16111,7 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[54].Exporter = func(v any, i int) any { - switch v := v.(*CreateProfileResponse); i { + switch v := v.(*ProjectRole); i { case 0: return &v.state case 1: @@ -15897,6 +16123,54 @@ func file_minder_v1_minder_proto_init() { } } file_minder_v1_minder_proto_msgTypes[55].Exporter = func(v any, i int) any { + switch v := v.(*GetUserRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_minder_v1_minder_proto_msgTypes[56].Exporter = func(v any, i int) any { + switch v := v.(*GetUserResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_minder_v1_minder_proto_msgTypes[57].Exporter = func(v any, i int) any { + switch v := v.(*CreateProfileRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_minder_v1_minder_proto_msgTypes[58].Exporter = func(v any, i int) any { + switch v := v.(*CreateProfileResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_minder_v1_minder_proto_msgTypes[59].Exporter = func(v any, i int) any { switch v := v.(*UpdateProfileRequest); i { case 0: return &v.state @@ -15908,7 +16182,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[56].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[60].Exporter = func(v any, i int) any { switch v := v.(*UpdateProfileResponse); i { case 0: return &v.state @@ -15920,7 +16194,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[57].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[61].Exporter = func(v any, i int) any { switch v := v.(*PatchProfileRequest); i { case 0: return &v.state @@ -15932,7 +16206,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[58].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[62].Exporter = func(v any, i int) any { switch v := v.(*PatchProfileResponse); i { case 0: return &v.state @@ -15944,7 +16218,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[59].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[63].Exporter = func(v any, i int) any { switch v := v.(*DeleteProfileRequest); i { case 0: return &v.state @@ -15956,7 +16230,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[60].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[64].Exporter = func(v any, i int) any { switch v := v.(*DeleteProfileResponse); i { case 0: return &v.state @@ -15968,7 +16242,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[61].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[65].Exporter = func(v any, i int) any { switch v := v.(*ListProfilesRequest); i { case 0: return &v.state @@ -15980,7 +16254,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[62].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[66].Exporter = func(v any, i int) any { switch v := v.(*ListProfilesResponse); i { case 0: return &v.state @@ -15992,7 +16266,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[63].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[67].Exporter = func(v any, i int) any { switch v := v.(*GetProfileByIdRequest); i { case 0: return &v.state @@ -16004,7 +16278,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[64].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[68].Exporter = func(v any, i int) any { switch v := v.(*GetProfileByIdResponse); i { case 0: return &v.state @@ -16016,7 +16290,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[65].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[69].Exporter = func(v any, i int) any { switch v := v.(*ProfileStatus); i { case 0: return &v.state @@ -16028,7 +16302,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[66].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[70].Exporter = func(v any, i int) any { switch v := v.(*EvalResultAlert); i { case 0: return &v.state @@ -16040,7 +16314,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[67].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[71].Exporter = func(v any, i int) any { switch v := v.(*RuleEvaluationStatus); i { case 0: return &v.state @@ -16052,7 +16326,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[68].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[72].Exporter = func(v any, i int) any { switch v := v.(*EntityTypedId); i { case 0: return &v.state @@ -16064,7 +16338,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[69].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[73].Exporter = func(v any, i int) any { switch v := v.(*GetProfileStatusByNameRequest); i { case 0: return &v.state @@ -16076,7 +16350,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[70].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[74].Exporter = func(v any, i int) any { switch v := v.(*GetProfileStatusByNameResponse); i { case 0: return &v.state @@ -16088,7 +16362,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[71].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[75].Exporter = func(v any, i int) any { switch v := v.(*GetProfileStatusByProjectRequest); i { case 0: return &v.state @@ -16100,7 +16374,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[72].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[76].Exporter = func(v any, i int) any { switch v := v.(*GetProfileStatusByProjectResponse); i { case 0: return &v.state @@ -16112,7 +16386,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[73].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[77].Exporter = func(v any, i int) any { switch v := v.(*EntityAutoRegistrationConfig); i { case 0: return &v.state @@ -16124,7 +16398,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[74].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[78].Exporter = func(v any, i int) any { switch v := v.(*AutoRegistration); i { case 0: return &v.state @@ -16136,7 +16410,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[75].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[79].Exporter = func(v any, i int) any { switch v := v.(*ProviderConfig); i { case 0: return &v.state @@ -16148,7 +16422,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[76].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[80].Exporter = func(v any, i int) any { switch v := v.(*RESTProviderConfig); i { case 0: return &v.state @@ -16160,7 +16434,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[77].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[81].Exporter = func(v any, i int) any { switch v := v.(*GitHubProviderConfig); i { case 0: return &v.state @@ -16172,7 +16446,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[78].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[82].Exporter = func(v any, i int) any { switch v := v.(*GitHubAppProviderConfig); i { case 0: return &v.state @@ -16184,7 +16458,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[79].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[83].Exporter = func(v any, i int) any { switch v := v.(*DockerHubProviderConfig); i { case 0: return &v.state @@ -16196,7 +16470,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[80].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[84].Exporter = func(v any, i int) any { switch v := v.(*GHCRProviderConfig); i { case 0: return &v.state @@ -16208,7 +16482,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[81].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[85].Exporter = func(v any, i int) any { switch v := v.(*Context); i { case 0: return &v.state @@ -16220,7 +16494,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[82].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[86].Exporter = func(v any, i int) any { switch v := v.(*ContextV2); i { case 0: return &v.state @@ -16232,7 +16506,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[83].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[87].Exporter = func(v any, i int) any { switch v := v.(*ListRuleTypesRequest); i { case 0: return &v.state @@ -16244,7 +16518,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[84].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[88].Exporter = func(v any, i int) any { switch v := v.(*ListRuleTypesResponse); i { case 0: return &v.state @@ -16256,7 +16530,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[85].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[89].Exporter = func(v any, i int) any { switch v := v.(*GetRuleTypeByNameRequest); i { case 0: return &v.state @@ -16268,7 +16542,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[86].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[90].Exporter = func(v any, i int) any { switch v := v.(*GetRuleTypeByNameResponse); i { case 0: return &v.state @@ -16280,7 +16554,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[87].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[91].Exporter = func(v any, i int) any { switch v := v.(*GetRuleTypeByIdRequest); i { case 0: return &v.state @@ -16292,7 +16566,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[88].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[92].Exporter = func(v any, i int) any { switch v := v.(*GetRuleTypeByIdResponse); i { case 0: return &v.state @@ -16304,7 +16578,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[89].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[93].Exporter = func(v any, i int) any { switch v := v.(*CreateRuleTypeRequest); i { case 0: return &v.state @@ -16316,7 +16590,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[90].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[94].Exporter = func(v any, i int) any { switch v := v.(*CreateRuleTypeResponse); i { case 0: return &v.state @@ -16328,7 +16602,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[91].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[95].Exporter = func(v any, i int) any { switch v := v.(*UpdateRuleTypeRequest); i { case 0: return &v.state @@ -16340,7 +16614,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[92].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[96].Exporter = func(v any, i int) any { switch v := v.(*UpdateRuleTypeResponse); i { case 0: return &v.state @@ -16352,7 +16626,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[93].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[97].Exporter = func(v any, i int) any { switch v := v.(*DeleteRuleTypeRequest); i { case 0: return &v.state @@ -16364,7 +16638,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[94].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[98].Exporter = func(v any, i int) any { switch v := v.(*DeleteRuleTypeResponse); i { case 0: return &v.state @@ -16376,7 +16650,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[95].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[99].Exporter = func(v any, i int) any { switch v := v.(*ListEvaluationResultsRequest); i { case 0: return &v.state @@ -16388,7 +16662,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[96].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[100].Exporter = func(v any, i int) any { switch v := v.(*ListEvaluationResultsResponse); i { case 0: return &v.state @@ -16400,7 +16674,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[97].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[101].Exporter = func(v any, i int) any { switch v := v.(*RestType); i { case 0: return &v.state @@ -16412,7 +16686,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[98].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[102].Exporter = func(v any, i int) any { switch v := v.(*BuiltinType); i { case 0: return &v.state @@ -16424,7 +16698,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[99].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[103].Exporter = func(v any, i int) any { switch v := v.(*ArtifactType); i { case 0: return &v.state @@ -16436,7 +16710,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[100].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[104].Exporter = func(v any, i int) any { switch v := v.(*GitType); i { case 0: return &v.state @@ -16448,7 +16722,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[101].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[105].Exporter = func(v any, i int) any { switch v := v.(*DiffType); i { case 0: return &v.state @@ -16460,7 +16734,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[102].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[106].Exporter = func(v any, i int) any { switch v := v.(*Severity); i { case 0: return &v.state @@ -16472,7 +16746,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[103].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[107].Exporter = func(v any, i int) any { switch v := v.(*RuleType); i { case 0: return &v.state @@ -16484,7 +16758,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[104].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[108].Exporter = func(v any, i int) any { switch v := v.(*Profile); i { case 0: return &v.state @@ -16496,7 +16770,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[105].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[109].Exporter = func(v any, i int) any { switch v := v.(*ListProjectsRequest); i { case 0: return &v.state @@ -16508,7 +16782,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[106].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[110].Exporter = func(v any, i int) any { switch v := v.(*ListProjectsResponse); i { case 0: return &v.state @@ -16520,7 +16794,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[107].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[111].Exporter = func(v any, i int) any { switch v := v.(*CreateProjectRequest); i { case 0: return &v.state @@ -16532,7 +16806,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[108].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[112].Exporter = func(v any, i int) any { switch v := v.(*CreateProjectResponse); i { case 0: return &v.state @@ -16544,7 +16818,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[109].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[113].Exporter = func(v any, i int) any { switch v := v.(*DeleteProjectRequest); i { case 0: return &v.state @@ -16556,7 +16830,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[110].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[114].Exporter = func(v any, i int) any { switch v := v.(*DeleteProjectResponse); i { case 0: return &v.state @@ -16568,7 +16842,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[111].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[115].Exporter = func(v any, i int) any { switch v := v.(*UpdateProjectRequest); i { case 0: return &v.state @@ -16580,7 +16854,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[112].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[116].Exporter = func(v any, i int) any { switch v := v.(*UpdateProjectResponse); i { case 0: return &v.state @@ -16592,7 +16866,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[113].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[117].Exporter = func(v any, i int) any { switch v := v.(*ProjectPatch); i { case 0: return &v.state @@ -16604,7 +16878,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[114].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[118].Exporter = func(v any, i int) any { switch v := v.(*PatchProjectRequest); i { case 0: return &v.state @@ -16616,7 +16890,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[115].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[119].Exporter = func(v any, i int) any { switch v := v.(*PatchProjectResponse); i { case 0: return &v.state @@ -16628,7 +16902,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[116].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[120].Exporter = func(v any, i int) any { switch v := v.(*ListChildProjectsRequest); i { case 0: return &v.state @@ -16640,7 +16914,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[117].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[121].Exporter = func(v any, i int) any { switch v := v.(*ListChildProjectsResponse); i { case 0: return &v.state @@ -16652,7 +16926,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[118].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[122].Exporter = func(v any, i int) any { switch v := v.(*CreateEntityReconciliationTaskRequest); i { case 0: return &v.state @@ -16664,7 +16938,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[119].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[123].Exporter = func(v any, i int) any { switch v := v.(*CreateEntityReconciliationTaskResponse); i { case 0: return &v.state @@ -16676,7 +16950,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[120].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[124].Exporter = func(v any, i int) any { switch v := v.(*ListRolesRequest); i { case 0: return &v.state @@ -16688,7 +16962,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[121].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[125].Exporter = func(v any, i int) any { switch v := v.(*ListRolesResponse); i { case 0: return &v.state @@ -16700,7 +16974,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[122].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[126].Exporter = func(v any, i int) any { switch v := v.(*ListRoleAssignmentsRequest); i { case 0: return &v.state @@ -16712,7 +16986,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[123].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[127].Exporter = func(v any, i int) any { switch v := v.(*ListRoleAssignmentsResponse); i { case 0: return &v.state @@ -16724,7 +16998,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[124].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[128].Exporter = func(v any, i int) any { switch v := v.(*AssignRoleRequest); i { case 0: return &v.state @@ -16736,7 +17010,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[125].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[129].Exporter = func(v any, i int) any { switch v := v.(*AssignRoleResponse); i { case 0: return &v.state @@ -16748,7 +17022,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[126].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[130].Exporter = func(v any, i int) any { switch v := v.(*UpdateRoleRequest); i { case 0: return &v.state @@ -16760,7 +17034,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[127].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[131].Exporter = func(v any, i int) any { switch v := v.(*UpdateRoleResponse); i { case 0: return &v.state @@ -16772,7 +17046,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[128].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[132].Exporter = func(v any, i int) any { switch v := v.(*RemoveRoleRequest); i { case 0: return &v.state @@ -16784,7 +17058,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[129].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[133].Exporter = func(v any, i int) any { switch v := v.(*RemoveRoleResponse); i { case 0: return &v.state @@ -16796,7 +17070,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[130].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[134].Exporter = func(v any, i int) any { switch v := v.(*Role); i { case 0: return &v.state @@ -16808,7 +17082,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[131].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[135].Exporter = func(v any, i int) any { switch v := v.(*RoleAssignment); i { case 0: return &v.state @@ -16820,7 +17094,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[132].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[136].Exporter = func(v any, i int) any { switch v := v.(*ListInvitationsRequest); i { case 0: return &v.state @@ -16832,7 +17106,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[133].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[137].Exporter = func(v any, i int) any { switch v := v.(*ListInvitationsResponse); i { case 0: return &v.state @@ -16844,7 +17118,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[134].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[138].Exporter = func(v any, i int) any { switch v := v.(*ResolveInvitationRequest); i { case 0: return &v.state @@ -16856,7 +17130,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[135].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[139].Exporter = func(v any, i int) any { switch v := v.(*ResolveInvitationResponse); i { case 0: return &v.state @@ -16868,7 +17142,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[136].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[140].Exporter = func(v any, i int) any { switch v := v.(*Invitation); i { case 0: return &v.state @@ -16880,7 +17154,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[137].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[141].Exporter = func(v any, i int) any { switch v := v.(*GetProviderRequest); i { case 0: return &v.state @@ -16892,7 +17166,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[138].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[142].Exporter = func(v any, i int) any { switch v := v.(*GetProviderResponse); i { case 0: return &v.state @@ -16904,7 +17178,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[139].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[143].Exporter = func(v any, i int) any { switch v := v.(*ListProvidersRequest); i { case 0: return &v.state @@ -16916,7 +17190,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[140].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[144].Exporter = func(v any, i int) any { switch v := v.(*ListProvidersResponse); i { case 0: return &v.state @@ -16928,7 +17202,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[141].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[145].Exporter = func(v any, i int) any { switch v := v.(*CreateProviderRequest); i { case 0: return &v.state @@ -16940,7 +17214,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[142].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[146].Exporter = func(v any, i int) any { switch v := v.(*CreateProviderResponse); i { case 0: return &v.state @@ -16952,7 +17226,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[143].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[147].Exporter = func(v any, i int) any { switch v := v.(*DeleteProviderRequest); i { case 0: return &v.state @@ -16964,7 +17238,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[144].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[148].Exporter = func(v any, i int) any { switch v := v.(*DeleteProviderResponse); i { case 0: return &v.state @@ -16976,7 +17250,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[145].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[149].Exporter = func(v any, i int) any { switch v := v.(*DeleteProviderByIDRequest); i { case 0: return &v.state @@ -16988,7 +17262,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[146].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[150].Exporter = func(v any, i int) any { switch v := v.(*DeleteProviderByIDResponse); i { case 0: return &v.state @@ -17000,7 +17274,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[147].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[151].Exporter = func(v any, i int) any { switch v := v.(*GetUnclaimedProvidersRequest); i { case 0: return &v.state @@ -17012,7 +17286,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[148].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[152].Exporter = func(v any, i int) any { switch v := v.(*GetUnclaimedProvidersResponse); i { case 0: return &v.state @@ -17024,7 +17298,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[149].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[153].Exporter = func(v any, i int) any { switch v := v.(*ListProviderClassesRequest); i { case 0: return &v.state @@ -17036,7 +17310,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[150].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[154].Exporter = func(v any, i int) any { switch v := v.(*ListProviderClassesResponse); i { case 0: return &v.state @@ -17048,7 +17322,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[151].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[155].Exporter = func(v any, i int) any { switch v := v.(*PatchProviderRequest); i { case 0: return &v.state @@ -17060,7 +17334,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[152].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[156].Exporter = func(v any, i int) any { switch v := v.(*PatchProviderResponse); i { case 0: return &v.state @@ -17072,7 +17346,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[153].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[157].Exporter = func(v any, i int) any { switch v := v.(*AuthorizationParams); i { case 0: return &v.state @@ -17084,7 +17358,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[154].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[158].Exporter = func(v any, i int) any { switch v := v.(*ProviderParameter); i { case 0: return &v.state @@ -17096,7 +17370,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[155].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[159].Exporter = func(v any, i int) any { switch v := v.(*GitHubAppParams); i { case 0: return &v.state @@ -17108,7 +17382,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[156].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[160].Exporter = func(v any, i int) any { switch v := v.(*Provider); i { case 0: return &v.state @@ -17120,7 +17394,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[157].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[161].Exporter = func(v any, i int) any { switch v := v.(*ListEvaluationHistoryRequest); i { case 0: return &v.state @@ -17132,7 +17406,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[158].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[162].Exporter = func(v any, i int) any { switch v := v.(*ListEvaluationHistoryResponse); i { case 0: return &v.state @@ -17144,7 +17418,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[159].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[163].Exporter = func(v any, i int) any { switch v := v.(*EvaluationHistory); i { case 0: return &v.state @@ -17156,7 +17430,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[160].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[164].Exporter = func(v any, i int) any { switch v := v.(*EvaluationHistoryEntity); i { case 0: return &v.state @@ -17168,7 +17442,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[161].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[165].Exporter = func(v any, i int) any { switch v := v.(*EvaluationHistoryRule); i { case 0: return &v.state @@ -17180,7 +17454,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[162].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[166].Exporter = func(v any, i int) any { switch v := v.(*EvaluationHistoryStatus); i { case 0: return &v.state @@ -17192,7 +17466,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[163].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[167].Exporter = func(v any, i int) any { switch v := v.(*EvaluationHistoryRemediation); i { case 0: return &v.state @@ -17204,7 +17478,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[164].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[168].Exporter = func(v any, i int) any { switch v := v.(*EvaluationHistoryAlert); i { case 0: return &v.state @@ -17216,7 +17490,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[165].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[169].Exporter = func(v any, i int) any { switch v := v.(*RegisterRepoResult_Status); i { case 0: return &v.state @@ -17228,7 +17502,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[168].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[172].Exporter = func(v any, i int) any { switch v := v.(*ListEvaluationResultsResponse_EntityProfileEvaluationResults); i { case 0: return &v.state @@ -17240,7 +17514,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[169].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[173].Exporter = func(v any, i int) any { switch v := v.(*ListEvaluationResultsResponse_EntityEvaluationResults); i { case 0: return &v.state @@ -17252,7 +17526,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[170].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[174].Exporter = func(v any, i int) any { switch v := v.(*RestType_Fallback); i { case 0: return &v.state @@ -17264,7 +17538,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[171].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[175].Exporter = func(v any, i int) any { switch v := v.(*DiffType_Ecosystem); i { case 0: return &v.state @@ -17276,7 +17550,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[172].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[176].Exporter = func(v any, i int) any { switch v := v.(*RuleType_Definition); i { case 0: return &v.state @@ -17288,7 +17562,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[173].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[177].Exporter = func(v any, i int) any { switch v := v.(*RuleType_Definition_Ingest); i { case 0: return &v.state @@ -17300,7 +17574,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[174].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[178].Exporter = func(v any, i int) any { switch v := v.(*RuleType_Definition_Eval); i { case 0: return &v.state @@ -17312,7 +17586,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[175].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[179].Exporter = func(v any, i int) any { switch v := v.(*RuleType_Definition_Remediate); i { case 0: return &v.state @@ -17324,7 +17598,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[176].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[180].Exporter = func(v any, i int) any { switch v := v.(*RuleType_Definition_Alert); i { case 0: return &v.state @@ -17336,7 +17610,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[177].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[181].Exporter = func(v any, i int) any { switch v := v.(*RuleType_Definition_Eval_JQComparison); i { case 0: return &v.state @@ -17348,7 +17622,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[178].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[182].Exporter = func(v any, i int) any { switch v := v.(*RuleType_Definition_Eval_Rego); i { case 0: return &v.state @@ -17360,7 +17634,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[179].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[183].Exporter = func(v any, i int) any { switch v := v.(*RuleType_Definition_Eval_Vulncheck); i { case 0: return &v.state @@ -17372,7 +17646,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[180].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[184].Exporter = func(v any, i int) any { switch v := v.(*RuleType_Definition_Eval_Trusty); i { case 0: return &v.state @@ -17384,7 +17658,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[181].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[185].Exporter = func(v any, i int) any { switch v := v.(*RuleType_Definition_Eval_Homoglyphs); i { case 0: return &v.state @@ -17396,7 +17670,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[182].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[186].Exporter = func(v any, i int) any { switch v := v.(*RuleType_Definition_Eval_JQComparison_Operator); i { case 0: return &v.state @@ -17408,7 +17682,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[183].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[187].Exporter = func(v any, i int) any { switch v := v.(*RuleType_Definition_Remediate_GhBranchProtectionType); i { case 0: return &v.state @@ -17420,7 +17694,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[184].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[188].Exporter = func(v any, i int) any { switch v := v.(*RuleType_Definition_Remediate_PullRequestRemediation); i { case 0: return &v.state @@ -17432,7 +17706,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[185].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[189].Exporter = func(v any, i int) any { switch v := v.(*RuleType_Definition_Remediate_PullRequestRemediation_Content); i { case 0: return &v.state @@ -17444,7 +17718,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[186].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[190].Exporter = func(v any, i int) any { switch v := v.(*RuleType_Definition_Remediate_PullRequestRemediation_ActionsReplaceTagsWithSha); i { case 0: return &v.state @@ -17456,7 +17730,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[187].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[191].Exporter = func(v any, i int) any { switch v := v.(*RuleType_Definition_Alert_AlertTypeSA); i { case 0: return &v.state @@ -17468,7 +17742,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[188].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[192].Exporter = func(v any, i int) any { switch v := v.(*Profile_Rule); i { case 0: return &v.state @@ -17480,7 +17754,7 @@ func file_minder_v1_minder_proto_init() { return nil } } - file_minder_v1_minder_proto_msgTypes[189].Exporter = func(v any, i int) any { + file_minder_v1_minder_proto_msgTypes[193].Exporter = func(v any, i int) any { switch v := v.(*Profile_Selector); i { case 0: return &v.state @@ -17493,47 +17767,47 @@ func file_minder_v1_minder_proto_init() { } } } - file_minder_v1_minder_proto_msgTypes[16].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[18].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[24].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[52].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[67].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[73].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[75].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[76].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[20].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[22].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[28].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[56].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[71].OneofWrappers = []any{} file_minder_v1_minder_proto_msgTypes[77].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[78].OneofWrappers = []any{} file_minder_v1_minder_proto_msgTypes[79].OneofWrappers = []any{} file_minder_v1_minder_proto_msgTypes[80].OneofWrappers = []any{} file_minder_v1_minder_proto_msgTypes[81].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[95].OneofWrappers = []any{ + file_minder_v1_minder_proto_msgTypes[82].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[83].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[84].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[85].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[99].OneofWrappers = []any{ (*ListEvaluationResultsRequest_Profile)(nil), (*ListEvaluationResultsRequest_LabelFilter)(nil), } - file_minder_v1_minder_proto_msgTypes[97].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[103].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[104].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[113].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[131].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[154].OneofWrappers = []any{ + file_minder_v1_minder_proto_msgTypes[101].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[107].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[108].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[117].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[135].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[158].OneofWrappers = []any{ (*ProviderParameter_GithubApp)(nil), } - file_minder_v1_minder_proto_msgTypes[165].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[172].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[173].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[174].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[175].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[169].OneofWrappers = []any{} file_minder_v1_minder_proto_msgTypes[176].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[177].OneofWrappers = []any{} file_minder_v1_minder_proto_msgTypes[178].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[184].OneofWrappers = []any{} - file_minder_v1_minder_proto_msgTypes[185].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[179].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[180].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[182].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[188].OneofWrappers = []any{} + file_minder_v1_minder_proto_msgTypes[189].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_minder_v1_minder_proto_rawDesc, NumEnums: 9, - NumMessages: 190, + NumMessages: 194, NumExtensions: 2, NumServices: 11, }, diff --git a/proto/minder/v1/minder.proto b/proto/minder/v1/minder.proto index 9a3271f41a..efa8b0dcd4 100644 --- a/proto/minder/v1/minder.proto +++ b/proto/minder/v1/minder.proto @@ -250,6 +250,12 @@ message PullRequest { Context context = 8; } +// Stubs for the SDLC entities +message Release {} +message PipelineRun {} +message TaskRun {} +message Build {} + service OAuthService { rpc GetAuthorizationURL (GetAuthorizationURLRequest) returns (GetAuthorizationURLResponse) { option (google.api.http) = { @@ -1410,6 +1416,10 @@ enum Entity { ENTITY_BUILD_ENVIRONMENTS = 2; ENTITY_ARTIFACTS = 3; ENTITY_PULL_REQUESTS = 4; + ENTITY_RELEASE = 5; + ENTITY_PIPELINE_RUN = 6; + ENTITY_TASK_RUN = 7; + ENTITY_BUILD = 8; } message EntityAutoRegistrationConfig { @@ -1981,6 +1991,10 @@ message Profile { repeated Rule build_environment = 5; repeated Rule artifact = 6; repeated Rule pull_request = 7; + repeated Rule release = 15; + repeated Rule pipeline_run = 16; + repeated Rule task_run = 17; + repeated Rule build = 18; message Selector { // id is optional and use for updates to match upserts as well as read operations. It is ignored for creates. From 6a66082de67be3db309d33baacd47bc700caf603 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Fri, 12 Jul 2024 19:24:31 +0200 Subject: [PATCH 04/16] Print provider config in provider get, if any (#3881) --- cmd/cli/app/provider/provider_get.go | 49 ++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/cmd/cli/app/provider/provider_get.go b/cmd/cli/app/provider/provider_get.go index c36b074120..692b168864 100644 --- a/cmd/cli/app/provider/provider_get.go +++ b/cmd/cli/app/provider/provider_get.go @@ -18,6 +18,7 @@ package provider import ( "context" "fmt" + "reflect" "strings" "github.com/spf13/cobra" @@ -97,6 +98,10 @@ func GetProviderCommand(ctx context.Context, cmd *cobra.Command, _ []string, con t.AddRow("Version", p.GetVersion()) t.AddRow("Implements", strings.Join(impls, ", ")) t.AddRow("Auth Flows", strings.Join(afs, ", ")) + config := configAsKeyValues(p) + if config != "" { + t.AddRow("Config", config) + } t.Render() return nil @@ -106,3 +111,47 @@ func GetProviderCommand(ctx context.Context, cmd *cobra.Command, _ []string, con return nil } + +// mapToKvPairs converts a map to a list of key-value pairs +// TODO(jakub): This works OK now that we have a low-number of config options +// if we have more elaborate configs, we might want to just dump the config as YAML, but for the usual +// case now (1 option..) that would not be very readable +func mapToKvPairs(m map[string]any, parentKey string, result *[]string, nesting int) { + // just in case + if nesting > 10 { + return + } + + for key, value := range m { + fullKey := key + if parentKey != "" { + fullKey = parentKey + "." + key + } + + v := reflect.ValueOf(value) + switch v.Kind() { // nolint:exhaustive + case reflect.Map: + nestedMap := value.(map[string]any) + mapToKvPairs(nestedMap, fullKey, result, nesting+1) + default: + // this should work for most types, if not, we'll likely just switch to printing YAML + *result = append(*result, fmt.Sprintf("%s=%v", fullKey, value)) + } + } +} + +func configAsKeyValues(p *minderv1.Provider) string { + if p == nil { + return "" + } + + conf := p.GetConfig().AsMap() + if conf == nil { + return "" + } + + var result []string + mapToKvPairs(conf, "", &result, 0) + + return strings.Join(result, "\n") +} From 6cce1599f073c6d058274d8e58cf02ab9e203904 Mon Sep 17 00:00:00 2001 From: Don Browne Date: Fri, 12 Jul 2024 19:18:53 +0100 Subject: [PATCH 05/16] Track evaluation times in executor (#3882) --- internal/engine/executor.go | 7 +++++++ internal/engine/metrics.go | 29 +++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/internal/engine/executor.go b/internal/engine/executor.go index 17812b26b2..ef3f26f3a6 100644 --- a/internal/engine/executor.go +++ b/internal/engine/executor.go @@ -17,6 +17,7 @@ package engine import ( "context" "fmt" + "time" "github.com/google/uuid" "github.com/open-feature/go-sdk/openfeature" @@ -82,6 +83,10 @@ func (e *executor) EvalEntityEvent(ctx context.Context, inf *entities.EntityInfo Str("project_id", inf.ProjectID.String()) logger.Msg("entity evaluation - started") + // track the time taken to evaluate each entity + entityStartTime := time.Now() + defer e.metrics.TimeProfileEvaluation(ctx, entityStartTime) + provider, err := e.providerManager.InstantiateFromID(ctx, inf.ProviderID) if err != nil { return fmt.Errorf("could not instantiate provider: %w", err) @@ -104,6 +109,8 @@ func (e *executor) EvalEntityEvent(ctx context.Context, inf *entities.EntityInfo err = e.forProjectsInHierarchy( ctx, inf, func(ctx context.Context, profile *pb.Profile, hierarchy []uuid.UUID) error { + profileStartTime := time.Now() + defer e.metrics.TimeProfileEvaluation(ctx, profileStartTime) // Get only these rules that are relevant for this entity type relevant, err := profiles.GetRulesForEntity(profile, inf.Type) if err != nil { diff --git a/internal/engine/metrics.go b/internal/engine/metrics.go index 085468798f..47e8e30b71 100644 --- a/internal/engine/metrics.go +++ b/internal/engine/metrics.go @@ -17,6 +17,7 @@ package engine import ( "context" "fmt" + "time" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/metric" @@ -30,6 +31,8 @@ type ExecutorMetrics struct { evalCounter metric.Int64Counter remediationCounter metric.Int64Counter alertCounter metric.Int64Counter + entityDuration metric.Int64Histogram + profileDuration metric.Int64Histogram } // NewExecutorMetrics instantiates the ExecutorMetrics struct. @@ -56,10 +59,26 @@ func NewExecutorMetrics(meterFactory meters.MeterFactory) (*ExecutorMetrics, err return nil, fmt.Errorf("failed to create alert counter: %w", err) } + profileDuration, err := meter.Int64Histogram("eval.entity-eval-duration", + metric.WithDescription("Time taken to evaluate all profiles against an entity"), + metric.WithUnit("milliseconds")) + if err != nil { + return nil, fmt.Errorf("failed to create profile histogram: %w", err) + } + + entityDuration, err := meter.Int64Histogram("eval.profile-eval-duration", + metric.WithDescription("Time taken to evaluate a single profile against an entity"), + metric.WithUnit("milliseconds")) + if err != nil { + return nil, fmt.Errorf("failed to create entity histogram: %w", err) + } + return &ExecutorMetrics{ evalCounter: evalCounter, remediationCounter: remediationCounter, alertCounter: alertCounter, + profileDuration: profileDuration, + entityDuration: entityDuration, }, nil } @@ -94,3 +113,13 @@ func (e *ExecutorMetrics) CountAlertStatus( attribute.String("status", string(status)), )) } + +// TimeEntityEvaluation records how long it took to evaluate a profile. +func (e *ExecutorMetrics) TimeEntityEvaluation(ctx context.Context, startTime time.Time) { + e.entityDuration.Record(ctx, time.Since(startTime).Milliseconds()) +} + +// TimeProfileEvaluation records how long it took to evaluate a profile. +func (e *ExecutorMetrics) TimeProfileEvaluation(ctx context.Context, startTime time.Time) { + e.profileDuration.Record(ctx, time.Since(startTime).Milliseconds()) +} From 4a72c5ff63143235630ae2fff8bc8deff3567dcc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 13 Jul 2024 10:45:27 +0300 Subject: [PATCH 06/16] Auto-generated cli documentation update - 2024-07-12 19:24:31 (#3883) Update documentation Co-authored-by: jhrozek --- docs/docs/ref/cli/minder_profile_status_get.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/ref/cli/minder_profile_status_get.md b/docs/docs/ref/cli/minder_profile_status_get.md index d02f54c5fe..18d3cb3f2b 100644 --- a/docs/docs/ref/cli/minder_profile_status_get.md +++ b/docs/docs/ref/cli/minder_profile_status_get.md @@ -17,7 +17,7 @@ minder profile status get [flags] ``` -e, --entity string Entity ID to get profile status for - -t, --entity-type string the entity type to get profile status for (one of artifact, build_environment, repository) + -t, --entity-type string the entity type to get profile status for (one of artifact, build, build_environment, pipeline_run, release, repository, task_run) -h, --help help for get ``` From 5d73bf7a82622e836b7bba9a96b9613885fca881 Mon Sep 17 00:00:00 2001 From: Radoslav Dimitrov Date: Mon, 15 Jul 2024 10:16:24 +0300 Subject: [PATCH 07/16] Fix offline token command flags not working (#3879) Signed-off-by: Radoslav Dimitrov --- cmd/cli/app/auth/offline_token/offline_get.go | 50 ++++++------ .../app/auth/offline_token/offline_revoke.go | 59 +++++++------- cmd/cli/app/auth/offline_token/offline_use.go | 78 ++++++++++--------- 3 files changed, 99 insertions(+), 88 deletions(-) diff --git a/cmd/cli/app/auth/offline_token/offline_get.go b/cmd/cli/app/auth/offline_token/offline_get.go index 363398628a..240c2daf9d 100644 --- a/cmd/cli/app/auth/offline_token/offline_get.go +++ b/cmd/cli/app/auth/offline_token/offline_get.go @@ -17,11 +17,13 @@ package offline_token import ( + "context" "fmt" "os" "github.com/spf13/cobra" "github.com/spf13/viper" + "google.golang.org/grpc" "github.com/stacklok/minder/cmd/cli/app/auth" "github.com/stacklok/minder/internal/config" @@ -40,37 +42,37 @@ Offline tokens are used to authenticate to the minder control plane without requiring the user's presence. This is useful for long-running processes that need to authenticate to the control plane.`, - RunE: func(cmd *cobra.Command, _ []string) error { - ctx, cancel := cli.GetAppContext(cmd.Context(), viper.GetViper()) - defer cancel() + RunE: cli.GRPCClientWrapRunE(offlineGetCommand), +} - clientConfig, err := config.ReadConfigFromViper[clientconfig.Config](viper.GetViper()) - if err != nil { - return fmt.Errorf("error reading config: %w", err) - } +// offlineGetCommand is the offline-token get subcommand +func offlineGetCommand(ctx context.Context, cmd *cobra.Command, _ []string, _ *grpc.ClientConn) error { + clientConfig, err := config.ReadConfigFromViper[clientconfig.Config](viper.GetViper()) + if err != nil { + return fmt.Errorf("error reading config: %w", err) + } - f := viper.GetString("file") - skipBrowser := viper.GetBool("offline.get.skip-browser") + f := viper.GetString("file") + skipBrowser := viper.GetBool("offline.get.skip-browser") - // No longer print usage on returned error, since we've parsed our inputs - // See https://github.com/spf13/cobra/issues/340#issuecomment-374617413 - cmd.SilenceUsage = true + // No longer print usage on returned error, since we've parsed our inputs + // See https://github.com/spf13/cobra/issues/340#issuecomment-374617413 + cmd.SilenceUsage = true - // wait for the token to be received - token, err := auth.Login(ctx, cmd, clientConfig, []string{"offline_access"}, skipBrowser) - if err != nil { - return err - } + // wait for the token to be received + token, err := auth.Login(ctx, cmd, clientConfig, []string{"offline_access"}, skipBrowser) + if err != nil { + return err + } - // write the token to the file - if err := os.WriteFile(f, []byte(token.RefreshToken), 0600); err != nil { - return fmt.Errorf("error writing offline token to file: %w", err) - } + // write the token to the file + if err := os.WriteFile(f, []byte(token.RefreshToken), 0600); err != nil { + return fmt.Errorf("error writing offline token to file: %w", err) + } - cmd.Printf("Offline token written to %s\n", f) + cmd.Printf("Offline token written to %s\n", f) - return nil - }, + return nil } func init() { diff --git a/cmd/cli/app/auth/offline_token/offline_revoke.go b/cmd/cli/app/auth/offline_token/offline_revoke.go index 1c18a501cd..754da98abf 100644 --- a/cmd/cli/app/auth/offline_token/offline_revoke.go +++ b/cmd/cli/app/auth/offline_token/offline_revoke.go @@ -17,16 +17,19 @@ package offline_token import ( + "context" "fmt" "os" "path/filepath" "github.com/spf13/cobra" "github.com/spf13/viper" + "google.golang.org/grpc" "github.com/stacklok/minder/internal/config" clientconfig "github.com/stacklok/minder/internal/config/client" "github.com/stacklok/minder/internal/util" + "github.com/stacklok/minder/internal/util/cli" ) // offlineTokenRevokeCmd represents the offline-token use command @@ -40,39 +43,42 @@ Offline tokens are used to authenticate to the minder control plane without requiring the user's presence. This is useful for long-running processes that need to authenticate to the control plane.`, - RunE: func(cmd *cobra.Command, _ []string) error { - clientConfig, err := config.ReadConfigFromViper[clientconfig.Config](viper.GetViper()) - if err != nil { - return fmt.Errorf("error reading config: %w", err) - } + RunE: cli.GRPCClientWrapRunE(offlineRevokeCommand), +} - f := viper.GetString("file") - tok := viper.GetString("token") - if tok == "" { - fpath := filepath.Clean(f) - tokbytes, err := os.ReadFile(fpath) - if err != nil { - return fmt.Errorf("error reading file: %w", err) - } +// offlineRevokeCommand is the offline-token revoke subcommand +func offlineRevokeCommand(_ context.Context, cmd *cobra.Command, _ []string, _ *grpc.ClientConn) error { + clientConfig, err := config.ReadConfigFromViper[clientconfig.Config](viper.GetViper()) + if err != nil { + return fmt.Errorf("error reading config: %w", err) + } - tok = string(tokbytes) + f := viper.GetString("file") + tok := viper.GetString("token") + if tok == "" { + fpath := filepath.Clean(f) + tokbytes, err := os.ReadFile(fpath) + if err != nil { + return fmt.Errorf("error reading file: %w", err) } - // No longer print usage on returned error, since we've parsed our inputs - // See https://github.com/spf13/cobra/issues/340#issuecomment-374617413 - cmd.SilenceUsage = true + tok = string(tokbytes) + } - issuerUrlStr := clientConfig.Identity.CLI.IssuerUrl - clientID := clientConfig.Identity.CLI.ClientId + // No longer print usage on returned error, since we've parsed our inputs + // See https://github.com/spf13/cobra/issues/340#issuecomment-374617413 + cmd.SilenceUsage = true - if err := util.RevokeOfflineToken(tok, issuerUrlStr, clientID); err != nil { - return fmt.Errorf("couldn't revoke token: %v", err) - } + issuerUrlStr := clientConfig.Identity.CLI.IssuerUrl + clientID := clientConfig.Identity.CLI.ClientId + + if err := util.RevokeOfflineToken(tok, issuerUrlStr, clientID); err != nil { + return fmt.Errorf("couldn't revoke token: %v", err) + } - cmd.Printf("Token revoked\n") + cmd.Printf("Token revoked\n") - return nil - }, + return nil } func init() { @@ -80,8 +86,7 @@ func init() { offlineTokenRevokeCmd.Flags().StringP("file", "f", "offline.token", "The file that contains the offline token") offlineTokenRevokeCmd.Flags().StringP("token", "t", "", - "The environment variable to use for the offline token. "+ - "Also settable through the MINDER_OFFLINE_TOKEN environment variable.") + "The offline token to revoke. Also settable through the MINDER_OFFLINE_TOKEN environment variable.") offlineTokenRevokeCmd.MarkFlagsMutuallyExclusive("file", "token") diff --git a/cmd/cli/app/auth/offline_token/offline_use.go b/cmd/cli/app/auth/offline_token/offline_use.go index b6c6e16acf..1dab2c938c 100644 --- a/cmd/cli/app/auth/offline_token/offline_use.go +++ b/cmd/cli/app/auth/offline_token/offline_use.go @@ -17,16 +17,19 @@ package offline_token import ( + "context" "fmt" "os" "path/filepath" "github.com/spf13/cobra" "github.com/spf13/viper" + "google.golang.org/grpc" "github.com/stacklok/minder/internal/config" clientconfig "github.com/stacklok/minder/internal/config/client" "github.com/stacklok/minder/internal/util" + "github.com/stacklok/minder/internal/util/cli" ) // offlineTokenUseCmd represents the offline-token use command @@ -39,51 +42,53 @@ for the minder control plane. Offline tokens are used to authenticate to the minder control plane without requiring the user's presence. This is useful for long-running processes that need to authenticate to the control plane.`, + RunE: cli.GRPCClientWrapRunE(offlineUseCommand), +} + +// offlineUseCommand is the offline-token use subcommand +func offlineUseCommand(_ context.Context, cmd *cobra.Command, _ []string, _ *grpc.ClientConn) error { + clientConfig, err := config.ReadConfigFromViper[clientconfig.Config](viper.GetViper()) + if err != nil { + return fmt.Errorf("error reading config: %w", err) + } - RunE: func(cmd *cobra.Command, _ []string) error { - clientConfig, err := config.ReadConfigFromViper[clientconfig.Config](viper.GetViper()) + f := viper.GetString("file") + tok := viper.GetString("token") + if tok == "" { + fpath := filepath.Clean(f) + tokbytes, err := os.ReadFile(fpath) if err != nil { - return fmt.Errorf("error reading config: %w", err) + return fmt.Errorf("error reading file: %w", err) } - f := viper.GetString("file") - tok := viper.GetString("token") - if tok == "" { - fpath := filepath.Clean(f) - tokbytes, err := os.ReadFile(fpath) - if err != nil { - return fmt.Errorf("error reading file: %w", err) - } - - tok = string(tokbytes) - } + tok = string(tokbytes) + } - // No longer print usage on returned error, since we've parsed our inputs - // See https://github.com/spf13/cobra/issues/340#issuecomment-374617413 - cmd.SilenceUsage = true + // No longer print usage on returned error, since we've parsed our inputs + // See https://github.com/spf13/cobra/issues/340#issuecomment-374617413 + cmd.SilenceUsage = true - issuerUrlStr := clientConfig.Identity.CLI.IssuerUrl - clientID := clientConfig.Identity.CLI.ClientId + issuerUrlStr := clientConfig.Identity.CLI.IssuerUrl + clientID := clientConfig.Identity.CLI.ClientId - creds, err := util.RefreshCredentials(tok, issuerUrlStr, clientID) - if err != nil { - return fmt.Errorf("couldn't fetch credentials: %v", err) - } + creds, err := util.RefreshCredentials(tok, issuerUrlStr, clientID) + if err != nil { + return fmt.Errorf("couldn't fetch credentials: %v", err) + } - // save credentials - filePath, err := util.SaveCredentials(util.OpenIdCredentials{ - AccessToken: creds.AccessToken, - RefreshToken: creds.RefreshToken, - AccessTokenExpiresAt: creds.AccessTokenExpiresAt, - }) - if err != nil { - cmd.PrintErrf("couldn't save credentials: %s\n", err) - } + // save credentials + filePath, err := util.SaveCredentials(util.OpenIdCredentials{ + AccessToken: creds.AccessToken, + RefreshToken: creds.RefreshToken, + AccessTokenExpiresAt: creds.AccessTokenExpiresAt, + }) + if err != nil { + cmd.PrintErrf("couldn't save credentials: %s\n", err) + } - cmd.Printf("Your access credentials have been saved to %s\n", filePath) + cmd.Printf("Your access credentials have been saved to %s\n", filePath) - return nil - }, + return nil } func init() { @@ -91,8 +96,7 @@ func init() { offlineTokenUseCmd.Flags().StringP("file", "f", "offline.token", "The file that contains the offline token") offlineTokenUseCmd.Flags().StringP("token", "t", "", - "The environment variable to use for the offline token. "+ - "Also settable through the MINDER_OFFLINE_TOKEN environment variable.") + "The offline token to use. Also settable through the MINDER_OFFLINE_TOKEN environment variable.") offlineTokenUseCmd.MarkFlagsMutuallyExclusive("file", "token") From 39e52ab097bf61aca6b863a29bddf2f6050f0636 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 10:19:27 +0300 Subject: [PATCH 08/16] Auto-generated cli documentation update - 2024-07-15 10:16:24 (#3888) Update documentation Co-authored-by: JAORMX --- docs/docs/ref/cli/minder_auth_offline-token_revoke.md | 2 +- docs/docs/ref/cli/minder_auth_offline-token_use.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/ref/cli/minder_auth_offline-token_revoke.md b/docs/docs/ref/cli/minder_auth_offline-token_revoke.md index 6ef9284f10..302bd5874e 100644 --- a/docs/docs/ref/cli/minder_auth_offline-token_revoke.md +++ b/docs/docs/ref/cli/minder_auth_offline-token_revoke.md @@ -23,7 +23,7 @@ minder auth offline-token revoke [flags] ``` -f, --file string The file that contains the offline token (default "offline.token") -h, --help help for revoke - -t, --token string The environment variable to use for the offline token. Also settable through the MINDER_OFFLINE_TOKEN environment variable. + -t, --token string The offline token to revoke. Also settable through the MINDER_OFFLINE_TOKEN environment variable. ``` ### Options inherited from parent commands diff --git a/docs/docs/ref/cli/minder_auth_offline-token_use.md b/docs/docs/ref/cli/minder_auth_offline-token_use.md index 16ee4d9368..bd02afaca8 100644 --- a/docs/docs/ref/cli/minder_auth_offline-token_use.md +++ b/docs/docs/ref/cli/minder_auth_offline-token_use.md @@ -23,7 +23,7 @@ minder auth offline-token use [flags] ``` -f, --file string The file that contains the offline token (default "offline.token") -h, --help help for use - -t, --token string The environment variable to use for the offline token. Also settable through the MINDER_OFFLINE_TOKEN environment variable. + -t, --token string The offline token to use. Also settable through the MINDER_OFFLINE_TOKEN environment variable. ``` ### Options inherited from parent commands From 091a4b7de0ff7f652d30b373bc0ca86c611115ab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 09:36:09 +0200 Subject: [PATCH 09/16] build(deps): bump github/codeql-action from 3.25.11 to 3.25.12 (#3887) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.11 to 3.25.12. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/b611370bb5703a7efb587f9d136a52ea24c5c38c...4fa2a7953630fd2f3fb380f21be14ede0169dd4f) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index b69cc6e8a1..a4b1f5d580 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -48,7 +48,7 @@ jobs: go-version-file: ./go.mod # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3 + uses: github/codeql-action/init@4fa2a7953630fd2f3fb380f21be14ede0169dd4f # v3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -60,7 +60,7 @@ jobs: # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs # queries: security-extended,security-and-quality - uses: github/codeql-action/autobuild@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3 + uses: github/codeql-action/autobuild@4fa2a7953630fd2f3fb380f21be14ede0169dd4f # v3 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -71,6 +71,6 @@ jobs: # echo "Run, Build Application using script" # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3 + uses: github/codeql-action/analyze@4fa2a7953630fd2f3fb380f21be14ede0169dd4f # v3 with: category: "/language:${{matrix.language}}" From 50434c4571b59dd6d94de5f914daa88e2a49aaab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 09:36:35 +0200 Subject: [PATCH 10/16] build(deps): bump github.com/puzpuzpuz/xsync/v3 from 3.3.1 to 3.4.0 (#3886) Bumps [github.com/puzpuzpuz/xsync/v3](https://github.com/puzpuzpuz/xsync) from 3.3.1 to 3.4.0. - [Release notes](https://github.com/puzpuzpuz/xsync/releases) - [Commits](https://github.com/puzpuzpuz/xsync/compare/v3.3.1...v3.4.0) --- updated-dependencies: - dependency-name: github.com/puzpuzpuz/xsync/v3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index bc39747fbc..3e31a97985 100644 --- a/go.mod +++ b/go.mod @@ -43,7 +43,7 @@ require ( github.com/openfga/openfga v1.5.5 github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c github.com/prometheus/client_golang v1.19.1 - github.com/puzpuzpuz/xsync/v3 v3.3.1 + github.com/puzpuzpuz/xsync/v3 v3.4.0 github.com/robfig/cron/v3 v3.0.1 github.com/rs/zerolog v1.33.0 github.com/signalfx/splunk-otel-go/instrumentation/database/sql/splunksql v1.18.0 diff --git a/go.sum b/go.sum index 805415ddec..9d9208054d 100644 --- a/go.sum +++ b/go.sum @@ -775,8 +775,8 @@ github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0leargg github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/puzpuzpuz/xsync v1.5.2 h1:yRAP4wqSOZG+/4pxJ08fPTwrfL0IzE/LKQ/cw509qGY= github.com/puzpuzpuz/xsync v1.5.2/go.mod h1:K98BYhX3k1dQ2M63t1YNVDanbwUPmBCAhNmVrrxfiGg= -github.com/puzpuzpuz/xsync/v3 v3.3.1 h1:vZPJk3OOfoaSjy3cdTX3BZxhDCUVp9SqdHnd+ilGlbQ= -github.com/puzpuzpuz/xsync/v3 v3.3.1/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA= +github.com/puzpuzpuz/xsync/v3 v3.4.0 h1:DuVBAdXuGFHv8adVXjWWZ63pJq+NRXOWVXlKDBZ+mJ4= +github.com/puzpuzpuz/xsync/v3 v3.4.0/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= From b2c6060ad2f5a961eba6d235c48ef74fac9c7110 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 09:37:06 +0200 Subject: [PATCH 11/16] build(deps): bump github.com/charmbracelet/lipgloss from 0.12.0 to 0.12.1 (#3885) build(deps): bump github.com/charmbracelet/lipgloss Bumps [github.com/charmbracelet/lipgloss](https://github.com/charmbracelet/lipgloss) from 0.12.0 to 0.12.1. - [Release notes](https://github.com/charmbracelet/lipgloss/releases) - [Changelog](https://github.com/charmbracelet/lipgloss/blob/master/.goreleaser.yml) - [Commits](https://github.com/charmbracelet/lipgloss/compare/v0.12.0...v0.12.1) --- updated-dependencies: - dependency-name: github.com/charmbracelet/lipgloss dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 3e31a97985..a6d26b36be 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/cenkalti/backoff/v4 v4.3.0 github.com/charmbracelet/bubbles v0.17.1 github.com/charmbracelet/bubbletea v0.26.6 - github.com/charmbracelet/lipgloss v0.12.0 + github.com/charmbracelet/lipgloss v0.12.1 github.com/erikgeiser/promptkit v0.9.0 github.com/evanphx/json-patch/v5 v5.9.0 github.com/fergusstrange/embedded-postgres v1.27.0 @@ -96,7 +96,7 @@ require ( github.com/atotto/clipboard v0.1.4 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/bluele/gcache v0.0.2 // indirect - github.com/charmbracelet/x/ansi v0.1.3 // indirect + github.com/charmbracelet/x/ansi v0.1.4 // indirect github.com/charmbracelet/x/input v0.1.0 // indirect github.com/charmbracelet/x/term v0.1.1 // indirect github.com/charmbracelet/x/windows v0.1.0 // indirect diff --git a/go.sum b/go.sum index 9d9208054d..15980d9d85 100644 --- a/go.sum +++ b/go.sum @@ -193,10 +193,10 @@ github.com/charmbracelet/bubbles v0.17.1 h1:0SIyjOnkrsfDo88YvPgAWvZMwXe26TP6drRv github.com/charmbracelet/bubbles v0.17.1/go.mod h1:9HxZWlkCqz2PRwsCbYl7a3KXvGzFaDHpYbSYMJ+nE3o= github.com/charmbracelet/bubbletea v0.26.6 h1:zTCWSuST+3yZYZnVSvbXwKOPRSNZceVeqpzOLN2zq1s= github.com/charmbracelet/bubbletea v0.26.6/go.mod h1:dz8CWPlfCCGLFbBlTY4N7bjLiyOGDJEnd2Muu7pOWhk= -github.com/charmbracelet/lipgloss v0.12.0 h1:k2RgmrgUjrWWu9FaMERoYK1iiPiwg+SSqGYu9t8/k4Y= -github.com/charmbracelet/lipgloss v0.12.0/go.mod h1:beLlcmkF7MWA+5UrKKIRo/VJ21xGXr7YJ9miWfdMRIU= -github.com/charmbracelet/x/ansi v0.1.3 h1:RBh/eleNWML5R524mjUF0yVRePTwqN9tPtV+DPgO5Lw= -github.com/charmbracelet/x/ansi v0.1.3/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw= +github.com/charmbracelet/lipgloss v0.12.1 h1:/gmzszl+pedQpjCOH+wFkZr/N90Snz40J/NR7A0zQcs= +github.com/charmbracelet/lipgloss v0.12.1/go.mod h1:V2CiwIuhx9S1S1ZlADfOj9HmxeMAORuz5izHb0zGbB8= +github.com/charmbracelet/x/ansi v0.1.4 h1:IEU3D6+dWwPSgZ6HBH+v6oUuZ/nVawMiWj5831KfiLM= +github.com/charmbracelet/x/ansi v0.1.4/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw= github.com/charmbracelet/x/input v0.1.0 h1:TEsGSfZYQyOtp+STIjyBq6tpRaorH0qpwZUj8DavAhQ= github.com/charmbracelet/x/input v0.1.0/go.mod h1:ZZwaBxPF7IG8gWWzPUVqHEtWhc1+HXJPNuerJGRGZ28= github.com/charmbracelet/x/term v0.1.1 h1:3cosVAiPOig+EV4X9U+3LDgtwwAoEzJjNdwbXDjF6yI= From f1fba1708e88371fc65c1517950bdc4777df74e4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 09:37:40 +0200 Subject: [PATCH 12/16] build(deps): bump github.com/aws/aws-sdk-go from 1.54.18 to 1.54.19 (#3884) Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.54.18 to 1.54.19. - [Release notes](https://github.com/aws/aws-sdk-go/releases) - [Commits](https://github.com/aws/aws-sdk-go/compare/v1.54.18...v1.54.19) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a6d26b36be..298d21ce1a 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/ThreeDotsLabs/watermill v1.3.5 github.com/ThreeDotsLabs/watermill-sql/v3 v3.0.1 github.com/alexdrl/zerowater v0.0.3 - github.com/aws/aws-sdk-go v1.54.18 + github.com/aws/aws-sdk-go v1.54.19 github.com/barkimedes/go-deepcopy v0.0.0-20220514131651-17c30cfc62df github.com/cenkalti/backoff/v4 v4.3.0 github.com/charmbracelet/bubbles v0.17.1 diff --git a/go.sum b/go.sum index 15980d9d85..6314a41de1 100644 --- a/go.sum +++ b/go.sum @@ -117,8 +117,8 @@ github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3d github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= -github.com/aws/aws-sdk-go v1.54.18 h1:t8DGtN8A2wEiazoJxeDbfPsbxCKtjoRLuO7jBSgJzo4= -github.com/aws/aws-sdk-go v1.54.18/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= +github.com/aws/aws-sdk-go v1.54.19 h1:tyWV+07jagrNiCcGRzRhdtVjQs7Vy41NwsuOcl0IbVI= +github.com/aws/aws-sdk-go v1.54.19/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/aws/aws-sdk-go-v2 v1.30.1 h1:4y/5Dvfrhd1MxRDD77SrfsDaj8kUkkljU7XE83NPV+o= github.com/aws/aws-sdk-go-v2 v1.30.1/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3 h1:tW1/Rkad38LA15X4UQtjXZXNKsCgkshC3EbmcUmghTg= From ff8964a283b94643023c58075c0ebb8caa6d9369 Mon Sep 17 00:00:00 2001 From: Juan Antonio Osorio Date: Mon, 15 Jul 2024 11:42:52 +0300 Subject: [PATCH 13/16] Revert "Replace several internal protobufs with Go structs (#3878)" (#3890) This reverts commit 40cbccd24f8b8d1d732a290671535df8569fd961. This PR breaks the smoke tests. Explicitly the homoglyph and vulncheck tests. --- .../application/homoglyphs_service.go | 10 +- internal/engine/eval/trusty/actions.go | 12 +- internal/engine/eval/trusty/config.go | 6 +- internal/engine/eval/trusty/trusty.go | 47 +- internal/engine/eval/trusty/trusty_test.go | 48 +- internal/engine/eval/vulncheck/actions.go | 4 +- internal/engine/eval/vulncheck/config.go | 6 +- internal/engine/eval/vulncheck/pkgdb.go | 62 +- internal/engine/eval/vulncheck/pkgdb_test.go | 14 +- internal/engine/eval/vulncheck/report.go | 2 +- internal/engine/eval/vulncheck/review.go | 21 +- internal/engine/eval/vulncheck/review_test.go | 60 +- internal/engine/eval/vulncheck/vulncheck.go | 14 +- internal/engine/eval/vulncheck/vulndb.go | 14 +- internal/engine/eval/vulncheck/vulndb_test.go | 4 +- internal/engine/ingester/diff/diff.go | 39 +- internal/engine/ingester/diff/parse.go | 36 +- internal/engine/ingester/diff/parse_test.go | 110 +-- internal/engine/models/models.go | 74 -- internal/proto/internal.pb.go | 657 +++++++++++++++++- internal/proto/internal.proto | 53 +- internal/proto/pkg_ecosystems.go | 32 + 22 files changed, 960 insertions(+), 365 deletions(-) delete mode 100644 internal/engine/models/models.go create mode 100644 internal/proto/pkg_ecosystems.go diff --git a/internal/engine/eval/homoglyphs/application/homoglyphs_service.go b/internal/engine/eval/homoglyphs/application/homoglyphs_service.go index c1801b6ed7..fb2588ba50 100644 --- a/internal/engine/eval/homoglyphs/application/homoglyphs_service.go +++ b/internal/engine/eval/homoglyphs/application/homoglyphs_service.go @@ -25,7 +25,7 @@ import ( "github.com/stacklok/minder/internal/engine/eval/homoglyphs/communication" "github.com/stacklok/minder/internal/engine/eval/homoglyphs/domain" engif "github.com/stacklok/minder/internal/engine/interfaces" - "github.com/stacklok/minder/internal/engine/models" + pbinternal "github.com/stacklok/minder/internal/proto" pb "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" provifv1 "github.com/stacklok/minder/pkg/providers/v1" ) @@ -75,13 +75,13 @@ func evaluateHomoglyphs( } //nolint:govet - prContents, ok := res.Object.(*models.PRContents) + prContents, ok := res.Object.(*pbinternal.PrContents) if !ok { return false, fmt.Errorf("invalid object type for homoglyphs evaluator") } - if prContents.PR == nil || prContents.Files == nil { - return false, fmt.Errorf("invalid prContents fields: %v, %v", prContents.PR, prContents.Files) + if prContents.Pr == nil || prContents.Files == nil { + return false, fmt.Errorf("invalid prContents fields: %v, %v", prContents.Pr, prContents.Files) } if len(prContents.Files) == 0 { @@ -90,7 +90,7 @@ func evaluateHomoglyphs( // Note: This is a mandatory step to reassign certain fields in the handler. // This is a workaround to avoid recreating the object. - reviewHandler.Hydrate(ctx, prContents.PR) + reviewHandler.Hydrate(ctx, prContents.Pr) for _, file := range prContents.Files { for _, line := range file.PatchLines { diff --git a/internal/engine/eval/trusty/actions.go b/internal/engine/eval/trusty/actions.go index 6421cc8fc0..0dbe99a70f 100644 --- a/internal/engine/eval/trusty/actions.go +++ b/internal/engine/eval/trusty/actions.go @@ -32,7 +32,7 @@ import ( "github.com/stacklok/minder/internal/constants" "github.com/stacklok/minder/internal/engine/eval/pr_actions" - "github.com/stacklok/minder/internal/engine/models" + pbinternal "github.com/stacklok/minder/internal/proto" pb "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" provifv1 "github.com/stacklok/minder/pkg/providers/v1" ) @@ -194,7 +194,7 @@ type templateScoreComponent struct { } type dependencyAlternatives struct { - Dependency *models.Dependency + Dependency *pbinternal.Dependency // Reason captures the reason why a package was flagged Reasons []RuleViolationReason @@ -289,11 +289,11 @@ func (sph *summaryPrHandler) generateSummary() (string, error) { score = *alternative.trustyReply.Summary.Score } packageData := templatePackageData{ - Ecosystem: string(alternative.Dependency.Ecosystem), + Ecosystem: alternative.Dependency.Ecosystem.AsString(), PackageName: alternative.Dependency.Name, TrustyURL: fmt.Sprintf( "%s%s/%s", constants.TrustyHttpURL, - strings.ToLower(string(alternative.Dependency.Ecosystem)), + strings.ToLower(alternative.Dependency.Ecosystem.AsString()), url.PathEscape(alternative.trustyReply.PackageName), ), Score: score, @@ -326,11 +326,11 @@ func (sph *summaryPrHandler) generateSummary() (string, error) { altPackageData := templateAlternative{ templatePackageData: templatePackageData{ - Ecosystem: string(alternative.Dependency.Ecosystem), + Ecosystem: alternative.Dependency.Ecosystem.AsString(), PackageName: altData.PackageName, TrustyURL: fmt.Sprintf( "%s%s/%s", constants.TrustyHttpURL, - strings.ToLower(string(alternative.Dependency.Ecosystem)), + strings.ToLower(alternative.Dependency.Ecosystem.AsString()), url.PathEscape(altData.PackageName), ), Score: altData.Score, diff --git a/internal/engine/eval/trusty/config.go b/internal/engine/eval/trusty/config.go index 49c4409bb8..7128aa18c5 100644 --- a/internal/engine/eval/trusty/config.go +++ b/internal/engine/eval/trusty/config.go @@ -23,7 +23,7 @@ import ( "github.com/go-viper/mapstructure/v2" "github.com/stacklok/minder/internal/engine/eval/pr_actions" - "github.com/stacklok/minder/internal/engine/models" + pbinternal "github.com/stacklok/minder/internal/proto" ) var ( @@ -110,8 +110,8 @@ func parseConfig(ruleCfg map[string]any) (*config, error) { return &conf, nil } -func (c *config) getEcosystemConfig(ecosystem models.DependencyEcosystem) *ecosystemConfig { - sEco := string(ecosystem) +func (c *config) getEcosystemConfig(ecosystem pbinternal.DepEcosystem) *ecosystemConfig { + sEco := ecosystem.AsString() if sEco == "" { return nil } diff --git a/internal/engine/eval/trusty/trusty.go b/internal/engine/eval/trusty/trusty.go index 7683b16d47..5f31caa274 100644 --- a/internal/engine/eval/trusty/trusty.go +++ b/internal/engine/eval/trusty/trusty.go @@ -28,7 +28,7 @@ import ( evalerrors "github.com/stacklok/minder/internal/engine/errors" "github.com/stacklok/minder/internal/engine/eval/pr_actions" engif "github.com/stacklok/minder/internal/engine/interfaces" - "github.com/stacklok/minder/internal/engine/models" + pbinternal "github.com/stacklok/minder/internal/proto" provifv1 "github.com/stacklok/minder/pkg/providers/v1" ) @@ -87,9 +87,9 @@ func (e *Evaluator) Eval(ctx context.Context, pol map[string]any, res *engif.Res } logger := zerolog.Ctx(ctx).With(). - Int64("pull-number", prDependencies.PR.Number). - Str("repo-owner", prDependencies.PR.RepoOwner). - Str("repo-name", prDependencies.PR.RepoName).Logger() + Int64("pull-number", prDependencies.Pr.Number). + Str("repo-owner", prDependencies.Pr.RepoOwner). + Str("repo-name", prDependencies.Pr.RepoName).Logger() // Parse the profile data to get the policy configuration ruleConfig, err := parseRuleConfig(pol) @@ -97,14 +97,14 @@ func (e *Evaluator) Eval(ctx context.Context, pol map[string]any, res *engif.Res return fmt.Errorf("parsing policy configuration: %w", err) } - prSummaryHandler, err := newSummaryPrHandler(prDependencies.PR, e.cli, e.endpoint) + prSummaryHandler, err := newSummaryPrHandler(prDependencies.Pr, e.cli, e.endpoint) if err != nil { return fmt.Errorf("failed to create summary handler: %w", err) } // Classify all dependencies, tracking all that are malicious or scored low for _, dep := range prDependencies.Deps { - depscore, err := getDependencyScore(ctx, e.client, &dep) + depscore, err := getDependencyScore(ctx, e.client, dep) if err != nil { logger.Error().Msgf("error fetching trusty data: %s", err) return fmt.Errorf("getting dependency score: %w", err) @@ -135,22 +135,22 @@ func (e *Evaluator) Eval(ctx context.Context, pol map[string]any, res *engif.Res } func getEcosystemConfig( - logger *zerolog.Logger, ruleConfig *config, dep models.ContextualDependency, + logger *zerolog.Logger, ruleConfig *config, dep *pbinternal.PrDependencies_ContextualDependency, ) *ecosystemConfig { ecoConfig := ruleConfig.getEcosystemConfig(dep.Dep.Ecosystem) if ecoConfig == nil { logger.Info(). Str("dependency", dep.Dep.Name). - Str("ecosystem", string(dep.Dep.Ecosystem)). + Str("ecosystem", dep.Dep.Ecosystem.AsString()). Msgf("no config for ecosystem, skipping") return nil } return ecoConfig } -// readPullRequestDependencies returns the dependencies found in the ingestion results -func readPullRequestDependencies(res *engif.Result) (*models.PRDependencies, error) { - prdeps, ok := res.Object.(*models.PRDependencies) +// readPullRequestDependencies returns the dependencies found in theingestion results +func readPullRequestDependencies(res *engif.Result) (*pbinternal.PrDependencies, error) { + prdeps, ok := res.Object.(*pbinternal.PrDependencies) if !ok { return nil, fmt.Errorf("object type incompatible with the Trusty evaluator") } @@ -224,17 +224,13 @@ func buildEvalResult(prSummary *summaryPrHandler) error { } func getDependencyScore( - ctx context.Context, trustyClient *trusty.Trusty, dep *models.ContextualDependency, + ctx context.Context, trustyClient *trusty.Trusty, dep *pbinternal.PrDependencies_ContextualDependency, ) (*trustytypes.Reply, error) { - trustyEcosystem, err := toTrustyEcosystem(dep.Dep.Ecosystem) - if err != nil { - return nil, err - } // Call the Trusty API resp, err := trustyClient.Report(ctx, &trustytypes.Dependency{ Name: dep.Dep.Name, Version: dep.Dep.Version, - Ecosystem: trustyEcosystem, + Ecosystem: trustytypes.Ecosystem(dep.Dep.Ecosystem), }) if err != nil { return nil, fmt.Errorf("failed to send request: %w", err) @@ -246,7 +242,7 @@ func getDependencyScore( // low scores and adds them to the summary if needed func classifyDependency( _ context.Context, logger *zerolog.Logger, resp *trustytypes.Reply, ruleConfig *config, - prSummary *summaryPrHandler, dep models.ContextualDependency, + prSummary *summaryPrHandler, dep *pbinternal.PrDependencies_ContextualDependency, ) { // Check all the policy violations reasons := []RuleViolationReason{} @@ -315,7 +311,7 @@ func classifyDependency( Msgf("the dependency has lower score than threshold or is malicious, tracking") prSummary.trackAlternatives(dependencyAlternatives{ - Dependency: &dep.Dep, + Dependency: dep.Dep, Reasons: reasons, BlockPR: shouldBlockPR, trustyReply: resp, @@ -348,16 +344,3 @@ func readPackageDescription(resp *trustytypes.Reply) map[string]any { } return descr } - -func toTrustyEcosystem(ecosystem models.DependencyEcosystem) (trustytypes.Ecosystem, error) { - switch ecosystem { - case models.NPMDependency: - return trustytypes.ECOSYSTEM_NPM, nil - case models.PyPIDependency: - return trustytypes.ECOSYSTEM_PYPI, nil - case models.GoDependency: - return trustytypes.ECOSYSTEM_GO, nil - default: - return 0, fmt.Errorf("unexpected ecosystem %s", ecosystem) - } -} diff --git a/internal/engine/eval/trusty/trusty_test.go b/internal/engine/eval/trusty/trusty_test.go index 0518121e76..e4095d2dd5 100644 --- a/internal/engine/eval/trusty/trusty_test.go +++ b/internal/engine/eval/trusty/trusty_test.go @@ -27,8 +27,8 @@ import ( "github.com/stacklok/minder/internal/engine/eval/pr_actions" engif "github.com/stacklok/minder/internal/engine/interfaces" - "github.com/stacklok/minder/internal/engine/models" - mockgithub "github.com/stacklok/minder/internal/providers/github/mock" + pbinternal "github.com/stacklok/minder/internal/proto" + mock_github "github.com/stacklok/minder/internal/providers/github/mock" provifv1 "github.com/stacklok/minder/pkg/providers/v1" ) @@ -46,14 +46,14 @@ func TestBuildEvalResult(t *testing.T) { {"malicious-package", &summaryPrHandler{ trackedAlternatives: []dependencyAlternatives{ { - Dependency: &models.Dependency{ - Ecosystem: models.PyPIDependency, + Dependency: &pbinternal.Dependency{ + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "requests", Version: "0.0.1", }, trustyReply: &trustytypes.Reply{ PackageName: "requests", - PackageType: string(models.PyPIDependency), + PackageType: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI.AsString(), Summary: trustytypes.ScoreSummary{ Score: &sg, }, @@ -76,14 +76,14 @@ func TestBuildEvalResult(t *testing.T) { {"low-scored-package", &summaryPrHandler{ trackedAlternatives: []dependencyAlternatives{ { - Dependency: &models.Dependency{ - Ecosystem: models.PyPIDependency, + Dependency: &pbinternal.Dependency{ + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "requests", Version: "0.0.1", }, trustyReply: &trustytypes.Reply{ PackageName: "requests", - PackageType: string(models.PyPIDependency), + PackageType: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI.AsString(), Summary: trustytypes.ScoreSummary{ Score: &sg, }, @@ -94,28 +94,28 @@ func TestBuildEvalResult(t *testing.T) { {"malicious-and-low-score", &summaryPrHandler{ trackedAlternatives: []dependencyAlternatives{ { - Dependency: &models.Dependency{ - Ecosystem: models.PyPIDependency, + Dependency: &pbinternal.Dependency{ + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "python-oauth", Version: "0.0.1", }, trustyReply: &trustytypes.Reply{ PackageName: "requests", - PackageType: string(models.PyPIDependency), + PackageType: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI.AsString(), Summary: trustytypes.ScoreSummary{ Score: &sg, }, }, }, { - Dependency: &models.Dependency{ - Ecosystem: models.PyPIDependency, + Dependency: &pbinternal.Dependency{ + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "requestts", Version: "0.0.1", }, trustyReply: &trustytypes.Reply{ PackageName: "requests", - PackageType: string(models.PyPIDependency), + PackageType: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI.AsString(), Summary: trustytypes.ScoreSummary{ Score: &sg, }, @@ -195,7 +195,7 @@ func TestReadPullRequestDependencies(t *testing.T) { sut *engif.Result mustErr bool }{ - {name: "normal", sut: &engif.Result{Object: &models.PRDependencies{}}, mustErr: false}, + {name: "normal", sut: &engif.Result{Object: &pbinternal.PrDependencies{}}, mustErr: false}, {name: "invalid-object", sut: &engif.Result{Object: context.Background()}, mustErr: true}, } { tc := tc @@ -213,7 +213,7 @@ func TestReadPullRequestDependencies(t *testing.T) { } func TestNewTrustyEvaluator(t *testing.T) { - ghProvider := mockgithub.NewMockGitHub(nil) + ghProvider := mock_github.NewMockGitHub(nil) t.Parallel() for _, tc := range []struct { name string @@ -243,9 +243,9 @@ func TestClassifyDependency(t *testing.T) { ctx := context.Background() logger := zerolog.Ctx(ctx).With().Logger() - dep := models.ContextualDependency{ - Dep: models.Dependency{ - Ecosystem: models.NPMDependency, + dep := &pbinternal.PrDependencies_ContextualDependency{ + Dep: &pbinternal.Dependency{ + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, Name: "test", Version: "v0.0.1", }, @@ -398,7 +398,7 @@ func TestBuildScoreMatrix(t *testing.T) { { name: "no-description", sut: dependencyAlternatives{ - Dependency: &models.Dependency{}, + Dependency: &pbinternal.Dependency{}, Reasons: []RuleViolationReason{}, trustyReply: &trustytypes.Reply{ Summary: trustytypes.ScoreSummary{}, @@ -408,7 +408,7 @@ func TestBuildScoreMatrix(t *testing.T) { { name: "normal-response", sut: dependencyAlternatives{ - Dependency: &models.Dependency{}, + Dependency: &pbinternal.Dependency{}, Reasons: []RuleViolationReason{}, trustyReply: &trustytypes.Reply{ Summary: trustytypes.ScoreSummary{ @@ -431,7 +431,7 @@ func TestBuildScoreMatrix(t *testing.T) { { name: "normal-response", sut: dependencyAlternatives{ - Dependency: &models.Dependency{}, + Dependency: &pbinternal.Dependency{}, Reasons: []RuleViolationReason{}, trustyReply: &trustytypes.Reply{ Summary: trustytypes.ScoreSummary{ @@ -454,7 +454,7 @@ func TestBuildScoreMatrix(t *testing.T) { { name: "typosquatting-low", sut: dependencyAlternatives{ - Dependency: &models.Dependency{}, + Dependency: &pbinternal.Dependency{}, Reasons: []RuleViolationReason{}, trustyReply: &trustytypes.Reply{ Summary: trustytypes.ScoreSummary{ @@ -469,7 +469,7 @@ func TestBuildScoreMatrix(t *testing.T) { { name: "typosquatting-high", sut: dependencyAlternatives{ - Dependency: &models.Dependency{}, + Dependency: &pbinternal.Dependency{}, Reasons: []RuleViolationReason{}, trustyReply: &trustytypes.Reply{ Summary: trustytypes.ScoreSummary{ diff --git a/internal/engine/eval/vulncheck/actions.go b/internal/engine/eval/vulncheck/actions.go index 3542dd8c7a..f6cbe1a53f 100644 --- a/internal/engine/eval/vulncheck/actions.go +++ b/internal/engine/eval/vulncheck/actions.go @@ -22,7 +22,7 @@ import ( "github.com/google/go-github/v61/github" "github.com/stacklok/minder/internal/engine/eval/pr_actions" - "github.com/stacklok/minder/internal/engine/models" + pbinternal "github.com/stacklok/minder/internal/proto" pb "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" provifv1 "github.com/stacklok/minder/pkg/providers/v1" ) @@ -30,7 +30,7 @@ import ( type prStatusHandler interface { trackVulnerableDep( ctx context.Context, - dep models.ContextualDependency, + dep *pbinternal.PrDependencies_ContextualDependency, vulnResp *VulnerabilityResponse, patch patchLocatorFormatter, ) error diff --git a/internal/engine/eval/vulncheck/config.go b/internal/engine/eval/vulncheck/config.go index 5b4ac4a3ab..0dc510a236 100644 --- a/internal/engine/eval/vulncheck/config.go +++ b/internal/engine/eval/vulncheck/config.go @@ -23,7 +23,7 @@ import ( "github.com/go-viper/mapstructure/v2" "github.com/stacklok/minder/internal/engine/eval/pr_actions" - "github.com/stacklok/minder/internal/engine/models" + pbinternal "github.com/stacklok/minder/internal/proto" ) type vulnDbType string @@ -106,8 +106,8 @@ func parseConfig(ruleCfg map[string]any) (*config, error) { return &conf, nil } -func (c *config) getEcosystemConfig(ecosystem models.DependencyEcosystem) *ecosystemConfig { - sEco := string(ecosystem) +func (c *config) getEcosystemConfig(ecosystem pbinternal.DepEcosystem) *ecosystemConfig { + sEco := ecosystem.AsString() if sEco == "" { return nil } diff --git a/internal/engine/eval/vulncheck/pkgdb.go b/internal/engine/eval/vulncheck/pkgdb.go index 17792d48eb..ec34c99df7 100644 --- a/internal/engine/eval/vulncheck/pkgdb.go +++ b/internal/engine/eval/vulncheck/pkgdb.go @@ -27,7 +27,7 @@ import ( "github.com/puzpuzpuz/xsync/v3" - "github.com/stacklok/minder/internal/engine/models" + pbinternal "github.com/stacklok/minder/internal/proto" "github.com/stacklok/minder/internal/util" ) @@ -57,7 +57,7 @@ type formatterMeta struct { // than the review handler. type patchLocatorFormatter interface { LineHasDependency(line string) bool - IndentedString(indent int, oldDepLine string, oldDep models.Dependency) string + IndentedString(indent int, oldDepLine string, oldDep *pbinternal.Dependency) string HasPatchedVersion() bool GetPatchedVersion() string GetFormatterMeta() formatterMeta @@ -65,9 +65,9 @@ type patchLocatorFormatter interface { // RepoQuerier is the interface for querying a repository type RepoQuerier interface { - SendRecvRequest(ctx context.Context, dep models.Dependency, patched string, latest bool) (patchLocatorFormatter, error) - NoPatchAvailableFormatter(dep models.Dependency) patchLocatorFormatter - PkgRegistryErrorFormatter(dep models.Dependency, registryErr error) patchLocatorFormatter + SendRecvRequest(ctx context.Context, dep *pbinternal.Dependency, patched string, latest bool) (patchLocatorFormatter, error) + NoPatchAvailableFormatter(dep *pbinternal.Dependency) patchLocatorFormatter + PkgRegistryErrorFormatter(dep *pbinternal.Dependency, registryErr error) patchLocatorFormatter } type repoCache struct { @@ -112,7 +112,7 @@ type packageJson struct { } `json:"dist"` } -func (pj *packageJson) IndentedString(indent int, oldDepLine string, _ models.Dependency) string { +func (pj *packageJson) IndentedString(indent int, oldDepLine string, _ *pbinternal.Dependency) string { padding := fmt.Sprintf("%*s", indent, "") innerPadding := padding + " " // Add 2 extra spaces @@ -179,7 +179,7 @@ type PyPiReply struct { // them. Since PyPi doesn't indent, but can specify zero or multiple versions, we // don't care about the indent parameter. This is ripe for refactoring, though, // see the comment in the patchLocatorFormatter interface. -func (p *PyPiReply) IndentedString(_ int, oldDepLine string, oldDep models.Dependency) string { +func (p *PyPiReply) IndentedString(_ int, oldDepLine string, oldDep *pbinternal.Dependency) string { return strings.Replace(oldDepLine, oldDep.Version, p.Info.Version, 1) } @@ -212,11 +212,7 @@ func (p *PyPiReply) GetFormatterMeta() formatterMeta { return p.formatterMeta } -func (p *pypiRepository) SendRecvRequest( - ctx context.Context, - dep models.Dependency, - patched string, - latest bool, +func (p *pypiRepository) SendRecvRequest(ctx context.Context, dep *pbinternal.Dependency, patched string, latest bool, ) (patchLocatorFormatter, error) { req, err := p.newRequest(ctx, dep, patched, latest) if err != nil { @@ -244,7 +240,7 @@ func (p *pypiRepository) SendRecvRequest( return &pkgJson, nil } -func (_ *pypiRepository) NoPatchAvailableFormatter(dep models.Dependency) patchLocatorFormatter { +func (_ *pypiRepository) NoPatchAvailableFormatter(dep *pbinternal.Dependency) patchLocatorFormatter { return &PyPiReply{ Info: struct { Name string `json:"name"` @@ -253,7 +249,7 @@ func (_ *pypiRepository) NoPatchAvailableFormatter(dep models.Dependency) patchL } } -func (_ *pypiRepository) PkgRegistryErrorFormatter(dep models.Dependency, registryErr error) patchLocatorFormatter { +func (_ *pypiRepository) PkgRegistryErrorFormatter(dep *pbinternal.Dependency, registryErr error) patchLocatorFormatter { return &PyPiReply{ formatterMeta: formatterMeta{ pkgRegistryLookupError: registryErr, @@ -273,10 +269,7 @@ func newPyPIRepository(endpoint string) *pypiRepository { } func (p *pypiRepository) newRequest( - ctx context.Context, - dep models.Dependency, - patched string, - latest bool, + ctx context.Context, dep *pbinternal.Dependency, patched string, latest bool, ) (*http.Request, error) { var u *url.URL var err error @@ -315,10 +308,7 @@ func newNpmRepository(endpoint string) *npmRepository { var _ RepoQuerier = (*npmRepository)(nil) func (n *npmRepository) newRequest( - ctx context.Context, - dep models.Dependency, - patched string, - latest bool, + ctx context.Context, dep *pbinternal.Dependency, patched string, latest bool, ) (*http.Request, error) { var version string if latest { @@ -339,11 +329,7 @@ func (n *npmRepository) newRequest( return req, nil } -func (n *npmRepository) SendRecvRequest( - ctx context.Context, - dep models.Dependency, - patched string, - latest bool, +func (n *npmRepository) SendRecvRequest(ctx context.Context, dep *pbinternal.Dependency, patched string, latest bool, ) (patchLocatorFormatter, error) { req, err := n.newRequest(ctx, dep, patched, latest) if err != nil { @@ -371,14 +357,14 @@ func (n *npmRepository) SendRecvRequest( return &pkgJson, nil } -func (_ *npmRepository) NoPatchAvailableFormatter(dep models.Dependency) patchLocatorFormatter { +func (_ *npmRepository) NoPatchAvailableFormatter(dep *pbinternal.Dependency) patchLocatorFormatter { return &packageJson{ Name: dep.Name, Version: "", } } -func (_ *npmRepository) PkgRegistryErrorFormatter(dep models.Dependency, registryErr error) patchLocatorFormatter { +func (_ *npmRepository) PkgRegistryErrorFormatter(dep *pbinternal.Dependency, registryErr error) patchLocatorFormatter { return &packageJson{ formatterMeta: formatterMeta{ pkgRegistryLookupError: registryErr, @@ -400,7 +386,7 @@ type goModPackage struct { DependencyHash string `json:"dependency_hash"` } -func (gmp *goModPackage) IndentedString(indent int, _ string, _ models.Dependency) string { +func (gmp *goModPackage) IndentedString(indent int, _ string, _ *pbinternal.Dependency) string { return fmt.Sprintf("%s%s %s", strings.Repeat(" ", indent), gmp.Name, gmp.Version) } @@ -442,11 +428,7 @@ func newGoProxySumRepository(proxyEndpoint, sumEndpoint string) *goProxyReposito // check that npmRepository implements RepoQuerier var _ RepoQuerier = (*goProxyRepository)(nil) -func (r *goProxyRepository) goProxyRequest( - ctx context.Context, - dep models.Dependency, - patched string, - latest bool, +func (r *goProxyRepository) goProxyRequest(ctx context.Context, dep *pbinternal.Dependency, patched string, latest bool, ) (*http.Request, error) { var u *url.URL var err error @@ -527,11 +509,7 @@ func parseGoSumReply(goPkg *goModPackage, reply io.Reader) error { return nil } -func (r *goProxyRepository) SendRecvRequest( - ctx context.Context, - dep models.Dependency, - patched string, - latest bool, +func (r *goProxyRepository) SendRecvRequest(ctx context.Context, dep *pbinternal.Dependency, patched string, latest bool, ) (patchLocatorFormatter, error) { proxyReq, err := r.goProxyRequest(ctx, dep, patched, latest) if err != nil { @@ -587,14 +565,14 @@ func (r *goProxyRepository) SendRecvRequest( return goPackage, nil } -func (_ *goProxyRepository) NoPatchAvailableFormatter(dep models.Dependency) patchLocatorFormatter { +func (_ *goProxyRepository) NoPatchAvailableFormatter(dep *pbinternal.Dependency) patchLocatorFormatter { return &goModPackage{ Name: dep.Name, oldVersion: dep.Version, } } -func (_ *goProxyRepository) PkgRegistryErrorFormatter(dep models.Dependency, registryErr error) patchLocatorFormatter { +func (_ *goProxyRepository) PkgRegistryErrorFormatter(dep *pbinternal.Dependency, registryErr error) patchLocatorFormatter { return &goModPackage{ formatterMeta: formatterMeta{ pkgRegistryLookupError: registryErr, diff --git a/internal/engine/eval/vulncheck/pkgdb_test.go b/internal/engine/eval/vulncheck/pkgdb_test.go index c7579f9f80..c942c609e7 100644 --- a/internal/engine/eval/vulncheck/pkgdb_test.go +++ b/internal/engine/eval/vulncheck/pkgdb_test.go @@ -25,7 +25,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/stacklok/minder/internal/engine/models" + pbinternal "github.com/stacklok/minder/internal/proto" ) func TestNpmPkgDb(t *testing.T) { @@ -146,7 +146,7 @@ func TestNpmPkgDb(t *testing.T) { repo := newNpmRepository(server.URL) - dep := models.Dependency{ + dep := &pbinternal.Dependency{ Name: tt.depName, } @@ -162,7 +162,7 @@ func TestNpmPkgDb(t *testing.T) { assert.Error(t, err, "Expected error") } else { assert.NoError(t, err, "Expected no error") - require.Equal(t, tt.expectReply.IndentedString(0, "", models.Dependency{}), reply.IndentedString(0, "", models.Dependency{}), "expected reply to match mock data") + require.Equal(t, tt.expectReply.IndentedString(0, "", nil), reply.IndentedString(0, "", nil), "expected reply to match mock data") } }) } @@ -383,7 +383,7 @@ func TestPyPiPkgDb(t *testing.T) { repo := newPyPIRepository(pyPiMockServer.URL) assert.NotNil(t, repo, "Failed to create repository") - dep := models.Dependency{ + dep := &pbinternal.Dependency{ Name: tt.depName, } @@ -401,7 +401,7 @@ func TestPyPiPkgDb(t *testing.T) { assert.NoError(t, err, "Expected no error") actualReply := reply.IndentedString(0, "requests>=2.19.0", - models.Dependency{ + &pbinternal.Dependency{ Name: "requests", Version: "2.19.0", }) @@ -592,7 +592,7 @@ golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=`)) repo := newGoProxySumRepository(proxyServer.URL, sumServer.URL) assert.NotNil(t, repo, "Failed to create repository") - dep := models.Dependency{ + dep := &pbinternal.Dependency{ Name: tt.depName, } @@ -608,7 +608,7 @@ golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=`)) assert.Error(t, err, "Expected error") } else { assert.NoError(t, err, "Expected no error") - require.Equal(t, tt.expectReply.IndentedString(0, "", models.Dependency{}), reply.IndentedString(0, "", models.Dependency{}), "expected reply to match mock data") + require.Equal(t, tt.expectReply.IndentedString(0, "", nil), reply.IndentedString(0, "", nil), "expected reply to match mock data") } }) } diff --git a/internal/engine/eval/vulncheck/report.go b/internal/engine/eval/vulncheck/report.go index 16c5d3b244..d2bc22ad3a 100644 --- a/internal/engine/eval/vulncheck/report.go +++ b/internal/engine/eval/vulncheck/report.go @@ -147,7 +147,7 @@ func (r *vulnSummaryReport) render() (string, error) { DependencyVersion string Vulnerabilities []Vulnerability }{ - DependencyEcosystem: string(dep.Dependency.Ecosystem), + DependencyEcosystem: dep.Dependency.Ecosystem.AsString(), DependencyName: dep.Dependency.Name, DependencyVersion: dep.Dependency.Version, Vulnerabilities: dep.Vulnerabilities, diff --git a/internal/engine/eval/vulncheck/review.go b/internal/engine/eval/vulncheck/review.go index 889be70758..ee910d092b 100644 --- a/internal/engine/eval/vulncheck/review.go +++ b/internal/engine/eval/vulncheck/review.go @@ -25,7 +25,7 @@ import ( "github.com/google/go-github/v61/github" "github.com/rs/zerolog" - "github.com/stacklok/minder/internal/engine/models" + pbinternal "github.com/stacklok/minder/internal/proto" pb "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" provifv1 "github.com/stacklok/minder/pkg/providers/v1" ) @@ -62,10 +62,10 @@ func countLeadingWhitespace(line string) int { func locateDepInPr( ctx context.Context, client provifv1.GitHub, - dep models.ContextualDependency, + dep *pbinternal.PrDependencies_ContextualDependency, patch patchLocatorFormatter, ) (*reviewLocation, error) { - req, err := client.NewRequest("GET", dep.File.PatchURL, nil) + req, err := client.NewRequest("GET", dep.File.PatchUrl, nil) if err != nil { return nil, fmt.Errorf("could not create request: %w", err) } @@ -88,8 +88,7 @@ func locateDepInPr( // was causing 422 issues with GitHub when trying to submit a review. // Also, to ensure we are grabbing the correct line, we need to check if the // versions align. - - if dep.Dep.Ecosystem == models.NPMDependency && i+1 < len(lines) { + if dep.Dep.Ecosystem == pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM && i+1 < len(lines) { line = strings.Join([]string{line, lines[i+1], dep.Dep.Version}, "\n") loc.lineToChange = i + 2 } else { @@ -189,7 +188,7 @@ func newReviewPrHandler( func (ra *reviewPrHandler) trackVulnerableDep( ctx context.Context, - dep models.ContextualDependency, + dep *pbinternal.PrDependencies_ContextualDependency, vulnResp *VulnerabilityResponse, patch patchLocatorFormatter, ) error { @@ -236,7 +235,7 @@ func (ra *reviewPrHandler) trackVulnerableDep( Msg("vulnerable dependency found") ra.trackedDeps = append(ra.trackedDeps, dependencyVulnerabilities{ - Dependency: &dep.Dep, + Dependency: dep.Dep, Vulnerabilities: vulnResp.Vulns, PatchVersion: patch.GetPatchedVersion(), }) @@ -511,19 +510,19 @@ type summaryPrHandler struct { } type dependencyVulnerabilities struct { - Dependency *models.Dependency + Dependency *pbinternal.Dependency Vulnerabilities []Vulnerability PatchVersion string } func (sph *summaryPrHandler) trackVulnerableDep( _ context.Context, - dep models.ContextualDependency, + dep *pbinternal.PrDependencies_ContextualDependency, vulnResp *VulnerabilityResponse, patch patchLocatorFormatter, ) error { sph.trackedDeps = append(sph.trackedDeps, dependencyVulnerabilities{ - Dependency: &dep.Dep, + Dependency: dep.Dep, Vulnerabilities: vulnResp.Vulns, PatchVersion: patch.GetPatchedVersion(), }) @@ -572,7 +571,7 @@ type profileOnlyPrHandler struct{} func (profileOnlyPrHandler) trackVulnerableDep( _ context.Context, - _ models.ContextualDependency, + _ *pbinternal.PrDependencies_ContextualDependency, _ *VulnerabilityResponse, _ patchLocatorFormatter, ) error { diff --git a/internal/engine/eval/vulncheck/review_test.go b/internal/engine/eval/vulncheck/review_test.go index 1cc76092c6..490d56b6e5 100644 --- a/internal/engine/eval/vulncheck/review_test.go +++ b/internal/engine/eval/vulncheck/review_test.go @@ -29,7 +29,7 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" - "github.com/stacklok/minder/internal/engine/models" + pbinternal "github.com/stacklok/minder/internal/proto" mock_ghclient "github.com/stacklok/minder/internal/providers/github/mock" pb "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" ) @@ -113,15 +113,15 @@ func TestReviewPrHandlerVulnerabilitiesDifferentIdentities(t *testing.T) { })) defer server.Close() - dep := models.ContextualDependency{ - Dep: models.Dependency{ - Ecosystem: models.NPMDependency, + dep := &pbinternal.PrDependencies_ContextualDependency{ + Dep: &pbinternal.Dependency{ + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, Name: "mongodb", Version: "0.5.0", }, - File: models.FilePatch{ + File: &pbinternal.PrDependencies_ContextualDependency_FilePatch{ Name: "package-lock.json", - PatchURL: server.URL, + PatchUrl: server.URL, }, } @@ -155,7 +155,7 @@ func TestReviewPrHandlerVulnerabilitiesDifferentIdentities(t *testing.T) { require.NoError(t, err) statusReport := createStatusReport(vulnsFoundText, commitSHA, 0, dependencyVulnerabilities{ - Dependency: &dep.Dep, + Dependency: dep.Dep, Vulnerabilities: vulnResp.Vulns, PatchVersion: "0.6.0", }, @@ -222,15 +222,15 @@ func TestReviewPrHandlerVulnerabilitiesErrLookUpPackage(t *testing.T) { })) defer server.Close() - dep := models.ContextualDependency{ - Dep: models.Dependency{ - Ecosystem: models.NPMDependency, + dep := &pbinternal.PrDependencies_ContextualDependency{ + Dep: &pbinternal.Dependency{ + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, Name: "mongodb", Version: "0.5.0", }, - File: models.FilePatch{ + File: &pbinternal.PrDependencies_ContextualDependency_FilePatch{ Name: "package-lock.json", - PatchURL: server.URL, + PatchUrl: server.URL, }, } @@ -316,15 +316,15 @@ func TestReviewPrHandlerVulnerabilitiesWithNoPatchVersion(t *testing.T) { })) defer server.Close() - dep := models.ContextualDependency{ - Dep: models.Dependency{ - Ecosystem: models.NPMDependency, + dep := &pbinternal.PrDependencies_ContextualDependency{ + Dep: &pbinternal.Dependency{ + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, Name: "mongodb", Version: "0.5.0", }, - File: models.FilePatch{ + File: &pbinternal.PrDependencies_ContextualDependency_FilePatch{ Name: "package-lock.json", - PatchURL: server.URL, + PatchUrl: server.URL, }, } @@ -348,7 +348,7 @@ func TestReviewPrHandlerVulnerabilitiesWithNoPatchVersion(t *testing.T) { require.NoError(t, err) statusReport := createStatusReport(vulnsFoundText, commitSHA, 0, dependencyVulnerabilities{ - Dependency: &dep.Dep, + Dependency: dep.Dep, Vulnerabilities: vulnResp.Vulns, PatchVersion: "", }, @@ -422,15 +422,15 @@ func TestReviewPrHandlerVulnerabilitiesDismissReview(t *testing.T) { })) defer server.Close() - dep := models.ContextualDependency{ - Dep: models.Dependency{ - Ecosystem: models.NPMDependency, + dep := &pbinternal.PrDependencies_ContextualDependency{ + Dep: &pbinternal.Dependency{ + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, Name: "mongodb", Version: "0.5.0", }, - File: models.FilePatch{ + File: &pbinternal.PrDependencies_ContextualDependency_FilePatch{ Name: "package-lock.json", - PatchURL: server.URL, + PatchUrl: server.URL, }, } @@ -446,7 +446,7 @@ func TestReviewPrHandlerVulnerabilitiesDismissReview(t *testing.T) { }, nil) statusReport := createStatusReport(vulnsFoundText, commitSHA, minderReviewID, dependencyVulnerabilities{ - Dependency: &dep.Dep, + Dependency: dep.GetDep(), Vulnerabilities: vulnResp.Vulns, PatchVersion: "", }) @@ -573,15 +573,15 @@ func TestCommitStatusPrHandlerWithVulnerabilities(t *testing.T) { })) defer server.Close() - dep := models.ContextualDependency{ - Dep: models.Dependency{ - Ecosystem: models.NPMDependency, + dep := &pbinternal.PrDependencies_ContextualDependency{ + Dep: &pbinternal.Dependency{ + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, Name: "mongodb", Version: "0.5.0", }, - File: models.FilePatch{ + File: &pbinternal.PrDependencies_ContextualDependency_FilePatch{ Name: "package-lock.json", - PatchURL: server.URL, + PatchUrl: server.URL, }, } @@ -615,7 +615,7 @@ func TestCommitStatusPrHandlerWithVulnerabilities(t *testing.T) { require.NoError(t, err) statusReport := createStatusReport(vulnsFoundText, commitSHA, 0, dependencyVulnerabilities{ - Dependency: &dep.Dep, + Dependency: dep.GetDep(), Vulnerabilities: vulnResp.Vulns, PatchVersion: "0.6.0", }) diff --git a/internal/engine/eval/vulncheck/vulncheck.go b/internal/engine/eval/vulncheck/vulncheck.go index 65d01c32bb..bcb8f2f183 100644 --- a/internal/engine/eval/vulncheck/vulncheck.go +++ b/internal/engine/eval/vulncheck/vulncheck.go @@ -25,7 +25,7 @@ import ( evalerrors "github.com/stacklok/minder/internal/engine/errors" engif "github.com/stacklok/minder/internal/engine/interfaces" - "github.com/stacklok/minder/internal/engine/models" + pbinternal "github.com/stacklok/minder/internal/proto" provifv1 "github.com/stacklok/minder/pkg/providers/v1" ) @@ -70,7 +70,7 @@ func (e *Evaluator) getVulnerableDependencies(ctx context.Context, pol map[strin // TODO(jhrozek): Fix this! //nolint:govet - prdeps, ok := res.Object.(*models.PRDependencies) + prdeps, ok := res.Object.(*pbinternal.PrDependencies) if !ok { return nil, fmt.Errorf("invalid object type for vulncheck evaluator") } @@ -84,7 +84,7 @@ func (e *Evaluator) getVulnerableDependencies(ctx context.Context, pol map[strin return nil, fmt.Errorf("failed to parse config: %w", err) } - prReplyHandler, err := newPrStatusHandler(ctx, ruleConfig.Action, prdeps.PR, e.cli) + prReplyHandler, err := newPrStatusHandler(ctx, ruleConfig.Action, prdeps.Pr, e.cli) if err != nil { return nil, fmt.Errorf("failed to create pr action: %w", err) } @@ -92,7 +92,7 @@ func (e *Evaluator) getVulnerableDependencies(ctx context.Context, pol map[strin pkgRepoCache := newRepoCache() for _, dep := range prdeps.Deps { - if dep.Dep.Version == "" { + if dep.Dep == nil || dep.Dep.Version == "" { continue } @@ -153,8 +153,8 @@ func (_ *Evaluator) getVulnDb(dbType vulnDbType, endpoint string) (vulnDb, error func (_ *Evaluator) queryVulnDb( ctx context.Context, db vulnDb, - dep models.Dependency, - ecosystem models.DependencyEcosystem, + dep *pbinternal.Dependency, + ecosystem pbinternal.DepEcosystem, ) (*VulnerabilityResponse, error) { req, err := db.NewQuery(ctx, dep, ecosystem) if err != nil { @@ -172,7 +172,7 @@ func (_ *Evaluator) queryVulnDb( // checkVulnerabilities checks whether a PR dependency contains any vulnerabilities. func (e *Evaluator) checkVulnerabilities( ctx context.Context, - dep models.ContextualDependency, + dep *pbinternal.PrDependencies_ContextualDependency, cfg *config, cache *repoCache, prHandler prStatusHandler, diff --git a/internal/engine/eval/vulncheck/vulndb.go b/internal/engine/eval/vulncheck/vulndb.go index c7130bab80..1297c78d4e 100644 --- a/internal/engine/eval/vulncheck/vulndb.go +++ b/internal/engine/eval/vulncheck/vulndb.go @@ -26,7 +26,7 @@ import ( "github.com/hashicorp/go-version" - "github.com/stacklok/minder/internal/engine/models" + pbinternal "github.com/stacklok/minder/internal/proto" ) // Vulnerability is a vulnerability JSON representation @@ -46,8 +46,8 @@ type VulnerabilityResponse struct { // TODO(jakub): it's ugly that we depend on types from ingester/diff type vulnDb interface { - NewQuery(ctx context.Context, dep models.Dependency, eco models.DependencyEcosystem) (*http.Request, error) - SendRecvRequest(r *http.Request, dep models.Dependency) (*VulnerabilityResponse, error) + NewQuery(ctx context.Context, dep *pbinternal.Dependency, eco pbinternal.DepEcosystem) (*http.Request, error) + SendRecvRequest(r *http.Request, dep *pbinternal.Dependency) (*VulnerabilityResponse, error) } // OSVResponse is a response from the OSV database @@ -95,7 +95,7 @@ type OSVResponse struct { } `json:"vulns"` } -func toVulnerabilityResponse(osvResp *OSVResponse, dep models.Dependency) *VulnerabilityResponse { +func toVulnerabilityResponse(osvResp *OSVResponse, dep *pbinternal.Dependency) *VulnerabilityResponse { var vulnResp VulnerabilityResponse for _, osvVuln := range osvResp.Vulns { @@ -171,12 +171,12 @@ func newOsvDb(endpoint string) *osvdb { } } -func (o *osvdb) NewQuery(ctx context.Context, dep models.Dependency, eco models.DependencyEcosystem) (*http.Request, error) { +func (o *osvdb) NewQuery(ctx context.Context, dep *pbinternal.Dependency, eco pbinternal.DepEcosystem) (*http.Request, error) { reqBody := map[string]interface{}{ "version": dep.Version, "package": map[string]string{ "name": dep.Name, - "ecosystem": string(eco), + "ecosystem": eco.AsString(), }, } @@ -195,7 +195,7 @@ func (o *osvdb) NewQuery(ctx context.Context, dep models.Dependency, eco models. return req, nil } -func (_ *osvdb) SendRecvRequest(r *http.Request, dep models.Dependency) (*VulnerabilityResponse, error) { +func (_ *osvdb) SendRecvRequest(r *http.Request, dep *pbinternal.Dependency) (*VulnerabilityResponse, error) { client := &http.Client{} resp, err := client.Do(r) if err != nil { diff --git a/internal/engine/eval/vulncheck/vulndb_test.go b/internal/engine/eval/vulncheck/vulndb_test.go index 49afbdd867..81592afa70 100644 --- a/internal/engine/eval/vulncheck/vulndb_test.go +++ b/internal/engine/eval/vulncheck/vulndb_test.go @@ -23,7 +23,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/stacklok/minder/internal/engine/models" + pbinternal "github.com/stacklok/minder/internal/proto" ) const multipleRanges = ` @@ -306,7 +306,7 @@ func TestGoVulnDb(t *testing.T) { db := newOsvDb(vulnServer.URL) assert.NotNil(t, db, "Failed to create OSV DB") - dep := models.Dependency{ + dep := &pbinternal.Dependency{ Name: tt.depName, Version: tt.depVersion, } diff --git a/internal/engine/ingester/diff/diff.go b/internal/engine/ingester/diff/diff.go index d1304840d4..064cc50400 100644 --- a/internal/engine/ingester/diff/diff.go +++ b/internal/engine/ingester/diff/diff.go @@ -28,7 +28,7 @@ import ( "google.golang.org/protobuf/reflect/protoreflect" engif "github.com/stacklok/minder/internal/engine/interfaces" - "github.com/stacklok/minder/internal/engine/models" + pbinternal "github.com/stacklok/minder/internal/proto" pb "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" provifv1 "github.com/stacklok/minder/pkg/providers/v1" ) @@ -95,7 +95,7 @@ func (di *Diff) Ingest( page := 0 switch di.cfg.GetType() { case "", pb.DiffTypeDep: - allDiffs := make([]models.ContextualDependency, 0) + allDiffs := make([]*pbinternal.PrDependencies_ContextualDependency, 0) for { prFiles, resp, err := di.cli.ListFiles(ctx, pr.RepoOwner, pr.RepoName, int(pr.Number), prFilesPerPage, page) if err != nil { @@ -118,14 +118,14 @@ func (di *Diff) Ingest( } return &engif.Result{ - Object: &models.PRDependencies{ - PR: pr, + Object: &pbinternal.PrDependencies{ + Pr: pr, Deps: allDiffs, }, }, nil case pb.DiffTypeFull: - allDiffs := make([]models.PRFile, 0) + allDiffs := make([]*pbinternal.PrContents_File, 0) for { prFiles, resp, err := di.cli.ListFiles(ctx, pr.RepoOwner, pr.RepoName, int(pr.Number), prFilesPerPage, page) if err != nil { @@ -137,7 +137,7 @@ func (di *Diff) Ingest( if err != nil { return nil, fmt.Errorf("error ingesting file %s: %w", file.GetFilename(), err) } - allDiffs = append(allDiffs, *fileDiffs) + allDiffs = append(allDiffs, fileDiffs) } if resp.NextPage == 0 { @@ -148,8 +148,8 @@ func (di *Diff) Ingest( } return &engif.Result{ - Object: models.PRContents{ - PR: pr, + Object: &pbinternal.PrContents{ + Pr: pr, Files: allDiffs, }, }, nil @@ -162,7 +162,7 @@ func (di *Diff) Ingest( func (di *Diff) ingestFileForDepDiff( filename, patchContents, patchUrl string, logger zerolog.Logger, -) ([]models.ContextualDependency, error) { +) ([]*pbinternal.PrDependencies_ContextualDependency, error) { parser := di.getParserForFile(filename, logger) if parser == nil { return nil, nil @@ -173,13 +173,14 @@ func (di *Diff) ingestFileForDepDiff( return nil, fmt.Errorf("error parsing file %s: %w", filename, err) } - batchCtxDeps := make([]models.ContextualDependency, 0, len(depBatch)) - for _, dep := range depBatch { - batchCtxDeps = append(batchCtxDeps, models.ContextualDependency{ + batchCtxDeps := make([]*pbinternal.PrDependencies_ContextualDependency, 0, len(depBatch)) + for i := range depBatch { + dep := depBatch[i] + batchCtxDeps = append(batchCtxDeps, &pbinternal.PrDependencies_ContextualDependency{ Dep: dep, - File: models.FilePatch{ + File: &pbinternal.PrDependencies_ContextualDependency_FilePatch{ Name: filename, - PatchURL: patchUrl, + PatchUrl: patchUrl, }, }) } @@ -191,8 +192,8 @@ func (di *Diff) ingestFileForDepDiff( // It scans through the patch line by line, identifying the changes made. // If it's a hunk header, it extracts the starting line number. If it's an addition, it records the line content and its number. // The function also increments the line number for context lines (lines that provide context but haven't been modified). -func ingestFileForFullDiff(filename, patch, patchUrl string) (*models.PRFile, error) { - var result []models.PRFileLine +func ingestFileForFullDiff(filename, patch, patchUrl string) (*pbinternal.PrContents_File, error) { + var result []*pbinternal.PrContents_File_Line scanner := bufio.NewScanner(strings.NewReader(patch)) regex := regexp.MustCompile(`@@ -\d+,\d+ \+(\d+),\d+ @@`) @@ -208,7 +209,7 @@ func ingestFileForFullDiff(filename, patch, patchUrl string) (*models.PRFile, er return nil, fmt.Errorf("error parsing line number from the hunk header: %w", err) } } else if strings.HasPrefix(line, "+") { - result = append(result, models.PRFileLine{ + result = append(result, &pbinternal.PrContents_File_Line{ Content: line[1:], // see the use of strconv.ParseInt above: this is a safe downcast LineNumber: int32(currentLineNumber), @@ -224,9 +225,9 @@ func ingestFileForFullDiff(filename, patch, patchUrl string) (*models.PRFile, er return nil, fmt.Errorf("error reading patch: %w", err) } - return &models.PRFile{ + return &pbinternal.PrContents_File{ Name: filename, - FilePatchURL: patchUrl, + FilePatchUrl: patchUrl, PatchLines: result, }, nil } diff --git a/internal/engine/ingester/diff/parse.go b/internal/engine/ingester/diff/parse.go index 9768157b85..ff6cae2bb4 100644 --- a/internal/engine/ingester/diff/parse.go +++ b/internal/engine/ingester/diff/parse.go @@ -22,7 +22,7 @@ import ( "slices" "strings" - "github.com/stacklok/minder/internal/engine/models" + pbinternal "github.com/stacklok/minder/internal/proto" "github.com/stacklok/minder/internal/util" ) @@ -31,7 +31,7 @@ var ( dependencyNameRegex = regexp.MustCompile(`\s*"([^"]+)"\s*:\s*{\s*`) ) -type ecosystemParser func(string) ([]models.Dependency, error) +type ecosystemParser func(string) ([]*pbinternal.Dependency, error) func newEcosystemParser(eco DependencyEcosystem) ecosystemParser { switch strings.ToLower(string(eco)) { @@ -50,8 +50,8 @@ func newEcosystemParser(eco DependencyEcosystem) ecosystemParser { } } -func requirementsParse(patch string) ([]models.Dependency, error) { - var deps []models.Dependency +func requirementsParse(patch string) ([]*pbinternal.Dependency, error) { + var deps []*pbinternal.Dependency scanner := bufio.NewScanner(strings.NewReader(patch)) for scanner.Scan() { @@ -122,9 +122,9 @@ func pyReqNormalizeLine(line string) string { return strings.TrimSpace(line) } -func pyReqAddPkgName(depList []models.Dependency, pkgName, version string) []models.Dependency { - dep := models.Dependency{ - Ecosystem: models.PyPIDependency, +func pyReqAddPkgName(depList []*pbinternal.Dependency, pkgName, version string) []*pbinternal.Dependency { + dep := &pbinternal.Dependency{ + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: pyNormalizeName(pkgName), Version: version, } @@ -137,8 +137,8 @@ func pyNormalizeName(pkgName string) string { return strings.ToLower(result) } -func goParse(patch string) ([]models.Dependency, error) { - var deps []models.Dependency +func goParse(patch string) ([]*pbinternal.Dependency, error) { + var deps []*pbinternal.Dependency scanner := bufio.NewScanner(strings.NewReader(patch)) // Iterate over the lines of the go.mod patch and parse the dependencies @@ -147,7 +147,7 @@ func goParse(patch string) ([]models.Dependency, error) { dep := extractGoDepFromPatchLine(scanner.Text()) // If we failed to extract a dependency, or if it's already in the slice, skip it - if dep == nil || slices.ContainsFunc(deps, func(n models.Dependency) bool { + if dep == nil || slices.ContainsFunc(deps, func(n *pbinternal.Dependency) bool { if n.Name == dep.Name && n.Version == dep.Version { return true } @@ -157,7 +157,7 @@ func goParse(patch string) ([]models.Dependency, error) { } // Add the dependency to the slice - deps = append(deps, *dep) + deps = append(deps, dep) } if err := scanner.Err(); err != nil { return nil, err @@ -165,7 +165,7 @@ func goParse(patch string) ([]models.Dependency, error) { return deps, nil } -func extractGoDepFromPatchLine(line string) *models.Dependency { +func extractGoDepFromPatchLine(line string) *pbinternal.Dependency { // Look for lines that add dependencies. // We ignore lines that contain "// indirect" because they are transitive dependencies, and therefore // not actionable. @@ -179,8 +179,8 @@ func extractGoDepFromPatchLine(line string) *models.Dependency { return nil } - dep := &models.Dependency{ - Ecosystem: models.GoDependency, + dep := &pbinternal.Dependency{ + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_GO, } if fields[0] == "require" && fields[1] != "(" && len(fields) >= 3 { dep.Name = fields[1] @@ -204,10 +204,10 @@ func extractGoDepFromPatchLine(line string) *models.Dependency { return nil } -func npmParse(patch string) ([]models.Dependency, error) { +func npmParse(patch string) ([]*pbinternal.Dependency, error) { lines := strings.Split(patch, "\n") - var deps []models.Dependency + var deps []*pbinternal.Dependency for i, line := range lines { // Check if the line contains a version @@ -218,8 +218,8 @@ func npmParse(patch string) ([]models.Dependency, error) { // The version is not always a dependency version. It may also be the version of the package in this repo, // or the version of the root project. See https://docs.npmjs.com/cli/v10/configuring-npm/package-lock-json if name != "" { - deps = append(deps, models.Dependency{ - Ecosystem: models.NPMDependency, + deps = append(deps, &pbinternal.Dependency{ + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, Name: name, Version: version, }) diff --git a/internal/engine/ingester/diff/parse_test.go b/internal/engine/ingester/diff/parse_test.go index 4690334a0b..151e73183b 100644 --- a/internal/engine/ingester/diff/parse_test.go +++ b/internal/engine/ingester/diff/parse_test.go @@ -19,8 +19,9 @@ import ( "testing" "github.com/stretchr/testify/assert" + "google.golang.org/protobuf/proto" - "github.com/stacklok/minder/internal/engine/models" + pbinternal "github.com/stacklok/minder/internal/proto" ) func TestGoParse(t *testing.T) { @@ -30,7 +31,7 @@ func TestGoParse(t *testing.T) { description string content string expectedCount int - expectedDependencies []models.Dependency + expectedDependencies []*pbinternal.Dependency }{ { description: "Single addition", @@ -40,9 +41,9 @@ func TestGoParse(t *testing.T) { github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 github.com/prometheus/client_golang v1.18.0`, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.GoDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_GO, Name: "github.com/openfga/openfga", Version: "v1.4.3", }, @@ -67,9 +68,9 @@ func TestGoParse(t *testing.T) { - gotest.tools/v3 v3.4.0 // indirect k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect`, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.GoDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_GO, Name: "go.opentelemetry.io/proto/otlp", Version: "v1.0.0", }, @@ -85,7 +86,7 @@ func TestGoParse(t *testing.T) { - gotest.tools/v3 v3.4.0 // indirect k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect`, expectedCount: 0, - expectedDependencies: []models.Dependency{}, + expectedDependencies: []*pbinternal.Dependency{}, }, { description: "Replace", @@ -96,9 +97,9 @@ func TestGoParse(t *testing.T) { + +replace github.com/opencontainers/runc => github.com/stacklok/runc v1.1.12`, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.GoDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_GO, Name: "github.com/stacklok/runc", Version: "v1.1.12", }, @@ -113,7 +114,7 @@ func TestGoParse(t *testing.T) { + +replace github.com/opencontainers/runc => `, expectedCount: 0, - expectedDependencies: []models.Dependency{}, + expectedDependencies: []*pbinternal.Dependency{}, }, { description: "Bad Require", @@ -124,7 +125,7 @@ func TestGoParse(t *testing.T) { + +require github.com/opencontainers/runc`, expectedCount: 0, - expectedDependencies: []models.Dependency{}, + expectedDependencies: []*pbinternal.Dependency{}, }, } for _, tt := range tests { @@ -139,7 +140,7 @@ func TestGoParse(t *testing.T) { assert.Equal(t, tt.expectedCount, len(got), "mismatched dependency count") for i, expectedDep := range tt.expectedDependencies { - if expectedDep != got[i] { + if !proto.Equal(expectedDep, got[i]) { t.Errorf("mismatch at index %d: expected %v, got %v", i, expectedDep, got[i]) } } @@ -154,7 +155,7 @@ func TestPyPiParse(t *testing.T) { description string content string expectedCount int - expectedDependencies []models.Dependency + expectedDependencies []*pbinternal.Dependency }{ { description: "Single addition, exact version", @@ -162,9 +163,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests==2.19.0`, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.PyPIDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "requests", Version: "2.19.0", }, @@ -177,9 +178,9 @@ func TestPyPiParse(t *testing.T) { +# this version has a CVE +requests==2.19.0`, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.PyPIDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "requests", Version: "2.19.0", }, @@ -192,9 +193,9 @@ func TestPyPiParse(t *testing.T) { + +requests==2.19.0`, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.PyPIDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "requests", Version: "2.19.0", }, @@ -206,9 +207,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests>=2.19.0`, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.PyPIDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "requests", Version: "2.19.0", }, @@ -220,9 +221,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests>=2.19.0`, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.PyPIDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "requests", Version: "2.19.0", }, @@ -234,9 +235,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests==2.19.0 # this version has a CVE`, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.PyPIDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "requests", Version: "2.19.0", }, @@ -248,9 +249,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests==2.*`, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.PyPIDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "requests", Version: "2", }, @@ -262,9 +263,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests`, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.PyPIDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "requests", Version: "", }, @@ -276,9 +277,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests<=2.19.0`, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.PyPIDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "requests", Version: "2.19.0", }, @@ -290,9 +291,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests<3,>=2.0`, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.PyPIDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "requests", Version: "2.0", }, @@ -304,9 +305,9 @@ func TestPyPiParse(t *testing.T) { Flask +requests>=2.0,<3`, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.PyPIDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "requests", Version: "2.0", }, @@ -320,20 +321,19 @@ func TestPyPiParse(t *testing.T) { +pandas<0.25.0,>=0.24.0 +numpy==1.16.0`, expectedCount: 3, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.PyPIDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "requests", Version: "2.0", }, { - - Ecosystem: models.PyPIDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "pandas", Version: "0.24.0", }, { - Ecosystem: models.PyPIDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "numpy", Version: "1.16.0", }, @@ -346,7 +346,7 @@ func TestPyPiParse(t *testing.T) { # just a comment `, expectedCount: 0, - expectedDependencies: []models.Dependency{}, + expectedDependencies: []*pbinternal.Dependency{}, }, { description: "Single addition, uppercase", @@ -354,9 +354,9 @@ func TestPyPiParse(t *testing.T) { Flask + Django==3.2.21`, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.PyPIDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_PYPI, Name: "django", Version: "3.2.21", }, @@ -375,7 +375,7 @@ func TestPyPiParse(t *testing.T) { assert.Equal(t, tt.expectedCount, len(got), "mismatched dependency count") for i, expectedDep := range tt.expectedDependencies { - if expectedDep != got[i] { + if !proto.Equal(expectedDep, got[i]) { t.Errorf("mismatch at index %d: expected %v, got %v", i, expectedDep, got[i]) } } @@ -390,7 +390,7 @@ func TestNpmParse(t *testing.T) { description string content string expectedCount int - expectedDependencies []models.Dependency + expectedDependencies []*pbinternal.Dependency }{ { description: "New dependency addition", @@ -418,9 +418,9 @@ func TestNpmParse(t *testing.T) { "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", `, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.NPMDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, Name: "chalk", Version: "5.3.0", }, @@ -443,9 +443,9 @@ func TestNpmParse(t *testing.T) { } `, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.NPMDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, Name: "lodash", Version: "4.17.21", }, @@ -477,9 +477,9 @@ func TestNpmParse(t *testing.T) { +} `, expectedCount: 1, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.NPMDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, Name: "lodash", Version: "4.17.21", }, @@ -517,14 +517,14 @@ func TestNpmParse(t *testing.T) { } `, expectedCount: 2, - expectedDependencies: []models.Dependency{ + expectedDependencies: []*pbinternal.Dependency{ { - Ecosystem: models.NPMDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, Name: "@types/node", Version: "20.9.0", }, { - Ecosystem: models.NPMDependency, + Ecosystem: pbinternal.DepEcosystem_DEP_ECOSYSTEM_NPM, Name: "undici-types", Version: "5.26.5", }, @@ -543,7 +543,7 @@ func TestNpmParse(t *testing.T) { assert.Equal(t, tt.expectedCount, len(got), "mismatched dependency count") for i, expectedDep := range tt.expectedDependencies { - if expectedDep != got[i] { + if !proto.Equal(expectedDep, got[i]) { t.Errorf("mismatch at index %d: expected %v, got %v", i, expectedDep, got[i]) } } diff --git a/internal/engine/models/models.go b/internal/engine/models/models.go deleted file mode 100644 index e04d6c74ab..0000000000 --- a/internal/engine/models/models.go +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2024 Stacklok, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package models contains domain models used by the engine -package models - -import pb "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" - -// DependencyEcosystem represents an enum of dependency languages -type DependencyEcosystem string - -// Enumerated values of DependencyEcosystem -const ( - NPMDependency DependencyEcosystem = "npm" - GoDependency DependencyEcosystem = "go" - PyPIDependency DependencyEcosystem = "pypi" -) - -// Dependency represents a package -type Dependency struct { - Ecosystem DependencyEcosystem - Name string - Version string -} - -// FilePatch represents the patch which introduced a dependency -type FilePatch struct { - Name string - PatchURL string -} - -// ContextualDependency represents a dependency along with where it was imported -type ContextualDependency struct { - Dep Dependency - File FilePatch -} - -// PRDependencies represents the dependencies introduced in a PR -type PRDependencies struct { - PR *pb.PullRequest - Deps []ContextualDependency -} - -// PRFileLine represents a changed line in a file in a PR -type PRFileLine struct { - // Deliberately left as an int32: a diff with more than 2^31 lines - // could lead to various problems while processing. - LineNumber int32 - Content string -} - -// PRFile represents a file within a PR -type PRFile struct { - Name string - FilePatchURL string - PatchLines []PRFileLine -} - -// PRContents represents a PR and its changes -type PRContents struct { - PR *pb.PullRequest - Files []PRFile -} diff --git a/internal/proto/internal.pb.go b/internal/proto/internal.pb.go index f1de3721a4..b2fb96739b 100644 --- a/internal/proto/internal.pb.go +++ b/internal/proto/internal.pb.go @@ -24,9 +24,11 @@ package proto import ( + v1 "github.com/stacklok/minder/pkg/api/protobuf/go/minder/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" + sync "sync" ) const ( @@ -36,23 +38,566 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type DepEcosystem int32 + +const ( + DepEcosystem_DEP_ECOSYSTEM_UNSPECIFIED DepEcosystem = 0 + DepEcosystem_DEP_ECOSYSTEM_NPM DepEcosystem = 1 + DepEcosystem_DEP_ECOSYSTEM_GO DepEcosystem = 2 + DepEcosystem_DEP_ECOSYSTEM_PYPI DepEcosystem = 3 +) + +// Enum value maps for DepEcosystem. +var ( + DepEcosystem_name = map[int32]string{ + 0: "DEP_ECOSYSTEM_UNSPECIFIED", + 1: "DEP_ECOSYSTEM_NPM", + 2: "DEP_ECOSYSTEM_GO", + 3: "DEP_ECOSYSTEM_PYPI", + } + DepEcosystem_value = map[string]int32{ + "DEP_ECOSYSTEM_UNSPECIFIED": 0, + "DEP_ECOSYSTEM_NPM": 1, + "DEP_ECOSYSTEM_GO": 2, + "DEP_ECOSYSTEM_PYPI": 3, + } +) + +func (x DepEcosystem) Enum() *DepEcosystem { + p := new(DepEcosystem) + *p = x + return p +} + +func (x DepEcosystem) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DepEcosystem) Descriptor() protoreflect.EnumDescriptor { + return file_internal_proto_enumTypes[0].Descriptor() +} + +func (DepEcosystem) Type() protoreflect.EnumType { + return &file_internal_proto_enumTypes[0] +} + +func (x DepEcosystem) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DepEcosystem.Descriptor instead. +func (DepEcosystem) EnumDescriptor() ([]byte, []int) { + return file_internal_proto_rawDescGZIP(), []int{0} +} + +type Dependency struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ecosystem DepEcosystem `protobuf:"varint,1,opt,name=ecosystem,proto3,enum=internal.DepEcosystem" json:"ecosystem,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` +} + +func (x *Dependency) Reset() { + *x = Dependency{} + if protoimpl.UnsafeEnabled { + mi := &file_internal_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Dependency) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Dependency) ProtoMessage() {} + +func (x *Dependency) ProtoReflect() protoreflect.Message { + mi := &file_internal_proto_msgTypes[0] + 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 Dependency.ProtoReflect.Descriptor instead. +func (*Dependency) Descriptor() ([]byte, []int) { + return file_internal_proto_rawDescGZIP(), []int{0} +} + +func (x *Dependency) GetEcosystem() DepEcosystem { + if x != nil { + return x.Ecosystem + } + return DepEcosystem_DEP_ECOSYSTEM_UNSPECIFIED +} + +func (x *Dependency) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Dependency) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +type PrDependencies struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pr *v1.PullRequest `protobuf:"bytes,1,opt,name=pr,proto3" json:"pr,omitempty"` + Deps []*PrDependencies_ContextualDependency `protobuf:"bytes,2,rep,name=deps,proto3" json:"deps,omitempty"` +} + +func (x *PrDependencies) Reset() { + *x = PrDependencies{} + if protoimpl.UnsafeEnabled { + mi := &file_internal_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PrDependencies) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrDependencies) ProtoMessage() {} + +func (x *PrDependencies) ProtoReflect() protoreflect.Message { + mi := &file_internal_proto_msgTypes[1] + 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 PrDependencies.ProtoReflect.Descriptor instead. +func (*PrDependencies) Descriptor() ([]byte, []int) { + return file_internal_proto_rawDescGZIP(), []int{1} +} + +func (x *PrDependencies) GetPr() *v1.PullRequest { + if x != nil { + return x.Pr + } + return nil +} + +func (x *PrDependencies) GetDeps() []*PrDependencies_ContextualDependency { + if x != nil { + return x.Deps + } + return nil +} + +type PrContents struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pr *v1.PullRequest `protobuf:"bytes,1,opt,name=pr,proto3" json:"pr,omitempty"` + Files []*PrContents_File `protobuf:"bytes,2,rep,name=files,proto3" json:"files,omitempty"` +} + +func (x *PrContents) Reset() { + *x = PrContents{} + if protoimpl.UnsafeEnabled { + mi := &file_internal_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PrContents) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrContents) ProtoMessage() {} + +func (x *PrContents) ProtoReflect() protoreflect.Message { + mi := &file_internal_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PrContents.ProtoReflect.Descriptor instead. +func (*PrContents) Descriptor() ([]byte, []int) { + return file_internal_proto_rawDescGZIP(), []int{2} +} + +func (x *PrContents) GetPr() *v1.PullRequest { + if x != nil { + return x.Pr + } + return nil +} + +func (x *PrContents) GetFiles() []*PrContents_File { + if x != nil { + return x.Files + } + return nil +} + +type PrDependencies_ContextualDependency struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Dep *Dependency `protobuf:"bytes,1,opt,name=dep,proto3" json:"dep,omitempty"` + File *PrDependencies_ContextualDependency_FilePatch `protobuf:"bytes,2,opt,name=file,proto3" json:"file,omitempty"` +} + +func (x *PrDependencies_ContextualDependency) Reset() { + *x = PrDependencies_ContextualDependency{} + if protoimpl.UnsafeEnabled { + mi := &file_internal_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PrDependencies_ContextualDependency) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrDependencies_ContextualDependency) ProtoMessage() {} + +func (x *PrDependencies_ContextualDependency) ProtoReflect() protoreflect.Message { + mi := &file_internal_proto_msgTypes[3] + 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 PrDependencies_ContextualDependency.ProtoReflect.Descriptor instead. +func (*PrDependencies_ContextualDependency) Descriptor() ([]byte, []int) { + return file_internal_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *PrDependencies_ContextualDependency) GetDep() *Dependency { + if x != nil { + return x.Dep + } + return nil +} + +func (x *PrDependencies_ContextualDependency) GetFile() *PrDependencies_ContextualDependency_FilePatch { + if x != nil { + return x.File + } + return nil +} + +type PrDependencies_ContextualDependency_FilePatch struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // file changed, e.g. package-lock.json + PatchUrl string `protobuf:"bytes,2,opt,name=patch_url,json=patchUrl,proto3" json:"patch_url,omitempty"` // points to the the raw patchfile +} + +func (x *PrDependencies_ContextualDependency_FilePatch) Reset() { + *x = PrDependencies_ContextualDependency_FilePatch{} + if protoimpl.UnsafeEnabled { + mi := &file_internal_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PrDependencies_ContextualDependency_FilePatch) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrDependencies_ContextualDependency_FilePatch) ProtoMessage() {} + +func (x *PrDependencies_ContextualDependency_FilePatch) ProtoReflect() protoreflect.Message { + mi := &file_internal_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PrDependencies_ContextualDependency_FilePatch.ProtoReflect.Descriptor instead. +func (*PrDependencies_ContextualDependency_FilePatch) Descriptor() ([]byte, []int) { + return file_internal_proto_rawDescGZIP(), []int{1, 0, 0} +} + +func (x *PrDependencies_ContextualDependency_FilePatch) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PrDependencies_ContextualDependency_FilePatch) GetPatchUrl() string { + if x != nil { + return x.PatchUrl + } + return "" +} + +type PrContents_File struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + FilePatchUrl string `protobuf:"bytes,2,opt,name=file_patch_url,json=filePatchUrl,proto3" json:"file_patch_url,omitempty"` + PatchLines []*PrContents_File_Line `protobuf:"bytes,3,rep,name=patch_lines,json=patchLines,proto3" json:"patch_lines,omitempty"` +} + +func (x *PrContents_File) Reset() { + *x = PrContents_File{} + if protoimpl.UnsafeEnabled { + mi := &file_internal_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PrContents_File) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrContents_File) ProtoMessage() {} + +func (x *PrContents_File) ProtoReflect() protoreflect.Message { + mi := &file_internal_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PrContents_File.ProtoReflect.Descriptor instead. +func (*PrContents_File) Descriptor() ([]byte, []int) { + return file_internal_proto_rawDescGZIP(), []int{2, 0} +} + +func (x *PrContents_File) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PrContents_File) GetFilePatchUrl() string { + if x != nil { + return x.FilePatchUrl + } + return "" +} + +func (x *PrContents_File) GetPatchLines() []*PrContents_File_Line { + if x != nil { + return x.PatchLines + } + return nil +} + +type PrContents_File_Line struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Deliberately left as an int32: a diff with more than 2^31 lines + // could lead to various problems while processing. + LineNumber int32 `protobuf:"varint,1,opt,name=line_number,json=lineNumber,proto3" json:"line_number,omitempty"` + Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` +} + +func (x *PrContents_File_Line) Reset() { + *x = PrContents_File_Line{} + if protoimpl.UnsafeEnabled { + mi := &file_internal_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PrContents_File_Line) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrContents_File_Line) ProtoMessage() {} + +func (x *PrContents_File_Line) ProtoReflect() protoreflect.Message { + mi := &file_internal_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PrContents_File_Line.ProtoReflect.Descriptor instead. +func (*PrContents_File_Line) Descriptor() ([]byte, []int) { + return file_internal_proto_rawDescGZIP(), []int{2, 0, 0} +} + +func (x *PrContents_File_Line) GetLineNumber() int32 { + if x != nil { + return x.LineNumber + } + return 0 +} + +func (x *PrContents_File_Line) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + var File_internal_proto protoreflect.FileDescriptor var file_internal_proto_rawDesc = []byte{ 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x12, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x6c, 0x6f, - 0x6b, 0x2f, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x1a, 0x16, 0x6d, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x70, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, + 0x12, 0x34, 0x0a, 0x09, 0x65, 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x44, + 0x65, 0x70, 0x45, 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x09, 0x65, 0x63, 0x6f, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc7, 0x02, 0x0a, 0x0e, 0x50, 0x72, 0x44, 0x65, 0x70, 0x65, 0x6e, + 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x02, 0x70, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x02, 0x70, 0x72, 0x12, + 0x41, 0x0a, 0x04, 0x64, 0x65, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x50, 0x72, 0x44, 0x65, 0x70, 0x65, 0x6e, + 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, + 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x04, 0x64, 0x65, + 0x70, 0x73, 0x1a, 0xc9, 0x01, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, + 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x64, + 0x65, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x03, + 0x64, 0x65, 0x70, 0x12, 0x4b, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x37, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x50, 0x72, 0x44, + 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, + 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, + 0x1a, 0x3c, 0x0a, 0x09, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x74, 0x63, 0x68, 0x55, 0x72, 0x6c, 0x22, 0xac, + 0x02, 0x0a, 0x0a, 0x50, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, + 0x02, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x52, 0x02, 0x70, 0x72, 0x12, 0x2f, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, + 0x50, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, + 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0xc4, 0x01, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x63, + 0x68, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x69, 0x6c, + 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x55, 0x72, 0x6c, 0x12, 0x3f, 0x0a, 0x0b, 0x70, 0x61, 0x74, + 0x63, 0x68, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x50, 0x72, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x2e, 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x0a, + 0x70, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x1a, 0x41, 0x0a, 0x04, 0x4c, 0x69, + 0x6e, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2a, 0x72, 0x0a, + 0x0c, 0x44, 0x65, 0x70, 0x45, 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1d, 0x0a, + 0x19, 0x44, 0x45, 0x50, 0x5f, 0x45, 0x43, 0x4f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, + 0x44, 0x45, 0x50, 0x5f, 0x45, 0x43, 0x4f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x4e, 0x50, + 0x4d, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x45, 0x50, 0x5f, 0x45, 0x43, 0x4f, 0x53, 0x59, + 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x47, 0x4f, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x50, + 0x5f, 0x45, 0x43, 0x4f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x59, 0x50, 0x49, 0x10, + 0x03, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x6c, 0x6f, 0x6b, 0x2f, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_internal_proto_rawDescOnce sync.Once + file_internal_proto_rawDescData = file_internal_proto_rawDesc +) + +func file_internal_proto_rawDescGZIP() []byte { + file_internal_proto_rawDescOnce.Do(func() { + file_internal_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_proto_rawDescData) + }) + return file_internal_proto_rawDescData } -var file_internal_proto_goTypes = []any{} +var file_internal_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_internal_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_internal_proto_goTypes = []any{ + (DepEcosystem)(0), // 0: internal.DepEcosystem + (*Dependency)(nil), // 1: internal.Dependency + (*PrDependencies)(nil), // 2: internal.PrDependencies + (*PrContents)(nil), // 3: internal.PrContents + (*PrDependencies_ContextualDependency)(nil), // 4: internal.PrDependencies.ContextualDependency + (*PrDependencies_ContextualDependency_FilePatch)(nil), // 5: internal.PrDependencies.ContextualDependency.FilePatch + (*PrContents_File)(nil), // 6: internal.PrContents.File + (*PrContents_File_Line)(nil), // 7: internal.PrContents.File.Line + (*v1.PullRequest)(nil), // 8: minder.v1.PullRequest +} var file_internal_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name + 0, // 0: internal.Dependency.ecosystem:type_name -> internal.DepEcosystem + 8, // 1: internal.PrDependencies.pr:type_name -> minder.v1.PullRequest + 4, // 2: internal.PrDependencies.deps:type_name -> internal.PrDependencies.ContextualDependency + 8, // 3: internal.PrContents.pr:type_name -> minder.v1.PullRequest + 6, // 4: internal.PrContents.files:type_name -> internal.PrContents.File + 1, // 5: internal.PrDependencies.ContextualDependency.dep:type_name -> internal.Dependency + 5, // 6: internal.PrDependencies.ContextualDependency.file:type_name -> internal.PrDependencies.ContextualDependency.FilePatch + 7, // 7: internal.PrContents.File.patch_lines:type_name -> internal.PrContents.File.Line + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_internal_proto_init() } @@ -60,18 +605,106 @@ func file_internal_proto_init() { if File_internal_proto != nil { return } + if !protoimpl.UnsafeEnabled { + file_internal_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*Dependency); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_internal_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*PrDependencies); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_internal_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*PrContents); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_internal_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*PrDependencies_ContextualDependency); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_internal_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*PrDependencies_ContextualDependency_FilePatch); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_internal_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*PrContents_File); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_internal_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*PrContents_File_Line); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_internal_proto_rawDesc, - NumEnums: 0, - NumMessages: 0, + NumEnums: 1, + NumMessages: 7, NumExtensions: 0, NumServices: 0, }, GoTypes: file_internal_proto_goTypes, DependencyIndexes: file_internal_proto_depIdxs, + EnumInfos: file_internal_proto_enumTypes, + MessageInfos: file_internal_proto_msgTypes, }.Build() File_internal_proto = out.File file_internal_proto_rawDesc = nil diff --git a/internal/proto/internal.proto b/internal/proto/internal.proto index 1903430a31..771858e7a9 100644 --- a/internal/proto/internal.proto +++ b/internal/proto/internal.proto @@ -18,10 +18,53 @@ syntax = "proto3"; // buf:lint:ignore PACKAGE_VERSION_SUFFIX package internal; +import "minder/v1/minder.proto"; + option go_package = "github.com/stacklok/minder/internal/proto"; -/* - * NOTE: Prefer Go structs over internal-only protobuf definitions unless - * there is a really strong case for using protobufs, e.g. interacting - * with a library which expects protobuf structs. - */ \ No newline at end of file +enum DepEcosystem { + DEP_ECOSYSTEM_UNSPECIFIED = 0; + DEP_ECOSYSTEM_NPM = 1; + DEP_ECOSYSTEM_GO = 2; + DEP_ECOSYSTEM_PYPI = 3; +} + +message Dependency { + DepEcosystem ecosystem = 1; + + string name = 2; + string version = 3; +} + +message PrDependencies { + message ContextualDependency { + message FilePatch { + string name = 1; // file changed, e.g. package-lock.json + string patch_url = 2; // points to the the raw patchfile + } + + Dependency dep = 1; + FilePatch file = 2; + } + + minder.v1.PullRequest pr = 1; + repeated ContextualDependency deps = 2; +} + +message PrContents { + message File { + string name = 1; + string file_patch_url = 2; + repeated Line patch_lines = 3; + + message Line { + // Deliberately left as an int32: a diff with more than 2^31 lines + // could lead to various problems while processing. + int32 line_number = 1; + string content = 2; + } + } + + minder.v1.PullRequest pr = 1; + repeated File files = 2; +} \ No newline at end of file diff --git a/internal/proto/pkg_ecosystems.go b/internal/proto/pkg_ecosystems.go new file mode 100644 index 0000000000..fe4f00b4e5 --- /dev/null +++ b/internal/proto/pkg_ecosystems.go @@ -0,0 +1,32 @@ +// Copyright 2023 Stacklok, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package proto + +// AsString returns the string representation of the DepEcosystem +func (ecosystem DepEcosystem) AsString() string { + switch ecosystem { + case DepEcosystem_DEP_ECOSYSTEM_NPM: + return "npm" + case DepEcosystem_DEP_ECOSYSTEM_GO: + return "Go" + case DepEcosystem_DEP_ECOSYSTEM_PYPI: + return "PyPI" + case DepEcosystem_DEP_ECOSYSTEM_UNSPECIFIED: + // this shouldn't happen + return "" + default: + return "" + } +} From a37860e15c625de76a56b0fd793580cb1a46e49e Mon Sep 17 00:00:00 2001 From: Juan Antonio Osorio Date: Mon, 15 Jul 2024 11:54:38 +0300 Subject: [PATCH 14/16] Add Execution ID in the executor's evaluation param logs (#3889) The execution ID is very handy to link together a single run when debugging Minder. Unfortunately, it's not set everywhere... so let's do that! This way, we'll be able to better debug minder throughout the execution of policy for an entity. Signed-off-by: Juan Antonio Osorio --- internal/engine/eval_status.go | 1 + internal/engine/interfaces/interface.go | 2 ++ 2 files changed, 3 insertions(+) diff --git a/internal/engine/eval_status.go b/internal/engine/eval_status.go index 789361a2cc..c4eedbe24f 100644 --- a/internal/engine/eval_status.go +++ b/internal/engine/eval_status.go @@ -55,6 +55,7 @@ func (e *executor) createEvalStatusParams( ArtifactID: artID, PullRequestID: prID, ProjectID: inf.ProjectID, + ExecutionID: *inf.ExecutionID, // Execution ID is required in the executor. } // Prepare params for fetching the current rule evaluation from the database diff --git a/internal/engine/interfaces/interface.go b/internal/engine/interfaces/interface.go index c370cd8dad..b38cf9d2b3 100644 --- a/internal/engine/interfaces/interface.go +++ b/internal/engine/interfaces/interface.go @@ -147,6 +147,7 @@ type EvalStatusParams struct { evalErr error actionsOnOff map[ActionType]ActionOpt actionsErr evalerrors.ActionsError + ExecutionID uuid.UUID } // Ensure EvalStatusParams implements the necessary interfaces @@ -250,6 +251,7 @@ func (e *EvalStatusParams) DecorateLogger(l zerolog.Logger) zerolog.Logger { Str("rule_type", e.GetRule().GetType()). Str("rule_name", e.GetRule().GetName()). Str("rule_type_id", e.GetRuleTypeID().String()). + Str("execution_id", e.ExecutionID.String()). Logger() if e.RepoID.Valid { outl = outl.With().Str("repository_id", e.RepoID.UUID.String()).Logger() From 23df4b30c68845dd2f3d9c2452f424c3c1def2c0 Mon Sep 17 00:00:00 2001 From: Don Browne Date: Mon, 15 Jul 2024 10:53:45 +0100 Subject: [PATCH 15/16] Give metric attributes unique names (#3891) From experimentation, it seems that attributes of the same name in different metrics are shared. This leads to, for example, alert status types showing up in the remediation graph. --- internal/engine/metrics.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/engine/metrics.go b/internal/engine/metrics.go index 47e8e30b71..f26d65b82f 100644 --- a/internal/engine/metrics.go +++ b/internal/engine/metrics.go @@ -89,8 +89,8 @@ func (e *ExecutorMetrics) CountEvalStatus( entityType db.Entities, ) { e.evalCounter.Add(ctx, 1, metric.WithAttributes( - attribute.String("entity_type", string(entityType)), - attribute.String("status", string(status)), + attribute.String("eval_entity_type", string(entityType)), + attribute.String("eval_status_type", string(status)), )) } @@ -100,7 +100,7 @@ func (e *ExecutorMetrics) CountRemediationStatus( status db.RemediationStatusTypes, ) { e.evalCounter.Add(ctx, 1, metric.WithAttributes( - attribute.String("status", string(status)), + attribute.String("remediation_status_type", string(status)), )) } @@ -110,7 +110,7 @@ func (e *ExecutorMetrics) CountAlertStatus( status db.AlertStatusTypes, ) { e.evalCounter.Add(ctx, 1, metric.WithAttributes( - attribute.String("status", string(status)), + attribute.String("alert_status_type", string(status)), )) } From 3be7c67c2437de8da7512c214521463c4be2f709 Mon Sep 17 00:00:00 2001 From: Don Browne Date: Mon, 15 Jul 2024 11:38:49 +0100 Subject: [PATCH 16/16] Fix remediation/alert counter (#3892) The code was counting them against the eval status counter --- internal/engine/metrics.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/engine/metrics.go b/internal/engine/metrics.go index f26d65b82f..2e850807cc 100644 --- a/internal/engine/metrics.go +++ b/internal/engine/metrics.go @@ -59,14 +59,14 @@ func NewExecutorMetrics(meterFactory meters.MeterFactory) (*ExecutorMetrics, err return nil, fmt.Errorf("failed to create alert counter: %w", err) } - profileDuration, err := meter.Int64Histogram("eval.entity-eval-duration", + profileDuration, err := meter.Int64Histogram("eval.entity.duration", metric.WithDescription("Time taken to evaluate all profiles against an entity"), metric.WithUnit("milliseconds")) if err != nil { return nil, fmt.Errorf("failed to create profile histogram: %w", err) } - entityDuration, err := meter.Int64Histogram("eval.profile-eval-duration", + entityDuration, err := meter.Int64Histogram("eval.profile.duration", metric.WithDescription("Time taken to evaluate a single profile against an entity"), metric.WithUnit("milliseconds")) if err != nil { @@ -99,7 +99,7 @@ func (e *ExecutorMetrics) CountRemediationStatus( ctx context.Context, status db.RemediationStatusTypes, ) { - e.evalCounter.Add(ctx, 1, metric.WithAttributes( + e.remediationCounter.Add(ctx, 1, metric.WithAttributes( attribute.String("remediation_status_type", string(status)), )) } @@ -109,7 +109,7 @@ func (e *ExecutorMetrics) CountAlertStatus( ctx context.Context, status db.AlertStatusTypes, ) { - e.evalCounter.Add(ctx, 1, metric.WithAttributes( + e.alertCounter.Add(ctx, 1, metric.WithAttributes( attribute.String("alert_status_type", string(status)), )) }