From ec1ec5f7b73ee98c3eb948e885164add602d30bd Mon Sep 17 00:00:00 2001 From: Nishant Bangarwa Date: Thu, 28 May 2026 19:10:45 +0530 Subject: [PATCH] feat: personal canvas dashboards for Rill Cloud Lets project members (including viewers) create owner-only canvas dashboards in Rill Cloud, stored as virtual files in the admin DB. Gated by the new `personal_canvases` feature flag and the new `create_personal_canvases` project permission. Backend - New generic admin RPCs `Create/Edit/Delete/Copy/Get/ListPersonalVirtualFile` with a `PersonalVirtualFileType` enum (canvas in phase 1; extends to reports/alerts without new RPCs) - Per-type lookup table in `admin/server/personal_virtual_files.go` drives path layout, YAML validation, and required permission - `FindVirtualFilesByPrefix` for owner-scoped listing - Migration 0094 grants `create_personal_canvases` to roles with read_prod - `builtInCanvasSecurityRule` enforces owner-only access on admin-managed canvases (deny-by-default for non-owners) - New `CanvasSpec.annotations` field carries `admin_owner_user_id` and `admin_managed` through parse/reconcile - New runtime AI tool `create_personal_canvas` so the agent can build a canvas for the current user in Rill Developer Frontend - `VirtualFilePersistence` extends `FileArtifact`, overriding the new `putBlob` / `fetchBlob` hooks to route through the admin RPCs - `PersonalCanvasWorkspace` reuses `CanvasBuilder`, `CanvasEditor`, and `VisualCanvasEditing` from web-common for parity with Rill Developer's visual editor (add widget, resize, inspector panel, code/visual toggle, save-as-default) - `WorkspaceHeader` gains a `showBreadcrumbs` prop so cloud hosts can hide the file-tree breadcrumbs that only make sense locally - New project home section lists the caller's personal canvases with a "create from blank or copy" dialog - "Done editing" flushes pending edits, invalidates the canvas resource cache, and returns to the preview Co-Authored-By: Claude Opus 4.7 (1M context) --- admin/canvas.go | 31 + admin/database/database.go | 2 + admin/database/postgres/migrations/0094.sql | 2 + admin/database/postgres/postgres.go | 16 + admin/permissions.go | 5 + admin/server/personal_virtual_files.go | 618 + proto/gen/rill/admin/v1/admin.swagger.yaml | 273 + proto/gen/rill/admin/v1/api.pb.go | 14721 +++++++++------- proto/gen/rill/admin/v1/api.pb.gw.go | 918 + proto/gen/rill/admin/v1/api.pb.validate.go | 1707 ++ proto/gen/rill/admin/v1/api_grpc.pb.go | 240 + proto/gen/rill/admin/v1/openapi.yaml | 320 + proto/gen/rill/admin/v1/public.openapi.yaml | 69 + proto/gen/rill/runtime/v1/resources.pb.go | 206 +- .../rill/runtime/v1/resources.pb.validate.go | 2 + .../gen/rill/runtime/v1/runtime.swagger.yaml | 5 + proto/rill/admin/v1/api.proto | 132 + proto/rill/runtime/v1/resources.proto | 2 + runtime/ai/ai.go | 2 + runtime/ai/personal_canvas.go | 193 + runtime/feature_flags.go | 2 + runtime/parser/parse_canvas.go | 4 +- runtime/security.go | 58 +- web-admin/src/client/gen/default/default.ts | 720 + web-admin/src/client/gen/index.schemas.ts | 100 + .../CreatePersonalCanvasDialog.svelte | 133 + .../PersonalCanvasWorkspace.svelte | 229 + .../PersonalCanvasesList.svelte | 71 + .../VirtualFilePersistence.ts | 98 + .../features/personal-canvases/selectors.ts | 33 + .../[organization]/[project]/+page.svelte | 17 +- .../-/my-canvases/[name]/+page.svelte | 81 + .../[project]/-/my-canvases/[name]/+page.ts | 26 + .../entity-management/file-artifact.ts | 33 +- web-common/src/features/feature-flags.ts | 1 + .../layout/workspace/WorkspaceHeader.svelte | 18 +- .../src/proto/gen/rill/admin/v1/api_pb.ts | 695 + .../proto/gen/rill/runtime/v1/resources_pb.ts | 8 + 38 files changed, 14981 insertions(+), 6810 deletions(-) create mode 100644 admin/canvas.go create mode 100644 admin/database/postgres/migrations/0094.sql create mode 100644 admin/server/personal_virtual_files.go create mode 100644 runtime/ai/personal_canvas.go create mode 100644 web-admin/src/features/personal-canvases/CreatePersonalCanvasDialog.svelte create mode 100644 web-admin/src/features/personal-canvases/PersonalCanvasWorkspace.svelte create mode 100644 web-admin/src/features/personal-canvases/PersonalCanvasesList.svelte create mode 100644 web-admin/src/features/personal-canvases/VirtualFilePersistence.ts create mode 100644 web-admin/src/features/personal-canvases/selectors.ts create mode 100644 web-admin/src/routes/[organization]/[project]/-/my-canvases/[name]/+page.svelte create mode 100644 web-admin/src/routes/[organization]/[project]/-/my-canvases/[name]/+page.ts diff --git a/admin/canvas.go b/admin/canvas.go new file mode 100644 index 000000000000..9d1399bd3df7 --- /dev/null +++ b/admin/canvas.go @@ -0,0 +1,31 @@ +package admin + +import ( + "context" + + "github.com/rilldata/rill/admin/database" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" + "github.com/rilldata/rill/runtime" +) + +// LookupCanvas fetches a canvas's spec from a runtime deployment. +func (s *Service) LookupCanvas(ctx context.Context, depl *database.Deployment, canvasName string) (*runtimev1.CanvasSpec, error) { + rt, err := s.OpenRuntimeClient(depl) + if err != nil { + return nil, err + } + defer rt.Close() + + res, err := rt.GetResource(ctx, &runtimev1.GetResourceRequest{ + InstanceId: depl.RuntimeInstanceID, + Name: &runtimev1.ResourceName{ + Kind: runtime.ResourceKindCanvas, + Name: canvasName, + }, + }) + if err != nil { + return nil, err + } + + return res.Resource.Resource.(*runtimev1.Resource_Canvas).Canvas.Spec, nil +} diff --git a/admin/database/database.go b/admin/database/database.go index 045adf24425c..61ffc2156882 100644 --- a/admin/database/database.go +++ b/admin/database/database.go @@ -309,6 +309,7 @@ type DB interface { FindVirtualFiles(ctx context.Context, projectID, environment string, afterUpdatedOn time.Time, afterPath string, limit int) ([]*VirtualFile, error) FindVirtualFile(ctx context.Context, projectID, environment, path string) (*VirtualFile, error) + FindVirtualFilesByPrefix(ctx context.Context, projectID, environment, pathPrefix string) ([]*VirtualFile, error) UpsertVirtualFile(ctx context.Context, opts *InsertVirtualFileOptions) error UpdateVirtualFileDeleted(ctx context.Context, projectID, environment, path string) error DeleteExpiredVirtualFiles(ctx context.Context, retention time.Duration) error @@ -1002,6 +1003,7 @@ type ProjectRole struct { ManageAlerts bool `db:"manage_alerts"` CreateBookmarks bool `db:"create_bookmarks"` ManageBookmarks bool `db:"manage_bookmarks"` + CreatePersonalCanvases bool `db:"create_personal_canvases"` } // UserProjectRole represents a user's project role plus resource scoping metadata. diff --git a/admin/database/postgres/migrations/0094.sql b/admin/database/postgres/migrations/0094.sql new file mode 100644 index 000000000000..37196b861b6a --- /dev/null +++ b/admin/database/postgres/migrations/0094.sql @@ -0,0 +1,2 @@ +ALTER TABLE project_roles ADD create_personal_canvases BOOLEAN NOT NULL DEFAULT false; +UPDATE project_roles SET create_personal_canvases = read_prod; diff --git a/admin/database/postgres/postgres.go b/admin/database/postgres/postgres.go index 8b07fa038cfb..1d1f6f7f97b5 100644 --- a/admin/database/postgres/postgres.go +++ b/admin/database/postgres/postgres.go @@ -2906,6 +2906,22 @@ func (c *connection) FindVirtualFile(ctx context.Context, projectID, environment return res, nil } +// FindVirtualFilesByPrefix returns all non-deleted virtual files whose path starts with pathPrefix. +// Intended for listing personal virtual files scoped to a user's directory (e.g. "personal/canvases/{user_id}/"). +func (c *connection) FindVirtualFilesByPrefix(ctx context.Context, projectID, environment, pathPrefix string) ([]*database.VirtualFile, error) { + var res []*database.VirtualFile + err := c.getDB(ctx).SelectContext(ctx, &res, ` + SELECT path, data, deleted, updated_on + FROM virtual_files + WHERE project_id=$1 AND environment=$2 AND deleted=FALSE AND path LIKE $3 || '%' + ORDER BY path + `, projectID, environment, pathPrefix) + if err != nil { + return nil, parseErr("virtual files", err) + } + return res, nil +} + func (c *connection) UpsertVirtualFile(ctx context.Context, opts *database.InsertVirtualFileOptions) error { if err := database.Validate(opts); err != nil { return err diff --git a/admin/permissions.go b/admin/permissions.go index 8d2ae2b8c186..cacc692bf78a 100644 --- a/admin/permissions.go +++ b/admin/permissions.go @@ -125,6 +125,7 @@ func (s *Service) ProjectPermissionsForUser(ctx context.Context, projectID, user ManageAlerts: true, CreateBookmarks: true, ManageBookmarks: true, + CreatePersonalCanvases: true, }, nil } @@ -173,6 +174,7 @@ func (s *Service) ProjectPermissionsForService(ctx context.Context, projectID, s ManageAlerts: true, CreateBookmarks: true, ManageBookmarks: true, + CreatePersonalCanvases: false, }, nil } @@ -229,6 +231,7 @@ func (s *Service) ProjectPermissionsForDeployment(ctx context.Context, projectID ManageAlerts: false, CreateBookmarks: false, ManageBookmarks: false, + CreatePersonalCanvases: false, }, nil } @@ -266,6 +269,7 @@ func (s *Service) ProjectPermissionsForMagicAuthToken(ctx context.Context, proje ManageAlerts: false, CreateBookmarks: false, ManageBookmarks: false, + CreatePersonalCanvases: false, }, nil } @@ -310,5 +314,6 @@ func UnionProjectRoles(a *adminv1.ProjectPermissions, b *database.ProjectRole) * ManageAlerts: a.ManageAlerts || b.ManageAlerts, CreateBookmarks: a.CreateBookmarks || b.CreateBookmarks, ManageBookmarks: a.ManageBookmarks || b.ManageBookmarks, + CreatePersonalCanvases: a.CreatePersonalCanvases || b.CreatePersonalCanvases, } } diff --git a/admin/server/personal_virtual_files.go b/admin/server/personal_virtual_files.go new file mode 100644 index 000000000000..c32167eda3a5 --- /dev/null +++ b/admin/server/personal_virtual_files.go @@ -0,0 +1,618 @@ +package server + +import ( + "context" + "errors" + "fmt" + "path" + "regexp" + "strings" + "time" + + "github.com/google/uuid" + "github.com/rilldata/rill/admin/database" + "github.com/rilldata/rill/admin/server/auth" + adminv1 "github.com/rilldata/rill/proto/gen/rill/admin/v1" + "github.com/rilldata/rill/runtime" + "github.com/rilldata/rill/runtime/pkg/observability" + "go.opentelemetry.io/otel/attribute" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/types/known/timestamppb" + "gopkg.in/yaml.v3" +) + +// personalVirtualFileSpec describes how a personal virtual file type is laid out on disk and which +// permission is required to create/edit/delete one. Adding a new type (e.g. PERSONAL_REPORT) is a +// matter of adding one entry to personalVirtualFileSpecs below. +type personalVirtualFileSpec struct { + // yamlType is the value of the `type:` field in the YAML body. + yamlType string + // runtimeKind is the runtime resource kind the parser produces for files of this type. + runtimeKind string + // pathPrefixSegment is the second segment in the path `personal///.yaml`. + pathPrefixSegment string + // hasPermission returns whether the caller has the permission required to manage personal files of this type. + hasPermission func(*adminv1.ProjectPermissions) bool + // buildBlankYAML returns a sensible default YAML body for a brand-new personal file. + buildBlankYAML func(displayName, ownerUserID string) ([]byte, error) +} + +var personalVirtualFileSpecs = map[adminv1.PersonalVirtualFileType]*personalVirtualFileSpec{ + adminv1.PersonalVirtualFileType_PERSONAL_VIRTUAL_FILE_TYPE_CANVAS: { + yamlType: "canvas", + runtimeKind: runtime.ResourceKindCanvas, + pathPrefixSegment: "canvases", + hasPermission: func(p *adminv1.ProjectPermissions) bool { + return p.GetCreatePersonalCanvases() + }, + buildBlankYAML: blankPersonalCanvasYAML, + }, +} + +// CreatePersonalVirtualFile creates a personal (owner-only) virtual file for the calling user. +func (s *Server) CreatePersonalVirtualFile(ctx context.Context, req *adminv1.CreatePersonalVirtualFileRequest) (*adminv1.CreatePersonalVirtualFileResponse, error) { + observability.AddRequestAttributes(ctx, + attribute.String("args.organization", req.Org), + attribute.String("args.project", req.Project), + attribute.String("args.type", req.Type.String()), + attribute.String("args.display_name", req.DisplayName), + ) + + spec, ok := personalVirtualFileSpecs[req.Type] + if !ok { + return nil, status.Errorf(codes.InvalidArgument, "unsupported personal virtual file type %q", req.Type.String()) + } + + proj, depl, claims, err := s.lookupProjectForPersonal(ctx, req.Org, req.Project, spec) + if err != nil { + return nil, err + } + + displayName := strings.TrimSpace(req.DisplayName) + if displayName == "" { + return nil, status.Error(codes.InvalidArgument, "display_name is required") + } + + name := randomPersonalName(displayName) + ownerID := claims.OwnerID() + + var data []byte + if req.Yaml != "" { + data, err = validatePersonalYAML(spec, []byte(req.Yaml), displayName, ownerID) + if err != nil { + return nil, err + } + } else { + data, err = spec.buildBlankYAML(displayName, ownerID) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to build blank YAML: %s", err.Error()) + } + } + + err = s.admin.DB.UpsertVirtualFile(ctx, &database.InsertVirtualFileOptions{ + ProjectID: proj.ID, + Environment: "prod", + Path: personalVirtualFilePath(spec, ownerID, name), + Data: data, + }) + if err != nil { + return nil, fmt.Errorf("failed to insert virtual file: %w", err) + } + + err = s.admin.TriggerParserAndAwaitResource(ctx, depl, name, spec.runtimeKind) + if err != nil { + return nil, fmt.Errorf("failed to reconcile personal virtual file: %w", err) + } + + return &adminv1.CreatePersonalVirtualFileResponse{Name: name}, nil +} + +// EditPersonalVirtualFile replaces the YAML body of a personal virtual file the caller owns. +func (s *Server) EditPersonalVirtualFile(ctx context.Context, req *adminv1.EditPersonalVirtualFileRequest) (*adminv1.EditPersonalVirtualFileResponse, error) { + observability.AddRequestAttributes(ctx, + attribute.String("args.organization", req.Org), + attribute.String("args.project", req.Project), + attribute.String("args.type", req.Type.String()), + attribute.String("args.name", req.Name), + ) + + spec, ok := personalVirtualFileSpecs[req.Type] + if !ok { + return nil, status.Errorf(codes.InvalidArgument, "unsupported personal virtual file type %q", req.Type.String()) + } + + proj, depl, claims, err := s.lookupProjectForPersonal(ctx, req.Org, req.Project, spec) + if err != nil { + return nil, err + } + + existing, err := s.admin.DB.FindVirtualFile(ctx, proj.ID, "prod", personalVirtualFilePath(spec, claims.OwnerID(), req.Name)) + if err != nil { + if errors.Is(err, database.ErrNotFound) { + return nil, status.Error(codes.NotFound, "personal virtual file not found") + } + return nil, err + } + if existing.Deleted { + return nil, status.Error(codes.NotFound, "personal virtual file not found") + } + + ownerID, _, err := parsePersonalAnnotations(existing.Data) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to parse existing file annotations: %s", err.Error()) + } + if ownerID != claims.OwnerID() { + return nil, status.Error(codes.PermissionDenied, "only the owner can edit this personal virtual file") + } + + data, err := validatePersonalYAML(spec, []byte(req.Yaml), "", ownerID) + if err != nil { + return nil, err + } + + err = s.admin.DB.UpsertVirtualFile(ctx, &database.InsertVirtualFileOptions{ + ProjectID: proj.ID, + Environment: "prod", + Path: personalVirtualFilePath(spec, ownerID, req.Name), + Data: data, + }) + if err != nil { + return nil, fmt.Errorf("failed to update virtual file: %w", err) + } + + err = s.admin.TriggerParserAndAwaitResource(ctx, depl, req.Name, spec.runtimeKind) + if err != nil { + return nil, fmt.Errorf("failed to reconcile personal virtual file: %w", err) + } + + return &adminv1.EditPersonalVirtualFileResponse{}, nil +} + +// DeletePersonalVirtualFile soft-deletes a personal virtual file the caller owns. +func (s *Server) DeletePersonalVirtualFile(ctx context.Context, req *adminv1.DeletePersonalVirtualFileRequest) (*adminv1.DeletePersonalVirtualFileResponse, error) { + observability.AddRequestAttributes(ctx, + attribute.String("args.organization", req.Org), + attribute.String("args.project", req.Project), + attribute.String("args.type", req.Type.String()), + attribute.String("args.name", req.Name), + ) + + spec, ok := personalVirtualFileSpecs[req.Type] + if !ok { + return nil, status.Errorf(codes.InvalidArgument, "unsupported personal virtual file type %q", req.Type.String()) + } + + proj, depl, claims, err := s.lookupProjectForPersonal(ctx, req.Org, req.Project, spec) + if err != nil { + return nil, err + } + + pathStr := personalVirtualFilePath(spec, claims.OwnerID(), req.Name) + existing, err := s.admin.DB.FindVirtualFile(ctx, proj.ID, "prod", pathStr) + if err != nil { + if errors.Is(err, database.ErrNotFound) { + return nil, status.Error(codes.NotFound, "personal virtual file not found") + } + return nil, err + } + if existing.Deleted { + return nil, status.Error(codes.NotFound, "personal virtual file not found") + } + + ownerID, _, err := parsePersonalAnnotations(existing.Data) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to parse existing file annotations: %s", err.Error()) + } + if ownerID != claims.OwnerID() { + return nil, status.Error(codes.PermissionDenied, "only the owner can delete this personal virtual file") + } + + err = s.admin.DB.UpdateVirtualFileDeleted(ctx, proj.ID, "prod", pathStr) + if err != nil { + return nil, fmt.Errorf("failed to delete virtual file: %w", err) + } + + err = s.admin.TriggerParserAndAwaitResource(ctx, depl, req.Name, spec.runtimeKind) + if err != nil { + return nil, fmt.Errorf("failed to reconcile personal virtual file: %w", err) + } + + return &adminv1.DeletePersonalVirtualFileResponse{}, nil +} + +// CopyPersonalVirtualFile clones a shared or own personal resource into a new personal virtual file. +func (s *Server) CopyPersonalVirtualFile(ctx context.Context, req *adminv1.CopyPersonalVirtualFileRequest) (*adminv1.CopyPersonalVirtualFileResponse, error) { + observability.AddRequestAttributes(ctx, + attribute.String("args.organization", req.Org), + attribute.String("args.project", req.Project), + attribute.String("args.type", req.Type.String()), + attribute.String("args.source_kind", req.SourceKind.String()), + attribute.String("args.source_name", req.SourceName), + ) + + spec, ok := personalVirtualFileSpecs[req.Type] + if !ok { + return nil, status.Errorf(codes.InvalidArgument, "unsupported personal virtual file type %q", req.Type.String()) + } + + proj, depl, claims, err := s.lookupProjectForPersonal(ctx, req.Org, req.Project, spec) + if err != nil { + return nil, err + } + + ownerID := claims.OwnerID() + displayName := strings.TrimSpace(req.DisplayName) + + var sourceData []byte + var sourceDisplayName string + + switch req.SourceKind { + case adminv1.PersonalVirtualFileSourceKind_PERSONAL_VIRTUAL_FILE_SOURCE_KIND_SHARED: + // Read the shared resource from the runtime catalog and regenerate YAML. + sourceData, sourceDisplayName, err = s.fetchSharedSourceYAML(ctx, depl, spec, req.SourceName, ownerID) + if err != nil { + return nil, err + } + case adminv1.PersonalVirtualFileSourceKind_PERSONAL_VIRTUAL_FILE_SOURCE_KIND_PERSONAL: + // Read the source virtual file and verify ownership. + src, err := s.admin.DB.FindVirtualFile(ctx, proj.ID, "prod", personalVirtualFilePath(spec, ownerID, req.SourceName)) + if err != nil { + if errors.Is(err, database.ErrNotFound) { + return nil, status.Error(codes.NotFound, "source personal virtual file not found") + } + return nil, err + } + if src.Deleted { + return nil, status.Error(codes.NotFound, "source personal virtual file not found") + } + srcOwnerID, srcDisplayName, err := parsePersonalAnnotations(src.Data) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to parse source file annotations: %s", err.Error()) + } + if srcOwnerID != ownerID { + return nil, status.Error(codes.PermissionDenied, "can only copy your own personal virtual files") + } + sourceData = src.Data + sourceDisplayName = srcDisplayName + default: + return nil, status.Errorf(codes.InvalidArgument, "unsupported source kind %q", req.SourceKind.String()) + } + + if displayName == "" { + if sourceDisplayName != "" { + displayName = "Copy of " + sourceDisplayName + } else { + displayName = "Copy of " + req.SourceName + } + } + + // Rewrite the YAML so it's owner-only and uses the new display name. + copyData, err := rewritePersonalYAML(sourceData, displayName, ownerID) + if err != nil { + return nil, status.Errorf(codes.InvalidArgument, "failed to prepare copy: %s", err.Error()) + } + // Re-validate to ensure type & size invariants hold. + copyData, err = validatePersonalYAML(spec, copyData, displayName, ownerID) + if err != nil { + return nil, err + } + + name := randomPersonalName(displayName) + err = s.admin.DB.UpsertVirtualFile(ctx, &database.InsertVirtualFileOptions{ + ProjectID: proj.ID, + Environment: "prod", + Path: personalVirtualFilePath(spec, ownerID, name), + Data: copyData, + }) + if err != nil { + return nil, fmt.Errorf("failed to insert virtual file: %w", err) + } + + err = s.admin.TriggerParserAndAwaitResource(ctx, depl, name, spec.runtimeKind) + if err != nil { + return nil, fmt.Errorf("failed to reconcile personal virtual file: %w", err) + } + + return &adminv1.CopyPersonalVirtualFileResponse{Name: name}, nil +} + +// GetPersonalVirtualFile returns the YAML body and metadata for the given personal virtual file. +// Only the owner can fetch. +func (s *Server) GetPersonalVirtualFile(ctx context.Context, req *adminv1.GetPersonalVirtualFileRequest) (*adminv1.GetPersonalVirtualFileResponse, error) { + observability.AddRequestAttributes(ctx, + attribute.String("args.organization", req.Org), + attribute.String("args.project", req.Project), + attribute.String("args.type", req.Type.String()), + attribute.String("args.name", req.Name), + ) + + spec, ok := personalVirtualFileSpecs[req.Type] + if !ok { + return nil, status.Errorf(codes.InvalidArgument, "unsupported personal virtual file type %q", req.Type.String()) + } + + proj, _, claims, err := s.lookupProjectForPersonal(ctx, req.Org, req.Project, spec) + if err != nil { + return nil, err + } + + vf, err := s.admin.DB.FindVirtualFile(ctx, proj.ID, "prod", personalVirtualFilePath(spec, claims.OwnerID(), req.Name)) + if err != nil { + if errors.Is(err, database.ErrNotFound) { + return nil, status.Error(codes.NotFound, "personal virtual file not found") + } + return nil, err + } + if vf.Deleted { + return nil, status.Error(codes.NotFound, "personal virtual file not found") + } + + ownerID, displayName, err := parsePersonalAnnotations(vf.Data) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to parse file annotations: %s", err.Error()) + } + if ownerID != claims.OwnerID() { + return nil, status.Error(codes.NotFound, "personal virtual file not found") + } + + return &adminv1.GetPersonalVirtualFileResponse{ + Name: req.Name, + DisplayName: displayName, + Yaml: string(vf.Data), + UpdatedOn: timestamppb.New(vf.UpdatedOn), + }, nil +} + +// ListPersonalVirtualFiles lists the caller's personal virtual files for the given type. +func (s *Server) ListPersonalVirtualFiles(ctx context.Context, req *adminv1.ListPersonalVirtualFilesRequest) (*adminv1.ListPersonalVirtualFilesResponse, error) { + observability.AddRequestAttributes(ctx, + attribute.String("args.organization", req.Org), + attribute.String("args.project", req.Project), + attribute.String("args.type", req.Type.String()), + ) + + spec, ok := personalVirtualFileSpecs[req.Type] + if !ok { + return nil, status.Errorf(codes.InvalidArgument, "unsupported personal virtual file type %q", req.Type.String()) + } + + proj, _, claims, err := s.lookupProjectForPersonal(ctx, req.Org, req.Project, spec) + if err != nil { + return nil, err + } + + prefix := personalVirtualFilePrefix(spec, claims.OwnerID()) + files, err := s.admin.DB.FindVirtualFilesByPrefix(ctx, proj.ID, "prod", prefix) + if err != nil { + return nil, fmt.Errorf("failed to list virtual files: %w", err) + } + + res := make([]*adminv1.PersonalVirtualFileSummary, 0, len(files)) + for _, vf := range files { + name := personalNameFromPath(prefix, vf.Path) + if name == "" { + continue + } + _, displayName, err := parsePersonalAnnotations(vf.Data) + if err != nil { + // Skip unreadable rows rather than failing the whole listing. + continue + } + res = append(res, &adminv1.PersonalVirtualFileSummary{ + Name: name, + DisplayName: displayName, + Type: req.Type, + UpdatedOn: timestamppb.New(vf.UpdatedOn), + }) + } + + return &adminv1.ListPersonalVirtualFilesResponse{Files: res}, nil +} + +// --- helpers --- + +// lookupProjectForPersonal resolves the project, primary deployment, claims, and permission check +// shared by every personal virtual file handler. +func (s *Server) lookupProjectForPersonal(ctx context.Context, org, project string, spec *personalVirtualFileSpec) (*database.Project, *database.Deployment, auth.Claims, error) { + proj, err := s.admin.DB.FindProjectByName(ctx, org, project) + if err != nil { + return nil, nil, nil, err + } + + claims := auth.GetClaims(ctx) + permissions := claims.ProjectPermissions(ctx, proj.OrganizationID, proj.ID) + if !permissions.ReadProd { + return nil, nil, nil, status.Error(codes.PermissionDenied, "does not have permission to read project") + } + if !spec.hasPermission(permissions) { + return nil, nil, nil, status.Error(codes.PermissionDenied, "does not have permission to manage personal canvases for this project") + } + if claims.OwnerType() != auth.OwnerTypeUser { + return nil, nil, nil, status.Error(codes.PermissionDenied, "only users can manage personal virtual files") + } + + if proj.PrimaryDeploymentID == nil { + return nil, nil, nil, status.Error(codes.FailedPrecondition, "project does not have a production deployment") + } + + depl, err := s.admin.DB.FindDeployment(ctx, *proj.PrimaryDeploymentID) + if err != nil { + return nil, nil, nil, err + } + + return proj, depl, claims, nil +} + +// fetchSharedSourceYAML reads a shared canvas (or other future type) from the runtime catalog and +// regenerates its YAML in a form suitable for use as a personal copy. Returns YAML bytes and the +// source's display name. +func (s *Server) fetchSharedSourceYAML(ctx context.Context, depl *database.Deployment, spec *personalVirtualFileSpec, sourceName, ownerID string) ([]byte, string, error) { + switch spec.yamlType { + case "canvas": + canvasSpec, err := s.admin.LookupCanvas(ctx, depl, sourceName) + if err != nil { + if s, ok := status.FromError(err); ok && s.Code() == codes.NotFound { + return nil, "", status.Errorf(codes.NotFound, "source canvas %q not found", sourceName) + } + return nil, "", fmt.Errorf("failed to look up source canvas: %w", err) + } + yamlBytes, err := yamlForManagedCanvas(canvasSpec.DisplayName, ownerID) + if err != nil { + return nil, "", status.Errorf(codes.Internal, "failed to generate copy YAML: %s", err.Error()) + } + return yamlBytes, canvasSpec.DisplayName, nil + default: + return nil, "", status.Errorf(codes.Unimplemented, "copying from a shared %s is not supported yet", spec.yamlType) + } +} + +// validatePersonalYAML decodes the given YAML, asserts type == spec.yamlType, enforces the admin +// annotations (admin_managed=true, admin_owner_user_id, admin_nonce), and rewrites the document so +// the caller cannot smuggle conflicting annotations or steal someone else's ownership. +// +// If displayName is empty, the YAML's display_name is preserved; otherwise it is set to displayName. +func validatePersonalYAML(spec *personalVirtualFileSpec, data []byte, displayName, ownerID string) ([]byte, error) { + if len(data) > maxPersonalYAMLSize { + return nil, status.Errorf(codes.ResourceExhausted, "YAML body exceeds the %d byte limit", maxPersonalYAMLSize) + } + + var doc map[string]any + if err := yaml.Unmarshal(data, &doc); err != nil { + return nil, status.Errorf(codes.InvalidArgument, "invalid YAML: %s", err.Error()) + } + if doc == nil { + doc = map[string]any{} + } + + docType, _ := doc["type"].(string) + if docType != spec.yamlType { + return nil, status.Errorf(codes.InvalidArgument, "YAML type must be %q, got %q", spec.yamlType, docType) + } + + if displayName != "" { + doc["display_name"] = displayName + } + + annotations, _ := doc["annotations"].(map[string]any) + if annotations == nil { + annotations = map[string]any{} + } + annotations["admin_owner_user_id"] = ownerID + annotations["admin_managed"] = true + annotations["admin_nonce"] = time.Now().Format(time.RFC3339Nano) + doc["annotations"] = annotations + + out, err := yaml.Marshal(doc) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to marshal YAML: %s", err.Error()) + } + if len(out) > maxPersonalYAMLSize { + return nil, status.Errorf(codes.ResourceExhausted, "YAML body exceeds the %d byte limit after normalization", maxPersonalYAMLSize) + } + return out, nil +} + +// rewritePersonalYAML takes an existing YAML body (from a shared source or own copy) and rewrites +// annotations + display_name + security so the resulting body is owner-only and self-contained. +func rewritePersonalYAML(data []byte, displayName, ownerID string) ([]byte, error) { + var doc map[string]any + if err := yaml.Unmarshal(data, &doc); err != nil { + return nil, err + } + if doc == nil { + doc = map[string]any{} + } + if displayName != "" { + doc["display_name"] = displayName + } + // Strip any existing security stanza; the runtime built-in rule + admin_managed annotation + // are sufficient and avoid surprising inherited policies. + delete(doc, "security") + annotations, _ := doc["annotations"].(map[string]any) + if annotations == nil { + annotations = map[string]any{} + } + annotations["admin_owner_user_id"] = ownerID + annotations["admin_managed"] = true + annotations["admin_nonce"] = time.Now().Format(time.RFC3339Nano) + doc["annotations"] = annotations + return yaml.Marshal(doc) +} + +// parsePersonalAnnotations extracts admin_owner_user_id and display_name from a YAML body. +func parsePersonalAnnotations(data []byte) (ownerID, displayName string, err error) { + var doc struct { + DisplayName string `yaml:"display_name"` + Annotations map[string]string `yaml:"annotations"` + } + if err := yaml.Unmarshal(data, &doc); err != nil { + return "", "", err + } + return doc.Annotations["admin_owner_user_id"], doc.DisplayName, nil +} + +func personalVirtualFilePath(spec *personalVirtualFileSpec, ownerID, name string) string { + return path.Join("personal", spec.pathPrefixSegment, ownerID, name+".yaml") +} + +func personalVirtualFilePrefix(spec *personalVirtualFileSpec, ownerID string) string { + return path.Join("personal", spec.pathPrefixSegment, ownerID) + "/" +} + +// personalNameFromPath strips the prefix and ".yaml" suffix to recover the resource name. +// Returns "" if path does not have the expected shape. +func personalNameFromPath(prefix, fullPath string) string { + if !strings.HasPrefix(fullPath, prefix) { + return "" + } + rest := strings.TrimPrefix(fullPath, prefix) + if !strings.HasSuffix(rest, ".yaml") { + return "" + } + return strings.TrimSuffix(rest, ".yaml") +} + +// blankPersonalCanvasYAML returns the default YAML body for a new personal canvas. +func blankPersonalCanvasYAML(displayName, ownerID string) ([]byte, error) { + return yamlForManagedCanvas(displayName, ownerID) +} + +// yamlForManagedCanvas builds the YAML body for a personal canvas with owner-only annotations. +// Note: the actual access enforcement is the runtime's built-in admin-managed canvas rule; the +// security stanza below is a defence-in-depth marker that also makes the file self-documenting. +func yamlForManagedCanvas(displayName, ownerID string) ([]byte, error) { + doc := map[string]any{ + "type": "canvas", + "display_name": displayName, + "annotations": map[string]any{ + "admin_owner_user_id": ownerID, + "admin_managed": true, + "admin_nonce": time.Now().Format(time.RFC3339Nano), + }, + "security": map[string]any{ + "access": fmt.Sprintf("'{{ .user.id }}' == '%s' || '{{ .user.admin }}' == 'true'", ownerID), + }, + "rows": []any{}, + } + return yaml.Marshal(doc) +} + +var personalNameToDashCharsRegexp = regexp.MustCompile(`[ _]+`) + +var personalNameExcludeCharsRegexp = regexp.MustCompile(`[^a-zA-Z0-9-]+`) + +// randomPersonalName returns a URL-safe slug derived from displayName with an 8-char UUID suffix +// (e.g. "My Canvas!" -> "my-canvas-5b3f7e1a"). The suffix makes collisions effectively impossible. +func randomPersonalName(displayName string) string { + name := personalNameToDashCharsRegexp.ReplaceAllString(displayName, "-") + name = personalNameExcludeCharsRegexp.ReplaceAllString(name, "") + name = strings.ToLower(name) + name = strings.Trim(name, "-") + if name == "" { + return uuid.New().String() + } + return name + "-" + uuid.New().String()[0:8] +} + +const maxPersonalYAMLSize = 128 * 1024 // matches the virtual_files DB limit diff --git a/proto/gen/rill/admin/v1/admin.swagger.yaml b/proto/gen/rill/admin/v1/admin.swagger.yaml index 3a569c0088fd..755652bb0e5e 100644 --- a/proto/gen/rill/admin/v1/admin.swagger.yaml +++ b/proto/gen/rill/admin/v1/admin.swagger.yaml @@ -2004,6 +2004,212 @@ paths: in: path required: true type: string + /v1/orgs/{org}/projects/{project}/personal-virtual-files: + get: + summary: ListPersonalVirtualFiles lists the calling user's personal virtual files for the given type. + operationId: AdminService_ListPersonalVirtualFiles + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1ListPersonalVirtualFilesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: org + in: path + required: true + type: string + - name: project + in: path + required: true + type: string + - name: type + in: query + required: false + type: string + enum: + - PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED + - PERSONAL_VIRTUAL_FILE_TYPE_CANVAS + default: PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED + post: + summary: CreatePersonalVirtualFile creates a personal (owner-only) resource as a virtual file in the project. + operationId: AdminService_CreatePersonalVirtualFile + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1CreatePersonalVirtualFileResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: org + in: path + required: true + type: string + - name: project + in: path + required: true + type: string + - name: body + in: body + required: true + schema: + type: object + properties: + type: + $ref: '#/definitions/v1PersonalVirtualFileType' + displayName: + type: string + yaml: + type: string + description: 'Optional: initial YAML body. If empty, the server generates a blank template for the given type.' + /v1/orgs/{org}/projects/{project}/personal-virtual-files/-/copy: + post: + summary: CopyPersonalVirtualFile clones a shared resource (or one of the caller's own personal items) into a new personal virtual file. + operationId: AdminService_CopyPersonalVirtualFile + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1CopyPersonalVirtualFileResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: org + in: path + required: true + type: string + - name: project + in: path + required: true + type: string + - name: body + in: body + required: true + schema: + type: object + properties: + type: + $ref: '#/definitions/v1PersonalVirtualFileType' + sourceKind: + $ref: '#/definitions/v1PersonalVirtualFileSourceKind' + sourceName: + type: string + displayName: + type: string + description: 'Optional: override the display name. If empty, "Copy of " is used.' + /v1/orgs/{org}/projects/{project}/personal-virtual-files/{type}/{name}: + get: + summary: GetPersonalVirtualFile returns the YAML body and metadata for a personal virtual file the caller owns. + operationId: AdminService_GetPersonalVirtualFile + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1GetPersonalVirtualFileResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: org + in: path + required: true + type: string + - name: project + in: path + required: true + type: string + - name: type + in: path + required: true + type: string + enum: + - PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED + - PERSONAL_VIRTUAL_FILE_TYPE_CANVAS + - name: name + in: path + required: true + type: string + delete: + summary: DeletePersonalVirtualFile deletes a personal virtual file the caller owns. + operationId: AdminService_DeletePersonalVirtualFile + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1DeletePersonalVirtualFileResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: org + in: path + required: true + type: string + - name: project + in: path + required: true + type: string + - name: type + in: path + required: true + type: string + enum: + - PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED + - PERSONAL_VIRTUAL_FILE_TYPE_CANVAS + - name: name + in: path + required: true + type: string + put: + summary: EditPersonalVirtualFile updates the YAML body of a personal virtual file the caller owns. + operationId: AdminService_EditPersonalVirtualFile + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1EditPersonalVirtualFileResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: org + in: path + required: true + type: string + - name: project + in: path + required: true + type: string + - name: type + in: path + required: true + type: string + enum: + - PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED + - PERSONAL_VIRTUAL_FILE_TYPE_CANVAS + - name: name + in: path + required: true + type: string + - name: body + in: body + required: true + schema: + type: object + properties: + yaml: + type: string /v1/orgs/{org}/projects/{project}/redeploy: post: summary: |- @@ -5004,6 +5210,11 @@ definitions: toolResult: $ref: '#/definitions/v1ToolResult' title: Content block within a message + v1CopyPersonalVirtualFileResponse: + type: object + properties: + name: + type: string v1CreateAlertResponse: type: object properties: @@ -5082,6 +5293,11 @@ definitions: properties: organization: $ref: '#/definitions/v1Organization' + v1CreatePersonalVirtualFileResponse: + type: object + properties: + name: + type: string v1CreateProjectResponse: type: object properties: @@ -5115,6 +5331,8 @@ definitions: type: string v1DeleteOrganizationResponse: type: object + v1DeletePersonalVirtualFileResponse: + type: object v1DeleteProjectResponse: type: object properties: @@ -5182,6 +5400,8 @@ definitions: default: DEPLOYMENT_STATUS_UNSPECIFIED v1EditAlertResponse: type: object + v1EditPersonalVirtualFileResponse: + type: object v1EditReportResponse: type: object v1ExportFormat: @@ -5434,6 +5654,18 @@ definitions: properties: url: type: string + v1GetPersonalVirtualFileResponse: + type: object + properties: + name: + type: string + displayName: + type: string + yaml: + type: string + updatedOn: + type: string + format: date-time v1GetProjectAccessRequestResponse: type: object properties: @@ -5684,6 +5916,14 @@ definitions: $ref: '#/definitions/v1Organization' nextPageToken: type: string + v1ListPersonalVirtualFilesResponse: + type: object + properties: + files: + type: array + items: + type: object + $ref: '#/definitions/v1PersonalVirtualFileSummary' v1ListProjectInvitesResponse: type: object properties: @@ -6096,6 +6336,37 @@ definitions: type: string permissions: $ref: '#/definitions/v1OrganizationPermissions' + v1PersonalVirtualFileSourceKind: + type: string + enum: + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_UNSPECIFIED + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_SHARED + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_PERSONAL + default: PERSONAL_VIRTUAL_FILE_SOURCE_KIND_UNSPECIFIED + description: |- + PersonalVirtualFileSourceKind enumerates the kinds of source resources that CopyPersonalVirtualFile can clone from. + + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_SHARED: Clone from a shared resource in the project (e.g. a shared canvas dashboard). + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_PERSONAL: Clone from one of the caller's own personal virtual files. + v1PersonalVirtualFileSummary: + type: object + properties: + name: + type: string + displayName: + type: string + type: + $ref: '#/definitions/v1PersonalVirtualFileType' + updatedOn: + type: string + format: date-time + v1PersonalVirtualFileType: + type: string + enum: + - PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED + - PERSONAL_VIRTUAL_FILE_TYPE_CANVAS + default: PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED + description: PersonalVirtualFileType enumerates the resource kinds that can be stored as a personal virtual file. v1PingResponse: type: object properties: @@ -6289,6 +6560,8 @@ definitions: type: boolean manageBookmarks: type: boolean + createPersonalCanvases: + type: boolean v1ProjectRole: type: object properties: diff --git a/proto/gen/rill/admin/v1/api.pb.go b/proto/gen/rill/admin/v1/api.pb.go index 04bfec5c0a21..25b22b124f4f 100644 --- a/proto/gen/rill/admin/v1/api.pb.go +++ b/proto/gen/rill/admin/v1/api.pb.go @@ -75,6 +75,105 @@ func (GithubPermission) EnumDescriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{0} } +// PersonalVirtualFileType enumerates the resource kinds that can be stored as a personal virtual file. +type PersonalVirtualFileType int32 + +const ( + PersonalVirtualFileType_PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED PersonalVirtualFileType = 0 + PersonalVirtualFileType_PERSONAL_VIRTUAL_FILE_TYPE_CANVAS PersonalVirtualFileType = 1 +) + +// Enum value maps for PersonalVirtualFileType. +var ( + PersonalVirtualFileType_name = map[int32]string{ + 0: "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED", + 1: "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS", + } + PersonalVirtualFileType_value = map[string]int32{ + "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED": 0, + "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS": 1, + } +) + +func (x PersonalVirtualFileType) Enum() *PersonalVirtualFileType { + p := new(PersonalVirtualFileType) + *p = x + return p +} + +func (x PersonalVirtualFileType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PersonalVirtualFileType) Descriptor() protoreflect.EnumDescriptor { + return file_rill_admin_v1_api_proto_enumTypes[1].Descriptor() +} + +func (PersonalVirtualFileType) Type() protoreflect.EnumType { + return &file_rill_admin_v1_api_proto_enumTypes[1] +} + +func (x PersonalVirtualFileType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PersonalVirtualFileType.Descriptor instead. +func (PersonalVirtualFileType) EnumDescriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{1} +} + +// PersonalVirtualFileSourceKind enumerates the kinds of source resources that CopyPersonalVirtualFile can clone from. +type PersonalVirtualFileSourceKind int32 + +const ( + PersonalVirtualFileSourceKind_PERSONAL_VIRTUAL_FILE_SOURCE_KIND_UNSPECIFIED PersonalVirtualFileSourceKind = 0 + // Clone from a shared resource in the project (e.g. a shared canvas dashboard). + PersonalVirtualFileSourceKind_PERSONAL_VIRTUAL_FILE_SOURCE_KIND_SHARED PersonalVirtualFileSourceKind = 1 + // Clone from one of the caller's own personal virtual files. + PersonalVirtualFileSourceKind_PERSONAL_VIRTUAL_FILE_SOURCE_KIND_PERSONAL PersonalVirtualFileSourceKind = 2 +) + +// Enum value maps for PersonalVirtualFileSourceKind. +var ( + PersonalVirtualFileSourceKind_name = map[int32]string{ + 0: "PERSONAL_VIRTUAL_FILE_SOURCE_KIND_UNSPECIFIED", + 1: "PERSONAL_VIRTUAL_FILE_SOURCE_KIND_SHARED", + 2: "PERSONAL_VIRTUAL_FILE_SOURCE_KIND_PERSONAL", + } + PersonalVirtualFileSourceKind_value = map[string]int32{ + "PERSONAL_VIRTUAL_FILE_SOURCE_KIND_UNSPECIFIED": 0, + "PERSONAL_VIRTUAL_FILE_SOURCE_KIND_SHARED": 1, + "PERSONAL_VIRTUAL_FILE_SOURCE_KIND_PERSONAL": 2, + } +) + +func (x PersonalVirtualFileSourceKind) Enum() *PersonalVirtualFileSourceKind { + p := new(PersonalVirtualFileSourceKind) + *p = x + return p +} + +func (x PersonalVirtualFileSourceKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PersonalVirtualFileSourceKind) Descriptor() protoreflect.EnumDescriptor { + return file_rill_admin_v1_api_proto_enumTypes[2].Descriptor() +} + +func (PersonalVirtualFileSourceKind) Type() protoreflect.EnumType { + return &file_rill_admin_v1_api_proto_enumTypes[2] +} + +func (x PersonalVirtualFileSourceKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PersonalVirtualFileSourceKind.Descriptor instead. +func (PersonalVirtualFileSourceKind) EnumDescriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{2} +} + type DeploymentStatus int32 const ( @@ -126,11 +225,11 @@ func (x DeploymentStatus) String() string { } func (DeploymentStatus) Descriptor() protoreflect.EnumDescriptor { - return file_rill_admin_v1_api_proto_enumTypes[1].Descriptor() + return file_rill_admin_v1_api_proto_enumTypes[3].Descriptor() } func (DeploymentStatus) Type() protoreflect.EnumType { - return &file_rill_admin_v1_api_proto_enumTypes[1] + return &file_rill_admin_v1_api_proto_enumTypes[3] } func (x DeploymentStatus) Number() protoreflect.EnumNumber { @@ -139,7 +238,7 @@ func (x DeploymentStatus) Number() protoreflect.EnumNumber { // Deprecated: Use DeploymentStatus.Descriptor instead. func (DeploymentStatus) EnumDescriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{1} + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{3} } type BillingPlanType int32 @@ -187,11 +286,11 @@ func (x BillingPlanType) String() string { } func (BillingPlanType) Descriptor() protoreflect.EnumDescriptor { - return file_rill_admin_v1_api_proto_enumTypes[2].Descriptor() + return file_rill_admin_v1_api_proto_enumTypes[4].Descriptor() } func (BillingPlanType) Type() protoreflect.EnumType { - return &file_rill_admin_v1_api_proto_enumTypes[2] + return &file_rill_admin_v1_api_proto_enumTypes[4] } func (x BillingPlanType) Number() protoreflect.EnumNumber { @@ -200,7 +299,7 @@ func (x BillingPlanType) Number() protoreflect.EnumNumber { // Deprecated: Use BillingPlanType.Descriptor instead. func (BillingPlanType) EnumDescriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{2} + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{4} } type BillingIssueType int32 @@ -257,11 +356,11 @@ func (x BillingIssueType) String() string { } func (BillingIssueType) Descriptor() protoreflect.EnumDescriptor { - return file_rill_admin_v1_api_proto_enumTypes[3].Descriptor() + return file_rill_admin_v1_api_proto_enumTypes[5].Descriptor() } func (BillingIssueType) Type() protoreflect.EnumType { - return &file_rill_admin_v1_api_proto_enumTypes[3] + return &file_rill_admin_v1_api_proto_enumTypes[5] } func (x BillingIssueType) Number() protoreflect.EnumNumber { @@ -270,7 +369,7 @@ func (x BillingIssueType) Number() protoreflect.EnumNumber { // Deprecated: Use BillingIssueType.Descriptor instead. func (BillingIssueType) EnumDescriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{3} + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{5} } type BillingIssueLevel int32 @@ -306,11 +405,11 @@ func (x BillingIssueLevel) String() string { } func (BillingIssueLevel) Descriptor() protoreflect.EnumDescriptor { - return file_rill_admin_v1_api_proto_enumTypes[4].Descriptor() + return file_rill_admin_v1_api_proto_enumTypes[6].Descriptor() } func (BillingIssueLevel) Type() protoreflect.EnumType { - return &file_rill_admin_v1_api_proto_enumTypes[4] + return &file_rill_admin_v1_api_proto_enumTypes[6] } func (x BillingIssueLevel) Number() protoreflect.EnumNumber { @@ -319,7 +418,7 @@ func (x BillingIssueLevel) Number() protoreflect.EnumNumber { // Deprecated: Use BillingIssueLevel.Descriptor instead. func (BillingIssueLevel) EnumDescriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{4} + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{6} } type GetGithubPullRequestResponse_State int32 @@ -358,11 +457,11 @@ func (x GetGithubPullRequestResponse_State) String() string { } func (GetGithubPullRequestResponse_State) Descriptor() protoreflect.EnumDescriptor { - return file_rill_admin_v1_api_proto_enumTypes[5].Descriptor() + return file_rill_admin_v1_api_proto_enumTypes[7].Descriptor() } func (GetGithubPullRequestResponse_State) Type() protoreflect.EnumType { - return &file_rill_admin_v1_api_proto_enumTypes[5] + return &file_rill_admin_v1_api_proto_enumTypes[7] } func (x GetGithubPullRequestResponse_State) Number() protoreflect.EnumNumber { @@ -18015,17 +18114,19 @@ func (x *GetAlertYAMLResponse) GetYaml() string { return "" } -type GetBillingSubscriptionRequest struct { +type PersonalVirtualFileSummary struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` - SuperuserForceAccess bool `protobuf:"varint,2,opt,name=superuser_force_access,json=superuserForceAccess,proto3" json:"superuser_force_access,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Type PersonalVirtualFileType `protobuf:"varint,3,opt,name=type,proto3,enum=rill.admin.v1.PersonalVirtualFileType" json:"type,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *GetBillingSubscriptionRequest) Reset() { - *x = GetBillingSubscriptionRequest{} +func (x *PersonalVirtualFileSummary) Reset() { + *x = PersonalVirtualFileSummary{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[297] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18033,13 +18134,13 @@ func (x *GetBillingSubscriptionRequest) Reset() { } } -func (x *GetBillingSubscriptionRequest) String() string { +func (x *PersonalVirtualFileSummary) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetBillingSubscriptionRequest) ProtoMessage() {} +func (*PersonalVirtualFileSummary) ProtoMessage() {} -func (x *GetBillingSubscriptionRequest) ProtoReflect() protoreflect.Message { +func (x *PersonalVirtualFileSummary) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[297] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18051,37 +18152,54 @@ func (x *GetBillingSubscriptionRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetBillingSubscriptionRequest.ProtoReflect.Descriptor instead. -func (*GetBillingSubscriptionRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use PersonalVirtualFileSummary.ProtoReflect.Descriptor instead. +func (*PersonalVirtualFileSummary) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{297} } -func (x *GetBillingSubscriptionRequest) GetOrg() string { +func (x *PersonalVirtualFileSummary) GetName() string { if x != nil { - return x.Org + return x.Name } return "" } -func (x *GetBillingSubscriptionRequest) GetSuperuserForceAccess() bool { +func (x *PersonalVirtualFileSummary) GetDisplayName() string { if x != nil { - return x.SuperuserForceAccess + return x.DisplayName } - return false + return "" } -type GetBillingSubscriptionResponse struct { +func (x *PersonalVirtualFileSummary) GetType() PersonalVirtualFileType { + if x != nil { + return x.Type + } + return PersonalVirtualFileType_PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED +} + +func (x *PersonalVirtualFileSummary) GetUpdatedOn() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedOn + } + return nil +} + +type CreatePersonalVirtualFileRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Organization *Organization `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Subscription *Subscription `protobuf:"bytes,2,opt,name=subscription,proto3" json:"subscription,omitempty"` - BillingPortalUrl string `protobuf:"bytes,3,opt,name=billing_portal_url,json=billingPortalUrl,proto3" json:"billing_portal_url,omitempty"` + Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Type PersonalVirtualFileType `protobuf:"varint,3,opt,name=type,proto3,enum=rill.admin.v1.PersonalVirtualFileType" json:"type,omitempty"` + DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Optional: initial YAML body. If empty, the server generates a blank template for the given type. + Yaml string `protobuf:"bytes,5,opt,name=yaml,proto3" json:"yaml,omitempty"` } -func (x *GetBillingSubscriptionResponse) Reset() { - *x = GetBillingSubscriptionResponse{} +func (x *CreatePersonalVirtualFileRequest) Reset() { + *x = CreatePersonalVirtualFileRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[298] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18089,13 +18207,13 @@ func (x *GetBillingSubscriptionResponse) Reset() { } } -func (x *GetBillingSubscriptionResponse) String() string { +func (x *CreatePersonalVirtualFileRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetBillingSubscriptionResponse) ProtoMessage() {} +func (*CreatePersonalVirtualFileRequest) ProtoMessage() {} -func (x *GetBillingSubscriptionResponse) ProtoReflect() protoreflect.Message { +func (x *CreatePersonalVirtualFileRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[298] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18107,44 +18225,56 @@ func (x *GetBillingSubscriptionResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetBillingSubscriptionResponse.ProtoReflect.Descriptor instead. -func (*GetBillingSubscriptionResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreatePersonalVirtualFileRequest.ProtoReflect.Descriptor instead. +func (*CreatePersonalVirtualFileRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{298} } -func (x *GetBillingSubscriptionResponse) GetOrganization() *Organization { +func (x *CreatePersonalVirtualFileRequest) GetOrg() string { if x != nil { - return x.Organization + return x.Org } - return nil + return "" } -func (x *GetBillingSubscriptionResponse) GetSubscription() *Subscription { +func (x *CreatePersonalVirtualFileRequest) GetProject() string { if x != nil { - return x.Subscription + return x.Project } - return nil + return "" } -func (x *GetBillingSubscriptionResponse) GetBillingPortalUrl() string { +func (x *CreatePersonalVirtualFileRequest) GetType() PersonalVirtualFileType { if x != nil { - return x.BillingPortalUrl + return x.Type + } + return PersonalVirtualFileType_PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED +} + +func (x *CreatePersonalVirtualFileRequest) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -type UpdateBillingSubscriptionRequest struct { +func (x *CreatePersonalVirtualFileRequest) GetYaml() string { + if x != nil { + return x.Yaml + } + return "" +} + +type CreatePersonalVirtualFileResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` - PlanName string `protobuf:"bytes,2,opt,name=plan_name,json=planName,proto3" json:"plan_name,omitempty"` - SuperuserForceAccess bool `protobuf:"varint,3,opt,name=superuser_force_access,json=superuserForceAccess,proto3" json:"superuser_force_access,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *UpdateBillingSubscriptionRequest) Reset() { - *x = UpdateBillingSubscriptionRequest{} +func (x *CreatePersonalVirtualFileResponse) Reset() { + *x = CreatePersonalVirtualFileResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[299] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18152,13 +18282,13 @@ func (x *UpdateBillingSubscriptionRequest) Reset() { } } -func (x *UpdateBillingSubscriptionRequest) String() string { +func (x *CreatePersonalVirtualFileResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateBillingSubscriptionRequest) ProtoMessage() {} +func (*CreatePersonalVirtualFileResponse) ProtoMessage() {} -func (x *UpdateBillingSubscriptionRequest) ProtoReflect() protoreflect.Message { +func (x *CreatePersonalVirtualFileResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[299] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18170,43 +18300,32 @@ func (x *UpdateBillingSubscriptionRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateBillingSubscriptionRequest.ProtoReflect.Descriptor instead. -func (*UpdateBillingSubscriptionRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CreatePersonalVirtualFileResponse.ProtoReflect.Descriptor instead. +func (*CreatePersonalVirtualFileResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{299} } -func (x *UpdateBillingSubscriptionRequest) GetOrg() string { - if x != nil { - return x.Org - } - return "" -} - -func (x *UpdateBillingSubscriptionRequest) GetPlanName() string { +func (x *CreatePersonalVirtualFileResponse) GetName() string { if x != nil { - return x.PlanName + return x.Name } return "" } -func (x *UpdateBillingSubscriptionRequest) GetSuperuserForceAccess() bool { - if x != nil { - return x.SuperuserForceAccess - } - return false -} - -type UpdateBillingSubscriptionResponse struct { +type EditPersonalVirtualFileRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Organization *Organization `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Subscription *Subscription `protobuf:"bytes,2,opt,name=subscription,proto3" json:"subscription,omitempty"` + Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Type PersonalVirtualFileType `protobuf:"varint,3,opt,name=type,proto3,enum=rill.admin.v1.PersonalVirtualFileType" json:"type,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Yaml string `protobuf:"bytes,5,opt,name=yaml,proto3" json:"yaml,omitempty"` } -func (x *UpdateBillingSubscriptionResponse) Reset() { - *x = UpdateBillingSubscriptionResponse{} +func (x *EditPersonalVirtualFileRequest) Reset() { + *x = EditPersonalVirtualFileRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[300] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18214,13 +18333,13 @@ func (x *UpdateBillingSubscriptionResponse) Reset() { } } -func (x *UpdateBillingSubscriptionResponse) String() string { +func (x *EditPersonalVirtualFileRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateBillingSubscriptionResponse) ProtoMessage() {} +func (*EditPersonalVirtualFileRequest) ProtoMessage() {} -func (x *UpdateBillingSubscriptionResponse) ProtoReflect() protoreflect.Message { +func (x *EditPersonalVirtualFileRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[300] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18232,36 +18351,54 @@ func (x *UpdateBillingSubscriptionResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use UpdateBillingSubscriptionResponse.ProtoReflect.Descriptor instead. -func (*UpdateBillingSubscriptionResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use EditPersonalVirtualFileRequest.ProtoReflect.Descriptor instead. +func (*EditPersonalVirtualFileRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{300} } -func (x *UpdateBillingSubscriptionResponse) GetOrganization() *Organization { +func (x *EditPersonalVirtualFileRequest) GetOrg() string { if x != nil { - return x.Organization + return x.Org } - return nil + return "" } -func (x *UpdateBillingSubscriptionResponse) GetSubscription() *Subscription { +func (x *EditPersonalVirtualFileRequest) GetProject() string { if x != nil { - return x.Subscription + return x.Project } - return nil + return "" } -type CancelBillingSubscriptionRequest struct { +func (x *EditPersonalVirtualFileRequest) GetType() PersonalVirtualFileType { + if x != nil { + return x.Type + } + return PersonalVirtualFileType_PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED +} + +func (x *EditPersonalVirtualFileRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *EditPersonalVirtualFileRequest) GetYaml() string { + if x != nil { + return x.Yaml + } + return "" +} + +type EditPersonalVirtualFileResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` - SuperuserForceAccess bool `protobuf:"varint,2,opt,name=superuser_force_access,json=superuserForceAccess,proto3" json:"superuser_force_access,omitempty"` } -func (x *CancelBillingSubscriptionRequest) Reset() { - *x = CancelBillingSubscriptionRequest{} +func (x *EditPersonalVirtualFileResponse) Reset() { + *x = EditPersonalVirtualFileResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[301] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18269,13 +18406,13 @@ func (x *CancelBillingSubscriptionRequest) Reset() { } } -func (x *CancelBillingSubscriptionRequest) String() string { +func (x *EditPersonalVirtualFileResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CancelBillingSubscriptionRequest) ProtoMessage() {} +func (*EditPersonalVirtualFileResponse) ProtoMessage() {} -func (x *CancelBillingSubscriptionRequest) ProtoReflect() protoreflect.Message { +func (x *EditPersonalVirtualFileResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[301] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18287,33 +18424,24 @@ func (x *CancelBillingSubscriptionRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CancelBillingSubscriptionRequest.ProtoReflect.Descriptor instead. -func (*CancelBillingSubscriptionRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use EditPersonalVirtualFileResponse.ProtoReflect.Descriptor instead. +func (*EditPersonalVirtualFileResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{301} } -func (x *CancelBillingSubscriptionRequest) GetOrg() string { - if x != nil { - return x.Org - } - return "" -} - -func (x *CancelBillingSubscriptionRequest) GetSuperuserForceAccess() bool { - if x != nil { - return x.SuperuserForceAccess - } - return false -} - -type CancelBillingSubscriptionResponse struct { +type DeletePersonalVirtualFileRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Type PersonalVirtualFileType `protobuf:"varint,3,opt,name=type,proto3,enum=rill.admin.v1.PersonalVirtualFileType" json:"type,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` } -func (x *CancelBillingSubscriptionResponse) Reset() { - *x = CancelBillingSubscriptionResponse{} +func (x *DeletePersonalVirtualFileRequest) Reset() { + *x = DeletePersonalVirtualFileRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[302] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18321,13 +18449,13 @@ func (x *CancelBillingSubscriptionResponse) Reset() { } } -func (x *CancelBillingSubscriptionResponse) String() string { +func (x *DeletePersonalVirtualFileRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CancelBillingSubscriptionResponse) ProtoMessage() {} +func (*DeletePersonalVirtualFileRequest) ProtoMessage() {} -func (x *CancelBillingSubscriptionResponse) ProtoReflect() protoreflect.Message { +func (x *DeletePersonalVirtualFileRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[302] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18339,23 +18467,47 @@ func (x *CancelBillingSubscriptionResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use CancelBillingSubscriptionResponse.ProtoReflect.Descriptor instead. -func (*CancelBillingSubscriptionResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DeletePersonalVirtualFileRequest.ProtoReflect.Descriptor instead. +func (*DeletePersonalVirtualFileRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{302} } -type RenewBillingSubscriptionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` - PlanName string `protobuf:"bytes,2,opt,name=plan_name,json=planName,proto3" json:"plan_name,omitempty"` - SuperuserForceAccess bool `protobuf:"varint,3,opt,name=superuser_force_access,json=superuserForceAccess,proto3" json:"superuser_force_access,omitempty"` +func (x *DeletePersonalVirtualFileRequest) GetOrg() string { + if x != nil { + return x.Org + } + return "" } -func (x *RenewBillingSubscriptionRequest) Reset() { - *x = RenewBillingSubscriptionRequest{} +func (x *DeletePersonalVirtualFileRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *DeletePersonalVirtualFileRequest) GetType() PersonalVirtualFileType { + if x != nil { + return x.Type + } + return PersonalVirtualFileType_PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED +} + +func (x *DeletePersonalVirtualFileRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type DeletePersonalVirtualFileResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeletePersonalVirtualFileResponse) Reset() { + *x = DeletePersonalVirtualFileResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[303] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18363,13 +18515,13 @@ func (x *RenewBillingSubscriptionRequest) Reset() { } } -func (x *RenewBillingSubscriptionRequest) String() string { +func (x *DeletePersonalVirtualFileResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RenewBillingSubscriptionRequest) ProtoMessage() {} +func (*DeletePersonalVirtualFileResponse) ProtoMessage() {} -func (x *RenewBillingSubscriptionRequest) ProtoReflect() protoreflect.Message { +func (x *DeletePersonalVirtualFileResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[303] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18381,43 +18533,27 @@ func (x *RenewBillingSubscriptionRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RenewBillingSubscriptionRequest.ProtoReflect.Descriptor instead. -func (*RenewBillingSubscriptionRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeletePersonalVirtualFileResponse.ProtoReflect.Descriptor instead. +func (*DeletePersonalVirtualFileResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{303} } -func (x *RenewBillingSubscriptionRequest) GetOrg() string { - if x != nil { - return x.Org - } - return "" -} - -func (x *RenewBillingSubscriptionRequest) GetPlanName() string { - if x != nil { - return x.PlanName - } - return "" -} - -func (x *RenewBillingSubscriptionRequest) GetSuperuserForceAccess() bool { - if x != nil { - return x.SuperuserForceAccess - } - return false -} - -type RenewBillingSubscriptionResponse struct { +type CopyPersonalVirtualFileRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Organization *Organization `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Subscription *Subscription `protobuf:"bytes,2,opt,name=subscription,proto3" json:"subscription,omitempty"` + Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Type PersonalVirtualFileType `protobuf:"varint,3,opt,name=type,proto3,enum=rill.admin.v1.PersonalVirtualFileType" json:"type,omitempty"` + SourceKind PersonalVirtualFileSourceKind `protobuf:"varint,4,opt,name=source_kind,json=sourceKind,proto3,enum=rill.admin.v1.PersonalVirtualFileSourceKind" json:"source_kind,omitempty"` + SourceName string `protobuf:"bytes,5,opt,name=source_name,json=sourceName,proto3" json:"source_name,omitempty"` + // Optional: override the display name. If empty, "Copy of " is used. + DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` } -func (x *RenewBillingSubscriptionResponse) Reset() { - *x = RenewBillingSubscriptionResponse{} +func (x *CopyPersonalVirtualFileRequest) Reset() { + *x = CopyPersonalVirtualFileRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[304] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18425,13 +18561,13 @@ func (x *RenewBillingSubscriptionResponse) Reset() { } } -func (x *RenewBillingSubscriptionResponse) String() string { +func (x *CopyPersonalVirtualFileRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RenewBillingSubscriptionResponse) ProtoMessage() {} +func (*CopyPersonalVirtualFileRequest) ProtoMessage() {} -func (x *RenewBillingSubscriptionResponse) ProtoReflect() protoreflect.Message { +func (x *CopyPersonalVirtualFileRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[304] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18443,38 +18579,63 @@ func (x *RenewBillingSubscriptionResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RenewBillingSubscriptionResponse.ProtoReflect.Descriptor instead. -func (*RenewBillingSubscriptionResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CopyPersonalVirtualFileRequest.ProtoReflect.Descriptor instead. +func (*CopyPersonalVirtualFileRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{304} } -func (x *RenewBillingSubscriptionResponse) GetOrganization() *Organization { +func (x *CopyPersonalVirtualFileRequest) GetOrg() string { if x != nil { - return x.Organization + return x.Org } - return nil + return "" } -func (x *RenewBillingSubscriptionResponse) GetSubscription() *Subscription { +func (x *CopyPersonalVirtualFileRequest) GetProject() string { if x != nil { - return x.Subscription + return x.Project } - return nil + return "" } -type GetPaymentsPortalURLRequest struct { +func (x *CopyPersonalVirtualFileRequest) GetType() PersonalVirtualFileType { + if x != nil { + return x.Type + } + return PersonalVirtualFileType_PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED +} + +func (x *CopyPersonalVirtualFileRequest) GetSourceKind() PersonalVirtualFileSourceKind { + if x != nil { + return x.SourceKind + } + return PersonalVirtualFileSourceKind_PERSONAL_VIRTUAL_FILE_SOURCE_KIND_UNSPECIFIED +} + +func (x *CopyPersonalVirtualFileRequest) GetSourceName() string { + if x != nil { + return x.SourceName + } + return "" +} + +func (x *CopyPersonalVirtualFileRequest) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +type CopyPersonalVirtualFileResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` - ReturnUrl string `protobuf:"bytes,2,opt,name=return_url,json=returnUrl,proto3" json:"return_url,omitempty"` - Setup bool `protobuf:"varint,4,opt,name=setup,proto3" json:"setup,omitempty"` // If true, the returned URL will be for the first time payment method setup flow. If false, it will be for managing the billing details. - SuperuserForceAccess bool `protobuf:"varint,3,opt,name=superuser_force_access,json=superuserForceAccess,proto3" json:"superuser_force_access,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *GetPaymentsPortalURLRequest) Reset() { - *x = GetPaymentsPortalURLRequest{} +func (x *CopyPersonalVirtualFileResponse) Reset() { + *x = CopyPersonalVirtualFileResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[305] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18482,13 +18643,13 @@ func (x *GetPaymentsPortalURLRequest) Reset() { } } -func (x *GetPaymentsPortalURLRequest) String() string { +func (x *CopyPersonalVirtualFileResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetPaymentsPortalURLRequest) ProtoMessage() {} +func (*CopyPersonalVirtualFileResponse) ProtoMessage() {} -func (x *GetPaymentsPortalURLRequest) ProtoReflect() protoreflect.Message { +func (x *CopyPersonalVirtualFileResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[305] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18500,49 +18661,31 @@ func (x *GetPaymentsPortalURLRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetPaymentsPortalURLRequest.ProtoReflect.Descriptor instead. -func (*GetPaymentsPortalURLRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CopyPersonalVirtualFileResponse.ProtoReflect.Descriptor instead. +func (*CopyPersonalVirtualFileResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{305} } -func (x *GetPaymentsPortalURLRequest) GetOrg() string { - if x != nil { - return x.Org - } - return "" -} - -func (x *GetPaymentsPortalURLRequest) GetReturnUrl() string { +func (x *CopyPersonalVirtualFileResponse) GetName() string { if x != nil { - return x.ReturnUrl + return x.Name } return "" } -func (x *GetPaymentsPortalURLRequest) GetSetup() bool { - if x != nil { - return x.Setup - } - return false -} - -func (x *GetPaymentsPortalURLRequest) GetSuperuserForceAccess() bool { - if x != nil { - return x.SuperuserForceAccess - } - return false -} - -type GetPaymentsPortalURLResponse struct { +type GetPersonalVirtualFileRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Type PersonalVirtualFileType `protobuf:"varint,3,opt,name=type,proto3,enum=rill.admin.v1.PersonalVirtualFileType" json:"type,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` } -func (x *GetPaymentsPortalURLResponse) Reset() { - *x = GetPaymentsPortalURLResponse{} +func (x *GetPersonalVirtualFileRequest) Reset() { + *x = GetPersonalVirtualFileRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[306] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18550,13 +18693,13 @@ func (x *GetPaymentsPortalURLResponse) Reset() { } } -func (x *GetPaymentsPortalURLResponse) String() string { +func (x *GetPersonalVirtualFileRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetPaymentsPortalURLResponse) ProtoMessage() {} +func (*GetPersonalVirtualFileRequest) ProtoMessage() {} -func (x *GetPaymentsPortalURLResponse) ProtoReflect() protoreflect.Message { +func (x *GetPersonalVirtualFileRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[306] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18568,29 +18711,52 @@ func (x *GetPaymentsPortalURLResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetPaymentsPortalURLResponse.ProtoReflect.Descriptor instead. -func (*GetPaymentsPortalURLResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetPersonalVirtualFileRequest.ProtoReflect.Descriptor instead. +func (*GetPersonalVirtualFileRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{306} } -func (x *GetPaymentsPortalURLResponse) GetUrl() string { +func (x *GetPersonalVirtualFileRequest) GetOrg() string { if x != nil { - return x.Url + return x.Org } return "" } -type GetBillingCreditBalanceRequest struct { +func (x *GetPersonalVirtualFileRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *GetPersonalVirtualFileRequest) GetType() PersonalVirtualFileType { + if x != nil { + return x.Type + } + return PersonalVirtualFileType_PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED +} + +func (x *GetPersonalVirtualFileRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type GetPersonalVirtualFileResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` - SuperuserForceAccess bool `protobuf:"varint,2,opt,name=superuser_force_access,json=superuserForceAccess,proto3" json:"superuser_force_access,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Yaml string `protobuf:"bytes,3,opt,name=yaml,proto3" json:"yaml,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *GetBillingCreditBalanceRequest) Reset() { - *x = GetBillingCreditBalanceRequest{} +func (x *GetPersonalVirtualFileResponse) Reset() { + *x = GetPersonalVirtualFileResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[307] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18598,13 +18764,13 @@ func (x *GetBillingCreditBalanceRequest) Reset() { } } -func (x *GetBillingCreditBalanceRequest) String() string { +func (x *GetPersonalVirtualFileResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetBillingCreditBalanceRequest) ProtoMessage() {} +func (*GetPersonalVirtualFileResponse) ProtoMessage() {} -func (x *GetBillingCreditBalanceRequest) ProtoReflect() protoreflect.Message { +func (x *GetPersonalVirtualFileResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[307] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18616,35 +18782,51 @@ func (x *GetBillingCreditBalanceRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetBillingCreditBalanceRequest.ProtoReflect.Descriptor instead. -func (*GetBillingCreditBalanceRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetPersonalVirtualFileResponse.ProtoReflect.Descriptor instead. +func (*GetPersonalVirtualFileResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{307} } -func (x *GetBillingCreditBalanceRequest) GetOrg() string { +func (x *GetPersonalVirtualFileResponse) GetName() string { if x != nil { - return x.Org + return x.Name } return "" } -func (x *GetBillingCreditBalanceRequest) GetSuperuserForceAccess() bool { +func (x *GetPersonalVirtualFileResponse) GetDisplayName() string { if x != nil { - return x.SuperuserForceAccess + return x.DisplayName } - return false + return "" } -type GetBillingCreditBalanceResponse struct { +func (x *GetPersonalVirtualFileResponse) GetYaml() string { + if x != nil { + return x.Yaml + } + return "" +} + +func (x *GetPersonalVirtualFileResponse) GetUpdatedOn() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedOn + } + return nil +} + +type ListPersonalVirtualFilesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Balance float64 `protobuf:"fixed64,1,opt,name=balance,proto3" json:"balance,omitempty"` + Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Type PersonalVirtualFileType `protobuf:"varint,3,opt,name=type,proto3,enum=rill.admin.v1.PersonalVirtualFileType" json:"type,omitempty"` } -func (x *GetBillingCreditBalanceResponse) Reset() { - *x = GetBillingCreditBalanceResponse{} +func (x *ListPersonalVirtualFilesRequest) Reset() { + *x = ListPersonalVirtualFilesRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[308] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18652,13 +18834,13 @@ func (x *GetBillingCreditBalanceResponse) Reset() { } } -func (x *GetBillingCreditBalanceResponse) String() string { +func (x *ListPersonalVirtualFilesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetBillingCreditBalanceResponse) ProtoMessage() {} +func (*ListPersonalVirtualFilesRequest) ProtoMessage() {} -func (x *GetBillingCreditBalanceResponse) ProtoReflect() protoreflect.Message { +func (x *ListPersonalVirtualFilesRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[308] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18670,26 +18852,42 @@ func (x *GetBillingCreditBalanceResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetBillingCreditBalanceResponse.ProtoReflect.Descriptor instead. -func (*GetBillingCreditBalanceResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPersonalVirtualFilesRequest.ProtoReflect.Descriptor instead. +func (*ListPersonalVirtualFilesRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{308} } -func (x *GetBillingCreditBalanceResponse) GetBalance() float64 { +func (x *ListPersonalVirtualFilesRequest) GetOrg() string { if x != nil { - return x.Balance + return x.Org } - return 0 + return "" } -type ListPublicBillingPlansRequest struct { +func (x *ListPersonalVirtualFilesRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *ListPersonalVirtualFilesRequest) GetType() PersonalVirtualFileType { + if x != nil { + return x.Type + } + return PersonalVirtualFileType_PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED +} + +type ListPersonalVirtualFilesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Files []*PersonalVirtualFileSummary `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"` } -func (x *ListPublicBillingPlansRequest) Reset() { - *x = ListPublicBillingPlansRequest{} +func (x *ListPersonalVirtualFilesResponse) Reset() { + *x = ListPersonalVirtualFilesResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[309] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18697,13 +18895,13 @@ func (x *ListPublicBillingPlansRequest) Reset() { } } -func (x *ListPublicBillingPlansRequest) String() string { +func (x *ListPersonalVirtualFilesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPublicBillingPlansRequest) ProtoMessage() {} +func (*ListPersonalVirtualFilesResponse) ProtoMessage() {} -func (x *ListPublicBillingPlansRequest) ProtoReflect() protoreflect.Message { +func (x *ListPersonalVirtualFilesResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[309] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18715,21 +18913,29 @@ func (x *ListPublicBillingPlansRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPublicBillingPlansRequest.ProtoReflect.Descriptor instead. -func (*ListPublicBillingPlansRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPersonalVirtualFilesResponse.ProtoReflect.Descriptor instead. +func (*ListPersonalVirtualFilesResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{309} } -type ListPublicBillingPlansResponse struct { +func (x *ListPersonalVirtualFilesResponse) GetFiles() []*PersonalVirtualFileSummary { + if x != nil { + return x.Files + } + return nil +} + +type GetBillingSubscriptionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Plans []*BillingPlan `protobuf:"bytes,1,rep,name=plans,proto3" json:"plans,omitempty"` + Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` + SuperuserForceAccess bool `protobuf:"varint,2,opt,name=superuser_force_access,json=superuserForceAccess,proto3" json:"superuser_force_access,omitempty"` } -func (x *ListPublicBillingPlansResponse) Reset() { - *x = ListPublicBillingPlansResponse{} +func (x *GetBillingSubscriptionRequest) Reset() { + *x = GetBillingSubscriptionRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[310] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18737,13 +18943,13 @@ func (x *ListPublicBillingPlansResponse) Reset() { } } -func (x *ListPublicBillingPlansResponse) String() string { +func (x *GetBillingSubscriptionRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPublicBillingPlansResponse) ProtoMessage() {} +func (*GetBillingSubscriptionRequest) ProtoMessage() {} -func (x *ListPublicBillingPlansResponse) ProtoReflect() protoreflect.Message { +func (x *GetBillingSubscriptionRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[310] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18755,28 +18961,37 @@ func (x *ListPublicBillingPlansResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPublicBillingPlansResponse.ProtoReflect.Descriptor instead. -func (*ListPublicBillingPlansResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetBillingSubscriptionRequest.ProtoReflect.Descriptor instead. +func (*GetBillingSubscriptionRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{310} } -func (x *ListPublicBillingPlansResponse) GetPlans() []*BillingPlan { +func (x *GetBillingSubscriptionRequest) GetOrg() string { if x != nil { - return x.Plans + return x.Org } - return nil + return "" } -type GetBillingProjectCredentialsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` +func (x *GetBillingSubscriptionRequest) GetSuperuserForceAccess() bool { + if x != nil { + return x.SuperuserForceAccess + } + return false } -func (x *GetBillingProjectCredentialsRequest) Reset() { - *x = GetBillingProjectCredentialsRequest{} +type GetBillingSubscriptionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Organization *Organization `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Subscription *Subscription `protobuf:"bytes,2,opt,name=subscription,proto3" json:"subscription,omitempty"` + BillingPortalUrl string `protobuf:"bytes,3,opt,name=billing_portal_url,json=billingPortalUrl,proto3" json:"billing_portal_url,omitempty"` +} + +func (x *GetBillingSubscriptionResponse) Reset() { + *x = GetBillingSubscriptionResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[311] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18784,13 +18999,13 @@ func (x *GetBillingProjectCredentialsRequest) Reset() { } } -func (x *GetBillingProjectCredentialsRequest) String() string { +func (x *GetBillingSubscriptionResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetBillingProjectCredentialsRequest) ProtoMessage() {} +func (*GetBillingSubscriptionResponse) ProtoMessage() {} -func (x *GetBillingProjectCredentialsRequest) ProtoReflect() protoreflect.Message { +func (x *GetBillingSubscriptionResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[311] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18802,31 +19017,44 @@ func (x *GetBillingProjectCredentialsRequest) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use GetBillingProjectCredentialsRequest.ProtoReflect.Descriptor instead. -func (*GetBillingProjectCredentialsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetBillingSubscriptionResponse.ProtoReflect.Descriptor instead. +func (*GetBillingSubscriptionResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{311} } -func (x *GetBillingProjectCredentialsRequest) GetOrg() string { +func (x *GetBillingSubscriptionResponse) GetOrganization() *Organization { if x != nil { - return x.Org + return x.Organization + } + return nil +} + +func (x *GetBillingSubscriptionResponse) GetSubscription() *Subscription { + if x != nil { + return x.Subscription + } + return nil +} + +func (x *GetBillingSubscriptionResponse) GetBillingPortalUrl() string { + if x != nil { + return x.BillingPortalUrl } return "" } -type GetBillingProjectCredentialsResponse struct { +type UpdateBillingSubscriptionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - RuntimeHost string `protobuf:"bytes,1,opt,name=runtime_host,json=runtimeHost,proto3" json:"runtime_host,omitempty"` - InstanceId string `protobuf:"bytes,2,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` - AccessToken string `protobuf:"bytes,3,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` - TtlSeconds uint32 `protobuf:"varint,4,opt,name=ttl_seconds,json=ttlSeconds,proto3" json:"ttl_seconds,omitempty"` + Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` + PlanName string `protobuf:"bytes,2,opt,name=plan_name,json=planName,proto3" json:"plan_name,omitempty"` + SuperuserForceAccess bool `protobuf:"varint,3,opt,name=superuser_force_access,json=superuserForceAccess,proto3" json:"superuser_force_access,omitempty"` } -func (x *GetBillingProjectCredentialsResponse) Reset() { - *x = GetBillingProjectCredentialsResponse{} +func (x *UpdateBillingSubscriptionRequest) Reset() { + *x = UpdateBillingSubscriptionRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[312] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18834,13 +19062,13 @@ func (x *GetBillingProjectCredentialsResponse) Reset() { } } -func (x *GetBillingProjectCredentialsResponse) String() string { +func (x *UpdateBillingSubscriptionRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetBillingProjectCredentialsResponse) ProtoMessage() {} +func (*UpdateBillingSubscriptionRequest) ProtoMessage() {} -func (x *GetBillingProjectCredentialsResponse) ProtoReflect() protoreflect.Message { +func (x *UpdateBillingSubscriptionRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[312] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18852,54 +19080,43 @@ func (x *GetBillingProjectCredentialsResponse) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use GetBillingProjectCredentialsResponse.ProtoReflect.Descriptor instead. -func (*GetBillingProjectCredentialsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdateBillingSubscriptionRequest.ProtoReflect.Descriptor instead. +func (*UpdateBillingSubscriptionRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{312} } -func (x *GetBillingProjectCredentialsResponse) GetRuntimeHost() string { - if x != nil { - return x.RuntimeHost - } - return "" -} - -func (x *GetBillingProjectCredentialsResponse) GetInstanceId() string { +func (x *UpdateBillingSubscriptionRequest) GetOrg() string { if x != nil { - return x.InstanceId + return x.Org } return "" } -func (x *GetBillingProjectCredentialsResponse) GetAccessToken() string { +func (x *UpdateBillingSubscriptionRequest) GetPlanName() string { if x != nil { - return x.AccessToken + return x.PlanName } return "" } -func (x *GetBillingProjectCredentialsResponse) GetTtlSeconds() uint32 { +func (x *UpdateBillingSubscriptionRequest) GetSuperuserForceAccess() bool { if x != nil { - return x.TtlSeconds + return x.SuperuserForceAccess } - return 0 + return false } -type TelemetryRequest struct { +type UpdateBillingSubscriptionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name passed to activity module's name arg - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Value passed to activity module's value arg - Value float32 `protobuf:"fixed32,2,opt,name=value,proto3" json:"value,omitempty"` - // Free form struct of the actual event - Event *structpb.Struct `protobuf:"bytes,3,opt,name=event,proto3" json:"event,omitempty"` + Organization *Organization `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Subscription *Subscription `protobuf:"bytes,2,opt,name=subscription,proto3" json:"subscription,omitempty"` } -func (x *TelemetryRequest) Reset() { - *x = TelemetryRequest{} +func (x *UpdateBillingSubscriptionResponse) Reset() { + *x = UpdateBillingSubscriptionResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[313] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18907,13 +19124,13 @@ func (x *TelemetryRequest) Reset() { } } -func (x *TelemetryRequest) String() string { +func (x *UpdateBillingSubscriptionResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TelemetryRequest) ProtoMessage() {} +func (*UpdateBillingSubscriptionResponse) ProtoMessage() {} -func (x *TelemetryRequest) ProtoReflect() protoreflect.Message { +func (x *UpdateBillingSubscriptionResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[313] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18925,40 +19142,36 @@ func (x *TelemetryRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TelemetryRequest.ProtoReflect.Descriptor instead. -func (*TelemetryRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdateBillingSubscriptionResponse.ProtoReflect.Descriptor instead. +func (*UpdateBillingSubscriptionResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{313} } -func (x *TelemetryRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *TelemetryRequest) GetValue() float32 { +func (x *UpdateBillingSubscriptionResponse) GetOrganization() *Organization { if x != nil { - return x.Value + return x.Organization } - return 0 + return nil } -func (x *TelemetryRequest) GetEvent() *structpb.Struct { +func (x *UpdateBillingSubscriptionResponse) GetSubscription() *Subscription { if x != nil { - return x.Event + return x.Subscription } return nil } -type TelemetryResponse struct { +type CancelBillingSubscriptionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` + SuperuserForceAccess bool `protobuf:"varint,2,opt,name=superuser_force_access,json=superuserForceAccess,proto3" json:"superuser_force_access,omitempty"` } -func (x *TelemetryResponse) Reset() { - *x = TelemetryResponse{} +func (x *CancelBillingSubscriptionRequest) Reset() { + *x = CancelBillingSubscriptionRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[314] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18966,13 +19179,13 @@ func (x *TelemetryResponse) Reset() { } } -func (x *TelemetryResponse) String() string { +func (x *CancelBillingSubscriptionRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TelemetryResponse) ProtoMessage() {} +func (*CancelBillingSubscriptionRequest) ProtoMessage() {} -func (x *TelemetryResponse) ProtoReflect() protoreflect.Message { +func (x *CancelBillingSubscriptionRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[314] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18984,23 +19197,33 @@ func (x *TelemetryResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TelemetryResponse.ProtoReflect.Descriptor instead. -func (*TelemetryResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CancelBillingSubscriptionRequest.ProtoReflect.Descriptor instead. +func (*CancelBillingSubscriptionRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{314} } -type RequestProjectAccessRequest struct { +func (x *CancelBillingSubscriptionRequest) GetOrg() string { + if x != nil { + return x.Org + } + return "" +} + +func (x *CancelBillingSubscriptionRequest) GetSuperuserForceAccess() bool { + if x != nil { + return x.SuperuserForceAccess + } + return false +} + +type CancelBillingSubscriptionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - Role string `protobuf:"bytes,3,opt,name=role,proto3" json:"role,omitempty"` } -func (x *RequestProjectAccessRequest) Reset() { - *x = RequestProjectAccessRequest{} +func (x *CancelBillingSubscriptionResponse) Reset() { + *x = CancelBillingSubscriptionResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[315] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19008,13 +19231,13 @@ func (x *RequestProjectAccessRequest) Reset() { } } -func (x *RequestProjectAccessRequest) String() string { +func (x *CancelBillingSubscriptionResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RequestProjectAccessRequest) ProtoMessage() {} +func (*CancelBillingSubscriptionResponse) ProtoMessage() {} -func (x *RequestProjectAccessRequest) ProtoReflect() protoreflect.Message { +func (x *CancelBillingSubscriptionResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[315] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19026,40 +19249,23 @@ func (x *RequestProjectAccessRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RequestProjectAccessRequest.ProtoReflect.Descriptor instead. -func (*RequestProjectAccessRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CancelBillingSubscriptionResponse.ProtoReflect.Descriptor instead. +func (*CancelBillingSubscriptionResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{315} } -func (x *RequestProjectAccessRequest) GetOrg() string { - if x != nil { - return x.Org - } - return "" -} - -func (x *RequestProjectAccessRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -func (x *RequestProjectAccessRequest) GetRole() string { - if x != nil { - return x.Role - } - return "" -} - -type RequestProjectAccessResponse struct { +type RenewBillingSubscriptionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` + PlanName string `protobuf:"bytes,2,opt,name=plan_name,json=planName,proto3" json:"plan_name,omitempty"` + SuperuserForceAccess bool `protobuf:"varint,3,opt,name=superuser_force_access,json=superuserForceAccess,proto3" json:"superuser_force_access,omitempty"` } -func (x *RequestProjectAccessResponse) Reset() { - *x = RequestProjectAccessResponse{} +func (x *RenewBillingSubscriptionRequest) Reset() { + *x = RenewBillingSubscriptionRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[316] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19067,13 +19273,13 @@ func (x *RequestProjectAccessResponse) Reset() { } } -func (x *RequestProjectAccessResponse) String() string { +func (x *RenewBillingSubscriptionRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RequestProjectAccessResponse) ProtoMessage() {} +func (*RenewBillingSubscriptionRequest) ProtoMessage() {} -func (x *RequestProjectAccessResponse) ProtoReflect() protoreflect.Message { +func (x *RenewBillingSubscriptionRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[316] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19085,35 +19291,57 @@ func (x *RequestProjectAccessResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RequestProjectAccessResponse.ProtoReflect.Descriptor instead. -func (*RequestProjectAccessResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use RenewBillingSubscriptionRequest.ProtoReflect.Descriptor instead. +func (*RenewBillingSubscriptionRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{316} } -type GetProjectAccessRequestRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +func (x *RenewBillingSubscriptionRequest) GetOrg() string { + if x != nil { + return x.Org + } + return "" } -func (x *GetProjectAccessRequestRequest) Reset() { - *x = GetProjectAccessRequestRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[317] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *RenewBillingSubscriptionRequest) GetPlanName() string { + if x != nil { + return x.PlanName } + return "" } -func (x *GetProjectAccessRequestRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *RenewBillingSubscriptionRequest) GetSuperuserForceAccess() bool { + if x != nil { + return x.SuperuserForceAccess + } + return false } -func (*GetProjectAccessRequestRequest) ProtoMessage() {} +type RenewBillingSubscriptionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *GetProjectAccessRequestRequest) ProtoReflect() protoreflect.Message { + Organization *Organization `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Subscription *Subscription `protobuf:"bytes,2,opt,name=subscription,proto3" json:"subscription,omitempty"` +} + +func (x *RenewBillingSubscriptionResponse) Reset() { + *x = RenewBillingSubscriptionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[317] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RenewBillingSubscriptionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RenewBillingSubscriptionResponse) ProtoMessage() {} + +func (x *RenewBillingSubscriptionResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[317] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19125,28 +19353,38 @@ func (x *GetProjectAccessRequestRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetProjectAccessRequestRequest.ProtoReflect.Descriptor instead. -func (*GetProjectAccessRequestRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use RenewBillingSubscriptionResponse.ProtoReflect.Descriptor instead. +func (*RenewBillingSubscriptionResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{317} } -func (x *GetProjectAccessRequestRequest) GetId() string { +func (x *RenewBillingSubscriptionResponse) GetOrganization() *Organization { if x != nil { - return x.Id + return x.Organization } - return "" + return nil } -type GetProjectAccessRequestResponse struct { +func (x *RenewBillingSubscriptionResponse) GetSubscription() *Subscription { + if x != nil { + return x.Subscription + } + return nil +} + +type GetPaymentsPortalURLRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` + ReturnUrl string `protobuf:"bytes,2,opt,name=return_url,json=returnUrl,proto3" json:"return_url,omitempty"` + Setup bool `protobuf:"varint,4,opt,name=setup,proto3" json:"setup,omitempty"` // If true, the returned URL will be for the first time payment method setup flow. If false, it will be for managing the billing details. + SuperuserForceAccess bool `protobuf:"varint,3,opt,name=superuser_force_access,json=superuserForceAccess,proto3" json:"superuser_force_access,omitempty"` } -func (x *GetProjectAccessRequestResponse) Reset() { - *x = GetProjectAccessRequestResponse{} +func (x *GetPaymentsPortalURLRequest) Reset() { + *x = GetPaymentsPortalURLRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[318] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19154,13 +19392,13 @@ func (x *GetProjectAccessRequestResponse) Reset() { } } -func (x *GetProjectAccessRequestResponse) String() string { +func (x *GetPaymentsPortalURLRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetProjectAccessRequestResponse) ProtoMessage() {} +func (*GetPaymentsPortalURLRequest) ProtoMessage() {} -func (x *GetProjectAccessRequestResponse) ProtoReflect() protoreflect.Message { +func (x *GetPaymentsPortalURLRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[318] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19172,29 +19410,49 @@ func (x *GetProjectAccessRequestResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetProjectAccessRequestResponse.ProtoReflect.Descriptor instead. -func (*GetProjectAccessRequestResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetPaymentsPortalURLRequest.ProtoReflect.Descriptor instead. +func (*GetPaymentsPortalURLRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{318} } -func (x *GetProjectAccessRequestResponse) GetEmail() string { +func (x *GetPaymentsPortalURLRequest) GetOrg() string { if x != nil { - return x.Email + return x.Org } return "" } -type ApproveProjectAccessRequest struct { +func (x *GetPaymentsPortalURLRequest) GetReturnUrl() string { + if x != nil { + return x.ReturnUrl + } + return "" +} + +func (x *GetPaymentsPortalURLRequest) GetSetup() bool { + if x != nil { + return x.Setup + } + return false +} + +func (x *GetPaymentsPortalURLRequest) GetSuperuserForceAccess() bool { + if x != nil { + return x.SuperuserForceAccess + } + return false +} + +type GetPaymentsPortalURLResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` } -func (x *ApproveProjectAccessRequest) Reset() { - *x = ApproveProjectAccessRequest{} +func (x *GetPaymentsPortalURLResponse) Reset() { + *x = GetPaymentsPortalURLResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[319] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19202,13 +19460,13 @@ func (x *ApproveProjectAccessRequest) Reset() { } } -func (x *ApproveProjectAccessRequest) String() string { +func (x *GetPaymentsPortalURLResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ApproveProjectAccessRequest) ProtoMessage() {} +func (*GetPaymentsPortalURLResponse) ProtoMessage() {} -func (x *ApproveProjectAccessRequest) ProtoReflect() protoreflect.Message { +func (x *GetPaymentsPortalURLResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[319] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19220,33 +19478,29 @@ func (x *ApproveProjectAccessRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ApproveProjectAccessRequest.ProtoReflect.Descriptor instead. -func (*ApproveProjectAccessRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetPaymentsPortalURLResponse.ProtoReflect.Descriptor instead. +func (*GetPaymentsPortalURLResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{319} } -func (x *ApproveProjectAccessRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *ApproveProjectAccessRequest) GetRole() string { +func (x *GetPaymentsPortalURLResponse) GetUrl() string { if x != nil { - return x.Role + return x.Url } return "" } -type ApproveProjectAccessResponse struct { +type GetBillingCreditBalanceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` + SuperuserForceAccess bool `protobuf:"varint,2,opt,name=superuser_force_access,json=superuserForceAccess,proto3" json:"superuser_force_access,omitempty"` } -func (x *ApproveProjectAccessResponse) Reset() { - *x = ApproveProjectAccessResponse{} +func (x *GetBillingCreditBalanceRequest) Reset() { + *x = GetBillingCreditBalanceRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[320] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19254,13 +19508,13 @@ func (x *ApproveProjectAccessResponse) Reset() { } } -func (x *ApproveProjectAccessResponse) String() string { +func (x *GetBillingCreditBalanceRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ApproveProjectAccessResponse) ProtoMessage() {} +func (*GetBillingCreditBalanceRequest) ProtoMessage() {} -func (x *ApproveProjectAccessResponse) ProtoReflect() protoreflect.Message { +func (x *GetBillingCreditBalanceRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[320] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19272,21 +19526,35 @@ func (x *ApproveProjectAccessResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ApproveProjectAccessResponse.ProtoReflect.Descriptor instead. -func (*ApproveProjectAccessResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetBillingCreditBalanceRequest.ProtoReflect.Descriptor instead. +func (*GetBillingCreditBalanceRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{320} } -type DenyProjectAccessRequest struct { +func (x *GetBillingCreditBalanceRequest) GetOrg() string { + if x != nil { + return x.Org + } + return "" +} + +func (x *GetBillingCreditBalanceRequest) GetSuperuserForceAccess() bool { + if x != nil { + return x.SuperuserForceAccess + } + return false +} + +type GetBillingCreditBalanceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Balance float64 `protobuf:"fixed64,1,opt,name=balance,proto3" json:"balance,omitempty"` } -func (x *DenyProjectAccessRequest) Reset() { - *x = DenyProjectAccessRequest{} +func (x *GetBillingCreditBalanceResponse) Reset() { + *x = GetBillingCreditBalanceResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[321] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19294,13 +19562,13 @@ func (x *DenyProjectAccessRequest) Reset() { } } -func (x *DenyProjectAccessRequest) String() string { +func (x *GetBillingCreditBalanceResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DenyProjectAccessRequest) ProtoMessage() {} +func (*GetBillingCreditBalanceResponse) ProtoMessage() {} -func (x *DenyProjectAccessRequest) ProtoReflect() protoreflect.Message { +func (x *GetBillingCreditBalanceResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[321] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19312,26 +19580,26 @@ func (x *DenyProjectAccessRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DenyProjectAccessRequest.ProtoReflect.Descriptor instead. -func (*DenyProjectAccessRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetBillingCreditBalanceResponse.ProtoReflect.Descriptor instead. +func (*GetBillingCreditBalanceResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{321} } -func (x *DenyProjectAccessRequest) GetId() string { +func (x *GetBillingCreditBalanceResponse) GetBalance() float64 { if x != nil { - return x.Id + return x.Balance } - return "" + return 0 } -type DenyProjectAccessResponse struct { +type ListPublicBillingPlansRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *DenyProjectAccessResponse) Reset() { - *x = DenyProjectAccessResponse{} +func (x *ListPublicBillingPlansRequest) Reset() { + *x = ListPublicBillingPlansRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[322] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19339,13 +19607,13 @@ func (x *DenyProjectAccessResponse) Reset() { } } -func (x *DenyProjectAccessResponse) String() string { +func (x *ListPublicBillingPlansRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DenyProjectAccessResponse) ProtoMessage() {} +func (*ListPublicBillingPlansRequest) ProtoMessage() {} -func (x *DenyProjectAccessResponse) ProtoReflect() protoreflect.Message { +func (x *ListPublicBillingPlansRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[322] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19357,22 +19625,21 @@ func (x *DenyProjectAccessResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DenyProjectAccessResponse.ProtoReflect.Descriptor instead. -func (*DenyProjectAccessResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPublicBillingPlansRequest.ProtoReflect.Descriptor instead. +func (*ListPublicBillingPlansRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{322} } -type ListOrganizationBillingIssuesRequest struct { +type ListPublicBillingPlansResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` - SuperuserForceAccess bool `protobuf:"varint,2,opt,name=superuser_force_access,json=superuserForceAccess,proto3" json:"superuser_force_access,omitempty"` + Plans []*BillingPlan `protobuf:"bytes,1,rep,name=plans,proto3" json:"plans,omitempty"` } -func (x *ListOrganizationBillingIssuesRequest) Reset() { - *x = ListOrganizationBillingIssuesRequest{} +func (x *ListPublicBillingPlansResponse) Reset() { + *x = ListPublicBillingPlansResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[323] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19380,13 +19647,13 @@ func (x *ListOrganizationBillingIssuesRequest) Reset() { } } -func (x *ListOrganizationBillingIssuesRequest) String() string { +func (x *ListPublicBillingPlansResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListOrganizationBillingIssuesRequest) ProtoMessage() {} +func (*ListPublicBillingPlansResponse) ProtoMessage() {} -func (x *ListOrganizationBillingIssuesRequest) ProtoReflect() protoreflect.Message { +func (x *ListPublicBillingPlansResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[323] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19398,35 +19665,28 @@ func (x *ListOrganizationBillingIssuesRequest) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use ListOrganizationBillingIssuesRequest.ProtoReflect.Descriptor instead. -func (*ListOrganizationBillingIssuesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPublicBillingPlansResponse.ProtoReflect.Descriptor instead. +func (*ListPublicBillingPlansResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{323} } -func (x *ListOrganizationBillingIssuesRequest) GetOrg() string { - if x != nil { - return x.Org - } - return "" -} - -func (x *ListOrganizationBillingIssuesRequest) GetSuperuserForceAccess() bool { +func (x *ListPublicBillingPlansResponse) GetPlans() []*BillingPlan { if x != nil { - return x.SuperuserForceAccess + return x.Plans } - return false + return nil } -type ListOrganizationBillingIssuesResponse struct { +type GetBillingProjectCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Issues []*BillingIssue `protobuf:"bytes,1,rep,name=issues,proto3" json:"issues,omitempty"` + Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` } -func (x *ListOrganizationBillingIssuesResponse) Reset() { - *x = ListOrganizationBillingIssuesResponse{} +func (x *GetBillingProjectCredentialsRequest) Reset() { + *x = GetBillingProjectCredentialsRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[324] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19434,13 +19694,13 @@ func (x *ListOrganizationBillingIssuesResponse) Reset() { } } -func (x *ListOrganizationBillingIssuesResponse) String() string { +func (x *GetBillingProjectCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListOrganizationBillingIssuesResponse) ProtoMessage() {} +func (*GetBillingProjectCredentialsRequest) ProtoMessage() {} -func (x *ListOrganizationBillingIssuesResponse) ProtoReflect() protoreflect.Message { +func (x *GetBillingProjectCredentialsRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[324] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19452,35 +19712,31 @@ func (x *ListOrganizationBillingIssuesResponse) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use ListOrganizationBillingIssuesResponse.ProtoReflect.Descriptor instead. -func (*ListOrganizationBillingIssuesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetBillingProjectCredentialsRequest.ProtoReflect.Descriptor instead. +func (*GetBillingProjectCredentialsRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{324} } -func (x *ListOrganizationBillingIssuesResponse) GetIssues() []*BillingIssue { +func (x *GetBillingProjectCredentialsRequest) GetOrg() string { if x != nil { - return x.Issues + return x.Org } - return nil + return "" } -type User struct { +type GetBillingProjectCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` - DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - PhotoUrl string `protobuf:"bytes,4,opt,name=photo_url,json=photoUrl,proto3" json:"photo_url,omitempty"` - Quotas *UserQuotas `protobuf:"bytes,5,opt,name=quotas,proto3" json:"quotas,omitempty"` - PylonEmailHash string `protobuf:"bytes,8,opt,name=pylon_email_hash,json=pylonEmailHash,proto3" json:"pylon_email_hash,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` + RuntimeHost string `protobuf:"bytes,1,opt,name=runtime_host,json=runtimeHost,proto3" json:"runtime_host,omitempty"` + InstanceId string `protobuf:"bytes,2,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` + AccessToken string `protobuf:"bytes,3,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` + TtlSeconds uint32 `protobuf:"varint,4,opt,name=ttl_seconds,json=ttlSeconds,proto3" json:"ttl_seconds,omitempty"` } -func (x *User) Reset() { - *x = User{} +func (x *GetBillingProjectCredentialsResponse) Reset() { + *x = GetBillingProjectCredentialsResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[325] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19488,13 +19744,13 @@ func (x *User) Reset() { } } -func (x *User) String() string { +func (x *GetBillingProjectCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*User) ProtoMessage() {} +func (*GetBillingProjectCredentialsResponse) ProtoMessage() {} -func (x *User) ProtoReflect() protoreflect.Message { +func (x *GetBillingProjectCredentialsResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[325] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19506,83 +19762,54 @@ func (x *User) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use User.ProtoReflect.Descriptor instead. -func (*User) Descriptor() ([]byte, []int) { +// Deprecated: Use GetBillingProjectCredentialsResponse.ProtoReflect.Descriptor instead. +func (*GetBillingProjectCredentialsResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{325} } -func (x *User) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *User) GetEmail() string { - if x != nil { - return x.Email - } - return "" -} - -func (x *User) GetDisplayName() string { +func (x *GetBillingProjectCredentialsResponse) GetRuntimeHost() string { if x != nil { - return x.DisplayName + return x.RuntimeHost } return "" } -func (x *User) GetPhotoUrl() string { +func (x *GetBillingProjectCredentialsResponse) GetInstanceId() string { if x != nil { - return x.PhotoUrl + return x.InstanceId } return "" } -func (x *User) GetQuotas() *UserQuotas { - if x != nil { - return x.Quotas - } - return nil -} - -func (x *User) GetPylonEmailHash() string { +func (x *GetBillingProjectCredentialsResponse) GetAccessToken() string { if x != nil { - return x.PylonEmailHash + return x.AccessToken } return "" } -func (x *User) GetCreatedOn() *timestamppb.Timestamp { - if x != nil { - return x.CreatedOn - } - return nil -} - -func (x *User) GetUpdatedOn() *timestamppb.Timestamp { +func (x *GetBillingProjectCredentialsResponse) GetTtlSeconds() uint32 { if x != nil { - return x.UpdatedOn + return x.TtlSeconds } - return nil + return 0 } -type Service struct { +type TelemetryRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - OrgId string `protobuf:"bytes,3,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` - OrgName string `protobuf:"bytes,4,opt,name=org_name,json=orgName,proto3" json:"org_name,omitempty"` - Attributes *structpb.Struct `protobuf:"bytes,8,opt,name=attributes,proto3" json:"attributes,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` + // Name passed to activity module's name arg + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Value passed to activity module's value arg + Value float32 `protobuf:"fixed32,2,opt,name=value,proto3" json:"value,omitempty"` + // Free form struct of the actual event + Event *structpb.Struct `protobuf:"bytes,3,opt,name=event,proto3" json:"event,omitempty"` } -func (x *Service) Reset() { - *x = Service{} +func (x *TelemetryRequest) Reset() { + *x = TelemetryRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[326] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19590,13 +19817,13 @@ func (x *Service) Reset() { } } -func (x *Service) String() string { +func (x *TelemetryRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Service) ProtoMessage() {} +func (*TelemetryRequest) ProtoMessage() {} -func (x *Service) ProtoReflect() protoreflect.Message { +func (x *TelemetryRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[326] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19608,78 +19835,40 @@ func (x *Service) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Service.ProtoReflect.Descriptor instead. -func (*Service) Descriptor() ([]byte, []int) { +// Deprecated: Use TelemetryRequest.ProtoReflect.Descriptor instead. +func (*TelemetryRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{326} } -func (x *Service) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Service) GetName() string { +func (x *TelemetryRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *Service) GetOrgId() string { - if x != nil { - return x.OrgId - } - return "" -} - -func (x *Service) GetOrgName() string { - if x != nil { - return x.OrgName - } - return "" -} - -func (x *Service) GetAttributes() *structpb.Struct { - if x != nil { - return x.Attributes - } - return nil -} - -func (x *Service) GetCreatedOn() *timestamppb.Timestamp { +func (x *TelemetryRequest) GetValue() float32 { if x != nil { - return x.CreatedOn + return x.Value } - return nil + return 0 } -func (x *Service) GetUpdatedOn() *timestamppb.Timestamp { +func (x *TelemetryRequest) GetEvent() *structpb.Struct { if x != nil { - return x.UpdatedOn + return x.Event } return nil } -type OrganizationMemberService struct { +type TelemetryResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - OrgId string `protobuf:"bytes,3,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` - OrgName string `protobuf:"bytes,4,opt,name=org_name,json=orgName,proto3" json:"org_name,omitempty"` - RoleName string `protobuf:"bytes,5,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` - HasProjectRoles bool `protobuf:"varint,7,opt,name=has_project_roles,json=hasProjectRoles,proto3" json:"has_project_roles,omitempty"` // True if the user has a project role in any project in the organization. - Attributes *structpb.Struct `protobuf:"bytes,8,opt,name=attributes,proto3" json:"attributes,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *OrganizationMemberService) Reset() { - *x = OrganizationMemberService{} +func (x *TelemetryResponse) Reset() { + *x = TelemetryResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[327] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19687,13 +19876,13 @@ func (x *OrganizationMemberService) Reset() { } } -func (x *OrganizationMemberService) String() string { +func (x *TelemetryResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OrganizationMemberService) ProtoMessage() {} +func (*TelemetryResponse) ProtoMessage() {} -func (x *OrganizationMemberService) ProtoReflect() protoreflect.Message { +func (x *TelemetryResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[327] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -19705,109 +19894,97 @@ func (x *OrganizationMemberService) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OrganizationMemberService.ProtoReflect.Descriptor instead. -func (*OrganizationMemberService) Descriptor() ([]byte, []int) { +// Deprecated: Use TelemetryResponse.ProtoReflect.Descriptor instead. +func (*TelemetryResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{327} } -func (x *OrganizationMemberService) GetId() string { - if x != nil { - return x.Id - } - return "" -} +type RequestProjectAccessRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *OrganizationMemberService) GetName() string { - if x != nil { - return x.Name - } - return "" + Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Role string `protobuf:"bytes,3,opt,name=role,proto3" json:"role,omitempty"` } -func (x *OrganizationMemberService) GetOrgId() string { - if x != nil { - return x.OrgId +func (x *RequestProjectAccessRequest) Reset() { + *x = RequestProjectAccessRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[328] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *OrganizationMemberService) GetOrgName() string { - if x != nil { - return x.OrgName - } - return "" +func (x *RequestProjectAccessRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *OrganizationMemberService) GetRoleName() string { - if x != nil { - return x.RoleName +func (*RequestProjectAccessRequest) ProtoMessage() {} + +func (x *RequestProjectAccessRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[328] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *OrganizationMemberService) GetHasProjectRoles() bool { - if x != nil { - return x.HasProjectRoles - } - return false +// Deprecated: Use RequestProjectAccessRequest.ProtoReflect.Descriptor instead. +func (*RequestProjectAccessRequest) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{328} } -func (x *OrganizationMemberService) GetAttributes() *structpb.Struct { +func (x *RequestProjectAccessRequest) GetOrg() string { if x != nil { - return x.Attributes + return x.Org } - return nil + return "" } -func (x *OrganizationMemberService) GetCreatedOn() *timestamppb.Timestamp { +func (x *RequestProjectAccessRequest) GetProject() string { if x != nil { - return x.CreatedOn + return x.Project } - return nil + return "" } -func (x *OrganizationMemberService) GetUpdatedOn() *timestamppb.Timestamp { +func (x *RequestProjectAccessRequest) GetRole() string { if x != nil { - return x.UpdatedOn + return x.Role } - return nil + return "" } -type ProjectMemberService struct { +type RequestProjectAccessResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - OrgId string `protobuf:"bytes,3,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` - OrgName string `protobuf:"bytes,4,opt,name=org_name,json=orgName,proto3" json:"org_name,omitempty"` - OrgRoleName string `protobuf:"bytes,5,opt,name=org_role_name,json=orgRoleName,proto3" json:"org_role_name,omitempty"` - ProjectId string `protobuf:"bytes,6,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - ProjectName string `protobuf:"bytes,7,opt,name=project_name,json=projectName,proto3" json:"project_name,omitempty"` - ProjectRoleName string `protobuf:"bytes,8,opt,name=project_role_name,json=projectRoleName,proto3" json:"project_role_name,omitempty"` - Attributes *structpb.Struct `protobuf:"bytes,9,opt,name=attributes,proto3" json:"attributes,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *ProjectMemberService) Reset() { - *x = ProjectMemberService{} +func (x *RequestProjectAccessResponse) Reset() { + *x = RequestProjectAccessResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[328] + mi := &file_rill_admin_v1_api_proto_msgTypes[329] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ProjectMemberService) String() string { +func (x *RequestProjectAccessResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProjectMemberService) ProtoMessage() {} +func (*RequestProjectAccessResponse) ProtoMessage() {} -func (x *ProjectMemberService) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[328] +func (x *RequestProjectAccessResponse) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[329] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19818,130 +19995,131 @@ func (x *ProjectMemberService) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ProjectMemberService.ProtoReflect.Descriptor instead. -func (*ProjectMemberService) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{328} +// Deprecated: Use RequestProjectAccessResponse.ProtoReflect.Descriptor instead. +func (*RequestProjectAccessResponse) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{329} } -func (x *ProjectMemberService) GetId() string { - if x != nil { - return x.Id - } - return "" +type GetProjectAccessRequestRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *ProjectMemberService) GetName() string { - if x != nil { - return x.Name +func (x *GetProjectAccessRequestRequest) Reset() { + *x = GetProjectAccessRequestRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[330] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *ProjectMemberService) GetOrgId() string { - if x != nil { - return x.OrgId - } - return "" +func (x *GetProjectAccessRequestRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ProjectMemberService) GetOrgName() string { - if x != nil { - return x.OrgName +func (*GetProjectAccessRequestRequest) ProtoMessage() {} + +func (x *GetProjectAccessRequestRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[330] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *ProjectMemberService) GetOrgRoleName() string { - if x != nil { - return x.OrgRoleName - } - return "" +// Deprecated: Use GetProjectAccessRequestRequest.ProtoReflect.Descriptor instead. +func (*GetProjectAccessRequestRequest) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{330} } -func (x *ProjectMemberService) GetProjectId() string { +func (x *GetProjectAccessRequestRequest) GetId() string { if x != nil { - return x.ProjectId + return x.Id } return "" } -func (x *ProjectMemberService) GetProjectName() string { - if x != nil { - return x.ProjectName - } - return "" +type GetProjectAccessRequestResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` } -func (x *ProjectMemberService) GetProjectRoleName() string { - if x != nil { - return x.ProjectRoleName +func (x *GetProjectAccessRequestResponse) Reset() { + *x = GetProjectAccessRequestResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[331] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *ProjectMemberService) GetAttributes() *structpb.Struct { - if x != nil { - return x.Attributes - } - return nil +func (x *GetProjectAccessRequestResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ProjectMemberService) GetCreatedOn() *timestamppb.Timestamp { - if x != nil { - return x.CreatedOn +func (*GetProjectAccessRequestResponse) ProtoMessage() {} + +func (x *GetProjectAccessRequestResponse) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[331] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *ProjectMemberService) GetUpdatedOn() *timestamppb.Timestamp { +// Deprecated: Use GetProjectAccessRequestResponse.ProtoReflect.Descriptor instead. +func (*GetProjectAccessRequestResponse) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{331} +} + +func (x *GetProjectAccessRequestResponse) GetEmail() string { if x != nil { - return x.UpdatedOn + return x.Email } - return nil + return "" } -type Organization struct { +type ApproveProjectAccessRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Globally unique - DisplayName string `protobuf:"bytes,11,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - LogoUrl string `protobuf:"bytes,12,opt,name=logo_url,json=logoUrl,proto3" json:"logo_url,omitempty"` - LogoDarkUrl string `protobuf:"bytes,18,opt,name=logo_dark_url,json=logoDarkUrl,proto3" json:"logo_dark_url,omitempty"` - FaviconUrl string `protobuf:"bytes,13,opt,name=favicon_url,json=faviconUrl,proto3" json:"favicon_url,omitempty"` - ThumbnailUrl string `protobuf:"bytes,17,opt,name=thumbnail_url,json=thumbnailUrl,proto3" json:"thumbnail_url,omitempty"` - CustomDomain string `protobuf:"bytes,10,opt,name=custom_domain,json=customDomain,proto3" json:"custom_domain,omitempty"` - DefaultProjectRoleId string `protobuf:"bytes,16,opt,name=default_project_role_id,json=defaultProjectRoleId,proto3" json:"default_project_role_id,omitempty"` - Quotas *OrganizationQuotas `protobuf:"bytes,4,opt,name=quotas,proto3" json:"quotas,omitempty"` - BillingCustomerId string `protobuf:"bytes,7,opt,name=billing_customer_id,json=billingCustomerId,proto3" json:"billing_customer_id,omitempty"` - PaymentCustomerId string `protobuf:"bytes,8,opt,name=payment_customer_id,json=paymentCustomerId,proto3" json:"payment_customer_id,omitempty"` - BillingEmail string `protobuf:"bytes,9,opt,name=billing_email,json=billingEmail,proto3" json:"billing_email,omitempty"` - BillingPlanName *string `protobuf:"bytes,14,opt,name=billing_plan_name,json=billingPlanName,proto3,oneof" json:"billing_plan_name,omitempty"` - BillingPlanDisplayName *string `protobuf:"bytes,15,opt,name=billing_plan_display_name,json=billingPlanDisplayName,proto3,oneof" json:"billing_plan_display_name,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` } -func (x *Organization) Reset() { - *x = Organization{} +func (x *ApproveProjectAccessRequest) Reset() { + *x = ApproveProjectAccessRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[329] + mi := &file_rill_admin_v1_api_proto_msgTypes[332] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Organization) String() string { +func (x *ApproveProjectAccessRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Organization) ProtoMessage() {} +func (*ApproveProjectAccessRequest) ProtoMessage() {} -func (x *Organization) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[329] +func (x *ApproveProjectAccessRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[332] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19952,168 +20130,133 @@ func (x *Organization) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Organization.ProtoReflect.Descriptor instead. -func (*Organization) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{329} +// Deprecated: Use ApproveProjectAccessRequest.ProtoReflect.Descriptor instead. +func (*ApproveProjectAccessRequest) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{332} } -func (x *Organization) GetId() string { +func (x *ApproveProjectAccessRequest) GetId() string { if x != nil { return x.Id } return "" } -func (x *Organization) GetName() string { +func (x *ApproveProjectAccessRequest) GetRole() string { if x != nil { - return x.Name + return x.Role } return "" } -func (x *Organization) GetDisplayName() string { - if x != nil { - return x.DisplayName - } - return "" +type ApproveProjectAccessResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (x *Organization) GetDescription() string { - if x != nil { - return x.Description +func (x *ApproveProjectAccessResponse) Reset() { + *x = ApproveProjectAccessResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[333] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *Organization) GetLogoUrl() string { - if x != nil { - return x.LogoUrl - } - return "" +func (x *ApproveProjectAccessResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Organization) GetLogoDarkUrl() string { - if x != nil { - return x.LogoDarkUrl - } - return "" -} +func (*ApproveProjectAccessResponse) ProtoMessage() {} -func (x *Organization) GetFaviconUrl() string { - if x != nil { - return x.FaviconUrl +func (x *ApproveProjectAccessResponse) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[333] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *Organization) GetThumbnailUrl() string { - if x != nil { - return x.ThumbnailUrl - } - return "" +// Deprecated: Use ApproveProjectAccessResponse.ProtoReflect.Descriptor instead. +func (*ApproveProjectAccessResponse) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{333} } -func (x *Organization) GetCustomDomain() string { - if x != nil { - return x.CustomDomain - } - return "" +type DenyProjectAccessRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *Organization) GetDefaultProjectRoleId() string { - if x != nil { - return x.DefaultProjectRoleId +func (x *DenyProjectAccessRequest) Reset() { + *x = DenyProjectAccessRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[334] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *Organization) GetQuotas() *OrganizationQuotas { - if x != nil { - return x.Quotas - } - return nil +func (x *DenyProjectAccessRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Organization) GetBillingCustomerId() string { - if x != nil { - return x.BillingCustomerId - } - return "" -} - -func (x *Organization) GetPaymentCustomerId() string { - if x != nil { - return x.PaymentCustomerId - } - return "" -} - -func (x *Organization) GetBillingEmail() string { - if x != nil { - return x.BillingEmail - } - return "" -} - -func (x *Organization) GetBillingPlanName() string { - if x != nil && x.BillingPlanName != nil { - return *x.BillingPlanName - } - return "" -} +func (*DenyProjectAccessRequest) ProtoMessage() {} -func (x *Organization) GetBillingPlanDisplayName() string { - if x != nil && x.BillingPlanDisplayName != nil { - return *x.BillingPlanDisplayName +func (x *DenyProjectAccessRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[334] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *Organization) GetCreatedOn() *timestamppb.Timestamp { - if x != nil { - return x.CreatedOn - } - return nil +// Deprecated: Use DenyProjectAccessRequest.ProtoReflect.Descriptor instead. +func (*DenyProjectAccessRequest) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{334} } -func (x *Organization) GetUpdatedOn() *timestamppb.Timestamp { +func (x *DenyProjectAccessRequest) GetId() string { if x != nil { - return x.UpdatedOn + return x.Id } - return nil + return "" } -type Subscription struct { +type DenyProjectAccessResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Plan *BillingPlan `protobuf:"bytes,2,opt,name=plan,proto3" json:"plan,omitempty"` - StartDate *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` - EndDate *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` - CurrentBillingCycleStartDate *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=current_billing_cycle_start_date,json=currentBillingCycleStartDate,proto3" json:"current_billing_cycle_start_date,omitempty"` - CurrentBillingCycleEndDate *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=current_billing_cycle_end_date,json=currentBillingCycleEndDate,proto3" json:"current_billing_cycle_end_date,omitempty"` - TrialEndDate *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=trial_end_date,json=trialEndDate,proto3" json:"trial_end_date,omitempty"` } -func (x *Subscription) Reset() { - *x = Subscription{} +func (x *DenyProjectAccessResponse) Reset() { + *x = DenyProjectAccessResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[330] + mi := &file_rill_admin_v1_api_proto_msgTypes[335] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Subscription) String() string { +func (x *DenyProjectAccessResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Subscription) ProtoMessage() {} +func (*DenyProjectAccessResponse) ProtoMessage() {} -func (x *Subscription) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[330] +func (x *DenyProjectAccessResponse) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[335] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20124,86 +20267,91 @@ func (x *Subscription) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Subscription.ProtoReflect.Descriptor instead. -func (*Subscription) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{330} +// Deprecated: Use DenyProjectAccessResponse.ProtoReflect.Descriptor instead. +func (*DenyProjectAccessResponse) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{335} } -func (x *Subscription) GetId() string { - if x != nil { - return x.Id - } - return "" +type ListOrganizationBillingIssuesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` + SuperuserForceAccess bool `protobuf:"varint,2,opt,name=superuser_force_access,json=superuserForceAccess,proto3" json:"superuser_force_access,omitempty"` } -func (x *Subscription) GetPlan() *BillingPlan { - if x != nil { - return x.Plan +func (x *ListOrganizationBillingIssuesRequest) Reset() { + *x = ListOrganizationBillingIssuesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[336] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *Subscription) GetStartDate() *timestamppb.Timestamp { - if x != nil { - return x.StartDate - } - return nil +func (x *ListOrganizationBillingIssuesRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Subscription) GetEndDate() *timestamppb.Timestamp { - if x != nil { - return x.EndDate +func (*ListOrganizationBillingIssuesRequest) ProtoMessage() {} + +func (x *ListOrganizationBillingIssuesRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[336] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *Subscription) GetCurrentBillingCycleStartDate() *timestamppb.Timestamp { - if x != nil { - return x.CurrentBillingCycleStartDate - } - return nil +// Deprecated: Use ListOrganizationBillingIssuesRequest.ProtoReflect.Descriptor instead. +func (*ListOrganizationBillingIssuesRequest) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{336} } -func (x *Subscription) GetCurrentBillingCycleEndDate() *timestamppb.Timestamp { +func (x *ListOrganizationBillingIssuesRequest) GetOrg() string { if x != nil { - return x.CurrentBillingCycleEndDate + return x.Org } - return nil + return "" } -func (x *Subscription) GetTrialEndDate() *timestamppb.Timestamp { +func (x *ListOrganizationBillingIssuesRequest) GetSuperuserForceAccess() bool { if x != nil { - return x.TrialEndDate + return x.SuperuserForceAccess } - return nil + return false } -type UserQuotas struct { +type ListOrganizationBillingIssuesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SingleuserOrgs int32 `protobuf:"varint,1,opt,name=singleuser_orgs,json=singleuserOrgs,proto3" json:"singleuser_orgs,omitempty"` - TrialOrgs int32 `protobuf:"varint,2,opt,name=trial_orgs,json=trialOrgs,proto3" json:"trial_orgs,omitempty"` + Issues []*BillingIssue `protobuf:"bytes,1,rep,name=issues,proto3" json:"issues,omitempty"` } -func (x *UserQuotas) Reset() { - *x = UserQuotas{} +func (x *ListOrganizationBillingIssuesResponse) Reset() { + *x = ListOrganizationBillingIssuesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[331] + mi := &file_rill_admin_v1_api_proto_msgTypes[337] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UserQuotas) String() string { +func (x *ListOrganizationBillingIssuesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UserQuotas) ProtoMessage() {} +func (*ListOrganizationBillingIssuesResponse) ProtoMessage() {} -func (x *UserQuotas) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[331] +func (x *ListOrganizationBillingIssuesResponse) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[337] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20214,55 +20362,50 @@ func (x *UserQuotas) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UserQuotas.ProtoReflect.Descriptor instead. -func (*UserQuotas) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{331} -} - -func (x *UserQuotas) GetSingleuserOrgs() int32 { - if x != nil { - return x.SingleuserOrgs - } - return 0 +// Deprecated: Use ListOrganizationBillingIssuesResponse.ProtoReflect.Descriptor instead. +func (*ListOrganizationBillingIssuesResponse) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{337} } -func (x *UserQuotas) GetTrialOrgs() int32 { +func (x *ListOrganizationBillingIssuesResponse) GetIssues() []*BillingIssue { if x != nil { - return x.TrialOrgs + return x.Issues } - return 0 + return nil } -type OrganizationQuotas struct { +type User struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Projects int32 `protobuf:"varint,1,opt,name=projects,proto3" json:"projects,omitempty"` - Deployments int32 `protobuf:"varint,2,opt,name=deployments,proto3" json:"deployments,omitempty"` - SlotsTotal int32 `protobuf:"varint,3,opt,name=slots_total,json=slotsTotal,proto3" json:"slots_total,omitempty"` - SlotsPerDeployment int32 `protobuf:"varint,4,opt,name=slots_per_deployment,json=slotsPerDeployment,proto3" json:"slots_per_deployment,omitempty"` - OutstandingInvites int32 `protobuf:"varint,5,opt,name=outstanding_invites,json=outstandingInvites,proto3" json:"outstanding_invites,omitempty"` - StorageLimitBytesPerDeployment int64 `protobuf:"varint,6,opt,name=storage_limit_bytes_per_deployment,json=storageLimitBytesPerDeployment,proto3" json:"storage_limit_bytes_per_deployment,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` + DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + PhotoUrl string `protobuf:"bytes,4,opt,name=photo_url,json=photoUrl,proto3" json:"photo_url,omitempty"` + Quotas *UserQuotas `protobuf:"bytes,5,opt,name=quotas,proto3" json:"quotas,omitempty"` + PylonEmailHash string `protobuf:"bytes,8,opt,name=pylon_email_hash,json=pylonEmailHash,proto3" json:"pylon_email_hash,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *OrganizationQuotas) Reset() { - *x = OrganizationQuotas{} +func (x *User) Reset() { + *x = User{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[332] + mi := &file_rill_admin_v1_api_proto_msgTypes[338] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *OrganizationQuotas) String() string { +func (x *User) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OrganizationQuotas) ProtoMessage() {} +func (*User) ProtoMessage() {} -func (x *OrganizationQuotas) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[332] +func (x *User) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[338] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20273,103 +20416,98 @@ func (x *OrganizationQuotas) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OrganizationQuotas.ProtoReflect.Descriptor instead. -func (*OrganizationQuotas) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{332} +// Deprecated: Use User.ProtoReflect.Descriptor instead. +func (*User) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{338} } -func (x *OrganizationQuotas) GetProjects() int32 { +func (x *User) GetId() string { if x != nil { - return x.Projects + return x.Id } - return 0 + return "" } -func (x *OrganizationQuotas) GetDeployments() int32 { +func (x *User) GetEmail() string { if x != nil { - return x.Deployments + return x.Email } - return 0 + return "" } -func (x *OrganizationQuotas) GetSlotsTotal() int32 { +func (x *User) GetDisplayName() string { if x != nil { - return x.SlotsTotal + return x.DisplayName } - return 0 + return "" } -func (x *OrganizationQuotas) GetSlotsPerDeployment() int32 { +func (x *User) GetPhotoUrl() string { if x != nil { - return x.SlotsPerDeployment + return x.PhotoUrl } - return 0 + return "" } -func (x *OrganizationQuotas) GetOutstandingInvites() int32 { +func (x *User) GetQuotas() *UserQuotas { if x != nil { - return x.OutstandingInvites + return x.Quotas } - return 0 + return nil } -func (x *OrganizationQuotas) GetStorageLimitBytesPerDeployment() int64 { +func (x *User) GetPylonEmailHash() string { if x != nil { - return x.StorageLimitBytesPerDeployment + return x.PylonEmailHash } - return 0 + return "" } -type Project struct { +func (x *User) GetCreatedOn() *timestamppb.Timestamp { + if x != nil { + return x.CreatedOn + } + return nil +} + +func (x *User) GetUpdatedOn() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedOn + } + return nil +} + +type Service struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Unique in organization - OrgId string `protobuf:"bytes,3,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` - OrgName string `protobuf:"bytes,4,opt,name=org_name,json=orgName,proto3" json:"org_name,omitempty"` - Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` - Public bool `protobuf:"varint,6,opt,name=public,proto3" json:"public,omitempty"` - CreatedByUserId string `protobuf:"bytes,22,opt,name=created_by_user_id,json=createdByUserId,proto3" json:"created_by_user_id,omitempty"` - DirectoryName string `protobuf:"bytes,26,opt,name=directory_name,json=directoryName,proto3" json:"directory_name,omitempty"` - Provisioner string `protobuf:"bytes,7,opt,name=provisioner,proto3" json:"provisioner,omitempty"` - GitRemote string `protobuf:"bytes,8,opt,name=git_remote,json=gitRemote,proto3" json:"git_remote,omitempty"` - // managed_git_id is set if the project is connected to a rill-managed git repo. - ManagedGitId string `protobuf:"bytes,24,opt,name=managed_git_id,json=managedGitId,proto3" json:"managed_git_id,omitempty"` - Subpath string `protobuf:"bytes,17,opt,name=subpath,proto3" json:"subpath,omitempty"` - PrimaryBranch string `protobuf:"bytes,9,opt,name=primary_branch,json=primaryBranch,proto3" json:"primary_branch,omitempty"` - ArchiveAssetId string `protobuf:"bytes,23,opt,name=archive_asset_id,json=archiveAssetId,proto3" json:"archive_asset_id,omitempty"` - ProdSlots int64 `protobuf:"varint,12,opt,name=prod_slots,json=prodSlots,proto3" json:"prod_slots,omitempty"` - PrimaryDeploymentId string `protobuf:"bytes,13,opt,name=primary_deployment_id,json=primaryDeploymentId,proto3" json:"primary_deployment_id,omitempty"` - DevSlots int64 `protobuf:"varint,25,opt,name=dev_slots,json=devSlots,proto3" json:"dev_slots,omitempty"` - FrontendUrl string `protobuf:"bytes,16,opt,name=frontend_url,json=frontendUrl,proto3" json:"frontend_url,omitempty"` // Note: Does NOT incorporate the parent org's custom domain. - ProdTtlSeconds int64 `protobuf:"varint,18,opt,name=prod_ttl_seconds,json=prodTtlSeconds,proto3" json:"prod_ttl_seconds,omitempty"` - DevTtlSeconds int64 `protobuf:"varint,27,opt,name=dev_ttl_seconds,json=devTtlSeconds,proto3" json:"dev_ttl_seconds,omitempty"` - OverrideDiskGb int64 `protobuf:"varint,28,opt,name=override_disk_gb,json=overrideDiskGb,proto3" json:"override_disk_gb,omitempty"` - Annotations map[string]string `protobuf:"bytes,20,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - ProdVersion string `protobuf:"bytes,21,opt,name=prod_version,json=prodVersion,proto3" json:"prod_version,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + OrgId string `protobuf:"bytes,3,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` + OrgName string `protobuf:"bytes,4,opt,name=org_name,json=orgName,proto3" json:"org_name,omitempty"` + Attributes *structpb.Struct `protobuf:"bytes,8,opt,name=attributes,proto3" json:"attributes,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *Project) Reset() { - *x = Project{} +func (x *Service) Reset() { + *x = Service{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[333] + mi := &file_rill_admin_v1_api_proto_msgTypes[339] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Project) String() string { +func (x *Service) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Project) ProtoMessage() {} +func (*Service) ProtoMessage() {} -func (x *Project) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[333] +func (x *Service) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[339] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20380,223 +20518,206 @@ func (x *Project) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Project.ProtoReflect.Descriptor instead. -func (*Project) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{333} +// Deprecated: Use Service.ProtoReflect.Descriptor instead. +func (*Service) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{339} } -func (x *Project) GetId() string { +func (x *Service) GetId() string { if x != nil { return x.Id } return "" } -func (x *Project) GetName() string { +func (x *Service) GetName() string { if x != nil { return x.Name } return "" } -func (x *Project) GetOrgId() string { +func (x *Service) GetOrgId() string { if x != nil { return x.OrgId } return "" } -func (x *Project) GetOrgName() string { +func (x *Service) GetOrgName() string { if x != nil { return x.OrgName } return "" } -func (x *Project) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *Project) GetPublic() bool { +func (x *Service) GetAttributes() *structpb.Struct { if x != nil { - return x.Public + return x.Attributes } - return false + return nil } -func (x *Project) GetCreatedByUserId() string { +func (x *Service) GetCreatedOn() *timestamppb.Timestamp { if x != nil { - return x.CreatedByUserId + return x.CreatedOn } - return "" + return nil } -func (x *Project) GetDirectoryName() string { +func (x *Service) GetUpdatedOn() *timestamppb.Timestamp { if x != nil { - return x.DirectoryName + return x.UpdatedOn } - return "" + return nil } -func (x *Project) GetProvisioner() string { - if x != nil { - return x.Provisioner - } - return "" -} +type OrganizationMemberService struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *Project) GetGitRemote() string { - if x != nil { - return x.GitRemote - } - return "" + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + OrgId string `protobuf:"bytes,3,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` + OrgName string `protobuf:"bytes,4,opt,name=org_name,json=orgName,proto3" json:"org_name,omitempty"` + RoleName string `protobuf:"bytes,5,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` + HasProjectRoles bool `protobuf:"varint,7,opt,name=has_project_roles,json=hasProjectRoles,proto3" json:"has_project_roles,omitempty"` // True if the user has a project role in any project in the organization. + Attributes *structpb.Struct `protobuf:"bytes,8,opt,name=attributes,proto3" json:"attributes,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *Project) GetManagedGitId() string { - if x != nil { - return x.ManagedGitId +func (x *OrganizationMemberService) Reset() { + *x = OrganizationMemberService{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[340] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *Project) GetSubpath() string { - if x != nil { - return x.Subpath - } - return "" +func (x *OrganizationMemberService) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Project) GetPrimaryBranch() string { - if x != nil { - return x.PrimaryBranch - } - return "" -} +func (*OrganizationMemberService) ProtoMessage() {} -func (x *Project) GetArchiveAssetId() string { - if x != nil { - return x.ArchiveAssetId +func (x *OrganizationMemberService) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[340] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *Project) GetProdSlots() int64 { - if x != nil { - return x.ProdSlots - } - return 0 +// Deprecated: Use OrganizationMemberService.ProtoReflect.Descriptor instead. +func (*OrganizationMemberService) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{340} } -func (x *Project) GetPrimaryDeploymentId() string { +func (x *OrganizationMemberService) GetId() string { if x != nil { - return x.PrimaryDeploymentId + return x.Id } return "" } -func (x *Project) GetDevSlots() int64 { +func (x *OrganizationMemberService) GetName() string { if x != nil { - return x.DevSlots + return x.Name } - return 0 + return "" } -func (x *Project) GetFrontendUrl() string { +func (x *OrganizationMemberService) GetOrgId() string { if x != nil { - return x.FrontendUrl + return x.OrgId } return "" } -func (x *Project) GetProdTtlSeconds() int64 { +func (x *OrganizationMemberService) GetOrgName() string { if x != nil { - return x.ProdTtlSeconds + return x.OrgName } - return 0 + return "" } -func (x *Project) GetDevTtlSeconds() int64 { +func (x *OrganizationMemberService) GetRoleName() string { if x != nil { - return x.DevTtlSeconds + return x.RoleName } - return 0 + return "" } -func (x *Project) GetOverrideDiskGb() int64 { +func (x *OrganizationMemberService) GetHasProjectRoles() bool { if x != nil { - return x.OverrideDiskGb + return x.HasProjectRoles } - return 0 + return false } -func (x *Project) GetAnnotations() map[string]string { +func (x *OrganizationMemberService) GetAttributes() *structpb.Struct { if x != nil { - return x.Annotations + return x.Attributes } return nil } -func (x *Project) GetProdVersion() string { - if x != nil { - return x.ProdVersion - } - return "" -} - -func (x *Project) GetCreatedOn() *timestamppb.Timestamp { +func (x *OrganizationMemberService) GetCreatedOn() *timestamppb.Timestamp { if x != nil { return x.CreatedOn } return nil } -func (x *Project) GetUpdatedOn() *timestamppb.Timestamp { +func (x *OrganizationMemberService) GetUpdatedOn() *timestamppb.Timestamp { if x != nil { return x.UpdatedOn } return nil } -type Deployment struct { +type ProjectMemberService struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - OwnerUserId string `protobuf:"bytes,12,opt,name=owner_user_id,json=ownerUserId,proto3" json:"owner_user_id,omitempty"` - Environment string `protobuf:"bytes,11,opt,name=environment,proto3" json:"environment,omitempty"` - Branch string `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"` - Editable bool `protobuf:"varint,13,opt,name=editable,proto3" json:"editable,omitempty"` - RuntimeHost string `protobuf:"bytes,5,opt,name=runtime_host,json=runtimeHost,proto3" json:"runtime_host,omitempty"` - RuntimeInstanceId string `protobuf:"bytes,6,opt,name=runtime_instance_id,json=runtimeInstanceId,proto3" json:"runtime_instance_id,omitempty"` - Status DeploymentStatus `protobuf:"varint,7,opt,name=status,proto3,enum=rill.admin.v1.DeploymentStatus" json:"status,omitempty"` - StatusMessage string `protobuf:"bytes,8,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` - UsedOn *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=used_on,json=usedOn,proto3" json:"used_on,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + OrgId string `protobuf:"bytes,3,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` + OrgName string `protobuf:"bytes,4,opt,name=org_name,json=orgName,proto3" json:"org_name,omitempty"` + OrgRoleName string `protobuf:"bytes,5,opt,name=org_role_name,json=orgRoleName,proto3" json:"org_role_name,omitempty"` + ProjectId string `protobuf:"bytes,6,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + ProjectName string `protobuf:"bytes,7,opt,name=project_name,json=projectName,proto3" json:"project_name,omitempty"` + ProjectRoleName string `protobuf:"bytes,8,opt,name=project_role_name,json=projectRoleName,proto3" json:"project_role_name,omitempty"` + Attributes *structpb.Struct `protobuf:"bytes,9,opt,name=attributes,proto3" json:"attributes,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *Deployment) Reset() { - *x = Deployment{} +func (x *ProjectMemberService) Reset() { + *x = ProjectMemberService{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[334] + mi := &file_rill_admin_v1_api_proto_msgTypes[341] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Deployment) String() string { +func (x *ProjectMemberService) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Deployment) ProtoMessage() {} +func (*ProjectMemberService) ProtoMessage() {} -func (x *Deployment) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[334] +func (x *ProjectMemberService) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[341] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20607,132 +20728,130 @@ func (x *Deployment) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Deployment.ProtoReflect.Descriptor instead. -func (*Deployment) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{334} +// Deprecated: Use ProjectMemberService.ProtoReflect.Descriptor instead. +func (*ProjectMemberService) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{341} } -func (x *Deployment) GetId() string { +func (x *ProjectMemberService) GetId() string { if x != nil { return x.Id } return "" } -func (x *Deployment) GetProjectId() string { +func (x *ProjectMemberService) GetName() string { if x != nil { - return x.ProjectId + return x.Name } return "" } -func (x *Deployment) GetOwnerUserId() string { +func (x *ProjectMemberService) GetOrgId() string { if x != nil { - return x.OwnerUserId + return x.OrgId } return "" } -func (x *Deployment) GetEnvironment() string { +func (x *ProjectMemberService) GetOrgName() string { if x != nil { - return x.Environment + return x.OrgName } return "" } -func (x *Deployment) GetBranch() string { +func (x *ProjectMemberService) GetOrgRoleName() string { if x != nil { - return x.Branch + return x.OrgRoleName } return "" } -func (x *Deployment) GetEditable() bool { - if x != nil { - return x.Editable - } - return false -} - -func (x *Deployment) GetRuntimeHost() string { +func (x *ProjectMemberService) GetProjectId() string { if x != nil { - return x.RuntimeHost + return x.ProjectId } return "" } -func (x *Deployment) GetRuntimeInstanceId() string { +func (x *ProjectMemberService) GetProjectName() string { if x != nil { - return x.RuntimeInstanceId + return x.ProjectName } return "" } -func (x *Deployment) GetStatus() DeploymentStatus { - if x != nil { - return x.Status - } - return DeploymentStatus_DEPLOYMENT_STATUS_UNSPECIFIED -} - -func (x *Deployment) GetStatusMessage() string { +func (x *ProjectMemberService) GetProjectRoleName() string { if x != nil { - return x.StatusMessage + return x.ProjectRoleName } return "" } -func (x *Deployment) GetCreatedOn() *timestamppb.Timestamp { +func (x *ProjectMemberService) GetAttributes() *structpb.Struct { if x != nil { - return x.CreatedOn + return x.Attributes } return nil } -func (x *Deployment) GetUpdatedOn() *timestamppb.Timestamp { +func (x *ProjectMemberService) GetCreatedOn() *timestamppb.Timestamp { if x != nil { - return x.UpdatedOn + return x.CreatedOn } return nil } -func (x *Deployment) GetUsedOn() *timestamppb.Timestamp { +func (x *ProjectMemberService) GetUpdatedOn() *timestamppb.Timestamp { if x != nil { - return x.UsedOn + return x.UpdatedOn } return nil } -type ProvisionerResource struct { +type Organization struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - DeploymentId string `protobuf:"bytes,2,opt,name=deployment_id,json=deploymentId,proto3" json:"deployment_id,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - Args *structpb.Struct `protobuf:"bytes,5,opt,name=args,proto3" json:"args,omitempty"` - Config *structpb.Struct `protobuf:"bytes,6,opt,name=config,proto3" json:"config,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Globally unique + DisplayName string `protobuf:"bytes,11,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + LogoUrl string `protobuf:"bytes,12,opt,name=logo_url,json=logoUrl,proto3" json:"logo_url,omitempty"` + LogoDarkUrl string `protobuf:"bytes,18,opt,name=logo_dark_url,json=logoDarkUrl,proto3" json:"logo_dark_url,omitempty"` + FaviconUrl string `protobuf:"bytes,13,opt,name=favicon_url,json=faviconUrl,proto3" json:"favicon_url,omitempty"` + ThumbnailUrl string `protobuf:"bytes,17,opt,name=thumbnail_url,json=thumbnailUrl,proto3" json:"thumbnail_url,omitempty"` + CustomDomain string `protobuf:"bytes,10,opt,name=custom_domain,json=customDomain,proto3" json:"custom_domain,omitempty"` + DefaultProjectRoleId string `protobuf:"bytes,16,opt,name=default_project_role_id,json=defaultProjectRoleId,proto3" json:"default_project_role_id,omitempty"` + Quotas *OrganizationQuotas `protobuf:"bytes,4,opt,name=quotas,proto3" json:"quotas,omitempty"` + BillingCustomerId string `protobuf:"bytes,7,opt,name=billing_customer_id,json=billingCustomerId,proto3" json:"billing_customer_id,omitempty"` + PaymentCustomerId string `protobuf:"bytes,8,opt,name=payment_customer_id,json=paymentCustomerId,proto3" json:"payment_customer_id,omitempty"` + BillingEmail string `protobuf:"bytes,9,opt,name=billing_email,json=billingEmail,proto3" json:"billing_email,omitempty"` + BillingPlanName *string `protobuf:"bytes,14,opt,name=billing_plan_name,json=billingPlanName,proto3,oneof" json:"billing_plan_name,omitempty"` + BillingPlanDisplayName *string `protobuf:"bytes,15,opt,name=billing_plan_display_name,json=billingPlanDisplayName,proto3,oneof" json:"billing_plan_display_name,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *ProvisionerResource) Reset() { - *x = ProvisionerResource{} +func (x *Organization) Reset() { + *x = Organization{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[335] + mi := &file_rill_admin_v1_api_proto_msgTypes[342] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ProvisionerResource) String() string { +func (x *Organization) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProvisionerResource) ProtoMessage() {} +func (*Organization) ProtoMessage() {} -func (x *ProvisionerResource) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[335] +func (x *Organization) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[342] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20743,218 +20862,168 @@ func (x *ProvisionerResource) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ProvisionerResource.ProtoReflect.Descriptor instead. -func (*ProvisionerResource) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{335} +// Deprecated: Use Organization.ProtoReflect.Descriptor instead. +func (*Organization) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{342} } -func (x *ProvisionerResource) GetId() string { +func (x *Organization) GetId() string { if x != nil { return x.Id } return "" } -func (x *ProvisionerResource) GetDeploymentId() string { +func (x *Organization) GetName() string { if x != nil { - return x.DeploymentId + return x.Name } return "" } -func (x *ProvisionerResource) GetType() string { +func (x *Organization) GetDisplayName() string { if x != nil { - return x.Type + return x.DisplayName } return "" } -func (x *ProvisionerResource) GetName() string { +func (x *Organization) GetDescription() string { if x != nil { - return x.Name + return x.Description } return "" } -func (x *ProvisionerResource) GetArgs() *structpb.Struct { +func (x *Organization) GetLogoUrl() string { if x != nil { - return x.Args + return x.LogoUrl } - return nil + return "" } -func (x *ProvisionerResource) GetConfig() *structpb.Struct { +func (x *Organization) GetLogoDarkUrl() string { if x != nil { - return x.Config + return x.LogoDarkUrl } - return nil -} - -type OrganizationPermissions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Admin bool `protobuf:"varint,9,opt,name=admin,proto3" json:"admin,omitempty"` - Guest bool `protobuf:"varint,8,opt,name=guest,proto3" json:"guest,omitempty"` - ReadOrg bool `protobuf:"varint,1,opt,name=read_org,json=readOrg,proto3" json:"read_org,omitempty"` - ManageOrg bool `protobuf:"varint,2,opt,name=manage_org,json=manageOrg,proto3" json:"manage_org,omitempty"` - ReadProjects bool `protobuf:"varint,3,opt,name=read_projects,json=readProjects,proto3" json:"read_projects,omitempty"` - CreateProjects bool `protobuf:"varint,4,opt,name=create_projects,json=createProjects,proto3" json:"create_projects,omitempty"` - ManageProjects bool `protobuf:"varint,5,opt,name=manage_projects,json=manageProjects,proto3" json:"manage_projects,omitempty"` - ReadOrgMembers bool `protobuf:"varint,6,opt,name=read_org_members,json=readOrgMembers,proto3" json:"read_org_members,omitempty"` - ManageOrgMembers bool `protobuf:"varint,7,opt,name=manage_org_members,json=manageOrgMembers,proto3" json:"manage_org_members,omitempty"` - ManageOrgAdmins bool `protobuf:"varint,10,opt,name=manage_org_admins,json=manageOrgAdmins,proto3" json:"manage_org_admins,omitempty"` + return "" } -func (x *OrganizationPermissions) Reset() { - *x = OrganizationPermissions{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[336] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Organization) GetFaviconUrl() string { + if x != nil { + return x.FaviconUrl } + return "" } -func (x *OrganizationPermissions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OrganizationPermissions) ProtoMessage() {} - -func (x *OrganizationPermissions) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[336] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *Organization) GetThumbnailUrl() string { + if x != nil { + return x.ThumbnailUrl } - return mi.MessageOf(x) -} - -// Deprecated: Use OrganizationPermissions.ProtoReflect.Descriptor instead. -func (*OrganizationPermissions) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{336} + return "" } -func (x *OrganizationPermissions) GetAdmin() bool { +func (x *Organization) GetCustomDomain() string { if x != nil { - return x.Admin + return x.CustomDomain } - return false + return "" } -func (x *OrganizationPermissions) GetGuest() bool { +func (x *Organization) GetDefaultProjectRoleId() string { if x != nil { - return x.Guest + return x.DefaultProjectRoleId } - return false + return "" } -func (x *OrganizationPermissions) GetReadOrg() bool { +func (x *Organization) GetQuotas() *OrganizationQuotas { if x != nil { - return x.ReadOrg + return x.Quotas } - return false + return nil } -func (x *OrganizationPermissions) GetManageOrg() bool { +func (x *Organization) GetBillingCustomerId() string { if x != nil { - return x.ManageOrg + return x.BillingCustomerId } - return false + return "" } -func (x *OrganizationPermissions) GetReadProjects() bool { +func (x *Organization) GetPaymentCustomerId() string { if x != nil { - return x.ReadProjects + return x.PaymentCustomerId } - return false + return "" } -func (x *OrganizationPermissions) GetCreateProjects() bool { +func (x *Organization) GetBillingEmail() string { if x != nil { - return x.CreateProjects + return x.BillingEmail } - return false + return "" } -func (x *OrganizationPermissions) GetManageProjects() bool { - if x != nil { - return x.ManageProjects +func (x *Organization) GetBillingPlanName() string { + if x != nil && x.BillingPlanName != nil { + return *x.BillingPlanName } - return false + return "" } -func (x *OrganizationPermissions) GetReadOrgMembers() bool { - if x != nil { - return x.ReadOrgMembers +func (x *Organization) GetBillingPlanDisplayName() string { + if x != nil && x.BillingPlanDisplayName != nil { + return *x.BillingPlanDisplayName } - return false + return "" } -func (x *OrganizationPermissions) GetManageOrgMembers() bool { +func (x *Organization) GetCreatedOn() *timestamppb.Timestamp { if x != nil { - return x.ManageOrgMembers + return x.CreatedOn } - return false + return nil } -func (x *OrganizationPermissions) GetManageOrgAdmins() bool { +func (x *Organization) GetUpdatedOn() *timestamppb.Timestamp { if x != nil { - return x.ManageOrgAdmins + return x.UpdatedOn } - return false + return nil } -type ProjectPermissions struct { +type Subscription struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Admin bool `protobuf:"varint,21,opt,name=admin,proto3" json:"admin,omitempty"` - ReadProject bool `protobuf:"varint,1,opt,name=read_project,json=readProject,proto3" json:"read_project,omitempty"` - ManageProject bool `protobuf:"varint,2,opt,name=manage_project,json=manageProject,proto3" json:"manage_project,omitempty"` - ReadProd bool `protobuf:"varint,3,opt,name=read_prod,json=readProd,proto3" json:"read_prod,omitempty"` - ReadProdStatus bool `protobuf:"varint,4,opt,name=read_prod_status,json=readProdStatus,proto3" json:"read_prod_status,omitempty"` - ManageProd bool `protobuf:"varint,5,opt,name=manage_prod,json=manageProd,proto3" json:"manage_prod,omitempty"` - ReadDev bool `protobuf:"varint,6,opt,name=read_dev,json=readDev,proto3" json:"read_dev,omitempty"` - ReadDevStatus bool `protobuf:"varint,7,opt,name=read_dev_status,json=readDevStatus,proto3" json:"read_dev_status,omitempty"` - ManageDev bool `protobuf:"varint,8,opt,name=manage_dev,json=manageDev,proto3" json:"manage_dev,omitempty"` - ReadProvisionerResources bool `protobuf:"varint,19,opt,name=read_provisioner_resources,json=readProvisionerResources,proto3" json:"read_provisioner_resources,omitempty"` - ManageProvisionerResources bool `protobuf:"varint,20,opt,name=manage_provisioner_resources,json=manageProvisionerResources,proto3" json:"manage_provisioner_resources,omitempty"` - ReadProjectMembers bool `protobuf:"varint,9,opt,name=read_project_members,json=readProjectMembers,proto3" json:"read_project_members,omitempty"` - ManageProjectMembers bool `protobuf:"varint,10,opt,name=manage_project_members,json=manageProjectMembers,proto3" json:"manage_project_members,omitempty"` - ManageProjectAdmins bool `protobuf:"varint,22,opt,name=manage_project_admins,json=manageProjectAdmins,proto3" json:"manage_project_admins,omitempty"` - CreateMagicAuthTokens bool `protobuf:"varint,15,opt,name=create_magic_auth_tokens,json=createMagicAuthTokens,proto3" json:"create_magic_auth_tokens,omitempty"` - ManageMagicAuthTokens bool `protobuf:"varint,16,opt,name=manage_magic_auth_tokens,json=manageMagicAuthTokens,proto3" json:"manage_magic_auth_tokens,omitempty"` - CreateReports bool `protobuf:"varint,11,opt,name=create_reports,json=createReports,proto3" json:"create_reports,omitempty"` - ManageReports bool `protobuf:"varint,12,opt,name=manage_reports,json=manageReports,proto3" json:"manage_reports,omitempty"` - CreateAlerts bool `protobuf:"varint,13,opt,name=create_alerts,json=createAlerts,proto3" json:"create_alerts,omitempty"` - ManageAlerts bool `protobuf:"varint,14,opt,name=manage_alerts,json=manageAlerts,proto3" json:"manage_alerts,omitempty"` - CreateBookmarks bool `protobuf:"varint,17,opt,name=create_bookmarks,json=createBookmarks,proto3" json:"create_bookmarks,omitempty"` - ManageBookmarks bool `protobuf:"varint,18,opt,name=manage_bookmarks,json=manageBookmarks,proto3" json:"manage_bookmarks,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Plan *BillingPlan `protobuf:"bytes,2,opt,name=plan,proto3" json:"plan,omitempty"` + StartDate *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` + EndDate *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` + CurrentBillingCycleStartDate *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=current_billing_cycle_start_date,json=currentBillingCycleStartDate,proto3" json:"current_billing_cycle_start_date,omitempty"` + CurrentBillingCycleEndDate *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=current_billing_cycle_end_date,json=currentBillingCycleEndDate,proto3" json:"current_billing_cycle_end_date,omitempty"` + TrialEndDate *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=trial_end_date,json=trialEndDate,proto3" json:"trial_end_date,omitempty"` } -func (x *ProjectPermissions) Reset() { - *x = ProjectPermissions{} +func (x *Subscription) Reset() { + *x = Subscription{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[337] + mi := &file_rill_admin_v1_api_proto_msgTypes[343] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ProjectPermissions) String() string { +func (x *Subscription) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProjectPermissions) ProtoMessage() {} +func (*Subscription) ProtoMessage() {} -func (x *ProjectPermissions) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[337] +func (x *Subscription) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[343] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20965,192 +21034,145 @@ func (x *ProjectPermissions) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ProjectPermissions.ProtoReflect.Descriptor instead. -func (*ProjectPermissions) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{337} -} - -func (x *ProjectPermissions) GetAdmin() bool { - if x != nil { - return x.Admin - } - return false -} - -func (x *ProjectPermissions) GetReadProject() bool { - if x != nil { - return x.ReadProject - } - return false -} - -func (x *ProjectPermissions) GetManageProject() bool { - if x != nil { - return x.ManageProject - } - return false -} - -func (x *ProjectPermissions) GetReadProd() bool { - if x != nil { - return x.ReadProd - } - return false -} - -func (x *ProjectPermissions) GetReadProdStatus() bool { - if x != nil { - return x.ReadProdStatus - } - return false -} - -func (x *ProjectPermissions) GetManageProd() bool { - if x != nil { - return x.ManageProd - } - return false +// Deprecated: Use Subscription.ProtoReflect.Descriptor instead. +func (*Subscription) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{343} } -func (x *ProjectPermissions) GetReadDev() bool { +func (x *Subscription) GetId() string { if x != nil { - return x.ReadDev + return x.Id } - return false + return "" } -func (x *ProjectPermissions) GetReadDevStatus() bool { +func (x *Subscription) GetPlan() *BillingPlan { if x != nil { - return x.ReadDevStatus + return x.Plan } - return false + return nil } -func (x *ProjectPermissions) GetManageDev() bool { +func (x *Subscription) GetStartDate() *timestamppb.Timestamp { if x != nil { - return x.ManageDev + return x.StartDate } - return false + return nil } -func (x *ProjectPermissions) GetReadProvisionerResources() bool { +func (x *Subscription) GetEndDate() *timestamppb.Timestamp { if x != nil { - return x.ReadProvisionerResources + return x.EndDate } - return false + return nil } -func (x *ProjectPermissions) GetManageProvisionerResources() bool { +func (x *Subscription) GetCurrentBillingCycleStartDate() *timestamppb.Timestamp { if x != nil { - return x.ManageProvisionerResources + return x.CurrentBillingCycleStartDate } - return false + return nil } -func (x *ProjectPermissions) GetReadProjectMembers() bool { +func (x *Subscription) GetCurrentBillingCycleEndDate() *timestamppb.Timestamp { if x != nil { - return x.ReadProjectMembers + return x.CurrentBillingCycleEndDate } - return false + return nil } -func (x *ProjectPermissions) GetManageProjectMembers() bool { +func (x *Subscription) GetTrialEndDate() *timestamppb.Timestamp { if x != nil { - return x.ManageProjectMembers + return x.TrialEndDate } - return false + return nil } -func (x *ProjectPermissions) GetManageProjectAdmins() bool { - if x != nil { - return x.ManageProjectAdmins - } - return false -} +type UserQuotas struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *ProjectPermissions) GetCreateMagicAuthTokens() bool { - if x != nil { - return x.CreateMagicAuthTokens - } - return false + SingleuserOrgs int32 `protobuf:"varint,1,opt,name=singleuser_orgs,json=singleuserOrgs,proto3" json:"singleuser_orgs,omitempty"` + TrialOrgs int32 `protobuf:"varint,2,opt,name=trial_orgs,json=trialOrgs,proto3" json:"trial_orgs,omitempty"` } -func (x *ProjectPermissions) GetManageMagicAuthTokens() bool { - if x != nil { - return x.ManageMagicAuthTokens +func (x *UserQuotas) Reset() { + *x = UserQuotas{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[344] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return false } -func (x *ProjectPermissions) GetCreateReports() bool { - if x != nil { - return x.CreateReports - } - return false +func (x *UserQuotas) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ProjectPermissions) GetManageReports() bool { - if x != nil { - return x.ManageReports - } - return false -} +func (*UserQuotas) ProtoMessage() {} -func (x *ProjectPermissions) GetCreateAlerts() bool { - if x != nil { - return x.CreateAlerts +func (x *UserQuotas) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[344] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false + return mi.MessageOf(x) } -func (x *ProjectPermissions) GetManageAlerts() bool { - if x != nil { - return x.ManageAlerts - } - return false +// Deprecated: Use UserQuotas.ProtoReflect.Descriptor instead. +func (*UserQuotas) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{344} } -func (x *ProjectPermissions) GetCreateBookmarks() bool { +func (x *UserQuotas) GetSingleuserOrgs() int32 { if x != nil { - return x.CreateBookmarks + return x.SingleuserOrgs } - return false + return 0 } -func (x *ProjectPermissions) GetManageBookmarks() bool { +func (x *UserQuotas) GetTrialOrgs() int32 { if x != nil { - return x.ManageBookmarks + return x.TrialOrgs } - return false + return 0 } -type OrganizationRole struct { +type OrganizationQuotas struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Permissions *OrganizationPermissions `protobuf:"bytes,3,opt,name=permissions,proto3" json:"permissions,omitempty"` + Projects int32 `protobuf:"varint,1,opt,name=projects,proto3" json:"projects,omitempty"` + Deployments int32 `protobuf:"varint,2,opt,name=deployments,proto3" json:"deployments,omitempty"` + SlotsTotal int32 `protobuf:"varint,3,opt,name=slots_total,json=slotsTotal,proto3" json:"slots_total,omitempty"` + SlotsPerDeployment int32 `protobuf:"varint,4,opt,name=slots_per_deployment,json=slotsPerDeployment,proto3" json:"slots_per_deployment,omitempty"` + OutstandingInvites int32 `protobuf:"varint,5,opt,name=outstanding_invites,json=outstandingInvites,proto3" json:"outstanding_invites,omitempty"` + StorageLimitBytesPerDeployment int64 `protobuf:"varint,6,opt,name=storage_limit_bytes_per_deployment,json=storageLimitBytesPerDeployment,proto3" json:"storage_limit_bytes_per_deployment,omitempty"` } -func (x *OrganizationRole) Reset() { - *x = OrganizationRole{} +func (x *OrganizationQuotas) Reset() { + *x = OrganizationQuotas{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[338] + mi := &file_rill_admin_v1_api_proto_msgTypes[345] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *OrganizationRole) String() string { +func (x *OrganizationQuotas) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OrganizationRole) ProtoMessage() {} +func (*OrganizationQuotas) ProtoMessage() {} -func (x *OrganizationRole) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[338] +func (x *OrganizationQuotas) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[345] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21161,129 +21183,103 @@ func (x *OrganizationRole) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OrganizationRole.ProtoReflect.Descriptor instead. -func (*OrganizationRole) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{338} +// Deprecated: Use OrganizationQuotas.ProtoReflect.Descriptor instead. +func (*OrganizationQuotas) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{345} } -func (x *OrganizationRole) GetId() string { +func (x *OrganizationQuotas) GetProjects() int32 { if x != nil { - return x.Id + return x.Projects } - return "" + return 0 } -func (x *OrganizationRole) GetName() string { +func (x *OrganizationQuotas) GetDeployments() int32 { if x != nil { - return x.Name + return x.Deployments } - return "" + return 0 } -func (x *OrganizationRole) GetPermissions() *OrganizationPermissions { +func (x *OrganizationQuotas) GetSlotsTotal() int32 { if x != nil { - return x.Permissions + return x.SlotsTotal } - return nil + return 0 } -type ProjectRole struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Permissions *ProjectPermissions `protobuf:"bytes,3,opt,name=permissions,proto3" json:"permissions,omitempty"` -} - -func (x *ProjectRole) Reset() { - *x = ProjectRole{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[339] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ProjectRole) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ProjectRole) ProtoMessage() {} - -func (x *ProjectRole) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[339] - 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 ProjectRole.ProtoReflect.Descriptor instead. -func (*ProjectRole) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{339} -} - -func (x *ProjectRole) GetId() string { +func (x *OrganizationQuotas) GetSlotsPerDeployment() int32 { if x != nil { - return x.Id + return x.SlotsPerDeployment } - return "" + return 0 } -func (x *ProjectRole) GetName() string { +func (x *OrganizationQuotas) GetOutstandingInvites() int32 { if x != nil { - return x.Name + return x.OutstandingInvites } - return "" + return 0 } -func (x *ProjectRole) GetPermissions() *ProjectPermissions { +func (x *OrganizationQuotas) GetStorageLimitBytesPerDeployment() int64 { if x != nil { - return x.Permissions + return x.StorageLimitBytesPerDeployment } - return nil + return 0 } -type OrganizationMemberUser struct { +type Project struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` - UserEmail string `protobuf:"bytes,3,opt,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"` - UserName string `protobuf:"bytes,2,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"` - UserPhotoUrl string `protobuf:"bytes,7,opt,name=user_photo_url,json=userPhotoUrl,proto3" json:"user_photo_url,omitempty"` - RoleName string `protobuf:"bytes,4,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` - ProjectsCount uint32 `protobuf:"varint,8,opt,name=projects_count,json=projectsCount,proto3" json:"projects_count,omitempty"` - UsergroupsCount uint32 `protobuf:"varint,9,opt,name=usergroups_count,json=usergroupsCount,proto3" json:"usergroups_count,omitempty"` - Attributes *structpb.Struct `protobuf:"bytes,10,opt,name=attributes,proto3" json:"attributes,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Unique in organization + OrgId string `protobuf:"bytes,3,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` + OrgName string `protobuf:"bytes,4,opt,name=org_name,json=orgName,proto3" json:"org_name,omitempty"` + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + Public bool `protobuf:"varint,6,opt,name=public,proto3" json:"public,omitempty"` + CreatedByUserId string `protobuf:"bytes,22,opt,name=created_by_user_id,json=createdByUserId,proto3" json:"created_by_user_id,omitempty"` + DirectoryName string `protobuf:"bytes,26,opt,name=directory_name,json=directoryName,proto3" json:"directory_name,omitempty"` + Provisioner string `protobuf:"bytes,7,opt,name=provisioner,proto3" json:"provisioner,omitempty"` + GitRemote string `protobuf:"bytes,8,opt,name=git_remote,json=gitRemote,proto3" json:"git_remote,omitempty"` + // managed_git_id is set if the project is connected to a rill-managed git repo. + ManagedGitId string `protobuf:"bytes,24,opt,name=managed_git_id,json=managedGitId,proto3" json:"managed_git_id,omitempty"` + Subpath string `protobuf:"bytes,17,opt,name=subpath,proto3" json:"subpath,omitempty"` + PrimaryBranch string `protobuf:"bytes,9,opt,name=primary_branch,json=primaryBranch,proto3" json:"primary_branch,omitempty"` + ArchiveAssetId string `protobuf:"bytes,23,opt,name=archive_asset_id,json=archiveAssetId,proto3" json:"archive_asset_id,omitempty"` + ProdSlots int64 `protobuf:"varint,12,opt,name=prod_slots,json=prodSlots,proto3" json:"prod_slots,omitempty"` + PrimaryDeploymentId string `protobuf:"bytes,13,opt,name=primary_deployment_id,json=primaryDeploymentId,proto3" json:"primary_deployment_id,omitempty"` + DevSlots int64 `protobuf:"varint,25,opt,name=dev_slots,json=devSlots,proto3" json:"dev_slots,omitempty"` + FrontendUrl string `protobuf:"bytes,16,opt,name=frontend_url,json=frontendUrl,proto3" json:"frontend_url,omitempty"` // Note: Does NOT incorporate the parent org's custom domain. + ProdTtlSeconds int64 `protobuf:"varint,18,opt,name=prod_ttl_seconds,json=prodTtlSeconds,proto3" json:"prod_ttl_seconds,omitempty"` + DevTtlSeconds int64 `protobuf:"varint,27,opt,name=dev_ttl_seconds,json=devTtlSeconds,proto3" json:"dev_ttl_seconds,omitempty"` + OverrideDiskGb int64 `protobuf:"varint,28,opt,name=override_disk_gb,json=overrideDiskGb,proto3" json:"override_disk_gb,omitempty"` + Annotations map[string]string `protobuf:"bytes,20,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ProdVersion string `protobuf:"bytes,21,opt,name=prod_version,json=prodVersion,proto3" json:"prod_version,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *OrganizationMemberUser) Reset() { - *x = OrganizationMemberUser{} +func (x *Project) Reset() { + *x = Project{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[340] + mi := &file_rill_admin_v1_api_proto_msgTypes[346] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *OrganizationMemberUser) String() string { +func (x *Project) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OrganizationMemberUser) ProtoMessage() {} +func (*Project) ProtoMessage() {} -func (x *OrganizationMemberUser) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[340] +func (x *Project) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[346] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21294,230 +21290,223 @@ func (x *OrganizationMemberUser) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OrganizationMemberUser.ProtoReflect.Descriptor instead. -func (*OrganizationMemberUser) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{340} +// Deprecated: Use Project.ProtoReflect.Descriptor instead. +func (*Project) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{346} } -func (x *OrganizationMemberUser) GetUserId() string { +func (x *Project) GetId() string { if x != nil { - return x.UserId + return x.Id } return "" } -func (x *OrganizationMemberUser) GetUserEmail() string { +func (x *Project) GetName() string { if x != nil { - return x.UserEmail + return x.Name } return "" } -func (x *OrganizationMemberUser) GetUserName() string { +func (x *Project) GetOrgId() string { if x != nil { - return x.UserName + return x.OrgId } return "" } -func (x *OrganizationMemberUser) GetUserPhotoUrl() string { +func (x *Project) GetOrgName() string { if x != nil { - return x.UserPhotoUrl + return x.OrgName } return "" } -func (x *OrganizationMemberUser) GetRoleName() string { +func (x *Project) GetDescription() string { if x != nil { - return x.RoleName + return x.Description } return "" } -func (x *OrganizationMemberUser) GetProjectsCount() uint32 { +func (x *Project) GetPublic() bool { if x != nil { - return x.ProjectsCount + return x.Public } - return 0 + return false } -func (x *OrganizationMemberUser) GetUsergroupsCount() uint32 { +func (x *Project) GetCreatedByUserId() string { if x != nil { - return x.UsergroupsCount + return x.CreatedByUserId } - return 0 + return "" } -func (x *OrganizationMemberUser) GetAttributes() *structpb.Struct { +func (x *Project) GetDirectoryName() string { if x != nil { - return x.Attributes + return x.DirectoryName } - return nil + return "" } -func (x *OrganizationMemberUser) GetCreatedOn() *timestamppb.Timestamp { +func (x *Project) GetProvisioner() string { if x != nil { - return x.CreatedOn + return x.Provisioner } - return nil + return "" } -func (x *OrganizationMemberUser) GetUpdatedOn() *timestamppb.Timestamp { +func (x *Project) GetGitRemote() string { if x != nil { - return x.UpdatedOn + return x.GitRemote } - return nil -} - -type ProjectMemberUser struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` - UserEmail string `protobuf:"bytes,3,opt,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"` - UserName string `protobuf:"bytes,2,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"` - UserPhotoUrl string `protobuf:"bytes,7,opt,name=user_photo_url,json=userPhotoUrl,proto3" json:"user_photo_url,omitempty"` - RoleName string `protobuf:"bytes,4,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` - OrgRoleName string `protobuf:"bytes,8,opt,name=org_role_name,json=orgRoleName,proto3" json:"org_role_name,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` - RestrictResources bool `protobuf:"varint,9,opt,name=restrict_resources,json=restrictResources,proto3" json:"restrict_resources,omitempty"` - Resources []*ResourceName `protobuf:"bytes,10,rep,name=resources,proto3" json:"resources,omitempty"` + return "" } -func (x *ProjectMemberUser) Reset() { - *x = ProjectMemberUser{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[341] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Project) GetManagedGitId() string { + if x != nil { + return x.ManagedGitId } + return "" } -func (x *ProjectMemberUser) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ProjectMemberUser) ProtoMessage() {} - -func (x *ProjectMemberUser) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[341] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *Project) GetSubpath() string { + if x != nil { + return x.Subpath } - return mi.MessageOf(x) -} - -// Deprecated: Use ProjectMemberUser.ProtoReflect.Descriptor instead. -func (*ProjectMemberUser) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{341} + return "" } -func (x *ProjectMemberUser) GetUserId() string { +func (x *Project) GetPrimaryBranch() string { if x != nil { - return x.UserId + return x.PrimaryBranch } return "" } -func (x *ProjectMemberUser) GetUserEmail() string { +func (x *Project) GetArchiveAssetId() string { if x != nil { - return x.UserEmail + return x.ArchiveAssetId } return "" } -func (x *ProjectMemberUser) GetUserName() string { +func (x *Project) GetProdSlots() int64 { if x != nil { - return x.UserName + return x.ProdSlots } - return "" + return 0 } -func (x *ProjectMemberUser) GetUserPhotoUrl() string { +func (x *Project) GetPrimaryDeploymentId() string { if x != nil { - return x.UserPhotoUrl + return x.PrimaryDeploymentId } return "" } -func (x *ProjectMemberUser) GetRoleName() string { +func (x *Project) GetDevSlots() int64 { if x != nil { - return x.RoleName + return x.DevSlots } - return "" + return 0 } -func (x *ProjectMemberUser) GetOrgRoleName() string { +func (x *Project) GetFrontendUrl() string { if x != nil { - return x.OrgRoleName + return x.FrontendUrl } return "" } -func (x *ProjectMemberUser) GetCreatedOn() *timestamppb.Timestamp { +func (x *Project) GetProdTtlSeconds() int64 { if x != nil { - return x.CreatedOn + return x.ProdTtlSeconds } - return nil + return 0 } -func (x *ProjectMemberUser) GetUpdatedOn() *timestamppb.Timestamp { +func (x *Project) GetDevTtlSeconds() int64 { if x != nil { - return x.UpdatedOn + return x.DevTtlSeconds } - return nil + return 0 } -func (x *ProjectMemberUser) GetRestrictResources() bool { +func (x *Project) GetOverrideDiskGb() int64 { if x != nil { - return x.RestrictResources + return x.OverrideDiskGb } - return false + return 0 } -func (x *ProjectMemberUser) GetResources() []*ResourceName { +func (x *Project) GetAnnotations() map[string]string { if x != nil { - return x.Resources + return x.Annotations } return nil } -type UsergroupMemberUser struct { +func (x *Project) GetProdVersion() string { + if x != nil { + return x.ProdVersion + } + return "" +} + +func (x *Project) GetCreatedOn() *timestamppb.Timestamp { + if x != nil { + return x.CreatedOn + } + return nil +} + +func (x *Project) GetUpdatedOn() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedOn + } + return nil +} + +type Deployment struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` - UserEmail string `protobuf:"bytes,3,opt,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"` - UserName string `protobuf:"bytes,2,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"` - UserPhotoUrl string `protobuf:"bytes,7,opt,name=user_photo_url,json=userPhotoUrl,proto3" json:"user_photo_url,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + OwnerUserId string `protobuf:"bytes,12,opt,name=owner_user_id,json=ownerUserId,proto3" json:"owner_user_id,omitempty"` + Environment string `protobuf:"bytes,11,opt,name=environment,proto3" json:"environment,omitempty"` + Branch string `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"` + Editable bool `protobuf:"varint,13,opt,name=editable,proto3" json:"editable,omitempty"` + RuntimeHost string `protobuf:"bytes,5,opt,name=runtime_host,json=runtimeHost,proto3" json:"runtime_host,omitempty"` + RuntimeInstanceId string `protobuf:"bytes,6,opt,name=runtime_instance_id,json=runtimeInstanceId,proto3" json:"runtime_instance_id,omitempty"` + Status DeploymentStatus `protobuf:"varint,7,opt,name=status,proto3,enum=rill.admin.v1.DeploymentStatus" json:"status,omitempty"` + StatusMessage string `protobuf:"bytes,8,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` + UsedOn *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=used_on,json=usedOn,proto3" json:"used_on,omitempty"` } -func (x *UsergroupMemberUser) Reset() { - *x = UsergroupMemberUser{} +func (x *Deployment) Reset() { + *x = Deployment{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[342] + mi := &file_rill_admin_v1_api_proto_msgTypes[347] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UsergroupMemberUser) String() string { +func (x *Deployment) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UsergroupMemberUser) ProtoMessage() {} +func (*Deployment) ProtoMessage() {} -func (x *UsergroupMemberUser) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[342] +func (x *Deployment) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[347] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21528,146 +21517,132 @@ func (x *UsergroupMemberUser) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UsergroupMemberUser.ProtoReflect.Descriptor instead. -func (*UsergroupMemberUser) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{342} +// Deprecated: Use Deployment.ProtoReflect.Descriptor instead. +func (*Deployment) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{347} } -func (x *UsergroupMemberUser) GetUserId() string { +func (x *Deployment) GetId() string { if x != nil { - return x.UserId + return x.Id } return "" } -func (x *UsergroupMemberUser) GetUserEmail() string { +func (x *Deployment) GetProjectId() string { if x != nil { - return x.UserEmail + return x.ProjectId } return "" } -func (x *UsergroupMemberUser) GetUserName() string { +func (x *Deployment) GetOwnerUserId() string { if x != nil { - return x.UserName + return x.OwnerUserId } return "" } -func (x *UsergroupMemberUser) GetUserPhotoUrl() string { +func (x *Deployment) GetEnvironment() string { if x != nil { - return x.UserPhotoUrl + return x.Environment } return "" } -func (x *UsergroupMemberUser) GetCreatedOn() *timestamppb.Timestamp { +func (x *Deployment) GetBranch() string { if x != nil { - return x.CreatedOn + return x.Branch } - return nil + return "" } -func (x *UsergroupMemberUser) GetUpdatedOn() *timestamppb.Timestamp { +func (x *Deployment) GetEditable() bool { if x != nil { - return x.UpdatedOn + return x.Editable } - return nil -} - -type OrganizationInvite struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` - RoleName string `protobuf:"bytes,2,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` - InvitedBy string `protobuf:"bytes,3,opt,name=invited_by,json=invitedBy,proto3" json:"invited_by,omitempty"` + return false } -func (x *OrganizationInvite) Reset() { - *x = OrganizationInvite{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[343] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Deployment) GetRuntimeHost() string { + if x != nil { + return x.RuntimeHost } + return "" } -func (x *OrganizationInvite) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *Deployment) GetRuntimeInstanceId() string { + if x != nil { + return x.RuntimeInstanceId + } + return "" } -func (*OrganizationInvite) ProtoMessage() {} - -func (x *OrganizationInvite) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[343] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *Deployment) GetStatus() DeploymentStatus { + if x != nil { + return x.Status } - return mi.MessageOf(x) + return DeploymentStatus_DEPLOYMENT_STATUS_UNSPECIFIED } -// Deprecated: Use OrganizationInvite.ProtoReflect.Descriptor instead. -func (*OrganizationInvite) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{343} +func (x *Deployment) GetStatusMessage() string { + if x != nil { + return x.StatusMessage + } + return "" } -func (x *OrganizationInvite) GetEmail() string { +func (x *Deployment) GetCreatedOn() *timestamppb.Timestamp { if x != nil { - return x.Email + return x.CreatedOn } - return "" + return nil } -func (x *OrganizationInvite) GetRoleName() string { +func (x *Deployment) GetUpdatedOn() *timestamppb.Timestamp { if x != nil { - return x.RoleName + return x.UpdatedOn } - return "" + return nil } -func (x *OrganizationInvite) GetInvitedBy() string { +func (x *Deployment) GetUsedOn() *timestamppb.Timestamp { if x != nil { - return x.InvitedBy + return x.UsedOn } - return "" + return nil } -type ProjectInvite struct { +type ProvisionerResource struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` - RoleName string `protobuf:"bytes,2,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` - OrgRoleName string `protobuf:"bytes,4,opt,name=org_role_name,json=orgRoleName,proto3" json:"org_role_name,omitempty"` - InvitedBy string `protobuf:"bytes,3,opt,name=invited_by,json=invitedBy,proto3" json:"invited_by,omitempty"` - RestrictResources bool `protobuf:"varint,5,opt,name=restrict_resources,json=restrictResources,proto3" json:"restrict_resources,omitempty"` - Resources []*ResourceName `protobuf:"bytes,6,rep,name=resources,proto3" json:"resources,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + DeploymentId string `protobuf:"bytes,2,opt,name=deployment_id,json=deploymentId,proto3" json:"deployment_id,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Args *structpb.Struct `protobuf:"bytes,5,opt,name=args,proto3" json:"args,omitempty"` + Config *structpb.Struct `protobuf:"bytes,6,opt,name=config,proto3" json:"config,omitempty"` } -func (x *ProjectInvite) Reset() { - *x = ProjectInvite{} +func (x *ProvisionerResource) Reset() { + *x = ProvisionerResource{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[344] + mi := &file_rill_admin_v1_api_proto_msgTypes[348] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ProjectInvite) String() string { +func (x *ProvisionerResource) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProjectInvite) ProtoMessage() {} +func (*ProvisionerResource) ProtoMessage() {} -func (x *ProjectInvite) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[344] +func (x *ProvisionerResource) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[348] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21678,79 +21653,87 @@ func (x *ProjectInvite) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ProjectInvite.ProtoReflect.Descriptor instead. -func (*ProjectInvite) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{344} +// Deprecated: Use ProvisionerResource.ProtoReflect.Descriptor instead. +func (*ProvisionerResource) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{348} } -func (x *ProjectInvite) GetEmail() string { +func (x *ProvisionerResource) GetId() string { if x != nil { - return x.Email + return x.Id } return "" } -func (x *ProjectInvite) GetRoleName() string { +func (x *ProvisionerResource) GetDeploymentId() string { if x != nil { - return x.RoleName + return x.DeploymentId } return "" } -func (x *ProjectInvite) GetOrgRoleName() string { +func (x *ProvisionerResource) GetType() string { if x != nil { - return x.OrgRoleName + return x.Type } return "" } -func (x *ProjectInvite) GetInvitedBy() string { +func (x *ProvisionerResource) GetName() string { if x != nil { - return x.InvitedBy + return x.Name } return "" } -func (x *ProjectInvite) GetRestrictResources() bool { +func (x *ProvisionerResource) GetArgs() *structpb.Struct { if x != nil { - return x.RestrictResources + return x.Args } - return false + return nil } -func (x *ProjectInvite) GetResources() []*ResourceName { +func (x *ProvisionerResource) GetConfig() *structpb.Struct { if x != nil { - return x.Resources + return x.Config } return nil } -type WhitelistedDomain struct { +type OrganizationPermissions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"` - Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` + Admin bool `protobuf:"varint,9,opt,name=admin,proto3" json:"admin,omitempty"` + Guest bool `protobuf:"varint,8,opt,name=guest,proto3" json:"guest,omitempty"` + ReadOrg bool `protobuf:"varint,1,opt,name=read_org,json=readOrg,proto3" json:"read_org,omitempty"` + ManageOrg bool `protobuf:"varint,2,opt,name=manage_org,json=manageOrg,proto3" json:"manage_org,omitempty"` + ReadProjects bool `protobuf:"varint,3,opt,name=read_projects,json=readProjects,proto3" json:"read_projects,omitempty"` + CreateProjects bool `protobuf:"varint,4,opt,name=create_projects,json=createProjects,proto3" json:"create_projects,omitempty"` + ManageProjects bool `protobuf:"varint,5,opt,name=manage_projects,json=manageProjects,proto3" json:"manage_projects,omitempty"` + ReadOrgMembers bool `protobuf:"varint,6,opt,name=read_org_members,json=readOrgMembers,proto3" json:"read_org_members,omitempty"` + ManageOrgMembers bool `protobuf:"varint,7,opt,name=manage_org_members,json=manageOrgMembers,proto3" json:"manage_org_members,omitempty"` + ManageOrgAdmins bool `protobuf:"varint,10,opt,name=manage_org_admins,json=manageOrgAdmins,proto3" json:"manage_org_admins,omitempty"` } -func (x *WhitelistedDomain) Reset() { - *x = WhitelistedDomain{} +func (x *OrganizationPermissions) Reset() { + *x = OrganizationPermissions{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[345] + mi := &file_rill_admin_v1_api_proto_msgTypes[349] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *WhitelistedDomain) String() string { +func (x *OrganizationPermissions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WhitelistedDomain) ProtoMessage() {} +func (*OrganizationPermissions) ProtoMessage() {} -func (x *WhitelistedDomain) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[345] +func (x *OrganizationPermissions) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[349] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21761,62 +21744,128 @@ func (x *WhitelistedDomain) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WhitelistedDomain.ProtoReflect.Descriptor instead. -func (*WhitelistedDomain) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{345} +// Deprecated: Use OrganizationPermissions.ProtoReflect.Descriptor instead. +func (*OrganizationPermissions) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{349} } -func (x *WhitelistedDomain) GetDomain() string { +func (x *OrganizationPermissions) GetAdmin() bool { if x != nil { - return x.Domain + return x.Admin } - return "" + return false } -func (x *WhitelistedDomain) GetRole() string { +func (x *OrganizationPermissions) GetGuest() bool { if x != nil { - return x.Role + return x.Guest } - return "" + return false } -type Bookmark struct { +func (x *OrganizationPermissions) GetReadOrg() bool { + if x != nil { + return x.ReadOrg + } + return false +} + +func (x *OrganizationPermissions) GetManageOrg() bool { + if x != nil { + return x.ManageOrg + } + return false +} + +func (x *OrganizationPermissions) GetReadProjects() bool { + if x != nil { + return x.ReadProjects + } + return false +} + +func (x *OrganizationPermissions) GetCreateProjects() bool { + if x != nil { + return x.CreateProjects + } + return false +} + +func (x *OrganizationPermissions) GetManageProjects() bool { + if x != nil { + return x.ManageProjects + } + return false +} + +func (x *OrganizationPermissions) GetReadOrgMembers() bool { + if x != nil { + return x.ReadOrgMembers + } + return false +} + +func (x *OrganizationPermissions) GetManageOrgMembers() bool { + if x != nil { + return x.ManageOrgMembers + } + return false +} + +func (x *OrganizationPermissions) GetManageOrgAdmins() bool { + if x != nil { + return x.ManageOrgAdmins + } + return false +} + +type ProjectPermissions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Description string `protobuf:"bytes,9,opt,name=description,proto3" json:"description,omitempty"` - Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` - UrlSearch string `protobuf:"bytes,13,opt,name=url_search,json=urlSearch,proto3" json:"url_search,omitempty"` - ResourceKind string `protobuf:"bytes,10,opt,name=resource_kind,json=resourceKind,proto3" json:"resource_kind,omitempty"` - ResourceName string `protobuf:"bytes,4,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` - ProjectId string `protobuf:"bytes,5,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - UserId string `protobuf:"bytes,6,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` - Default bool `protobuf:"varint,11,opt,name=default,proto3" json:"default,omitempty"` - Shared bool `protobuf:"varint,12,opt,name=shared,proto3" json:"shared,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` + Admin bool `protobuf:"varint,21,opt,name=admin,proto3" json:"admin,omitempty"` + ReadProject bool `protobuf:"varint,1,opt,name=read_project,json=readProject,proto3" json:"read_project,omitempty"` + ManageProject bool `protobuf:"varint,2,opt,name=manage_project,json=manageProject,proto3" json:"manage_project,omitempty"` + ReadProd bool `protobuf:"varint,3,opt,name=read_prod,json=readProd,proto3" json:"read_prod,omitempty"` + ReadProdStatus bool `protobuf:"varint,4,opt,name=read_prod_status,json=readProdStatus,proto3" json:"read_prod_status,omitempty"` + ManageProd bool `protobuf:"varint,5,opt,name=manage_prod,json=manageProd,proto3" json:"manage_prod,omitempty"` + ReadDev bool `protobuf:"varint,6,opt,name=read_dev,json=readDev,proto3" json:"read_dev,omitempty"` + ReadDevStatus bool `protobuf:"varint,7,opt,name=read_dev_status,json=readDevStatus,proto3" json:"read_dev_status,omitempty"` + ManageDev bool `protobuf:"varint,8,opt,name=manage_dev,json=manageDev,proto3" json:"manage_dev,omitempty"` + ReadProvisionerResources bool `protobuf:"varint,19,opt,name=read_provisioner_resources,json=readProvisionerResources,proto3" json:"read_provisioner_resources,omitempty"` + ManageProvisionerResources bool `protobuf:"varint,20,opt,name=manage_provisioner_resources,json=manageProvisionerResources,proto3" json:"manage_provisioner_resources,omitempty"` + ReadProjectMembers bool `protobuf:"varint,9,opt,name=read_project_members,json=readProjectMembers,proto3" json:"read_project_members,omitempty"` + ManageProjectMembers bool `protobuf:"varint,10,opt,name=manage_project_members,json=manageProjectMembers,proto3" json:"manage_project_members,omitempty"` + ManageProjectAdmins bool `protobuf:"varint,22,opt,name=manage_project_admins,json=manageProjectAdmins,proto3" json:"manage_project_admins,omitempty"` + CreateMagicAuthTokens bool `protobuf:"varint,15,opt,name=create_magic_auth_tokens,json=createMagicAuthTokens,proto3" json:"create_magic_auth_tokens,omitempty"` + ManageMagicAuthTokens bool `protobuf:"varint,16,opt,name=manage_magic_auth_tokens,json=manageMagicAuthTokens,proto3" json:"manage_magic_auth_tokens,omitempty"` + CreateReports bool `protobuf:"varint,11,opt,name=create_reports,json=createReports,proto3" json:"create_reports,omitempty"` + ManageReports bool `protobuf:"varint,12,opt,name=manage_reports,json=manageReports,proto3" json:"manage_reports,omitempty"` + CreateAlerts bool `protobuf:"varint,13,opt,name=create_alerts,json=createAlerts,proto3" json:"create_alerts,omitempty"` + ManageAlerts bool `protobuf:"varint,14,opt,name=manage_alerts,json=manageAlerts,proto3" json:"manage_alerts,omitempty"` + CreateBookmarks bool `protobuf:"varint,17,opt,name=create_bookmarks,json=createBookmarks,proto3" json:"create_bookmarks,omitempty"` + ManageBookmarks bool `protobuf:"varint,18,opt,name=manage_bookmarks,json=manageBookmarks,proto3" json:"manage_bookmarks,omitempty"` + CreatePersonalCanvases bool `protobuf:"varint,23,opt,name=create_personal_canvases,json=createPersonalCanvases,proto3" json:"create_personal_canvases,omitempty"` } -func (x *Bookmark) Reset() { - *x = Bookmark{} +func (x *ProjectPermissions) Reset() { + *x = ProjectPermissions{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[346] + mi := &file_rill_admin_v1_api_proto_msgTypes[350] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Bookmark) String() string { +func (x *ProjectPermissions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Bookmark) ProtoMessage() {} +func (*ProjectPermissions) ProtoMessage() {} -func (x *Bookmark) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[346] +func (x *ProjectPermissions) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[350] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21827,208 +21876,199 @@ func (x *Bookmark) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Bookmark.ProtoReflect.Descriptor instead. -func (*Bookmark) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{346} +// Deprecated: Use ProjectPermissions.ProtoReflect.Descriptor instead. +func (*ProjectPermissions) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{350} } -func (x *Bookmark) GetId() string { +func (x *ProjectPermissions) GetAdmin() bool { if x != nil { - return x.Id + return x.Admin } - return "" + return false } -func (x *Bookmark) GetDisplayName() string { +func (x *ProjectPermissions) GetReadProject() bool { if x != nil { - return x.DisplayName + return x.ReadProject } - return "" + return false } -func (x *Bookmark) GetDescription() string { +func (x *ProjectPermissions) GetManageProject() bool { if x != nil { - return x.Description + return x.ManageProject } - return "" + return false } -func (x *Bookmark) GetData() []byte { +func (x *ProjectPermissions) GetReadProd() bool { if x != nil { - return x.Data + return x.ReadProd } - return nil + return false } -func (x *Bookmark) GetUrlSearch() string { +func (x *ProjectPermissions) GetReadProdStatus() bool { if x != nil { - return x.UrlSearch + return x.ReadProdStatus } - return "" + return false } -func (x *Bookmark) GetResourceKind() string { +func (x *ProjectPermissions) GetManageProd() bool { if x != nil { - return x.ResourceKind + return x.ManageProd } - return "" + return false } -func (x *Bookmark) GetResourceName() string { +func (x *ProjectPermissions) GetReadDev() bool { if x != nil { - return x.ResourceName + return x.ReadDev } - return "" + return false } -func (x *Bookmark) GetProjectId() string { +func (x *ProjectPermissions) GetReadDevStatus() bool { if x != nil { - return x.ProjectId + return x.ReadDevStatus } - return "" + return false } -func (x *Bookmark) GetUserId() string { +func (x *ProjectPermissions) GetManageDev() bool { if x != nil { - return x.UserId + return x.ManageDev } - return "" + return false } -func (x *Bookmark) GetDefault() bool { +func (x *ProjectPermissions) GetReadProvisionerResources() bool { if x != nil { - return x.Default + return x.ReadProvisionerResources } return false } -func (x *Bookmark) GetShared() bool { +func (x *ProjectPermissions) GetManageProvisionerResources() bool { if x != nil { - return x.Shared + return x.ManageProvisionerResources } return false } -func (x *Bookmark) GetCreatedOn() *timestamppb.Timestamp { +func (x *ProjectPermissions) GetReadProjectMembers() bool { if x != nil { - return x.CreatedOn + return x.ReadProjectMembers } - return nil + return false } -func (x *Bookmark) GetUpdatedOn() *timestamppb.Timestamp { +func (x *ProjectPermissions) GetManageProjectMembers() bool { if x != nil { - return x.UpdatedOn + return x.ManageProjectMembers } - return nil + return false } -type ServiceToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Prefix string `protobuf:"bytes,4,opt,name=prefix,proto3" json:"prefix,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - ExpiresOn *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=expires_on,json=expiresOn,proto3" json:"expires_on,omitempty"` +func (x *ProjectPermissions) GetManageProjectAdmins() bool { + if x != nil { + return x.ManageProjectAdmins + } + return false } -func (x *ServiceToken) Reset() { - *x = ServiceToken{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[347] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ProjectPermissions) GetCreateMagicAuthTokens() bool { + if x != nil { + return x.CreateMagicAuthTokens } + return false } -func (x *ServiceToken) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *ProjectPermissions) GetManageMagicAuthTokens() bool { + if x != nil { + return x.ManageMagicAuthTokens + } + return false } -func (*ServiceToken) ProtoMessage() {} +func (x *ProjectPermissions) GetCreateReports() bool { + if x != nil { + return x.CreateReports + } + return false +} -func (x *ServiceToken) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[347] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ProjectPermissions) GetManageReports() bool { + if x != nil { + return x.ManageReports } - return mi.MessageOf(x) + return false } -// Deprecated: Use ServiceToken.ProtoReflect.Descriptor instead. -func (*ServiceToken) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{347} +func (x *ProjectPermissions) GetCreateAlerts() bool { + if x != nil { + return x.CreateAlerts + } + return false } -func (x *ServiceToken) GetId() string { +func (x *ProjectPermissions) GetManageAlerts() bool { if x != nil { - return x.Id + return x.ManageAlerts } - return "" + return false } -func (x *ServiceToken) GetPrefix() string { +func (x *ProjectPermissions) GetCreateBookmarks() bool { if x != nil { - return x.Prefix + return x.CreateBookmarks } - return "" + return false } -func (x *ServiceToken) GetCreatedOn() *timestamppb.Timestamp { +func (x *ProjectPermissions) GetManageBookmarks() bool { if x != nil { - return x.CreatedOn + return x.ManageBookmarks } - return nil + return false } -func (x *ServiceToken) GetExpiresOn() *timestamppb.Timestamp { +func (x *ProjectPermissions) GetCreatePersonalCanvases() bool { if x != nil { - return x.ExpiresOn + return x.CreatePersonalCanvases } - return nil + return false } -type UserAuthToken struct { +type OrganizationRole struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - AuthClientId string `protobuf:"bytes,3,opt,name=auth_client_id,json=authClientId,proto3" json:"auth_client_id,omitempty"` - AuthClientDisplayName string `protobuf:"bytes,4,opt,name=auth_client_display_name,json=authClientDisplayName,proto3" json:"auth_client_display_name,omitempty"` - RepresentingUserId string `protobuf:"bytes,5,opt,name=representing_user_id,json=representingUserId,proto3" json:"representing_user_id,omitempty"` - Prefix string `protobuf:"bytes,9,opt,name=prefix,proto3" json:"prefix,omitempty"` - Attributes *structpb.Struct `protobuf:"bytes,10,opt,name=attributes,proto3" json:"attributes,omitempty"` - Refresh bool `protobuf:"varint,11,opt,name=refresh,proto3" json:"refresh,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - ExpiresOn *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=expires_on,json=expiresOn,proto3" json:"expires_on,omitempty"` - UsedOn *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=used_on,json=usedOn,proto3" json:"used_on,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Permissions *OrganizationPermissions `protobuf:"bytes,3,opt,name=permissions,proto3" json:"permissions,omitempty"` } -func (x *UserAuthToken) Reset() { - *x = UserAuthToken{} +func (x *OrganizationRole) Reset() { + *x = OrganizationRole{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[348] + mi := &file_rill_admin_v1_api_proto_msgTypes[351] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UserAuthToken) String() string { +func (x *OrganizationRole) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UserAuthToken) ProtoMessage() {} +func (*OrganizationRole) ProtoMessage() {} -func (x *UserAuthToken) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[348] +func (x *OrganizationRole) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[351] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22039,131 +22079,129 @@ func (x *UserAuthToken) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UserAuthToken.ProtoReflect.Descriptor instead. -func (*UserAuthToken) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{348} +// Deprecated: Use OrganizationRole.ProtoReflect.Descriptor instead. +func (*OrganizationRole) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{351} } -func (x *UserAuthToken) GetId() string { +func (x *OrganizationRole) GetId() string { if x != nil { return x.Id } return "" } -func (x *UserAuthToken) GetDisplayName() string { +func (x *OrganizationRole) GetName() string { if x != nil { - return x.DisplayName + return x.Name } return "" } -func (x *UserAuthToken) GetAuthClientId() string { +func (x *OrganizationRole) GetPermissions() *OrganizationPermissions { if x != nil { - return x.AuthClientId + return x.Permissions } - return "" + return nil } -func (x *UserAuthToken) GetAuthClientDisplayName() string { - if x != nil { - return x.AuthClientDisplayName - } - return "" +type ProjectRole struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Permissions *ProjectPermissions `protobuf:"bytes,3,opt,name=permissions,proto3" json:"permissions,omitempty"` } -func (x *UserAuthToken) GetRepresentingUserId() string { - if x != nil { - return x.RepresentingUserId +func (x *ProjectRole) Reset() { + *x = ProjectRole{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[352] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *UserAuthToken) GetPrefix() string { - if x != nil { - return x.Prefix - } - return "" +func (x *ProjectRole) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *UserAuthToken) GetAttributes() *structpb.Struct { - if x != nil { - return x.Attributes +func (*ProjectRole) ProtoMessage() {} + +func (x *ProjectRole) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[352] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *UserAuthToken) GetRefresh() bool { - if x != nil { - return x.Refresh - } - return false +// Deprecated: Use ProjectRole.ProtoReflect.Descriptor instead. +func (*ProjectRole) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{352} } -func (x *UserAuthToken) GetCreatedOn() *timestamppb.Timestamp { +func (x *ProjectRole) GetId() string { if x != nil { - return x.CreatedOn + return x.Id } - return nil + return "" } -func (x *UserAuthToken) GetExpiresOn() *timestamppb.Timestamp { +func (x *ProjectRole) GetName() string { if x != nil { - return x.ExpiresOn + return x.Name } - return nil + return "" } -func (x *UserAuthToken) GetUsedOn() *timestamppb.Timestamp { +func (x *ProjectRole) GetPermissions() *ProjectPermissions { if x != nil { - return x.UsedOn + return x.Permissions } return nil } -type MagicAuthToken struct { +type OrganizationMemberUser struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - Url string `protobuf:"bytes,13,opt,name=url,proto3" json:"url,omitempty"` - Token string `protobuf:"bytes,14,opt,name=token,proto3" json:"token,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - ExpiresOn *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_on,json=expiresOn,proto3" json:"expires_on,omitempty"` - UsedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=used_on,json=usedOn,proto3" json:"used_on,omitempty"` - CreatedByUserId string `protobuf:"bytes,6,opt,name=created_by_user_id,json=createdByUserId,proto3" json:"created_by_user_id,omitempty"` - CreatedByUserEmail string `protobuf:"bytes,7,opt,name=created_by_user_email,json=createdByUserEmail,proto3" json:"created_by_user_email,omitempty"` - Attributes *structpb.Struct `protobuf:"bytes,8,opt,name=attributes,proto3" json:"attributes,omitempty"` - Resources []*ResourceName `protobuf:"bytes,17,rep,name=resources,proto3" json:"resources,omitempty"` - // Deprecated: Marked as deprecated in rill/admin/v1/api.proto. - ResourceType string `protobuf:"bytes,15,opt,name=resource_type,json=resourceType,proto3" json:"resource_type,omitempty"` - // Deprecated: Marked as deprecated in rill/admin/v1/api.proto. - ResourceName string `protobuf:"bytes,9,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` - MetricsViewFilters map[string]*v1.Expression `protobuf:"bytes,18,rep,name=metrics_view_filters,json=metricsViewFilters,proto3" json:"metrics_view_filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Fields []string `protobuf:"bytes,11,rep,name=fields,proto3" json:"fields,omitempty"` - State string `protobuf:"bytes,12,opt,name=state,proto3" json:"state,omitempty"` - DisplayName string `protobuf:"bytes,16,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + UserEmail string `protobuf:"bytes,3,opt,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"` + UserPhotoUrl string `protobuf:"bytes,7,opt,name=user_photo_url,json=userPhotoUrl,proto3" json:"user_photo_url,omitempty"` + RoleName string `protobuf:"bytes,4,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` + ProjectsCount uint32 `protobuf:"varint,8,opt,name=projects_count,json=projectsCount,proto3" json:"projects_count,omitempty"` + UsergroupsCount uint32 `protobuf:"varint,9,opt,name=usergroups_count,json=usergroupsCount,proto3" json:"usergroups_count,omitempty"` + Attributes *structpb.Struct `protobuf:"bytes,10,opt,name=attributes,proto3" json:"attributes,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *MagicAuthToken) Reset() { - *x = MagicAuthToken{} +func (x *OrganizationMemberUser) Reset() { + *x = OrganizationMemberUser{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[349] + mi := &file_rill_admin_v1_api_proto_msgTypes[353] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MagicAuthToken) String() string { +func (x *OrganizationMemberUser) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MagicAuthToken) ProtoMessage() {} +func (*OrganizationMemberUser) ProtoMessage() {} -func (x *MagicAuthToken) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[349] +func (x *OrganizationMemberUser) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[353] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22174,160 +22212,230 @@ func (x *MagicAuthToken) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MagicAuthToken.ProtoReflect.Descriptor instead. -func (*MagicAuthToken) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{349} +// Deprecated: Use OrganizationMemberUser.ProtoReflect.Descriptor instead. +func (*OrganizationMemberUser) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{353} } -func (x *MagicAuthToken) GetId() string { +func (x *OrganizationMemberUser) GetUserId() string { if x != nil { - return x.Id + return x.UserId } return "" } -func (x *MagicAuthToken) GetProjectId() string { +func (x *OrganizationMemberUser) GetUserEmail() string { if x != nil { - return x.ProjectId + return x.UserEmail } return "" } -func (x *MagicAuthToken) GetUrl() string { +func (x *OrganizationMemberUser) GetUserName() string { if x != nil { - return x.Url + return x.UserName } return "" } -func (x *MagicAuthToken) GetToken() string { +func (x *OrganizationMemberUser) GetUserPhotoUrl() string { if x != nil { - return x.Token + return x.UserPhotoUrl } return "" } -func (x *MagicAuthToken) GetCreatedOn() *timestamppb.Timestamp { - if x != nil { - return x.CreatedOn - } - return nil -} - -func (x *MagicAuthToken) GetExpiresOn() *timestamppb.Timestamp { +func (x *OrganizationMemberUser) GetRoleName() string { if x != nil { - return x.ExpiresOn + return x.RoleName } - return nil + return "" } -func (x *MagicAuthToken) GetUsedOn() *timestamppb.Timestamp { +func (x *OrganizationMemberUser) GetProjectsCount() uint32 { if x != nil { - return x.UsedOn + return x.ProjectsCount } - return nil + return 0 } -func (x *MagicAuthToken) GetCreatedByUserId() string { +func (x *OrganizationMemberUser) GetUsergroupsCount() uint32 { if x != nil { - return x.CreatedByUserId + return x.UsergroupsCount } - return "" + return 0 } -func (x *MagicAuthToken) GetCreatedByUserEmail() string { +func (x *OrganizationMemberUser) GetAttributes() *structpb.Struct { if x != nil { - return x.CreatedByUserEmail + return x.Attributes } - return "" + return nil } -func (x *MagicAuthToken) GetAttributes() *structpb.Struct { +func (x *OrganizationMemberUser) GetCreatedOn() *timestamppb.Timestamp { if x != nil { - return x.Attributes + return x.CreatedOn } return nil } -func (x *MagicAuthToken) GetResources() []*ResourceName { +func (x *OrganizationMemberUser) GetUpdatedOn() *timestamppb.Timestamp { if x != nil { - return x.Resources + return x.UpdatedOn } return nil } -// Deprecated: Marked as deprecated in rill/admin/v1/api.proto. -func (x *MagicAuthToken) GetResourceType() string { - if x != nil { - return x.ResourceType +type ProjectMemberUser struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + UserEmail string `protobuf:"bytes,3,opt,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"` + UserPhotoUrl string `protobuf:"bytes,7,opt,name=user_photo_url,json=userPhotoUrl,proto3" json:"user_photo_url,omitempty"` + RoleName string `protobuf:"bytes,4,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` + OrgRoleName string `protobuf:"bytes,8,opt,name=org_role_name,json=orgRoleName,proto3" json:"org_role_name,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` + RestrictResources bool `protobuf:"varint,9,opt,name=restrict_resources,json=restrictResources,proto3" json:"restrict_resources,omitempty"` + Resources []*ResourceName `protobuf:"bytes,10,rep,name=resources,proto3" json:"resources,omitempty"` +} + +func (x *ProjectMemberUser) Reset() { + *x = ProjectMemberUser{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[354] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProjectMemberUser) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProjectMemberUser) ProtoMessage() {} + +func (x *ProjectMemberUser) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[354] + 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 ProjectMemberUser.ProtoReflect.Descriptor instead. +func (*ProjectMemberUser) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{354} +} + +func (x *ProjectMemberUser) GetUserId() string { + if x != nil { + return x.UserId } return "" } -// Deprecated: Marked as deprecated in rill/admin/v1/api.proto. -func (x *MagicAuthToken) GetResourceName() string { +func (x *ProjectMemberUser) GetUserEmail() string { if x != nil { - return x.ResourceName + return x.UserEmail } return "" } -func (x *MagicAuthToken) GetMetricsViewFilters() map[string]*v1.Expression { +func (x *ProjectMemberUser) GetUserName() string { if x != nil { - return x.MetricsViewFilters + return x.UserName } - return nil + return "" } -func (x *MagicAuthToken) GetFields() []string { +func (x *ProjectMemberUser) GetUserPhotoUrl() string { if x != nil { - return x.Fields + return x.UserPhotoUrl } - return nil + return "" } -func (x *MagicAuthToken) GetState() string { +func (x *ProjectMemberUser) GetRoleName() string { if x != nil { - return x.State + return x.RoleName } return "" } -func (x *MagicAuthToken) GetDisplayName() string { +func (x *ProjectMemberUser) GetOrgRoleName() string { if x != nil { - return x.DisplayName + return x.OrgRoleName } return "" } -type VirtualFile struct { +func (x *ProjectMemberUser) GetCreatedOn() *timestamppb.Timestamp { + if x != nil { + return x.CreatedOn + } + return nil +} + +func (x *ProjectMemberUser) GetUpdatedOn() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedOn + } + return nil +} + +func (x *ProjectMemberUser) GetRestrictResources() bool { + if x != nil { + return x.RestrictResources + } + return false +} + +func (x *ProjectMemberUser) GetResources() []*ResourceName { + if x != nil { + return x.Resources + } + return nil +} + +type UsergroupMemberUser struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` - Deleted bool `protobuf:"varint,3,opt,name=deleted,proto3" json:"deleted,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` + UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + UserEmail string `protobuf:"bytes,3,opt,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"` + UserPhotoUrl string `protobuf:"bytes,7,opt,name=user_photo_url,json=userPhotoUrl,proto3" json:"user_photo_url,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *VirtualFile) Reset() { - *x = VirtualFile{} +func (x *UsergroupMemberUser) Reset() { + *x = UsergroupMemberUser{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[350] + mi := &file_rill_admin_v1_api_proto_msgTypes[355] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VirtualFile) String() string { +func (x *UsergroupMemberUser) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VirtualFile) ProtoMessage() {} +func (*UsergroupMemberUser) ProtoMessage() {} -func (x *VirtualFile) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[350] +func (x *UsergroupMemberUser) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[355] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22338,89 +22446,80 @@ func (x *VirtualFile) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VirtualFile.ProtoReflect.Descriptor instead. -func (*VirtualFile) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{350} +// Deprecated: Use UsergroupMemberUser.ProtoReflect.Descriptor instead. +func (*UsergroupMemberUser) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{355} } -func (x *VirtualFile) GetPath() string { +func (x *UsergroupMemberUser) GetUserId() string { if x != nil { - return x.Path + return x.UserId } return "" } -func (x *VirtualFile) GetData() []byte { +func (x *UsergroupMemberUser) GetUserEmail() string { if x != nil { - return x.Data + return x.UserEmail } - return nil + return "" } -func (x *VirtualFile) GetDeleted() bool { +func (x *UsergroupMemberUser) GetUserName() string { if x != nil { - return x.Deleted + return x.UserName } - return false + return "" } -func (x *VirtualFile) GetUpdatedOn() *timestamppb.Timestamp { +func (x *UsergroupMemberUser) GetUserPhotoUrl() string { + if x != nil { + return x.UserPhotoUrl + } + return "" +} + +func (x *UsergroupMemberUser) GetCreatedOn() *timestamppb.Timestamp { + if x != nil { + return x.CreatedOn + } + return nil +} + +func (x *UsergroupMemberUser) GetUpdatedOn() *timestamppb.Timestamp { if x != nil { return x.UpdatedOn } return nil } -type ReportOptions struct { +type OrganizationInvite struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - RefreshCron string `protobuf:"bytes,2,opt,name=refresh_cron,json=refreshCron,proto3" json:"refresh_cron,omitempty"` - RefreshTimeZone string `protobuf:"bytes,9,opt,name=refresh_time_zone,json=refreshTimeZone,proto3" json:"refresh_time_zone,omitempty"` - IntervalDuration string `protobuf:"bytes,13,opt,name=interval_duration,json=intervalDuration,proto3" json:"interval_duration,omitempty"` - Resolver string `protobuf:"bytes,21,opt,name=resolver,proto3" json:"resolver,omitempty"` - ResolverProperties *structpb.Struct `protobuf:"bytes,22,opt,name=resolver_properties,json=resolverProperties,proto3" json:"resolver_properties,omitempty"` - // Deprecated: Marked as deprecated in rill/admin/v1/api.proto. - QueryName string `protobuf:"bytes,3,opt,name=query_name,json=queryName,proto3" json:"query_name,omitempty"` // use resolver/resolver_properties instead - // Deprecated: Marked as deprecated in rill/admin/v1/api.proto. - QueryArgsJson string `protobuf:"bytes,4,opt,name=query_args_json,json=queryArgsJson,proto3" json:"query_args_json,omitempty"` // use resolver/resolver_properties instead - ExportLimit uint64 `protobuf:"varint,5,opt,name=export_limit,json=exportLimit,proto3" json:"export_limit,omitempty"` - ExportFormat v1.ExportFormat `protobuf:"varint,6,opt,name=export_format,json=exportFormat,proto3,enum=rill.runtime.v1.ExportFormat" json:"export_format,omitempty"` - ExportIncludeHeader bool `protobuf:"varint,20,opt,name=export_include_header,json=exportIncludeHeader,proto3" json:"export_include_header,omitempty"` - EmailRecipients []string `protobuf:"bytes,8,rep,name=email_recipients,json=emailRecipients,proto3" json:"email_recipients,omitempty"` - SlackUsers []string `protobuf:"bytes,10,rep,name=slack_users,json=slackUsers,proto3" json:"slack_users,omitempty"` - SlackChannels []string `protobuf:"bytes,11,rep,name=slack_channels,json=slackChannels,proto3" json:"slack_channels,omitempty"` - SlackWebhooks []string `protobuf:"bytes,12,rep,name=slack_webhooks,json=slackWebhooks,proto3" json:"slack_webhooks,omitempty"` - WebOpenPath string `protobuf:"bytes,15,opt,name=web_open_path,json=webOpenPath,proto3" json:"web_open_path,omitempty"` // Annotation for the subpath of /org/project to open for the report. - WebOpenState string `protobuf:"bytes,14,opt,name=web_open_state,json=webOpenState,proto3" json:"web_open_state,omitempty"` // Annotation for the base64-encoded UI state to open for the report. - Explore string `protobuf:"bytes,16,opt,name=explore,proto3" json:"explore,omitempty"` // either canvas or explore should be set - Canvas string `protobuf:"bytes,17,opt,name=canvas,proto3" json:"canvas,omitempty"` - // web_open_mode is used to determine how to create or disable open link for the report - // - send "recipient" for reports that should be opened with recipient's permissions - requires login - // - send "creator" for reports that should be opened with creators permissions but with locked filters - no login required - // - send "none" for reports that should not be opened or older reports which do not have any web_open_path - WebOpenMode string `protobuf:"bytes,18,opt,name=web_open_mode,json=webOpenMode,proto3" json:"web_open_mode,omitempty"` + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + RoleName string `protobuf:"bytes,2,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` + InvitedBy string `protobuf:"bytes,3,opt,name=invited_by,json=invitedBy,proto3" json:"invited_by,omitempty"` } -func (x *ReportOptions) Reset() { - *x = ReportOptions{} +func (x *OrganizationInvite) Reset() { + *x = OrganizationInvite{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[351] + mi := &file_rill_admin_v1_api_proto_msgTypes[356] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ReportOptions) String() string { +func (x *OrganizationInvite) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReportOptions) ProtoMessage() {} +func (*OrganizationInvite) ProtoMessage() {} -func (x *ReportOptions) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[351] +func (x *OrganizationInvite) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[356] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22431,196 +22530,211 @@ func (x *ReportOptions) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReportOptions.ProtoReflect.Descriptor instead. -func (*ReportOptions) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{351} +// Deprecated: Use OrganizationInvite.ProtoReflect.Descriptor instead. +func (*OrganizationInvite) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{356} } -func (x *ReportOptions) GetDisplayName() string { +func (x *OrganizationInvite) GetEmail() string { if x != nil { - return x.DisplayName + return x.Email } return "" } -func (x *ReportOptions) GetRefreshCron() string { +func (x *OrganizationInvite) GetRoleName() string { if x != nil { - return x.RefreshCron + return x.RoleName } return "" } -func (x *ReportOptions) GetRefreshTimeZone() string { +func (x *OrganizationInvite) GetInvitedBy() string { if x != nil { - return x.RefreshTimeZone + return x.InvitedBy } return "" } -func (x *ReportOptions) GetIntervalDuration() string { - if x != nil { - return x.IntervalDuration - } - return "" -} +type ProjectInvite struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *ReportOptions) GetResolver() string { - if x != nil { - return x.Resolver - } - return "" + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + RoleName string `protobuf:"bytes,2,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` + OrgRoleName string `protobuf:"bytes,4,opt,name=org_role_name,json=orgRoleName,proto3" json:"org_role_name,omitempty"` + InvitedBy string `protobuf:"bytes,3,opt,name=invited_by,json=invitedBy,proto3" json:"invited_by,omitempty"` + RestrictResources bool `protobuf:"varint,5,opt,name=restrict_resources,json=restrictResources,proto3" json:"restrict_resources,omitempty"` + Resources []*ResourceName `protobuf:"bytes,6,rep,name=resources,proto3" json:"resources,omitempty"` } -func (x *ReportOptions) GetResolverProperties() *structpb.Struct { - if x != nil { - return x.ResolverProperties +func (x *ProjectInvite) Reset() { + *x = ProjectInvite{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[357] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -// Deprecated: Marked as deprecated in rill/admin/v1/api.proto. -func (x *ReportOptions) GetQueryName() string { - if x != nil { - return x.QueryName +func (x *ProjectInvite) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProjectInvite) ProtoMessage() {} + +func (x *ProjectInvite) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[357] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -// Deprecated: Marked as deprecated in rill/admin/v1/api.proto. -func (x *ReportOptions) GetQueryArgsJson() string { +// Deprecated: Use ProjectInvite.ProtoReflect.Descriptor instead. +func (*ProjectInvite) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{357} +} + +func (x *ProjectInvite) GetEmail() string { if x != nil { - return x.QueryArgsJson + return x.Email } return "" } -func (x *ReportOptions) GetExportLimit() uint64 { +func (x *ProjectInvite) GetRoleName() string { if x != nil { - return x.ExportLimit + return x.RoleName } - return 0 + return "" } -func (x *ReportOptions) GetExportFormat() v1.ExportFormat { +func (x *ProjectInvite) GetOrgRoleName() string { if x != nil { - return x.ExportFormat + return x.OrgRoleName } - return v1.ExportFormat(0) + return "" } -func (x *ReportOptions) GetExportIncludeHeader() bool { +func (x *ProjectInvite) GetInvitedBy() string { if x != nil { - return x.ExportIncludeHeader + return x.InvitedBy } - return false + return "" } -func (x *ReportOptions) GetEmailRecipients() []string { +func (x *ProjectInvite) GetRestrictResources() bool { if x != nil { - return x.EmailRecipients + return x.RestrictResources } - return nil + return false } -func (x *ReportOptions) GetSlackUsers() []string { +func (x *ProjectInvite) GetResources() []*ResourceName { if x != nil { - return x.SlackUsers + return x.Resources } return nil } -func (x *ReportOptions) GetSlackChannels() []string { - if x != nil { - return x.SlackChannels - } - return nil +type WhitelistedDomain struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"` + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` } -func (x *ReportOptions) GetSlackWebhooks() []string { - if x != nil { - return x.SlackWebhooks +func (x *WhitelistedDomain) Reset() { + *x = WhitelistedDomain{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[358] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *ReportOptions) GetWebOpenPath() string { - if x != nil { - return x.WebOpenPath - } - return "" +func (x *WhitelistedDomain) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ReportOptions) GetWebOpenState() string { - if x != nil { - return x.WebOpenState +func (*WhitelistedDomain) ProtoMessage() {} + +func (x *WhitelistedDomain) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[358] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *ReportOptions) GetExplore() string { - if x != nil { - return x.Explore - } - return "" +// Deprecated: Use WhitelistedDomain.ProtoReflect.Descriptor instead. +func (*WhitelistedDomain) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{358} } -func (x *ReportOptions) GetCanvas() string { +func (x *WhitelistedDomain) GetDomain() string { if x != nil { - return x.Canvas + return x.Domain } return "" } -func (x *ReportOptions) GetWebOpenMode() string { +func (x *WhitelistedDomain) GetRole() string { if x != nil { - return x.WebOpenMode + return x.Role } return "" } -type AlertOptions struct { +type Bookmark struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - RefreshCron string `protobuf:"bytes,16,opt,name=refresh_cron,json=refreshCron,proto3" json:"refresh_cron,omitempty"` - RefreshTimeZone string `protobuf:"bytes,17,opt,name=refresh_time_zone,json=refreshTimeZone,proto3" json:"refresh_time_zone,omitempty"` - IntervalDuration string `protobuf:"bytes,2,opt,name=interval_duration,json=intervalDuration,proto3" json:"interval_duration,omitempty"` - Resolver string `protobuf:"bytes,13,opt,name=resolver,proto3" json:"resolver,omitempty"` - ResolverProperties *structpb.Struct `protobuf:"bytes,14,opt,name=resolver_properties,json=resolverProperties,proto3" json:"resolver_properties,omitempty"` - // DEPRECATED: Use resolver and resolver_properties instead. - QueryName string `protobuf:"bytes,3,opt,name=query_name,json=queryName,proto3" json:"query_name,omitempty"` - // DEPRECATED: Use resolver and resolver_properties instead. - QueryArgsJson string `protobuf:"bytes,4,opt,name=query_args_json,json=queryArgsJson,proto3" json:"query_args_json,omitempty"` - MetricsViewName string `protobuf:"bytes,5,opt,name=metrics_view_name,json=metricsViewName,proto3" json:"metrics_view_name,omitempty"` - Renotify bool `protobuf:"varint,6,opt,name=renotify,proto3" json:"renotify,omitempty"` - RenotifyAfterSeconds uint32 `protobuf:"varint,7,opt,name=renotify_after_seconds,json=renotifyAfterSeconds,proto3" json:"renotify_after_seconds,omitempty"` - EmailRecipients []string `protobuf:"bytes,8,rep,name=email_recipients,json=emailRecipients,proto3" json:"email_recipients,omitempty"` - SlackUsers []string `protobuf:"bytes,9,rep,name=slack_users,json=slackUsers,proto3" json:"slack_users,omitempty"` - SlackChannels []string `protobuf:"bytes,10,rep,name=slack_channels,json=slackChannels,proto3" json:"slack_channels,omitempty"` - SlackWebhooks []string `protobuf:"bytes,11,rep,name=slack_webhooks,json=slackWebhooks,proto3" json:"slack_webhooks,omitempty"` - WebOpenPath string `protobuf:"bytes,15,opt,name=web_open_path,json=webOpenPath,proto3" json:"web_open_path,omitempty"` // Annotation for the subpath of /org/project to open for the report. - WebOpenState string `protobuf:"bytes,12,opt,name=web_open_state,json=webOpenState,proto3" json:"web_open_state,omitempty"` // Annotation for the base64-encoded UI state to open for the report. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Description string `protobuf:"bytes,9,opt,name=description,proto3" json:"description,omitempty"` + Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + UrlSearch string `protobuf:"bytes,13,opt,name=url_search,json=urlSearch,proto3" json:"url_search,omitempty"` + ResourceKind string `protobuf:"bytes,10,opt,name=resource_kind,json=resourceKind,proto3" json:"resource_kind,omitempty"` + ResourceName string `protobuf:"bytes,4,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` + ProjectId string `protobuf:"bytes,5,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + UserId string `protobuf:"bytes,6,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + Default bool `protobuf:"varint,11,opt,name=default,proto3" json:"default,omitempty"` + Shared bool `protobuf:"varint,12,opt,name=shared,proto3" json:"shared,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *AlertOptions) Reset() { - *x = AlertOptions{} +func (x *Bookmark) Reset() { + *x = Bookmark{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[352] + mi := &file_rill_admin_v1_api_proto_msgTypes[359] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AlertOptions) String() string { +func (x *Bookmark) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AlertOptions) ProtoMessage() {} +func (*Bookmark) ProtoMessage() {} -func (x *AlertOptions) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[352] +func (x *Bookmark) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[359] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22631,163 +22745,208 @@ func (x *AlertOptions) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AlertOptions.ProtoReflect.Descriptor instead. -func (*AlertOptions) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{352} +// Deprecated: Use Bookmark.ProtoReflect.Descriptor instead. +func (*Bookmark) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{359} } -func (x *AlertOptions) GetDisplayName() string { +func (x *Bookmark) GetId() string { if x != nil { - return x.DisplayName + return x.Id } return "" } -func (x *AlertOptions) GetRefreshCron() string { +func (x *Bookmark) GetDisplayName() string { if x != nil { - return x.RefreshCron + return x.DisplayName } return "" } -func (x *AlertOptions) GetRefreshTimeZone() string { +func (x *Bookmark) GetDescription() string { if x != nil { - return x.RefreshTimeZone + return x.Description } return "" } -func (x *AlertOptions) GetIntervalDuration() string { +func (x *Bookmark) GetData() []byte { if x != nil { - return x.IntervalDuration + return x.Data } - return "" + return nil } -func (x *AlertOptions) GetResolver() string { +func (x *Bookmark) GetUrlSearch() string { if x != nil { - return x.Resolver + return x.UrlSearch } return "" } -func (x *AlertOptions) GetResolverProperties() *structpb.Struct { +func (x *Bookmark) GetResourceKind() string { if x != nil { - return x.ResolverProperties + return x.ResourceKind } - return nil + return "" } -func (x *AlertOptions) GetQueryName() string { +func (x *Bookmark) GetResourceName() string { if x != nil { - return x.QueryName + return x.ResourceName } return "" } -func (x *AlertOptions) GetQueryArgsJson() string { +func (x *Bookmark) GetProjectId() string { if x != nil { - return x.QueryArgsJson + return x.ProjectId } return "" } -func (x *AlertOptions) GetMetricsViewName() string { +func (x *Bookmark) GetUserId() string { if x != nil { - return x.MetricsViewName + return x.UserId } return "" } -func (x *AlertOptions) GetRenotify() bool { +func (x *Bookmark) GetDefault() bool { if x != nil { - return x.Renotify + return x.Default } return false } -func (x *AlertOptions) GetRenotifyAfterSeconds() uint32 { +func (x *Bookmark) GetShared() bool { if x != nil { - return x.RenotifyAfterSeconds + return x.Shared } - return 0 + return false } -func (x *AlertOptions) GetEmailRecipients() []string { +func (x *Bookmark) GetCreatedOn() *timestamppb.Timestamp { if x != nil { - return x.EmailRecipients + return x.CreatedOn } return nil } -func (x *AlertOptions) GetSlackUsers() []string { +func (x *Bookmark) GetUpdatedOn() *timestamppb.Timestamp { if x != nil { - return x.SlackUsers + return x.UpdatedOn } return nil } -func (x *AlertOptions) GetSlackChannels() []string { - if x != nil { - return x.SlackChannels - } - return nil +type ServiceToken struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Prefix string `protobuf:"bytes,4,opt,name=prefix,proto3" json:"prefix,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + ExpiresOn *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=expires_on,json=expiresOn,proto3" json:"expires_on,omitempty"` } -func (x *AlertOptions) GetSlackWebhooks() []string { - if x != nil { - return x.SlackWebhooks - } - return nil +func (x *ServiceToken) Reset() { + *x = ServiceToken{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[360] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (x *AlertOptions) GetWebOpenPath() string { +func (x *ServiceToken) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServiceToken) ProtoMessage() {} + +func (x *ServiceToken) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[360] + 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 ServiceToken.ProtoReflect.Descriptor instead. +func (*ServiceToken) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{360} +} + +func (x *ServiceToken) GetId() string { if x != nil { - return x.WebOpenPath + return x.Id } return "" } -func (x *AlertOptions) GetWebOpenState() string { +func (x *ServiceToken) GetPrefix() string { if x != nil { - return x.WebOpenState + return x.Prefix } return "" } -type BillingPlan struct { +func (x *ServiceToken) GetCreatedOn() *timestamppb.Timestamp { + if x != nil { + return x.CreatedOn + } + return nil +} + +func (x *ServiceToken) GetExpiresOn() *timestamppb.Timestamp { + if x != nil { + return x.ExpiresOn + } + return nil +} + +type UserAuthToken struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - PlanType BillingPlanType `protobuf:"varint,9,opt,name=plan_type,json=planType,proto3,enum=rill.admin.v1.BillingPlanType" json:"plan_type,omitempty"` - DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - TrialPeriodDays uint32 `protobuf:"varint,5,opt,name=trial_period_days,json=trialPeriodDays,proto3" json:"trial_period_days,omitempty"` - Default bool `protobuf:"varint,6,opt,name=default,proto3" json:"default,omitempty"` - Quotas *Quotas `protobuf:"bytes,7,opt,name=quotas,proto3" json:"quotas,omitempty"` - Public bool `protobuf:"varint,8,opt,name=public,proto3" json:"public,omitempty"` // TODO expose pricing information + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + AuthClientId string `protobuf:"bytes,3,opt,name=auth_client_id,json=authClientId,proto3" json:"auth_client_id,omitempty"` + AuthClientDisplayName string `protobuf:"bytes,4,opt,name=auth_client_display_name,json=authClientDisplayName,proto3" json:"auth_client_display_name,omitempty"` + RepresentingUserId string `protobuf:"bytes,5,opt,name=representing_user_id,json=representingUserId,proto3" json:"representing_user_id,omitempty"` + Prefix string `protobuf:"bytes,9,opt,name=prefix,proto3" json:"prefix,omitempty"` + Attributes *structpb.Struct `protobuf:"bytes,10,opt,name=attributes,proto3" json:"attributes,omitempty"` + Refresh bool `protobuf:"varint,11,opt,name=refresh,proto3" json:"refresh,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + ExpiresOn *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=expires_on,json=expiresOn,proto3" json:"expires_on,omitempty"` + UsedOn *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=used_on,json=usedOn,proto3" json:"used_on,omitempty"` } -func (x *BillingPlan) Reset() { - *x = BillingPlan{} +func (x *UserAuthToken) Reset() { + *x = UserAuthToken{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[353] + mi := &file_rill_admin_v1_api_proto_msgTypes[361] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BillingPlan) String() string { +func (x *UserAuthToken) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BillingPlan) ProtoMessage() {} +func (*UserAuthToken) ProtoMessage() {} -func (x *BillingPlan) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[353] +func (x *UserAuthToken) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[361] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22798,104 +22957,131 @@ func (x *BillingPlan) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BillingPlan.ProtoReflect.Descriptor instead. -func (*BillingPlan) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{353} +// Deprecated: Use UserAuthToken.ProtoReflect.Descriptor instead. +func (*UserAuthToken) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{361} } -func (x *BillingPlan) GetId() string { +func (x *UserAuthToken) GetId() string { if x != nil { return x.Id } return "" } -func (x *BillingPlan) GetName() string { +func (x *UserAuthToken) GetDisplayName() string { if x != nil { - return x.Name + return x.DisplayName } return "" } -func (x *BillingPlan) GetPlanType() BillingPlanType { +func (x *UserAuthToken) GetAuthClientId() string { if x != nil { - return x.PlanType + return x.AuthClientId } - return BillingPlanType_BILLING_PLAN_TYPE_UNSPECIFIED + return "" } -func (x *BillingPlan) GetDisplayName() string { +func (x *UserAuthToken) GetAuthClientDisplayName() string { if x != nil { - return x.DisplayName + return x.AuthClientDisplayName } return "" } -func (x *BillingPlan) GetDescription() string { +func (x *UserAuthToken) GetRepresentingUserId() string { if x != nil { - return x.Description + return x.RepresentingUserId } return "" } -func (x *BillingPlan) GetTrialPeriodDays() uint32 { +func (x *UserAuthToken) GetPrefix() string { if x != nil { - return x.TrialPeriodDays + return x.Prefix } - return 0 + return "" } -func (x *BillingPlan) GetDefault() bool { +func (x *UserAuthToken) GetAttributes() *structpb.Struct { if x != nil { - return x.Default + return x.Attributes + } + return nil +} + +func (x *UserAuthToken) GetRefresh() bool { + if x != nil { + return x.Refresh } return false } -func (x *BillingPlan) GetQuotas() *Quotas { +func (x *UserAuthToken) GetCreatedOn() *timestamppb.Timestamp { if x != nil { - return x.Quotas + return x.CreatedOn } return nil } -func (x *BillingPlan) GetPublic() bool { +func (x *UserAuthToken) GetExpiresOn() *timestamppb.Timestamp { if x != nil { - return x.Public + return x.ExpiresOn } - return false + return nil } -type Quotas struct { +func (x *UserAuthToken) GetUsedOn() *timestamppb.Timestamp { + if x != nil { + return x.UsedOn + } + return nil +} + +type MagicAuthToken struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Projects string `protobuf:"bytes,1,opt,name=projects,proto3" json:"projects,omitempty"` - Deployments string `protobuf:"bytes,2,opt,name=deployments,proto3" json:"deployments,omitempty"` - SlotsTotal string `protobuf:"bytes,3,opt,name=slots_total,json=slotsTotal,proto3" json:"slots_total,omitempty"` - SlotsPerDeployment string `protobuf:"bytes,4,opt,name=slots_per_deployment,json=slotsPerDeployment,proto3" json:"slots_per_deployment,omitempty"` - OutstandingInvites string `protobuf:"bytes,5,opt,name=outstanding_invites,json=outstandingInvites,proto3" json:"outstanding_invites,omitempty"` - StorageLimitBytesPerDeployment string `protobuf:"bytes,6,opt,name=storage_limit_bytes_per_deployment,json=storageLimitBytesPerDeployment,proto3" json:"storage_limit_bytes_per_deployment,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + Url string `protobuf:"bytes,13,opt,name=url,proto3" json:"url,omitempty"` + Token string `protobuf:"bytes,14,opt,name=token,proto3" json:"token,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + ExpiresOn *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_on,json=expiresOn,proto3" json:"expires_on,omitempty"` + UsedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=used_on,json=usedOn,proto3" json:"used_on,omitempty"` + CreatedByUserId string `protobuf:"bytes,6,opt,name=created_by_user_id,json=createdByUserId,proto3" json:"created_by_user_id,omitempty"` + CreatedByUserEmail string `protobuf:"bytes,7,opt,name=created_by_user_email,json=createdByUserEmail,proto3" json:"created_by_user_email,omitempty"` + Attributes *structpb.Struct `protobuf:"bytes,8,opt,name=attributes,proto3" json:"attributes,omitempty"` + Resources []*ResourceName `protobuf:"bytes,17,rep,name=resources,proto3" json:"resources,omitempty"` + // Deprecated: Marked as deprecated in rill/admin/v1/api.proto. + ResourceType string `protobuf:"bytes,15,opt,name=resource_type,json=resourceType,proto3" json:"resource_type,omitempty"` + // Deprecated: Marked as deprecated in rill/admin/v1/api.proto. + ResourceName string `protobuf:"bytes,9,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` + MetricsViewFilters map[string]*v1.Expression `protobuf:"bytes,18,rep,name=metrics_view_filters,json=metricsViewFilters,proto3" json:"metrics_view_filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Fields []string `protobuf:"bytes,11,rep,name=fields,proto3" json:"fields,omitempty"` + State string `protobuf:"bytes,12,opt,name=state,proto3" json:"state,omitempty"` + DisplayName string `protobuf:"bytes,16,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` } -func (x *Quotas) Reset() { - *x = Quotas{} +func (x *MagicAuthToken) Reset() { + *x = MagicAuthToken{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[354] + mi := &file_rill_admin_v1_api_proto_msgTypes[362] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Quotas) String() string { +func (x *MagicAuthToken) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Quotas) ProtoMessage() {} +func (*MagicAuthToken) ProtoMessage() {} -func (x *Quotas) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[354] +func (x *MagicAuthToken) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[362] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22906,173 +23092,160 @@ func (x *Quotas) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Quotas.ProtoReflect.Descriptor instead. -func (*Quotas) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{354} +// Deprecated: Use MagicAuthToken.ProtoReflect.Descriptor instead. +func (*MagicAuthToken) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{362} } -func (x *Quotas) GetProjects() string { +func (x *MagicAuthToken) GetId() string { if x != nil { - return x.Projects + return x.Id } return "" } -func (x *Quotas) GetDeployments() string { +func (x *MagicAuthToken) GetProjectId() string { if x != nil { - return x.Deployments + return x.ProjectId } return "" } -func (x *Quotas) GetSlotsTotal() string { +func (x *MagicAuthToken) GetUrl() string { if x != nil { - return x.SlotsTotal + return x.Url } return "" } -func (x *Quotas) GetSlotsPerDeployment() string { +func (x *MagicAuthToken) GetToken() string { if x != nil { - return x.SlotsPerDeployment + return x.Token } return "" } -func (x *Quotas) GetOutstandingInvites() string { +func (x *MagicAuthToken) GetCreatedOn() *timestamppb.Timestamp { if x != nil { - return x.OutstandingInvites + return x.CreatedOn } - return "" + return nil } -func (x *Quotas) GetStorageLimitBytesPerDeployment() string { +func (x *MagicAuthToken) GetExpiresOn() *timestamppb.Timestamp { if x != nil { - return x.StorageLimitBytesPerDeployment + return x.ExpiresOn } - return "" + return nil } -type Usergroup struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *MagicAuthToken) GetUsedOn() *timestamppb.Timestamp { + if x != nil { + return x.UsedOn + } + return nil +} - GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` - GroupName string `protobuf:"bytes,2,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"` - GroupDescription string `protobuf:"bytes,3,opt,name=group_description,json=groupDescription,proto3" json:"group_description,omitempty"` - Managed bool `protobuf:"varint,6,opt,name=managed,proto3" json:"managed,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` +func (x *MagicAuthToken) GetCreatedByUserId() string { + if x != nil { + return x.CreatedByUserId + } + return "" } -func (x *Usergroup) Reset() { - *x = Usergroup{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[355] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *MagicAuthToken) GetCreatedByUserEmail() string { + if x != nil { + return x.CreatedByUserEmail } + return "" } -func (x *Usergroup) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Usergroup) ProtoMessage() {} - -func (x *Usergroup) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[355] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *MagicAuthToken) GetAttributes() *structpb.Struct { + if x != nil { + return x.Attributes } - return mi.MessageOf(x) + return nil } -// Deprecated: Use Usergroup.ProtoReflect.Descriptor instead. -func (*Usergroup) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{355} +func (x *MagicAuthToken) GetResources() []*ResourceName { + if x != nil { + return x.Resources + } + return nil } -func (x *Usergroup) GetGroupId() string { +// Deprecated: Marked as deprecated in rill/admin/v1/api.proto. +func (x *MagicAuthToken) GetResourceType() string { if x != nil { - return x.GroupId + return x.ResourceType } return "" } -func (x *Usergroup) GetGroupName() string { +// Deprecated: Marked as deprecated in rill/admin/v1/api.proto. +func (x *MagicAuthToken) GetResourceName() string { if x != nil { - return x.GroupName + return x.ResourceName } return "" } -func (x *Usergroup) GetGroupDescription() string { +func (x *MagicAuthToken) GetMetricsViewFilters() map[string]*v1.Expression { if x != nil { - return x.GroupDescription + return x.MetricsViewFilters } - return "" + return nil } -func (x *Usergroup) GetManaged() bool { +func (x *MagicAuthToken) GetFields() []string { if x != nil { - return x.Managed + return x.Fields } - return false + return nil } -func (x *Usergroup) GetCreatedOn() *timestamppb.Timestamp { +func (x *MagicAuthToken) GetState() string { if x != nil { - return x.CreatedOn + return x.State } - return nil + return "" } -func (x *Usergroup) GetUpdatedOn() *timestamppb.Timestamp { +func (x *MagicAuthToken) GetDisplayName() string { if x != nil { - return x.UpdatedOn + return x.DisplayName } - return nil + return "" } -type MemberUsergroup struct { +type VirtualFile struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` - GroupName string `protobuf:"bytes,2,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"` - GroupManaged bool `protobuf:"varint,6,opt,name=group_managed,json=groupManaged,proto3" json:"group_managed,omitempty"` - RoleName string `protobuf:"bytes,3,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` - UsersCount uint32 `protobuf:"varint,7,opt,name=users_count,json=usersCount,proto3" json:"users_count,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` - RestrictResources bool `protobuf:"varint,8,opt,name=restrict_resources,json=restrictResources,proto3" json:"restrict_resources,omitempty"` - Resources []*ResourceName `protobuf:"bytes,9,rep,name=resources,proto3" json:"resources,omitempty"` + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + Deleted bool `protobuf:"varint,3,opt,name=deleted,proto3" json:"deleted,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *MemberUsergroup) Reset() { - *x = MemberUsergroup{} +func (x *VirtualFile) Reset() { + *x = VirtualFile{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[356] + mi := &file_rill_admin_v1_api_proto_msgTypes[363] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MemberUsergroup) String() string { +func (x *VirtualFile) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MemberUsergroup) ProtoMessage() {} +func (*VirtualFile) ProtoMessage() {} -func (x *MemberUsergroup) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[356] +func (x *VirtualFile) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[363] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23083,104 +23256,89 @@ func (x *MemberUsergroup) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MemberUsergroup.ProtoReflect.Descriptor instead. -func (*MemberUsergroup) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{356} -} - -func (x *MemberUsergroup) GetGroupId() string { - if x != nil { - return x.GroupId - } - return "" -} - -func (x *MemberUsergroup) GetGroupName() string { - if x != nil { - return x.GroupName - } - return "" -} - -func (x *MemberUsergroup) GetGroupManaged() bool { - if x != nil { - return x.GroupManaged - } - return false +// Deprecated: Use VirtualFile.ProtoReflect.Descriptor instead. +func (*VirtualFile) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{363} } -func (x *MemberUsergroup) GetRoleName() string { +func (x *VirtualFile) GetPath() string { if x != nil { - return x.RoleName + return x.Path } return "" } -func (x *MemberUsergroup) GetUsersCount() uint32 { - if x != nil { - return x.UsersCount - } - return 0 -} - -func (x *MemberUsergroup) GetCreatedOn() *timestamppb.Timestamp { - if x != nil { - return x.CreatedOn - } - return nil -} - -func (x *MemberUsergroup) GetUpdatedOn() *timestamppb.Timestamp { +func (x *VirtualFile) GetData() []byte { if x != nil { - return x.UpdatedOn + return x.Data } return nil } -func (x *MemberUsergroup) GetRestrictResources() bool { +func (x *VirtualFile) GetDeleted() bool { if x != nil { - return x.RestrictResources + return x.Deleted } return false } -func (x *MemberUsergroup) GetResources() []*ResourceName { +func (x *VirtualFile) GetUpdatedOn() *timestamppb.Timestamp { if x != nil { - return x.Resources + return x.UpdatedOn } return nil } -type BillingIssue struct { +type ReportOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` - Type BillingIssueType `protobuf:"varint,2,opt,name=type,proto3,enum=rill.admin.v1.BillingIssueType" json:"type,omitempty"` - Level BillingIssueLevel `protobuf:"varint,3,opt,name=level,proto3,enum=rill.admin.v1.BillingIssueLevel" json:"level,omitempty"` - Metadata *BillingIssueMetadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` - EventTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=event_time,json=eventTime,proto3" json:"event_time,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + RefreshCron string `protobuf:"bytes,2,opt,name=refresh_cron,json=refreshCron,proto3" json:"refresh_cron,omitempty"` + RefreshTimeZone string `protobuf:"bytes,9,opt,name=refresh_time_zone,json=refreshTimeZone,proto3" json:"refresh_time_zone,omitempty"` + IntervalDuration string `protobuf:"bytes,13,opt,name=interval_duration,json=intervalDuration,proto3" json:"interval_duration,omitempty"` + Resolver string `protobuf:"bytes,21,opt,name=resolver,proto3" json:"resolver,omitempty"` + ResolverProperties *structpb.Struct `protobuf:"bytes,22,opt,name=resolver_properties,json=resolverProperties,proto3" json:"resolver_properties,omitempty"` + // Deprecated: Marked as deprecated in rill/admin/v1/api.proto. + QueryName string `protobuf:"bytes,3,opt,name=query_name,json=queryName,proto3" json:"query_name,omitempty"` // use resolver/resolver_properties instead + // Deprecated: Marked as deprecated in rill/admin/v1/api.proto. + QueryArgsJson string `protobuf:"bytes,4,opt,name=query_args_json,json=queryArgsJson,proto3" json:"query_args_json,omitempty"` // use resolver/resolver_properties instead + ExportLimit uint64 `protobuf:"varint,5,opt,name=export_limit,json=exportLimit,proto3" json:"export_limit,omitempty"` + ExportFormat v1.ExportFormat `protobuf:"varint,6,opt,name=export_format,json=exportFormat,proto3,enum=rill.runtime.v1.ExportFormat" json:"export_format,omitempty"` + ExportIncludeHeader bool `protobuf:"varint,20,opt,name=export_include_header,json=exportIncludeHeader,proto3" json:"export_include_header,omitempty"` + EmailRecipients []string `protobuf:"bytes,8,rep,name=email_recipients,json=emailRecipients,proto3" json:"email_recipients,omitempty"` + SlackUsers []string `protobuf:"bytes,10,rep,name=slack_users,json=slackUsers,proto3" json:"slack_users,omitempty"` + SlackChannels []string `protobuf:"bytes,11,rep,name=slack_channels,json=slackChannels,proto3" json:"slack_channels,omitempty"` + SlackWebhooks []string `protobuf:"bytes,12,rep,name=slack_webhooks,json=slackWebhooks,proto3" json:"slack_webhooks,omitempty"` + WebOpenPath string `protobuf:"bytes,15,opt,name=web_open_path,json=webOpenPath,proto3" json:"web_open_path,omitempty"` // Annotation for the subpath of /org/project to open for the report. + WebOpenState string `protobuf:"bytes,14,opt,name=web_open_state,json=webOpenState,proto3" json:"web_open_state,omitempty"` // Annotation for the base64-encoded UI state to open for the report. + Explore string `protobuf:"bytes,16,opt,name=explore,proto3" json:"explore,omitempty"` // either canvas or explore should be set + Canvas string `protobuf:"bytes,17,opt,name=canvas,proto3" json:"canvas,omitempty"` + // web_open_mode is used to determine how to create or disable open link for the report + // - send "recipient" for reports that should be opened with recipient's permissions - requires login + // - send "creator" for reports that should be opened with creators permissions but with locked filters - no login required + // - send "none" for reports that should not be opened or older reports which do not have any web_open_path + WebOpenMode string `protobuf:"bytes,18,opt,name=web_open_mode,json=webOpenMode,proto3" json:"web_open_mode,omitempty"` } -func (x *BillingIssue) Reset() { - *x = BillingIssue{} +func (x *ReportOptions) Reset() { + *x = ReportOptions{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[357] + mi := &file_rill_admin_v1_api_proto_msgTypes[364] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BillingIssue) String() string { +func (x *ReportOptions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BillingIssue) ProtoMessage() {} +func (*ReportOptions) ProtoMessage() {} -func (x *BillingIssue) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[357] +func (x *ReportOptions) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[364] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23191,258 +23349,196 @@ func (x *BillingIssue) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BillingIssue.ProtoReflect.Descriptor instead. -func (*BillingIssue) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{357} +// Deprecated: Use ReportOptions.ProtoReflect.Descriptor instead. +func (*ReportOptions) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{364} } -func (x *BillingIssue) GetOrg() string { +func (x *ReportOptions) GetDisplayName() string { if x != nil { - return x.Org + return x.DisplayName } return "" } -func (x *BillingIssue) GetType() BillingIssueType { +func (x *ReportOptions) GetRefreshCron() string { if x != nil { - return x.Type + return x.RefreshCron } - return BillingIssueType_BILLING_ISSUE_TYPE_UNSPECIFIED + return "" } -func (x *BillingIssue) GetLevel() BillingIssueLevel { +func (x *ReportOptions) GetRefreshTimeZone() string { if x != nil { - return x.Level + return x.RefreshTimeZone } - return BillingIssueLevel_BILLING_ISSUE_LEVEL_UNSPECIFIED + return "" } -func (x *BillingIssue) GetMetadata() *BillingIssueMetadata { +func (x *ReportOptions) GetIntervalDuration() string { if x != nil { - return x.Metadata + return x.IntervalDuration } - return nil + return "" } -func (x *BillingIssue) GetEventTime() *timestamppb.Timestamp { +func (x *ReportOptions) GetResolver() string { if x != nil { - return x.EventTime + return x.Resolver } - return nil + return "" } -func (x *BillingIssue) GetCreatedOn() *timestamppb.Timestamp { +func (x *ReportOptions) GetResolverProperties() *structpb.Struct { if x != nil { - return x.CreatedOn + return x.ResolverProperties } return nil } -type BillingIssueMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Metadata: - // - // *BillingIssueMetadata_OnTrial - // *BillingIssueMetadata_TrialEnded - // *BillingIssueMetadata_NoPaymentMethod - // *BillingIssueMetadata_NoBillableAddress - // *BillingIssueMetadata_PaymentFailed - // *BillingIssueMetadata_SubscriptionCancelled - // *BillingIssueMetadata_NeverSubscribed - // *BillingIssueMetadata_OnCreditTrial - // *BillingIssueMetadata_TrialCreditsDepleted - Metadata isBillingIssueMetadata_Metadata `protobuf_oneof:"metadata"` +// Deprecated: Marked as deprecated in rill/admin/v1/api.proto. +func (x *ReportOptions) GetQueryName() string { + if x != nil { + return x.QueryName + } + return "" } -func (x *BillingIssueMetadata) Reset() { - *x = BillingIssueMetadata{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[358] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Deprecated: Marked as deprecated in rill/admin/v1/api.proto. +func (x *ReportOptions) GetQueryArgsJson() string { + if x != nil { + return x.QueryArgsJson } + return "" } -func (x *BillingIssueMetadata) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BillingIssueMetadata) ProtoMessage() {} - -func (x *BillingIssueMetadata) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[358] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ReportOptions) GetExportLimit() uint64 { + if x != nil { + return x.ExportLimit } - return mi.MessageOf(x) -} - -// Deprecated: Use BillingIssueMetadata.ProtoReflect.Descriptor instead. -func (*BillingIssueMetadata) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{358} + return 0 } -func (m *BillingIssueMetadata) GetMetadata() isBillingIssueMetadata_Metadata { - if m != nil { - return m.Metadata +func (x *ReportOptions) GetExportFormat() v1.ExportFormat { + if x != nil { + return x.ExportFormat } - return nil + return v1.ExportFormat(0) } -func (x *BillingIssueMetadata) GetOnTrial() *BillingIssueMetadataOnTrial { - if x, ok := x.GetMetadata().(*BillingIssueMetadata_OnTrial); ok { - return x.OnTrial +func (x *ReportOptions) GetExportIncludeHeader() bool { + if x != nil { + return x.ExportIncludeHeader } - return nil + return false } -func (x *BillingIssueMetadata) GetTrialEnded() *BillingIssueMetadataTrialEnded { - if x, ok := x.GetMetadata().(*BillingIssueMetadata_TrialEnded); ok { - return x.TrialEnded +func (x *ReportOptions) GetEmailRecipients() []string { + if x != nil { + return x.EmailRecipients } return nil } -func (x *BillingIssueMetadata) GetNoPaymentMethod() *BillingIssueMetadataNoPaymentMethod { - if x, ok := x.GetMetadata().(*BillingIssueMetadata_NoPaymentMethod); ok { - return x.NoPaymentMethod +func (x *ReportOptions) GetSlackUsers() []string { + if x != nil { + return x.SlackUsers } return nil } -func (x *BillingIssueMetadata) GetNoBillableAddress() *BillingIssueMetadataNoBillableAddress { - if x, ok := x.GetMetadata().(*BillingIssueMetadata_NoBillableAddress); ok { - return x.NoBillableAddress +func (x *ReportOptions) GetSlackChannels() []string { + if x != nil { + return x.SlackChannels } return nil } -func (x *BillingIssueMetadata) GetPaymentFailed() *BillingIssueMetadataPaymentFailed { - if x, ok := x.GetMetadata().(*BillingIssueMetadata_PaymentFailed); ok { - return x.PaymentFailed +func (x *ReportOptions) GetSlackWebhooks() []string { + if x != nil { + return x.SlackWebhooks } return nil } -func (x *BillingIssueMetadata) GetSubscriptionCancelled() *BillingIssueMetadataSubscriptionCancelled { - if x, ok := x.GetMetadata().(*BillingIssueMetadata_SubscriptionCancelled); ok { - return x.SubscriptionCancelled +func (x *ReportOptions) GetWebOpenPath() string { + if x != nil { + return x.WebOpenPath } - return nil + return "" } -func (x *BillingIssueMetadata) GetNeverSubscribed() *BillingIssueMetadataNeverSubscribed { - if x, ok := x.GetMetadata().(*BillingIssueMetadata_NeverSubscribed); ok { - return x.NeverSubscribed +func (x *ReportOptions) GetWebOpenState() string { + if x != nil { + return x.WebOpenState } - return nil + return "" } -func (x *BillingIssueMetadata) GetOnCreditTrial() *BillingIssueMetadataOnCreditTrial { - if x, ok := x.GetMetadata().(*BillingIssueMetadata_OnCreditTrial); ok { - return x.OnCreditTrial +func (x *ReportOptions) GetExplore() string { + if x != nil { + return x.Explore } - return nil + return "" } -func (x *BillingIssueMetadata) GetTrialCreditsDepleted() *BillingIssueMetadataTrialCreditsDepleted { - if x, ok := x.GetMetadata().(*BillingIssueMetadata_TrialCreditsDepleted); ok { - return x.TrialCreditsDepleted +func (x *ReportOptions) GetCanvas() string { + if x != nil { + return x.Canvas } - return nil -} - -type isBillingIssueMetadata_Metadata interface { - isBillingIssueMetadata_Metadata() -} - -type BillingIssueMetadata_OnTrial struct { - OnTrial *BillingIssueMetadataOnTrial `protobuf:"bytes,1,opt,name=on_trial,json=onTrial,proto3,oneof"` -} - -type BillingIssueMetadata_TrialEnded struct { - TrialEnded *BillingIssueMetadataTrialEnded `protobuf:"bytes,2,opt,name=trial_ended,json=trialEnded,proto3,oneof"` -} - -type BillingIssueMetadata_NoPaymentMethod struct { - NoPaymentMethod *BillingIssueMetadataNoPaymentMethod `protobuf:"bytes,3,opt,name=no_payment_method,json=noPaymentMethod,proto3,oneof"` -} - -type BillingIssueMetadata_NoBillableAddress struct { - NoBillableAddress *BillingIssueMetadataNoBillableAddress `protobuf:"bytes,4,opt,name=no_billable_address,json=noBillableAddress,proto3,oneof"` -} - -type BillingIssueMetadata_PaymentFailed struct { - PaymentFailed *BillingIssueMetadataPaymentFailed `protobuf:"bytes,5,opt,name=payment_failed,json=paymentFailed,proto3,oneof"` -} - -type BillingIssueMetadata_SubscriptionCancelled struct { - SubscriptionCancelled *BillingIssueMetadataSubscriptionCancelled `protobuf:"bytes,6,opt,name=subscription_cancelled,json=subscriptionCancelled,proto3,oneof"` -} - -type BillingIssueMetadata_NeverSubscribed struct { - NeverSubscribed *BillingIssueMetadataNeverSubscribed `protobuf:"bytes,7,opt,name=never_subscribed,json=neverSubscribed,proto3,oneof"` -} - -type BillingIssueMetadata_OnCreditTrial struct { - OnCreditTrial *BillingIssueMetadataOnCreditTrial `protobuf:"bytes,8,opt,name=on_credit_trial,json=onCreditTrial,proto3,oneof"` + return "" } -type BillingIssueMetadata_TrialCreditsDepleted struct { - TrialCreditsDepleted *BillingIssueMetadataTrialCreditsDepleted `protobuf:"bytes,9,opt,name=trial_credits_depleted,json=trialCreditsDepleted,proto3,oneof"` +func (x *ReportOptions) GetWebOpenMode() string { + if x != nil { + return x.WebOpenMode + } + return "" } -func (*BillingIssueMetadata_OnTrial) isBillingIssueMetadata_Metadata() {} - -func (*BillingIssueMetadata_TrialEnded) isBillingIssueMetadata_Metadata() {} - -func (*BillingIssueMetadata_NoPaymentMethod) isBillingIssueMetadata_Metadata() {} - -func (*BillingIssueMetadata_NoBillableAddress) isBillingIssueMetadata_Metadata() {} - -func (*BillingIssueMetadata_PaymentFailed) isBillingIssueMetadata_Metadata() {} - -func (*BillingIssueMetadata_SubscriptionCancelled) isBillingIssueMetadata_Metadata() {} - -func (*BillingIssueMetadata_NeverSubscribed) isBillingIssueMetadata_Metadata() {} - -func (*BillingIssueMetadata_OnCreditTrial) isBillingIssueMetadata_Metadata() {} - -func (*BillingIssueMetadata_TrialCreditsDepleted) isBillingIssueMetadata_Metadata() {} - -type BillingIssueMetadataOnTrial struct { +type AlertOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EndDate *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` - GracePeriodEndDate *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=grace_period_end_date,json=gracePeriodEndDate,proto3" json:"grace_period_end_date,omitempty"` + DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + RefreshCron string `protobuf:"bytes,16,opt,name=refresh_cron,json=refreshCron,proto3" json:"refresh_cron,omitempty"` + RefreshTimeZone string `protobuf:"bytes,17,opt,name=refresh_time_zone,json=refreshTimeZone,proto3" json:"refresh_time_zone,omitempty"` + IntervalDuration string `protobuf:"bytes,2,opt,name=interval_duration,json=intervalDuration,proto3" json:"interval_duration,omitempty"` + Resolver string `protobuf:"bytes,13,opt,name=resolver,proto3" json:"resolver,omitempty"` + ResolverProperties *structpb.Struct `protobuf:"bytes,14,opt,name=resolver_properties,json=resolverProperties,proto3" json:"resolver_properties,omitempty"` + // DEPRECATED: Use resolver and resolver_properties instead. + QueryName string `protobuf:"bytes,3,opt,name=query_name,json=queryName,proto3" json:"query_name,omitempty"` + // DEPRECATED: Use resolver and resolver_properties instead. + QueryArgsJson string `protobuf:"bytes,4,opt,name=query_args_json,json=queryArgsJson,proto3" json:"query_args_json,omitempty"` + MetricsViewName string `protobuf:"bytes,5,opt,name=metrics_view_name,json=metricsViewName,proto3" json:"metrics_view_name,omitempty"` + Renotify bool `protobuf:"varint,6,opt,name=renotify,proto3" json:"renotify,omitempty"` + RenotifyAfterSeconds uint32 `protobuf:"varint,7,opt,name=renotify_after_seconds,json=renotifyAfterSeconds,proto3" json:"renotify_after_seconds,omitempty"` + EmailRecipients []string `protobuf:"bytes,8,rep,name=email_recipients,json=emailRecipients,proto3" json:"email_recipients,omitempty"` + SlackUsers []string `protobuf:"bytes,9,rep,name=slack_users,json=slackUsers,proto3" json:"slack_users,omitempty"` + SlackChannels []string `protobuf:"bytes,10,rep,name=slack_channels,json=slackChannels,proto3" json:"slack_channels,omitempty"` + SlackWebhooks []string `protobuf:"bytes,11,rep,name=slack_webhooks,json=slackWebhooks,proto3" json:"slack_webhooks,omitempty"` + WebOpenPath string `protobuf:"bytes,15,opt,name=web_open_path,json=webOpenPath,proto3" json:"web_open_path,omitempty"` // Annotation for the subpath of /org/project to open for the report. + WebOpenState string `protobuf:"bytes,12,opt,name=web_open_state,json=webOpenState,proto3" json:"web_open_state,omitempty"` // Annotation for the base64-encoded UI state to open for the report. } -func (x *BillingIssueMetadataOnTrial) Reset() { - *x = BillingIssueMetadataOnTrial{} +func (x *AlertOptions) Reset() { + *x = AlertOptions{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[359] + mi := &file_rill_admin_v1_api_proto_msgTypes[365] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BillingIssueMetadataOnTrial) String() string { +func (x *AlertOptions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BillingIssueMetadataOnTrial) ProtoMessage() {} +func (*AlertOptions) ProtoMessage() {} -func (x *BillingIssueMetadataOnTrial) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[359] +func (x *AlertOptions) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[365] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23453,141 +23549,163 @@ func (x *BillingIssueMetadataOnTrial) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BillingIssueMetadataOnTrial.ProtoReflect.Descriptor instead. -func (*BillingIssueMetadataOnTrial) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{359} +// Deprecated: Use AlertOptions.ProtoReflect.Descriptor instead. +func (*AlertOptions) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{365} } -func (x *BillingIssueMetadataOnTrial) GetEndDate() *timestamppb.Timestamp { +func (x *AlertOptions) GetDisplayName() string { if x != nil { - return x.EndDate + return x.DisplayName } - return nil + return "" } -func (x *BillingIssueMetadataOnTrial) GetGracePeriodEndDate() *timestamppb.Timestamp { +func (x *AlertOptions) GetRefreshCron() string { if x != nil { - return x.GracePeriodEndDate + return x.RefreshCron } - return nil + return "" } -type BillingIssueMetadataTrialEnded struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *AlertOptions) GetRefreshTimeZone() string { + if x != nil { + return x.RefreshTimeZone + } + return "" +} - EndDate *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` - GracePeriodEndDate *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=grace_period_end_date,json=gracePeriodEndDate,proto3" json:"grace_period_end_date,omitempty"` +func (x *AlertOptions) GetIntervalDuration() string { + if x != nil { + return x.IntervalDuration + } + return "" } -func (x *BillingIssueMetadataTrialEnded) Reset() { - *x = BillingIssueMetadataTrialEnded{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[360] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *AlertOptions) GetResolver() string { + if x != nil { + return x.Resolver } + return "" } -func (x *BillingIssueMetadataTrialEnded) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *AlertOptions) GetResolverProperties() *structpb.Struct { + if x != nil { + return x.ResolverProperties + } + return nil } -func (*BillingIssueMetadataTrialEnded) ProtoMessage() {} +func (x *AlertOptions) GetQueryName() string { + if x != nil { + return x.QueryName + } + return "" +} -func (x *BillingIssueMetadataTrialEnded) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[360] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *AlertOptions) GetQueryArgsJson() string { + if x != nil { + return x.QueryArgsJson } - return mi.MessageOf(x) + return "" } -// Deprecated: Use BillingIssueMetadataTrialEnded.ProtoReflect.Descriptor instead. -func (*BillingIssueMetadataTrialEnded) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{360} +func (x *AlertOptions) GetMetricsViewName() string { + if x != nil { + return x.MetricsViewName + } + return "" } -func (x *BillingIssueMetadataTrialEnded) GetEndDate() *timestamppb.Timestamp { +func (x *AlertOptions) GetRenotify() bool { if x != nil { - return x.EndDate + return x.Renotify } - return nil + return false } -func (x *BillingIssueMetadataTrialEnded) GetGracePeriodEndDate() *timestamppb.Timestamp { +func (x *AlertOptions) GetRenotifyAfterSeconds() uint32 { if x != nil { - return x.GracePeriodEndDate + return x.RenotifyAfterSeconds } - return nil + return 0 } -type BillingIssueMetadataNoPaymentMethod struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *AlertOptions) GetEmailRecipients() []string { + if x != nil { + return x.EmailRecipients + } + return nil } -func (x *BillingIssueMetadataNoPaymentMethod) Reset() { - *x = BillingIssueMetadataNoPaymentMethod{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[361] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *AlertOptions) GetSlackUsers() []string { + if x != nil { + return x.SlackUsers } + return nil } -func (x *BillingIssueMetadataNoPaymentMethod) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *AlertOptions) GetSlackChannels() []string { + if x != nil { + return x.SlackChannels + } + return nil } -func (*BillingIssueMetadataNoPaymentMethod) ProtoMessage() {} +func (x *AlertOptions) GetSlackWebhooks() []string { + if x != nil { + return x.SlackWebhooks + } + return nil +} -func (x *BillingIssueMetadataNoPaymentMethod) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[361] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *AlertOptions) GetWebOpenPath() string { + if x != nil { + return x.WebOpenPath } - return mi.MessageOf(x) + return "" } -// Deprecated: Use BillingIssueMetadataNoPaymentMethod.ProtoReflect.Descriptor instead. -func (*BillingIssueMetadataNoPaymentMethod) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{361} +func (x *AlertOptions) GetWebOpenState() string { + if x != nil { + return x.WebOpenState + } + return "" } -type BillingIssueMetadataNoBillableAddress struct { +type BillingPlan struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + PlanType BillingPlanType `protobuf:"varint,9,opt,name=plan_type,json=planType,proto3,enum=rill.admin.v1.BillingPlanType" json:"plan_type,omitempty"` + DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + TrialPeriodDays uint32 `protobuf:"varint,5,opt,name=trial_period_days,json=trialPeriodDays,proto3" json:"trial_period_days,omitempty"` + Default bool `protobuf:"varint,6,opt,name=default,proto3" json:"default,omitempty"` + Quotas *Quotas `protobuf:"bytes,7,opt,name=quotas,proto3" json:"quotas,omitempty"` + Public bool `protobuf:"varint,8,opt,name=public,proto3" json:"public,omitempty"` // TODO expose pricing information } -func (x *BillingIssueMetadataNoBillableAddress) Reset() { - *x = BillingIssueMetadataNoBillableAddress{} +func (x *BillingPlan) Reset() { + *x = BillingPlan{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[362] + mi := &file_rill_admin_v1_api_proto_msgTypes[366] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BillingIssueMetadataNoBillableAddress) String() string { +func (x *BillingPlan) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BillingIssueMetadataNoBillableAddress) ProtoMessage() {} +func (*BillingPlan) ProtoMessage() {} -func (x *BillingIssueMetadataNoBillableAddress) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[362] +func (x *BillingPlan) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[366] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23598,90 +23716,104 @@ func (x *BillingIssueMetadataNoBillableAddress) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use BillingIssueMetadataNoBillableAddress.ProtoReflect.Descriptor instead. -func (*BillingIssueMetadataNoBillableAddress) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{362} +// Deprecated: Use BillingPlan.ProtoReflect.Descriptor instead. +func (*BillingPlan) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{366} } -type BillingIssueMetadataPaymentFailed struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *BillingPlan) GetId() string { + if x != nil { + return x.Id + } + return "" +} - Invoices []*BillingIssueMetadataPaymentFailedMeta `protobuf:"bytes,1,rep,name=invoices,proto3" json:"invoices,omitempty"` +func (x *BillingPlan) GetName() string { + if x != nil { + return x.Name + } + return "" } -func (x *BillingIssueMetadataPaymentFailed) Reset() { - *x = BillingIssueMetadataPaymentFailed{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[363] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *BillingPlan) GetPlanType() BillingPlanType { + if x != nil { + return x.PlanType } + return BillingPlanType_BILLING_PLAN_TYPE_UNSPECIFIED } -func (x *BillingIssueMetadataPaymentFailed) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *BillingPlan) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" } -func (*BillingIssueMetadataPaymentFailed) ProtoMessage() {} +func (x *BillingPlan) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} -func (x *BillingIssueMetadataPaymentFailed) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[363] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *BillingPlan) GetTrialPeriodDays() uint32 { + if x != nil { + return x.TrialPeriodDays } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use BillingIssueMetadataPaymentFailed.ProtoReflect.Descriptor instead. -func (*BillingIssueMetadataPaymentFailed) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{363} +func (x *BillingPlan) GetDefault() bool { + if x != nil { + return x.Default + } + return false } -func (x *BillingIssueMetadataPaymentFailed) GetInvoices() []*BillingIssueMetadataPaymentFailedMeta { +func (x *BillingPlan) GetQuotas() *Quotas { if x != nil { - return x.Invoices + return x.Quotas } return nil } -type BillingIssueMetadataPaymentFailedMeta struct { +func (x *BillingPlan) GetPublic() bool { + if x != nil { + return x.Public + } + return false +} + +type Quotas struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InvoiceId string `protobuf:"bytes,1,opt,name=invoice_id,json=invoiceId,proto3" json:"invoice_id,omitempty"` - InvoiceNumber string `protobuf:"bytes,2,opt,name=invoice_number,json=invoiceNumber,proto3" json:"invoice_number,omitempty"` - InvoiceUrl string `protobuf:"bytes,3,opt,name=invoice_url,json=invoiceUrl,proto3" json:"invoice_url,omitempty"` - AmountDue string `protobuf:"bytes,4,opt,name=amount_due,json=amountDue,proto3" json:"amount_due,omitempty"` - Currency string `protobuf:"bytes,5,opt,name=currency,proto3" json:"currency,omitempty"` - DueDate *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=due_date,json=dueDate,proto3" json:"due_date,omitempty"` - FailedOn *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=failed_on,json=failedOn,proto3" json:"failed_on,omitempty"` - GracePeriodEndDate *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=grace_period_end_date,json=gracePeriodEndDate,proto3" json:"grace_period_end_date,omitempty"` + Projects string `protobuf:"bytes,1,opt,name=projects,proto3" json:"projects,omitempty"` + Deployments string `protobuf:"bytes,2,opt,name=deployments,proto3" json:"deployments,omitempty"` + SlotsTotal string `protobuf:"bytes,3,opt,name=slots_total,json=slotsTotal,proto3" json:"slots_total,omitempty"` + SlotsPerDeployment string `protobuf:"bytes,4,opt,name=slots_per_deployment,json=slotsPerDeployment,proto3" json:"slots_per_deployment,omitempty"` + OutstandingInvites string `protobuf:"bytes,5,opt,name=outstanding_invites,json=outstandingInvites,proto3" json:"outstanding_invites,omitempty"` + StorageLimitBytesPerDeployment string `protobuf:"bytes,6,opt,name=storage_limit_bytes_per_deployment,json=storageLimitBytesPerDeployment,proto3" json:"storage_limit_bytes_per_deployment,omitempty"` } -func (x *BillingIssueMetadataPaymentFailedMeta) Reset() { - *x = BillingIssueMetadataPaymentFailedMeta{} +func (x *Quotas) Reset() { + *x = Quotas{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[364] + mi := &file_rill_admin_v1_api_proto_msgTypes[367] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BillingIssueMetadataPaymentFailedMeta) String() string { +func (x *Quotas) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BillingIssueMetadataPaymentFailedMeta) ProtoMessage() {} +func (*Quotas) ProtoMessage() {} -func (x *BillingIssueMetadataPaymentFailedMeta) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[364] +func (x *Quotas) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[367] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23692,92 +23824,83 @@ func (x *BillingIssueMetadataPaymentFailedMeta) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use BillingIssueMetadataPaymentFailedMeta.ProtoReflect.Descriptor instead. -func (*BillingIssueMetadataPaymentFailedMeta) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{364} +// Deprecated: Use Quotas.ProtoReflect.Descriptor instead. +func (*Quotas) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{367} } -func (x *BillingIssueMetadataPaymentFailedMeta) GetInvoiceId() string { +func (x *Quotas) GetProjects() string { if x != nil { - return x.InvoiceId + return x.Projects } return "" } -func (x *BillingIssueMetadataPaymentFailedMeta) GetInvoiceNumber() string { +func (x *Quotas) GetDeployments() string { if x != nil { - return x.InvoiceNumber + return x.Deployments } return "" } -func (x *BillingIssueMetadataPaymentFailedMeta) GetInvoiceUrl() string { +func (x *Quotas) GetSlotsTotal() string { if x != nil { - return x.InvoiceUrl + return x.SlotsTotal } return "" } -func (x *BillingIssueMetadataPaymentFailedMeta) GetAmountDue() string { +func (x *Quotas) GetSlotsPerDeployment() string { if x != nil { - return x.AmountDue + return x.SlotsPerDeployment } return "" } -func (x *BillingIssueMetadataPaymentFailedMeta) GetCurrency() string { +func (x *Quotas) GetOutstandingInvites() string { if x != nil { - return x.Currency + return x.OutstandingInvites } return "" } -func (x *BillingIssueMetadataPaymentFailedMeta) GetDueDate() *timestamppb.Timestamp { +func (x *Quotas) GetStorageLimitBytesPerDeployment() string { if x != nil { - return x.DueDate - } - return nil -} - -func (x *BillingIssueMetadataPaymentFailedMeta) GetFailedOn() *timestamppb.Timestamp { - if x != nil { - return x.FailedOn - } - return nil -} - -func (x *BillingIssueMetadataPaymentFailedMeta) GetGracePeriodEndDate() *timestamppb.Timestamp { - if x != nil { - return x.GracePeriodEndDate + return x.StorageLimitBytesPerDeployment } - return nil + return "" } -type BillingIssueMetadataSubscriptionCancelled struct { +type Usergroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EndDate *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` + GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + GroupName string `protobuf:"bytes,2,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"` + GroupDescription string `protobuf:"bytes,3,opt,name=group_description,json=groupDescription,proto3" json:"group_description,omitempty"` + Managed bool `protobuf:"varint,6,opt,name=managed,proto3" json:"managed,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *BillingIssueMetadataSubscriptionCancelled) Reset() { - *x = BillingIssueMetadataSubscriptionCancelled{} +func (x *Usergroup) Reset() { + *x = Usergroup{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[365] + mi := &file_rill_admin_v1_api_proto_msgTypes[368] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BillingIssueMetadataSubscriptionCancelled) String() string { +func (x *Usergroup) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BillingIssueMetadataSubscriptionCancelled) ProtoMessage() {} +func (*Usergroup) ProtoMessage() {} -func (x *BillingIssueMetadataSubscriptionCancelled) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[365] +func (x *Usergroup) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[368] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23788,84 +23911,86 @@ func (x *BillingIssueMetadataSubscriptionCancelled) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use BillingIssueMetadataSubscriptionCancelled.ProtoReflect.Descriptor instead. -func (*BillingIssueMetadataSubscriptionCancelled) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{365} +// Deprecated: Use Usergroup.ProtoReflect.Descriptor instead. +func (*Usergroup) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{368} } -func (x *BillingIssueMetadataSubscriptionCancelled) GetEndDate() *timestamppb.Timestamp { +func (x *Usergroup) GetGroupId() string { if x != nil { - return x.EndDate + return x.GroupId } - return nil + return "" } -type BillingIssueMetadataNeverSubscribed struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *Usergroup) GetGroupName() string { + if x != nil { + return x.GroupName + } + return "" } -func (x *BillingIssueMetadataNeverSubscribed) Reset() { - *x = BillingIssueMetadataNeverSubscribed{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[366] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Usergroup) GetGroupDescription() string { + if x != nil { + return x.GroupDescription } + return "" } -func (x *BillingIssueMetadataNeverSubscribed) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *Usergroup) GetManaged() bool { + if x != nil { + return x.Managed + } + return false } -func (*BillingIssueMetadataNeverSubscribed) ProtoMessage() {} - -func (x *BillingIssueMetadataNeverSubscribed) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[366] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *Usergroup) GetCreatedOn() *timestamppb.Timestamp { + if x != nil { + return x.CreatedOn } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BillingIssueMetadataNeverSubscribed.ProtoReflect.Descriptor instead. -func (*BillingIssueMetadataNeverSubscribed) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{366} +func (x *Usergroup) GetUpdatedOn() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedOn + } + return nil } -type BillingIssueMetadataOnCreditTrial struct { +type MemberUsergroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SubscriptionId string `protobuf:"bytes,1,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` - PlanId string `protobuf:"bytes,2,opt,name=plan_id,json=planId,proto3" json:"plan_id,omitempty"` - CreditAllocation float64 `protobuf:"fixed64,3,opt,name=credit_allocation,json=creditAllocation,proto3" json:"credit_allocation,omitempty"` - LowCredit bool `protobuf:"varint,4,opt,name=low_credit,json=lowCredit,proto3" json:"low_credit,omitempty"` + GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + GroupName string `protobuf:"bytes,2,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"` + GroupManaged bool `protobuf:"varint,6,opt,name=group_managed,json=groupManaged,proto3" json:"group_managed,omitempty"` + RoleName string `protobuf:"bytes,3,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` + UsersCount uint32 `protobuf:"varint,7,opt,name=users_count,json=usersCount,proto3" json:"users_count,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` + RestrictResources bool `protobuf:"varint,8,opt,name=restrict_resources,json=restrictResources,proto3" json:"restrict_resources,omitempty"` + Resources []*ResourceName `protobuf:"bytes,9,rep,name=resources,proto3" json:"resources,omitempty"` } -func (x *BillingIssueMetadataOnCreditTrial) Reset() { - *x = BillingIssueMetadataOnCreditTrial{} +func (x *MemberUsergroup) Reset() { + *x = MemberUsergroup{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[367] + mi := &file_rill_admin_v1_api_proto_msgTypes[369] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BillingIssueMetadataOnCreditTrial) String() string { +func (x *MemberUsergroup) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BillingIssueMetadataOnCreditTrial) ProtoMessage() {} +func (*MemberUsergroup) ProtoMessage() {} -func (x *BillingIssueMetadataOnCreditTrial) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[367] +func (x *MemberUsergroup) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[369] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23876,131 +24001,104 @@ func (x *BillingIssueMetadataOnCreditTrial) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use BillingIssueMetadataOnCreditTrial.ProtoReflect.Descriptor instead. -func (*BillingIssueMetadataOnCreditTrial) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{367} +// Deprecated: Use MemberUsergroup.ProtoReflect.Descriptor instead. +func (*MemberUsergroup) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{369} } -func (x *BillingIssueMetadataOnCreditTrial) GetSubscriptionId() string { +func (x *MemberUsergroup) GetGroupId() string { if x != nil { - return x.SubscriptionId + return x.GroupId } return "" } -func (x *BillingIssueMetadataOnCreditTrial) GetPlanId() string { +func (x *MemberUsergroup) GetGroupName() string { if x != nil { - return x.PlanId + return x.GroupName } return "" } -func (x *BillingIssueMetadataOnCreditTrial) GetCreditAllocation() float64 { +func (x *MemberUsergroup) GetGroupManaged() bool { if x != nil { - return x.CreditAllocation + return x.GroupManaged } - return 0 + return false } -func (x *BillingIssueMetadataOnCreditTrial) GetLowCredit() bool { +func (x *MemberUsergroup) GetRoleName() string { if x != nil { - return x.LowCredit + return x.RoleName } - return false -} - -type BillingIssueMetadataTrialCreditsDepleted struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SubscriptionId string `protobuf:"bytes,1,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` - PlanId string `protobuf:"bytes,2,opt,name=plan_id,json=planId,proto3" json:"plan_id,omitempty"` - DepletedOn *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=depleted_on,json=depletedOn,proto3" json:"depleted_on,omitempty"` + return "" } -func (x *BillingIssueMetadataTrialCreditsDepleted) Reset() { - *x = BillingIssueMetadataTrialCreditsDepleted{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[368] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *MemberUsergroup) GetUsersCount() uint32 { + if x != nil { + return x.UsersCount } + return 0 } -func (x *BillingIssueMetadataTrialCreditsDepleted) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BillingIssueMetadataTrialCreditsDepleted) ProtoMessage() {} - -func (x *BillingIssueMetadataTrialCreditsDepleted) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[368] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *MemberUsergroup) GetCreatedOn() *timestamppb.Timestamp { + if x != nil { + return x.CreatedOn } - return mi.MessageOf(x) -} - -// Deprecated: Use BillingIssueMetadataTrialCreditsDepleted.ProtoReflect.Descriptor instead. -func (*BillingIssueMetadataTrialCreditsDepleted) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{368} + return nil } -func (x *BillingIssueMetadataTrialCreditsDepleted) GetSubscriptionId() string { +func (x *MemberUsergroup) GetUpdatedOn() *timestamppb.Timestamp { if x != nil { - return x.SubscriptionId + return x.UpdatedOn } - return "" + return nil } -func (x *BillingIssueMetadataTrialCreditsDepleted) GetPlanId() string { +func (x *MemberUsergroup) GetRestrictResources() bool { if x != nil { - return x.PlanId + return x.RestrictResources } - return "" + return false } -func (x *BillingIssueMetadataTrialCreditsDepleted) GetDepletedOn() *timestamppb.Timestamp { +func (x *MemberUsergroup) GetResources() []*ResourceName { if x != nil { - return x.DepletedOn + return x.Resources } return nil } -type ListGithubUserReposResponse_Repo struct { +type BillingIssue struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Owner string `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Remote string `protobuf:"bytes,4,opt,name=remote,proto3" json:"remote,omitempty"` - DefaultBranch string `protobuf:"bytes,5,opt,name=default_branch,json=defaultBranch,proto3" json:"default_branch,omitempty"` + Org string `protobuf:"bytes,1,opt,name=org,proto3" json:"org,omitempty"` + Type BillingIssueType `protobuf:"varint,2,opt,name=type,proto3,enum=rill.admin.v1.BillingIssueType" json:"type,omitempty"` + Level BillingIssueLevel `protobuf:"varint,3,opt,name=level,proto3,enum=rill.admin.v1.BillingIssueLevel" json:"level,omitempty"` + Metadata *BillingIssueMetadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` + EventTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=event_time,json=eventTime,proto3" json:"event_time,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` } -func (x *ListGithubUserReposResponse_Repo) Reset() { - *x = ListGithubUserReposResponse_Repo{} +func (x *BillingIssue) Reset() { + *x = BillingIssue{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[381] + mi := &file_rill_admin_v1_api_proto_msgTypes[370] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListGithubUserReposResponse_Repo) String() string { +func (x *BillingIssue) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListGithubUserReposResponse_Repo) ProtoMessage() {} +func (*BillingIssue) ProtoMessage() {} -func (x *ListGithubUserReposResponse_Repo) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[381] +func (x *BillingIssue) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[370] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24011,76 +24109,89 @@ func (x *ListGithubUserReposResponse_Repo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListGithubUserReposResponse_Repo.ProtoReflect.Descriptor instead. -func (*ListGithubUserReposResponse_Repo) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{238, 0} +// Deprecated: Use BillingIssue.ProtoReflect.Descriptor instead. +func (*BillingIssue) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{370} } -func (x *ListGithubUserReposResponse_Repo) GetName() string { +func (x *BillingIssue) GetOrg() string { if x != nil { - return x.Name + return x.Org } return "" } -func (x *ListGithubUserReposResponse_Repo) GetOwner() string { +func (x *BillingIssue) GetType() BillingIssueType { if x != nil { - return x.Owner + return x.Type } - return "" + return BillingIssueType_BILLING_ISSUE_TYPE_UNSPECIFIED } -func (x *ListGithubUserReposResponse_Repo) GetDescription() string { +func (x *BillingIssue) GetLevel() BillingIssueLevel { if x != nil { - return x.Description + return x.Level } - return "" + return BillingIssueLevel_BILLING_ISSUE_LEVEL_UNSPECIFIED } -func (x *ListGithubUserReposResponse_Repo) GetRemote() string { +func (x *BillingIssue) GetMetadata() *BillingIssueMetadata { if x != nil { - return x.Remote + return x.Metadata } - return "" + return nil } -func (x *ListGithubUserReposResponse_Repo) GetDefaultBranch() string { +func (x *BillingIssue) GetEventTime() *timestamppb.Timestamp { if x != nil { - return x.DefaultBranch + return x.EventTime } - return "" + return nil } -type GetReportMetaResponse_DeliveryMeta struct { +func (x *BillingIssue) GetCreatedOn() *timestamppb.Timestamp { + if x != nil { + return x.CreatedOn + } + return nil +} + +type BillingIssueMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpenUrl string `protobuf:"bytes,1,opt,name=open_url,json=openUrl,proto3" json:"open_url,omitempty"` - ExportUrl string `protobuf:"bytes,2,opt,name=export_url,json=exportUrl,proto3" json:"export_url,omitempty"` - EditUrl string `protobuf:"bytes,3,opt,name=edit_url,json=editUrl,proto3" json:"edit_url,omitempty"` - UnsubscribeUrl string `protobuf:"bytes,4,opt,name=unsubscribe_url,json=unsubscribeUrl,proto3" json:"unsubscribe_url,omitempty"` - UserId string `protobuf:"bytes,5,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` - UserAttrs *structpb.Struct `protobuf:"bytes,6,opt,name=user_attrs,json=userAttrs,proto3" json:"user_attrs,omitempty"` // user attributes of intended recipient, will be empty for creator mode and for non Rill users + // Types that are assignable to Metadata: + // + // *BillingIssueMetadata_OnTrial + // *BillingIssueMetadata_TrialEnded + // *BillingIssueMetadata_NoPaymentMethod + // *BillingIssueMetadata_NoBillableAddress + // *BillingIssueMetadata_PaymentFailed + // *BillingIssueMetadata_SubscriptionCancelled + // *BillingIssueMetadata_NeverSubscribed + // *BillingIssueMetadata_OnCreditTrial + // *BillingIssueMetadata_TrialCreditsDepleted + Metadata isBillingIssueMetadata_Metadata `protobuf_oneof:"metadata"` } -func (x *GetReportMetaResponse_DeliveryMeta) Reset() { - *x = GetReportMetaResponse_DeliveryMeta{} +func (x *BillingIssueMetadata) Reset() { + *x = BillingIssueMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[382] + mi := &file_rill_admin_v1_api_proto_msgTypes[371] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetReportMetaResponse_DeliveryMeta) String() string { +func (x *BillingIssueMetadata) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetReportMetaResponse_DeliveryMeta) ProtoMessage() {} +func (*BillingIssueMetadata) ProtoMessage() {} -func (x *GetReportMetaResponse_DeliveryMeta) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[382] +func (x *BillingIssueMetadata) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[371] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24091,80 +24202,165 @@ func (x *GetReportMetaResponse_DeliveryMeta) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use GetReportMetaResponse_DeliveryMeta.ProtoReflect.Descriptor instead. -func (*GetReportMetaResponse_DeliveryMeta) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{270, 0} +// Deprecated: Use BillingIssueMetadata.ProtoReflect.Descriptor instead. +func (*BillingIssueMetadata) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{371} } -func (x *GetReportMetaResponse_DeliveryMeta) GetOpenUrl() string { - if x != nil { - return x.OpenUrl +func (m *BillingIssueMetadata) GetMetadata() isBillingIssueMetadata_Metadata { + if m != nil { + return m.Metadata } - return "" + return nil } -func (x *GetReportMetaResponse_DeliveryMeta) GetExportUrl() string { - if x != nil { - return x.ExportUrl +func (x *BillingIssueMetadata) GetOnTrial() *BillingIssueMetadataOnTrial { + if x, ok := x.GetMetadata().(*BillingIssueMetadata_OnTrial); ok { + return x.OnTrial } - return "" + return nil } -func (x *GetReportMetaResponse_DeliveryMeta) GetEditUrl() string { - if x != nil { - return x.EditUrl +func (x *BillingIssueMetadata) GetTrialEnded() *BillingIssueMetadataTrialEnded { + if x, ok := x.GetMetadata().(*BillingIssueMetadata_TrialEnded); ok { + return x.TrialEnded } - return "" + return nil } -func (x *GetReportMetaResponse_DeliveryMeta) GetUnsubscribeUrl() string { - if x != nil { - return x.UnsubscribeUrl +func (x *BillingIssueMetadata) GetNoPaymentMethod() *BillingIssueMetadataNoPaymentMethod { + if x, ok := x.GetMetadata().(*BillingIssueMetadata_NoPaymentMethod); ok { + return x.NoPaymentMethod } - return "" + return nil } -func (x *GetReportMetaResponse_DeliveryMeta) GetUserId() string { - if x != nil { - return x.UserId +func (x *BillingIssueMetadata) GetNoBillableAddress() *BillingIssueMetadataNoBillableAddress { + if x, ok := x.GetMetadata().(*BillingIssueMetadata_NoBillableAddress); ok { + return x.NoBillableAddress } - return "" + return nil } -func (x *GetReportMetaResponse_DeliveryMeta) GetUserAttrs() *structpb.Struct { - if x != nil { - return x.UserAttrs +func (x *BillingIssueMetadata) GetPaymentFailed() *BillingIssueMetadataPaymentFailed { + if x, ok := x.GetMetadata().(*BillingIssueMetadata_PaymentFailed); ok { + return x.PaymentFailed } return nil } -type GetAlertMetaResponse_URLs struct { +func (x *BillingIssueMetadata) GetSubscriptionCancelled() *BillingIssueMetadataSubscriptionCancelled { + if x, ok := x.GetMetadata().(*BillingIssueMetadata_SubscriptionCancelled); ok { + return x.SubscriptionCancelled + } + return nil +} + +func (x *BillingIssueMetadata) GetNeverSubscribed() *BillingIssueMetadataNeverSubscribed { + if x, ok := x.GetMetadata().(*BillingIssueMetadata_NeverSubscribed); ok { + return x.NeverSubscribed + } + return nil +} + +func (x *BillingIssueMetadata) GetOnCreditTrial() *BillingIssueMetadataOnCreditTrial { + if x, ok := x.GetMetadata().(*BillingIssueMetadata_OnCreditTrial); ok { + return x.OnCreditTrial + } + return nil +} + +func (x *BillingIssueMetadata) GetTrialCreditsDepleted() *BillingIssueMetadataTrialCreditsDepleted { + if x, ok := x.GetMetadata().(*BillingIssueMetadata_TrialCreditsDepleted); ok { + return x.TrialCreditsDepleted + } + return nil +} + +type isBillingIssueMetadata_Metadata interface { + isBillingIssueMetadata_Metadata() +} + +type BillingIssueMetadata_OnTrial struct { + OnTrial *BillingIssueMetadataOnTrial `protobuf:"bytes,1,opt,name=on_trial,json=onTrial,proto3,oneof"` +} + +type BillingIssueMetadata_TrialEnded struct { + TrialEnded *BillingIssueMetadataTrialEnded `protobuf:"bytes,2,opt,name=trial_ended,json=trialEnded,proto3,oneof"` +} + +type BillingIssueMetadata_NoPaymentMethod struct { + NoPaymentMethod *BillingIssueMetadataNoPaymentMethod `protobuf:"bytes,3,opt,name=no_payment_method,json=noPaymentMethod,proto3,oneof"` +} + +type BillingIssueMetadata_NoBillableAddress struct { + NoBillableAddress *BillingIssueMetadataNoBillableAddress `protobuf:"bytes,4,opt,name=no_billable_address,json=noBillableAddress,proto3,oneof"` +} + +type BillingIssueMetadata_PaymentFailed struct { + PaymentFailed *BillingIssueMetadataPaymentFailed `protobuf:"bytes,5,opt,name=payment_failed,json=paymentFailed,proto3,oneof"` +} + +type BillingIssueMetadata_SubscriptionCancelled struct { + SubscriptionCancelled *BillingIssueMetadataSubscriptionCancelled `protobuf:"bytes,6,opt,name=subscription_cancelled,json=subscriptionCancelled,proto3,oneof"` +} + +type BillingIssueMetadata_NeverSubscribed struct { + NeverSubscribed *BillingIssueMetadataNeverSubscribed `protobuf:"bytes,7,opt,name=never_subscribed,json=neverSubscribed,proto3,oneof"` +} + +type BillingIssueMetadata_OnCreditTrial struct { + OnCreditTrial *BillingIssueMetadataOnCreditTrial `protobuf:"bytes,8,opt,name=on_credit_trial,json=onCreditTrial,proto3,oneof"` +} + +type BillingIssueMetadata_TrialCreditsDepleted struct { + TrialCreditsDepleted *BillingIssueMetadataTrialCreditsDepleted `protobuf:"bytes,9,opt,name=trial_credits_depleted,json=trialCreditsDepleted,proto3,oneof"` +} + +func (*BillingIssueMetadata_OnTrial) isBillingIssueMetadata_Metadata() {} + +func (*BillingIssueMetadata_TrialEnded) isBillingIssueMetadata_Metadata() {} + +func (*BillingIssueMetadata_NoPaymentMethod) isBillingIssueMetadata_Metadata() {} + +func (*BillingIssueMetadata_NoBillableAddress) isBillingIssueMetadata_Metadata() {} + +func (*BillingIssueMetadata_PaymentFailed) isBillingIssueMetadata_Metadata() {} + +func (*BillingIssueMetadata_SubscriptionCancelled) isBillingIssueMetadata_Metadata() {} + +func (*BillingIssueMetadata_NeverSubscribed) isBillingIssueMetadata_Metadata() {} + +func (*BillingIssueMetadata_OnCreditTrial) isBillingIssueMetadata_Metadata() {} + +func (*BillingIssueMetadata_TrialCreditsDepleted) isBillingIssueMetadata_Metadata() {} + +type BillingIssueMetadataOnTrial struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpenUrl string `protobuf:"bytes,1,opt,name=open_url,json=openUrl,proto3" json:"open_url,omitempty"` - EditUrl string `protobuf:"bytes,2,opt,name=edit_url,json=editUrl,proto3" json:"edit_url,omitempty"` - UnsubscribeUrl string `protobuf:"bytes,3,opt,name=unsubscribe_url,json=unsubscribeUrl,proto3" json:"unsubscribe_url,omitempty"` + EndDate *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` + GracePeriodEndDate *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=grace_period_end_date,json=gracePeriodEndDate,proto3" json:"grace_period_end_date,omitempty"` } -func (x *GetAlertMetaResponse_URLs) Reset() { - *x = GetAlertMetaResponse_URLs{} +func (x *BillingIssueMetadataOnTrial) Reset() { + *x = BillingIssueMetadataOnTrial{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[385] + mi := &file_rill_admin_v1_api_proto_msgTypes[372] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetAlertMetaResponse_URLs) String() string { +func (x *BillingIssueMetadataOnTrial) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAlertMetaResponse_URLs) ProtoMessage() {} +func (*BillingIssueMetadataOnTrial) ProtoMessage() {} -func (x *GetAlertMetaResponse_URLs) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[385] +func (x *BillingIssueMetadataOnTrial) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[372] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24175,44 +24371,766 @@ func (x *GetAlertMetaResponse_URLs) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAlertMetaResponse_URLs.ProtoReflect.Descriptor instead. -func (*GetAlertMetaResponse_URLs) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{272, 0} +// Deprecated: Use BillingIssueMetadataOnTrial.ProtoReflect.Descriptor instead. +func (*BillingIssueMetadataOnTrial) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{372} } -func (x *GetAlertMetaResponse_URLs) GetOpenUrl() string { +func (x *BillingIssueMetadataOnTrial) GetEndDate() *timestamppb.Timestamp { if x != nil { - return x.OpenUrl + return x.EndDate } - return "" + return nil } -func (x *GetAlertMetaResponse_URLs) GetEditUrl() string { +func (x *BillingIssueMetadataOnTrial) GetGracePeriodEndDate() *timestamppb.Timestamp { if x != nil { - return x.EditUrl + return x.GracePeriodEndDate } - return "" + return nil } -func (x *GetAlertMetaResponse_URLs) GetUnsubscribeUrl() string { - if x != nil { - return x.UnsubscribeUrl +type BillingIssueMetadataTrialEnded struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EndDate *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` + GracePeriodEndDate *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=grace_period_end_date,json=gracePeriodEndDate,proto3" json:"grace_period_end_date,omitempty"` +} + +func (x *BillingIssueMetadataTrialEnded) Reset() { + *x = BillingIssueMetadataTrialEnded{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[373] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -var File_rill_admin_v1_api_proto protoreflect.FileDescriptor +func (x *BillingIssueMetadataTrialEnded) String() string { + return protoimpl.X.MessageStringOf(x) +} -var file_rill_admin_v1_api_proto_rawDesc = []byte{ - 0x0a, 0x17, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x76, 0x31, 0x2f, - 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, +func (*BillingIssueMetadataTrialEnded) ProtoMessage() {} + +func (x *BillingIssueMetadataTrialEnded) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[373] + 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 BillingIssueMetadataTrialEnded.ProtoReflect.Descriptor instead. +func (*BillingIssueMetadataTrialEnded) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{373} +} + +func (x *BillingIssueMetadataTrialEnded) GetEndDate() *timestamppb.Timestamp { + if x != nil { + return x.EndDate + } + return nil +} + +func (x *BillingIssueMetadataTrialEnded) GetGracePeriodEndDate() *timestamppb.Timestamp { + if x != nil { + return x.GracePeriodEndDate + } + return nil +} + +type BillingIssueMetadataNoPaymentMethod struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *BillingIssueMetadataNoPaymentMethod) Reset() { + *x = BillingIssueMetadataNoPaymentMethod{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[374] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BillingIssueMetadataNoPaymentMethod) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BillingIssueMetadataNoPaymentMethod) ProtoMessage() {} + +func (x *BillingIssueMetadataNoPaymentMethod) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[374] + 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 BillingIssueMetadataNoPaymentMethod.ProtoReflect.Descriptor instead. +func (*BillingIssueMetadataNoPaymentMethod) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{374} +} + +type BillingIssueMetadataNoBillableAddress struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *BillingIssueMetadataNoBillableAddress) Reset() { + *x = BillingIssueMetadataNoBillableAddress{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[375] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BillingIssueMetadataNoBillableAddress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BillingIssueMetadataNoBillableAddress) ProtoMessage() {} + +func (x *BillingIssueMetadataNoBillableAddress) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[375] + 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 BillingIssueMetadataNoBillableAddress.ProtoReflect.Descriptor instead. +func (*BillingIssueMetadataNoBillableAddress) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{375} +} + +type BillingIssueMetadataPaymentFailed struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Invoices []*BillingIssueMetadataPaymentFailedMeta `protobuf:"bytes,1,rep,name=invoices,proto3" json:"invoices,omitempty"` +} + +func (x *BillingIssueMetadataPaymentFailed) Reset() { + *x = BillingIssueMetadataPaymentFailed{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[376] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BillingIssueMetadataPaymentFailed) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BillingIssueMetadataPaymentFailed) ProtoMessage() {} + +func (x *BillingIssueMetadataPaymentFailed) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[376] + 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 BillingIssueMetadataPaymentFailed.ProtoReflect.Descriptor instead. +func (*BillingIssueMetadataPaymentFailed) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{376} +} + +func (x *BillingIssueMetadataPaymentFailed) GetInvoices() []*BillingIssueMetadataPaymentFailedMeta { + if x != nil { + return x.Invoices + } + return nil +} + +type BillingIssueMetadataPaymentFailedMeta struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + InvoiceId string `protobuf:"bytes,1,opt,name=invoice_id,json=invoiceId,proto3" json:"invoice_id,omitempty"` + InvoiceNumber string `protobuf:"bytes,2,opt,name=invoice_number,json=invoiceNumber,proto3" json:"invoice_number,omitempty"` + InvoiceUrl string `protobuf:"bytes,3,opt,name=invoice_url,json=invoiceUrl,proto3" json:"invoice_url,omitempty"` + AmountDue string `protobuf:"bytes,4,opt,name=amount_due,json=amountDue,proto3" json:"amount_due,omitempty"` + Currency string `protobuf:"bytes,5,opt,name=currency,proto3" json:"currency,omitempty"` + DueDate *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=due_date,json=dueDate,proto3" json:"due_date,omitempty"` + FailedOn *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=failed_on,json=failedOn,proto3" json:"failed_on,omitempty"` + GracePeriodEndDate *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=grace_period_end_date,json=gracePeriodEndDate,proto3" json:"grace_period_end_date,omitempty"` +} + +func (x *BillingIssueMetadataPaymentFailedMeta) Reset() { + *x = BillingIssueMetadataPaymentFailedMeta{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[377] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BillingIssueMetadataPaymentFailedMeta) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BillingIssueMetadataPaymentFailedMeta) ProtoMessage() {} + +func (x *BillingIssueMetadataPaymentFailedMeta) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[377] + 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 BillingIssueMetadataPaymentFailedMeta.ProtoReflect.Descriptor instead. +func (*BillingIssueMetadataPaymentFailedMeta) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{377} +} + +func (x *BillingIssueMetadataPaymentFailedMeta) GetInvoiceId() string { + if x != nil { + return x.InvoiceId + } + return "" +} + +func (x *BillingIssueMetadataPaymentFailedMeta) GetInvoiceNumber() string { + if x != nil { + return x.InvoiceNumber + } + return "" +} + +func (x *BillingIssueMetadataPaymentFailedMeta) GetInvoiceUrl() string { + if x != nil { + return x.InvoiceUrl + } + return "" +} + +func (x *BillingIssueMetadataPaymentFailedMeta) GetAmountDue() string { + if x != nil { + return x.AmountDue + } + return "" +} + +func (x *BillingIssueMetadataPaymentFailedMeta) GetCurrency() string { + if x != nil { + return x.Currency + } + return "" +} + +func (x *BillingIssueMetadataPaymentFailedMeta) GetDueDate() *timestamppb.Timestamp { + if x != nil { + return x.DueDate + } + return nil +} + +func (x *BillingIssueMetadataPaymentFailedMeta) GetFailedOn() *timestamppb.Timestamp { + if x != nil { + return x.FailedOn + } + return nil +} + +func (x *BillingIssueMetadataPaymentFailedMeta) GetGracePeriodEndDate() *timestamppb.Timestamp { + if x != nil { + return x.GracePeriodEndDate + } + return nil +} + +type BillingIssueMetadataSubscriptionCancelled struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EndDate *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` +} + +func (x *BillingIssueMetadataSubscriptionCancelled) Reset() { + *x = BillingIssueMetadataSubscriptionCancelled{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[378] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BillingIssueMetadataSubscriptionCancelled) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BillingIssueMetadataSubscriptionCancelled) ProtoMessage() {} + +func (x *BillingIssueMetadataSubscriptionCancelled) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[378] + 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 BillingIssueMetadataSubscriptionCancelled.ProtoReflect.Descriptor instead. +func (*BillingIssueMetadataSubscriptionCancelled) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{378} +} + +func (x *BillingIssueMetadataSubscriptionCancelled) GetEndDate() *timestamppb.Timestamp { + if x != nil { + return x.EndDate + } + return nil +} + +type BillingIssueMetadataNeverSubscribed struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *BillingIssueMetadataNeverSubscribed) Reset() { + *x = BillingIssueMetadataNeverSubscribed{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[379] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BillingIssueMetadataNeverSubscribed) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BillingIssueMetadataNeverSubscribed) ProtoMessage() {} + +func (x *BillingIssueMetadataNeverSubscribed) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[379] + 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 BillingIssueMetadataNeverSubscribed.ProtoReflect.Descriptor instead. +func (*BillingIssueMetadataNeverSubscribed) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{379} +} + +type BillingIssueMetadataOnCreditTrial struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SubscriptionId string `protobuf:"bytes,1,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` + PlanId string `protobuf:"bytes,2,opt,name=plan_id,json=planId,proto3" json:"plan_id,omitempty"` + CreditAllocation float64 `protobuf:"fixed64,3,opt,name=credit_allocation,json=creditAllocation,proto3" json:"credit_allocation,omitempty"` + LowCredit bool `protobuf:"varint,4,opt,name=low_credit,json=lowCredit,proto3" json:"low_credit,omitempty"` +} + +func (x *BillingIssueMetadataOnCreditTrial) Reset() { + *x = BillingIssueMetadataOnCreditTrial{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[380] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BillingIssueMetadataOnCreditTrial) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BillingIssueMetadataOnCreditTrial) ProtoMessage() {} + +func (x *BillingIssueMetadataOnCreditTrial) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[380] + 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 BillingIssueMetadataOnCreditTrial.ProtoReflect.Descriptor instead. +func (*BillingIssueMetadataOnCreditTrial) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{380} +} + +func (x *BillingIssueMetadataOnCreditTrial) GetSubscriptionId() string { + if x != nil { + return x.SubscriptionId + } + return "" +} + +func (x *BillingIssueMetadataOnCreditTrial) GetPlanId() string { + if x != nil { + return x.PlanId + } + return "" +} + +func (x *BillingIssueMetadataOnCreditTrial) GetCreditAllocation() float64 { + if x != nil { + return x.CreditAllocation + } + return 0 +} + +func (x *BillingIssueMetadataOnCreditTrial) GetLowCredit() bool { + if x != nil { + return x.LowCredit + } + return false +} + +type BillingIssueMetadataTrialCreditsDepleted struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SubscriptionId string `protobuf:"bytes,1,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` + PlanId string `protobuf:"bytes,2,opt,name=plan_id,json=planId,proto3" json:"plan_id,omitempty"` + DepletedOn *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=depleted_on,json=depletedOn,proto3" json:"depleted_on,omitempty"` +} + +func (x *BillingIssueMetadataTrialCreditsDepleted) Reset() { + *x = BillingIssueMetadataTrialCreditsDepleted{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[381] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BillingIssueMetadataTrialCreditsDepleted) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BillingIssueMetadataTrialCreditsDepleted) ProtoMessage() {} + +func (x *BillingIssueMetadataTrialCreditsDepleted) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[381] + 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 BillingIssueMetadataTrialCreditsDepleted.ProtoReflect.Descriptor instead. +func (*BillingIssueMetadataTrialCreditsDepleted) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{381} +} + +func (x *BillingIssueMetadataTrialCreditsDepleted) GetSubscriptionId() string { + if x != nil { + return x.SubscriptionId + } + return "" +} + +func (x *BillingIssueMetadataTrialCreditsDepleted) GetPlanId() string { + if x != nil { + return x.PlanId + } + return "" +} + +func (x *BillingIssueMetadataTrialCreditsDepleted) GetDepletedOn() *timestamppb.Timestamp { + if x != nil { + return x.DepletedOn + } + return nil +} + +type ListGithubUserReposResponse_Repo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Owner string `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Remote string `protobuf:"bytes,4,opt,name=remote,proto3" json:"remote,omitempty"` + DefaultBranch string `protobuf:"bytes,5,opt,name=default_branch,json=defaultBranch,proto3" json:"default_branch,omitempty"` +} + +func (x *ListGithubUserReposResponse_Repo) Reset() { + *x = ListGithubUserReposResponse_Repo{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[394] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListGithubUserReposResponse_Repo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListGithubUserReposResponse_Repo) ProtoMessage() {} + +func (x *ListGithubUserReposResponse_Repo) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[394] + 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 ListGithubUserReposResponse_Repo.ProtoReflect.Descriptor instead. +func (*ListGithubUserReposResponse_Repo) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{238, 0} +} + +func (x *ListGithubUserReposResponse_Repo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ListGithubUserReposResponse_Repo) GetOwner() string { + if x != nil { + return x.Owner + } + return "" +} + +func (x *ListGithubUserReposResponse_Repo) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *ListGithubUserReposResponse_Repo) GetRemote() string { + if x != nil { + return x.Remote + } + return "" +} + +func (x *ListGithubUserReposResponse_Repo) GetDefaultBranch() string { + if x != nil { + return x.DefaultBranch + } + return "" +} + +type GetReportMetaResponse_DeliveryMeta struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpenUrl string `protobuf:"bytes,1,opt,name=open_url,json=openUrl,proto3" json:"open_url,omitempty"` + ExportUrl string `protobuf:"bytes,2,opt,name=export_url,json=exportUrl,proto3" json:"export_url,omitempty"` + EditUrl string `protobuf:"bytes,3,opt,name=edit_url,json=editUrl,proto3" json:"edit_url,omitempty"` + UnsubscribeUrl string `protobuf:"bytes,4,opt,name=unsubscribe_url,json=unsubscribeUrl,proto3" json:"unsubscribe_url,omitempty"` + UserId string `protobuf:"bytes,5,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + UserAttrs *structpb.Struct `protobuf:"bytes,6,opt,name=user_attrs,json=userAttrs,proto3" json:"user_attrs,omitempty"` // user attributes of intended recipient, will be empty for creator mode and for non Rill users +} + +func (x *GetReportMetaResponse_DeliveryMeta) Reset() { + *x = GetReportMetaResponse_DeliveryMeta{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[395] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetReportMetaResponse_DeliveryMeta) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetReportMetaResponse_DeliveryMeta) ProtoMessage() {} + +func (x *GetReportMetaResponse_DeliveryMeta) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[395] + 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 GetReportMetaResponse_DeliveryMeta.ProtoReflect.Descriptor instead. +func (*GetReportMetaResponse_DeliveryMeta) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{270, 0} +} + +func (x *GetReportMetaResponse_DeliveryMeta) GetOpenUrl() string { + if x != nil { + return x.OpenUrl + } + return "" +} + +func (x *GetReportMetaResponse_DeliveryMeta) GetExportUrl() string { + if x != nil { + return x.ExportUrl + } + return "" +} + +func (x *GetReportMetaResponse_DeliveryMeta) GetEditUrl() string { + if x != nil { + return x.EditUrl + } + return "" +} + +func (x *GetReportMetaResponse_DeliveryMeta) GetUnsubscribeUrl() string { + if x != nil { + return x.UnsubscribeUrl + } + return "" +} + +func (x *GetReportMetaResponse_DeliveryMeta) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +func (x *GetReportMetaResponse_DeliveryMeta) GetUserAttrs() *structpb.Struct { + if x != nil { + return x.UserAttrs + } + return nil +} + +type GetAlertMetaResponse_URLs struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpenUrl string `protobuf:"bytes,1,opt,name=open_url,json=openUrl,proto3" json:"open_url,omitempty"` + EditUrl string `protobuf:"bytes,2,opt,name=edit_url,json=editUrl,proto3" json:"edit_url,omitempty"` + UnsubscribeUrl string `protobuf:"bytes,3,opt,name=unsubscribe_url,json=unsubscribeUrl,proto3" json:"unsubscribe_url,omitempty"` +} + +func (x *GetAlertMetaResponse_URLs) Reset() { + *x = GetAlertMetaResponse_URLs{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[398] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAlertMetaResponse_URLs) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlertMetaResponse_URLs) ProtoMessage() {} + +func (x *GetAlertMetaResponse_URLs) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[398] + 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 GetAlertMetaResponse_URLs.ProtoReflect.Descriptor instead. +func (*GetAlertMetaResponse_URLs) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{272, 0} +} + +func (x *GetAlertMetaResponse_URLs) GetOpenUrl() string { + if x != nil { + return x.OpenUrl + } + return "" +} + +func (x *GetAlertMetaResponse_URLs) GetEditUrl() string { + if x != nil { + return x.EditUrl + } + return "" +} + +func (x *GetAlertMetaResponse_URLs) GetUnsubscribeUrl() string { + if x != nil { + return x.UnsubscribeUrl + } + return "" +} + +var File_rill_admin_v1_api_proto protoreflect.FileDescriptor + +var file_rill_admin_v1_api_proto_rawDesc = []byte{ + 0x0a, 0x17, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x76, 0x31, 0x2f, + 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x72, @@ -26692,38 +27610,133 @@ var file_rill_admin_v1_api_proto_rawDesc = []byte{ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0x70, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x42, 0x69, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, - 0x6f, 0x72, 0x67, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, - 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x14, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x46, 0x6f, - 0x72, 0x63, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xd0, 0x01, 0x0a, 0x1e, 0x47, 0x65, - 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, - 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, - 0x0a, 0x12, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6c, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x69, 0x6c, 0x6c, - 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x55, 0x72, 0x6c, 0x22, 0x99, 0x01, 0x0a, - 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x19, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x24, 0x0a, 0x09, - 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x14, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x46, 0x6f, 0x72, - 0x63, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xa5, 0x01, 0x0a, 0x21, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0xca, 0x01, 0x0a, 0x1a, 0x50, 0x65, 0x72, 0x73, + 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 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, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73, + 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x4f, 0x6e, 0x22, 0xd6, 0x01, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, + 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, + 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0a, 0xfa, 0x42, 0x07, + 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, + 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, + 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0x37, 0x0a, + 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, + 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 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, 0xc5, 0x01, 0x0a, 0x1e, 0x45, 0x64, 0x69, 0x74, 0x50, + 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, + 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0a, 0xfa, 0x42, 0x07, + 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0x21, + 0x0a, 0x1f, 0x45, 0x64, 0x69, 0x74, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, + 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, + 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x82, 0x01, 0x04, + 0x10, 0x01, 0x20, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x23, + 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, + 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0xbc, 0x02, 0x0a, 0x1e, 0x43, 0x6f, 0x70, 0x79, 0x50, 0x65, 0x72, 0x73, + 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, + 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x82, 0x01, 0x04, + 0x10, 0x01, 0x20, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x59, 0x0a, 0x0b, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, + 0x69, 0x6c, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x42, 0x0a, 0xfa, + 0x42, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x10, 0x01, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, + 0x6d, 0x65, 0x22, 0x35, 0x0a, 0x1f, 0x43, 0x6f, 0x70, 0x79, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, + 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 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, 0xa7, 0x01, 0x0a, 0x1d, 0x47, 0x65, + 0x74, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, + 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, + 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0a, 0xfa, + 0x42, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x73, 0x6f, + 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 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, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, + 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x95, 0x01, 0x0a, + 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, + 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, + 0x72, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x46, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, + 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x22, 0x63, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, 0x72, 0x73, + 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, + 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x70, 0x0a, 0x1d, 0x47, 0x65, 0x74, + 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x03, 0x6f, 0x72, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, + 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, + 0x46, 0x6f, 0x72, 0x63, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xd0, 0x01, 0x0a, 0x1e, + 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, @@ -26732,559 +27745,613 @@ var file_rill_admin_v1_api_proto_rawDesc = []byte{ 0x3f, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x73, 0x0a, 0x20, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, - 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, - 0x34, 0x0a, 0x16, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x66, 0x6f, 0x72, - 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x14, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x23, 0x0a, 0x21, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x42, - 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x98, 0x01, 0x0a, 0x1f, 0x52, - 0x65, 0x6e, 0x65, 0x77, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, - 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x24, 0x0a, 0x09, 0x70, 0x6c, 0x61, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x34, 0x0a, 0x16, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x66, 0x6f, 0x72, - 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x14, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x20, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x42, - 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0c, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, - 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa3, 0x01, 0x0a, - 0x1b, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x6f, 0x72, 0x74, - 0x61, 0x6c, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x03, - 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, - 0x10, 0x01, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x12, 0x34, 0x0a, 0x16, - 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x73, 0x75, - 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x22, 0x30, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 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, 0x22, 0x71, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x61, 0x6c, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x69, + 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x55, 0x72, 0x6c, 0x22, 0x99, + 0x01, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x24, + 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x46, + 0x6f, 0x72, 0x63, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xa5, 0x01, 0x0a, 0x21, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3f, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x3f, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x73, 0x0a, 0x20, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x42, 0x69, 0x6c, 0x6c, + 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x63, - 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x3b, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x42, 0x69, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x52, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x70, 0x6c, 0x61, 0x6e, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, - 0x61, 0x6e, 0x52, 0x05, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x22, 0x40, 0x0a, 0x23, 0x47, 0x65, 0x74, - 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x23, 0x0a, 0x21, 0x43, 0x61, 0x6e, 0x63, 0x65, + 0x6c, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x98, 0x01, 0x0a, + 0x1f, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x22, 0xae, 0x01, 0x0a, 0x24, - 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, - 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 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, 0x1f, 0x0a, 0x0b, 0x74, - 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0a, 0x74, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x10, - 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x76, - 0x65, 0x6e, 0x74, 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, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x54, 0x65, 0x6c, - 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5d, - 0x0a, 0x1b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, - 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x1e, 0x0a, - 0x1c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x0a, - 0x1e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, - 0x37, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x41, 0x0a, 0x1b, 0x41, 0x70, 0x70, 0x72, - 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x41, - 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x18, 0x44, - 0x65, 0x6e, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x44, 0x65, 0x6e, 0x79, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x34, + 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x24, 0x0a, 0x09, 0x70, + 0x6c, 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x66, + 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x14, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x63, + 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x20, 0x52, 0x65, 0x6e, 0x65, + 0x77, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, + 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa3, + 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x6f, + 0x72, 0x74, 0x61, 0x6c, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, + 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x65, 0x74, 0x75, + 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x63, - 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, + 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x22, 0x5c, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, - 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, - 0x65, 0x73, 0x22, 0xbf, 0x02, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x55, 0x72, - 0x6c, 0x12, 0x31, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x06, 0x71, 0x75, - 0x6f, 0x74, 0x61, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x79, 0x6c, 0x6f, 0x6e, 0x5f, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x70, 0x79, 0x6c, 0x6f, 0x6e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x48, 0x61, 0x73, 0x68, 0x12, 0x39, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x4f, 0x6e, 0x22, 0x8e, 0x02, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6f, - 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, - 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 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, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, - 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0xe9, 0x02, 0x0a, 0x19, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, 0x12, 0x19, - 0x0a, 0x08, 0x6f, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, - 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x61, 0x73, 0x5f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x6f, 0x6c, - 0x65, 0x73, 0x12, 0x37, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 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, - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, - 0x6e, 0x22, 0xad, 0x03, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, - 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x6f, 0x72, 0x67, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x72, 0x67, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x72, 0x67, 0x52, 0x6f, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x06, 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, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x18, 0x09, 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, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x63, 0x65, 0x73, 0x73, 0x22, 0x30, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 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, 0x22, 0x71, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, + 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, + 0x6f, 0x72, 0x67, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x14, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x46, 0x6f, + 0x72, 0x63, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x3b, 0x0a, 0x1f, 0x47, 0x65, 0x74, + 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x42, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x62, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x52, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x70, 0x6c, 0x61, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, + 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x05, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x22, 0x40, 0x0a, 0x23, 0x47, + 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x19, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x22, 0xae, 0x01, + 0x0a, 0x24, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 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, 0x1f, 0x0a, + 0x0b, 0x74, 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x6b, + 0x0a, 0x10, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2d, 0x0a, 0x05, + 0x65, 0x76, 0x65, 0x6e, 0x74, 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, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x54, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x5d, 0x0a, 0x1b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, + 0x67, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, + 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, + 0x1e, 0x0a, 0x1c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x30, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x37, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x41, 0x0a, 0x1b, 0x41, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x1e, 0x0a, + 0x1c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, + 0x18, 0x44, 0x65, 0x6e, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x44, 0x65, 0x6e, + 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, + 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, + 0x12, 0x34, 0x0a, 0x16, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x66, 0x6f, + 0x72, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x14, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x63, 0x65, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x5c, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, + 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x33, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x06, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x73, 0x22, 0xbf, 0x02, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x5f, + 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x68, 0x6f, 0x74, 0x6f, + 0x55, 0x72, 0x6c, 0x12, 0x31, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x06, + 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x79, 0x6c, 0x6f, 0x6e, 0x5f, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x70, 0x79, 0x6c, 0x6f, 0x6e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x48, 0x61, 0x73, 0x68, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x6f, 0x6e, 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, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, - 0x6e, 0x22, 0xb3, 0x06, 0x0a, 0x0c, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x8e, 0x02, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 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, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x6c, - 0x6f, 0x67, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, - 0x6f, 0x67, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x64, - 0x61, 0x72, 0x6b, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, - 0x6f, 0x67, 0x6f, 0x44, 0x61, 0x72, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x61, - 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x66, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x74, - 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x55, 0x72, 0x6c, - 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x35, 0x0a, 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x06, - 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, - 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x62, 0x69, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x70, 0x61, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x69, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2f, 0x0a, 0x11, - 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x62, 0x69, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, - 0x19, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x16, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x44, - 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, 0x12, 0x19, 0x0a, + 0x08, 0x6f, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x6f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 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, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0xe9, 0x02, 0x0a, 0x19, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6f, 0x72, 0x67, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, + 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, + 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x61, 0x73, 0x5f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, + 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 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, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x4f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, - 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x62, 0x69, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, - 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc6, 0x03, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x70, 0x6c, 0x61, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, - 0x61, 0x6e, 0x52, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x64, 0x4f, 0x6e, 0x22, 0xad, 0x03, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x15, 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x67, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x67, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x72, 0x67, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x72, 0x67, 0x52, 0x6f, + 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 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, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x6f, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x18, 0x09, 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, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, - 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 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, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x62, 0x0a, 0x20, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x79, - 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 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, 0x1c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, - 0x43, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x5e, - 0x0a, 0x1e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, - 0x67, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x1a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x40, - 0x0a, 0x0e, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x0c, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x45, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, - 0x22, 0x54, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x27, - 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6f, 0x72, 0x67, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x75, - 0x73, 0x65, 0x72, 0x4f, 0x72, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x72, 0x69, 0x61, 0x6c, - 0x5f, 0x6f, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x72, 0x69, - 0x61, 0x6c, 0x4f, 0x72, 0x67, 0x73, 0x22, 0xa2, 0x02, 0x0a, 0x12, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x1a, 0x0a, - 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, - 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x30, 0x0a, 0x14, - 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x73, 0x6c, 0x6f, 0x74, - 0x73, 0x50, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2f, - 0x0a, 0x13, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, - 0x76, 0x69, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x6f, 0x75, 0x74, - 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, - 0x4a, 0x0a, 0x22, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, - 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xfe, 0x07, 0x0a, 0x07, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6f, - 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x67, - 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 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, - 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x2b, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x16, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x1d, 0x0a, - 0x0a, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x67, 0x69, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0e, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x18, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x47, 0x69, 0x74, - 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x12, 0x25, 0x0a, 0x0e, - 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x42, 0x72, 0x61, - 0x6e, 0x63, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x61, - 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x15, - 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x72, 0x69, - 0x6d, 0x61, 0x72, 0x79, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x19, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x76, 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x21, 0x0a, - 0x0c, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x55, 0x72, 0x6c, - 0x12, 0x28, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, - 0x54, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x65, - 0x76, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x1b, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0d, 0x64, 0x65, 0x76, 0x54, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x64, - 0x69, 0x73, 0x6b, 0x5f, 0x67, 0x62, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x6f, 0x76, - 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x47, 0x62, 0x12, 0x49, 0x0a, 0x0b, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, - 0x72, 0x6f, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x4f, 0x6e, 0x22, 0xb3, 0x06, 0x0a, 0x0c, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 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, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, + 0x08, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x6f, 0x67, 0x6f, + 0x5f, 0x64, 0x61, 0x72, 0x6b, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x6c, 0x6f, 0x67, 0x6f, 0x44, 0x61, 0x72, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, + 0x66, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x66, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, + 0x0d, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x55, + 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x64, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x35, 0x0a, 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x39, + 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, + 0x73, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x62, 0x69, 0x6c, + 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x70, 0x61, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x69, 0x6c, + 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2f, + 0x0a, 0x11, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x62, 0x69, 0x6c, + 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x3e, 0x0a, 0x19, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x16, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, + 0x6e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x6f, 0x6e, 0x18, 0x0f, 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, 0x4f, 0x6e, - 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x22, 0x93, 0x04, 0x0a, - 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x77, - 0x6e, 0x65, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, - 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x64, 0x69, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x64, 0x69, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, - 0x68, 0x6f, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x33, 0x0a, - 0x07, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, + 0x67, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, + 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x64, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc6, 0x03, 0x0a, 0x0c, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x70, 0x6c, + 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, + 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 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, 0x06, 0x75, 0x73, 0x65, 0x64, - 0x4f, 0x6e, 0x22, 0xd0, 0x01, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, - 0x05, 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, 0x04, - 0x61, 0x72, 0x67, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, - 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, 0x22, 0xfa, 0x02, 0x0a, 0x17, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x75, 0x65, 0x73, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x67, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, - 0x08, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x72, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x5f, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x4f, 0x72, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x5f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, - 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x28, - 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x72, 0x67, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x72, - 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x5f, 0x6f, 0x72, 0x67, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x4f, 0x72, 0x67, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x5f, 0x6f, 0x72, 0x67, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x64, 0x6d, 0x69, - 0x6e, 0x73, 0x22, 0xba, 0x07, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, - 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, - 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, - 0x61, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, - 0x72, 0x6f, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, - 0x64, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x61, 0x64, 0x44, 0x65, 0x76, 0x12, 0x26, 0x0a, 0x0f, - 0x72, 0x65, 0x61, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x44, 0x65, 0x76, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x64, - 0x65, 0x76, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x44, 0x65, 0x76, 0x12, 0x3c, 0x0a, 0x1a, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x12, 0x40, 0x0a, 0x1c, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x12, 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x73, 0x12, - 0x37, 0x0a, 0x18, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x5f, - 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x15, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, - 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, - 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x5f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, - 0x61, 0x72, 0x6b, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x62, - 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x22, - 0x80, 0x01, 0x0a, 0x10, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0x76, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x6f, 0x6c, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x70, - 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb1, 0x03, 0x0a, 0x16, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, - 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, - 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x55, 0x72, 0x6c, - 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, - 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, - 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x37, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0a, 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, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, + 0x65, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0xaf, - 0x03, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x62, 0x0a, 0x20, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, + 0x63, 0x79, 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, + 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, 0x1c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, + 0x6e, 0x67, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, + 0x12, 0x5e, 0x0a, 0x1e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x69, 0x6c, 0x6c, + 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x6c, + 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, + 0x12, 0x40, 0x0a, 0x0e, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x45, 0x6e, 0x64, 0x44, 0x61, + 0x74, 0x65, 0x22, 0x54, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, + 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6f, + 0x72, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x6c, + 0x65, 0x75, 0x73, 0x65, 0x72, 0x4f, 0x72, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x72, 0x69, + 0x61, 0x6c, 0x5f, 0x6f, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, + 0x72, 0x69, 0x61, 0x6c, 0x4f, 0x72, 0x67, 0x73, 0x22, 0xa2, 0x02, 0x0a, 0x12, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x0a, + 0x0b, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x30, + 0x0a, 0x14, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x73, 0x6c, + 0x6f, 0x74, 0x73, 0x50, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x2f, 0x0a, 0x13, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, + 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x6f, + 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, + 0x73, 0x12, 0x4a, 0x0a, 0x22, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1e, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x50, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xfe, 0x07, + 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, + 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, + 0x72, 0x67, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 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, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x2b, 0x0a, 0x12, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, + 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x24, + 0x0a, 0x0e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x47, + 0x69, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x12, 0x25, + 0x0a, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x42, + 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, + 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x32, + 0x0a, 0x15, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, + 0x19, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x76, 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x12, + 0x21, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x55, + 0x72, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x73, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, 0x72, + 0x6f, 0x64, 0x54, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0f, + 0x64, 0x65, 0x76, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, + 0x1b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x64, 0x65, 0x76, 0x54, 0x74, 0x6c, 0x53, 0x65, 0x63, + 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x67, 0x62, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, + 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x47, 0x62, 0x12, 0x49, + 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x14, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, + 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0e, 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, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0f, 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, + 0x4f, 0x6e, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x22, 0x93, + 0x04, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, + 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x64, + 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x64, + 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, + 0x33, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0e, 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, 0x06, 0x75, 0x73, + 0x65, 0x64, 0x4f, 0x6e, 0x22, 0xd0, 0x01, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x18, 0x05, 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, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x06, 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, 0x22, 0xfa, 0x02, 0x0a, 0x17, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x75, 0x65, + 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x67, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x19, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x72, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x4f, 0x72, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x27, + 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x72, 0x67, 0x5f, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, + 0x4f, 0x72, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x72, 0x67, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x4f, 0x72, + 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x5f, 0x6f, 0x72, 0x67, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x64, + 0x6d, 0x69, 0x6e, 0x73, 0x22, 0xf4, 0x07, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, + 0x65, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x6f, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x50, + 0x72, 0x6f, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x61, 0x64, 0x44, 0x65, 0x76, 0x12, 0x26, + 0x0a, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x44, 0x65, 0x76, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x5f, 0x64, 0x65, 0x76, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x44, 0x65, 0x76, 0x12, 0x3c, 0x0a, 0x1a, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x72, 0x65, 0x61, 0x64, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x1c, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x12, 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x32, 0x0a, + 0x15, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0x73, 0x12, 0x37, 0x0a, 0x18, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x67, 0x69, + 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x15, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x67, 0x69, 0x63, + 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, + 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x5f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, + 0x73, 0x12, 0x38, 0x0a, 0x18, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x73, + 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x65, 0x73, 0x18, 0x17, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x16, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, + 0x6e, 0x61, 0x6c, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x65, 0x73, 0x22, 0x80, 0x01, 0x0a, 0x10, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x76, + 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb1, 0x03, 0x0a, 0x16, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, + 0x72, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, + 0x68, 0x6f, 0x74, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x75, 0x73, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, + 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x29, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x75, 0x73, 0x65, 0x72, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x0a, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0a, 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, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x6f, 0x6e, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, + 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0xaf, 0x03, 0x0a, 0x11, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, + 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, + 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x68, + 0x6f, 0x74, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75, + 0x73, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x72, + 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x72, 0x67, 0x5f, + 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x6f, 0x72, 0x67, 0x52, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x4f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, + 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x0a, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x86, 0x02, 0x0a, + 0x13, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, @@ -27293,2312 +28360,2378 @@ var file_rill_admin_v1_api_proto_rawDesc = []byte{ 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x55, 0x72, 0x6c, 0x12, - 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, - 0x6f, 0x72, 0x67, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x72, 0x67, 0x52, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, - 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x11, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x22, 0x86, 0x02, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, - 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, - 0x0e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x74, 0x6f, - 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, - 0x6e, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, - 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x66, 0x0a, 0x12, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x66, 0x0a, 0x12, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, + 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x64, 0x42, 0x79, 0x22, 0xef, 0x01, + 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x64, 0x42, - 0x79, 0x22, 0xef, 0x01, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, - 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x72, 0x67, 0x5f, 0x72, 0x6f, - 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, - 0x72, 0x67, 0x52, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, - 0x76, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x73, - 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x11, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, - 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xbc, 0x03, 0x0a, 0x08, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, - 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x72, - 0x6c, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x75, 0x72, 0x6c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x23, - 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x12, 0x39, 0x0a, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x4f, 0x6e, 0x22, 0xac, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x39, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, - 0x65, 0x73, 0x5f, 0x6f, 0x6e, 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, - 0x4f, 0x6e, 0x22, 0xe9, 0x03, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, - 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x5f, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x61, 0x75, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x37, 0x0a, - 0x18, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69, 0x73, - 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x15, 0x61, 0x75, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x70, 0x6c, - 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, - 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x69, - 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x12, 0x37, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0a, - 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, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x66, 0x72, - 0x65, 0x73, 0x68, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, - 0x6e, 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, 0x4f, 0x6e, 0x12, 0x39, - 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6f, 0x6e, 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, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x12, 0x33, 0x0a, 0x07, 0x75, 0x73, 0x65, - 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x75, 0x73, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0xdc, - 0x06, 0x0a, 0x0e, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x72, 0x67, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x72, 0x67, 0x52, 0x6f, + 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, + 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, + 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, + 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x11, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, + 0x3f, 0x0a, 0x11, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, + 0x22, 0xbc, 0x03, 0x0a, 0x08, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, + 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x72, 0x6c, 0x5f, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x72, 0x6c, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x17, + 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, + 0xac, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6f, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x6e, 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, 0x4f, 0x6e, 0x12, 0x33, - 0x0a, 0x07, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x06, 0x75, 0x73, 0x65, - 0x64, 0x4f, 0x6e, 0x12, 0x2b, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, - 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x31, 0x0a, 0x15, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, - 0x61, 0x69, 0x6c, 0x12, 0x37, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 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, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x09, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, - 0x18, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x27, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x67, 0x0a, 0x14, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, - 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, - 0x65, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x12, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x22, 0xe9, + 0x03, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, - 0x61, 0x6d, 0x65, 0x1a, 0x62, 0x0a, 0x17, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, - 0x65, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 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, 0x31, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x22, 0x8a, 0x01, - 0x0a, 0x0b, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, - 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x04, 0x20, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, + 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x18, 0x61, 0x75, 0x74, + 0x68, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x61, 0x75, 0x74, + 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x69, + 0x6e, 0x67, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x12, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x37, 0x0a, 0x0a, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0a, 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, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0xbe, 0x06, 0x0a, 0x0d, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x72, - 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x2b, - 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x16, - 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, 0x12, 0x72, - 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, - 0x73, 0x12, 0x21, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x61, 0x72, - 0x67, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, - 0x01, 0x52, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x67, 0x73, 0x4a, 0x73, 0x6f, 0x6e, - 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x63, 0x69, - 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, - 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6c, 0x61, - 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6c, 0x61, 0x63, 0x6b, - 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0d, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x25, - 0x0a, 0x0e, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, - 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x77, 0x65, 0x62, 0x5f, 0x6f, 0x70, 0x65, - 0x6e, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x65, - 0x62, 0x4f, 0x70, 0x65, 0x6e, 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0e, 0x77, 0x65, 0x62, - 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x77, 0x65, 0x62, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x61, 0x6e, - 0x76, 0x61, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, 0x6e, 0x76, 0x61, - 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x77, 0x65, 0x62, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x65, 0x62, 0x4f, 0x70, 0x65, - 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x4a, 0x04, 0x08, 0x13, 0x10, 0x14, 0x22, 0xbc, 0x05, 0x0a, 0x0c, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x72, - 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x2b, - 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0e, - 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, 0x12, 0x72, - 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, - 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x26, 0x0a, 0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x6a, - 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x41, 0x72, 0x67, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, - 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x61, 0x66, 0x74, - 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x14, 0x72, 0x65, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x41, 0x66, 0x74, 0x65, 0x72, 0x53, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, - 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, - 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x55, 0x73, 0x65, - 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6c, 0x61, 0x63, - 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6c, 0x61, - 0x63, 0x6b, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0d, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, - 0x12, 0x22, 0x0a, 0x0d, 0x77, 0x65, 0x62, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x65, 0x62, 0x4f, 0x70, 0x65, 0x6e, - 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0e, 0x77, 0x65, 0x62, 0x5f, 0x6f, 0x70, 0x65, 0x6e, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x65, - 0x62, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xc0, 0x02, 0x0a, 0x0b, 0x42, - 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3b, - 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, - 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 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, 0x2a, 0x0a, 0x11, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x72, 0x69, - 0x61, 0x6c, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x06, 0x71, - 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0x96, 0x02, - 0x0a, 0x06, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6c, 0x6f, - 0x74, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x6c, 0x6f, 0x74, 0x73, - 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x50, 0x65, 0x72, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x6f, 0x75, 0x74, - 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x22, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x82, 0x02, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, - 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, - 0x0a, 0x11, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x6f, 0x6e, 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, 0x4f, 0x6e, - 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x4f, 0x6e, 0x22, 0x8e, 0x03, 0x0a, 0x0f, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, - 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x12, 0x1b, - 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x75, - 0x73, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6f, 0x6e, 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, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x12, 0x33, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x6e, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x06, 0x75, 0x73, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0xdc, 0x06, 0x0a, 0x0e, 0x4d, + 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x75, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x6f, 0x6e, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, + 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6f, 0x6e, 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, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x12, 0x33, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, - 0x4f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, - 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x09, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xc4, 0x02, 0x0a, - 0x0c, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, - 0x33, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x75, 0x73, 0x65, 0x64, 0x4f, 0x6e, 0x12, + 0x2b, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x15, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, + 0x37, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 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, 0x0a, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0d, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x67, 0x0a, 0x14, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x12, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x1a, + 0x62, 0x0a, 0x17, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 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, 0x31, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x22, 0x8a, 0x01, 0x0a, 0x0b, 0x56, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0xbe, 0x06, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x72, 0x6f, 0x6e, 0x12, 0x2a, + 0x0a, 0x11, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, + 0x6f, 0x6e, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x6c, + 0x76, 0x65, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x6c, + 0x76, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x5f, + 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x16, 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, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x6c, + 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x21, 0x0a, + 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x2a, 0x0a, 0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x6a, + 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x67, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, + 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x42, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x14, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x13, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x55, 0x73, + 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6c, 0x61, + 0x63, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6c, + 0x61, 0x63, 0x6b, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x0c, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x77, 0x65, 0x62, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x65, 0x62, 0x4f, 0x70, 0x65, + 0x6e, 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0e, 0x77, 0x65, 0x62, 0x5f, 0x6f, 0x70, 0x65, + 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, + 0x65, 0x62, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, + 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x78, + 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x12, 0x22, 0x0a, + 0x0d, 0x77, 0x65, 0x62, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x65, 0x62, 0x4f, 0x70, 0x65, 0x6e, 0x4d, 0x6f, 0x64, + 0x65, 0x4a, 0x04, 0x08, 0x13, 0x10, 0x14, 0x22, 0xbc, 0x05, 0x0a, 0x0c, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x72, 0x6f, 0x6e, 0x12, 0x2a, + 0x0a, 0x11, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, + 0x6f, 0x6e, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x6c, + 0x76, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x6c, + 0x76, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x5f, + 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0e, 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, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x6c, + 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, + 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x67, 0x73, + 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, + 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x34, 0x0a, 0x16, + 0x72, 0x65, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x73, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x72, 0x65, + 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x41, 0x66, 0x74, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x72, 0x65, 0x63, 0x69, + 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x0a, + 0x0b, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x25, + 0x0a, 0x0e, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, + 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x77, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, + 0x6c, 0x61, 0x63, 0x6b, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x22, 0x0a, 0x0d, + 0x77, 0x65, 0x62, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x65, 0x62, 0x4f, 0x70, 0x65, 0x6e, 0x50, 0x61, 0x74, 0x68, + 0x12, 0x24, 0x0a, 0x0e, 0x77, 0x65, 0x62, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x65, 0x62, 0x4f, 0x70, 0x65, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xc0, 0x02, 0x0a, 0x0b, 0x42, 0x69, 0x6c, 0x6c, 0x69, + 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x09, 0x70, 0x6c, + 0x61, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x3f, 0x0a, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, - 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, - 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x70, + 0x6c, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 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, 0x2a, 0x0a, 0x11, + 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x64, 0x61, 0x79, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0x96, 0x02, 0x0a, 0x06, 0x51, 0x75, + 0x6f, 0x74, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, + 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x12, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x50, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x12, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x22, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, 0x65, + 0x72, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x1e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x22, 0x82, 0x02, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x4f, 0x6e, 0x22, 0x8e, 0x03, 0x0a, 0x0f, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, + 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, + 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x75, 0x73, + 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x4f, 0x6e, 0x22, 0x83, 0x07, 0x0a, 0x14, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x47, 0x0a, 0x08, - 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, + 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, + 0x6e, 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, 0x4f, 0x6e, 0x12, 0x2d, + 0x0a, 0x12, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x72, 0x65, 0x73, 0x74, + 0x72, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x39, 0x0a, + 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xc4, 0x02, 0x0a, 0x0c, 0x42, 0x69, 0x6c, + 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x33, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, + 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x36, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, + 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x6f, 0x6e, 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, 0x4f, 0x6e, 0x22, + 0x83, 0x07, 0x0a, 0x14, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x47, 0x0a, 0x08, 0x6f, 0x6e, 0x5f, 0x74, + 0x72, 0x69, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, + 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, + 0x6e, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x07, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x61, + 0x6c, 0x12, 0x50, 0x0a, 0x0b, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x64, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, + 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x72, 0x69, 0x61, 0x6c, + 0x45, 0x6e, 0x64, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x45, 0x6e, + 0x64, 0x65, 0x64, 0x12, 0x60, 0x0a, 0x11, 0x6e, 0x6f, 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x4f, 0x6e, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x07, 0x6f, 0x6e, - 0x54, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x50, 0x0a, 0x0b, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, - 0x6e, 0x64, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, - 0x72, 0x69, 0x61, 0x6c, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x72, 0x69, - 0x61, 0x6c, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x60, 0x0a, 0x11, 0x6e, 0x6f, 0x5f, 0x70, 0x61, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x61, 0x74, 0x61, 0x4e, 0x6f, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x48, 0x00, 0x52, 0x0f, 0x6e, 0x6f, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x66, 0x0a, 0x13, 0x6e, 0x6f, 0x5f, 0x62, 0x69, 0x6c, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x6f, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x48, 0x00, 0x52, 0x0f, 0x6e, 0x6f, 0x50, 0x61, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x66, 0x0a, 0x13, 0x6e, 0x6f, 0x5f, - 0x62, 0x69, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x6f, 0x42, 0x69, 0x6c, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x11, - 0x6e, 0x6f, 0x42, 0x69, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x59, 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, - 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x50, 0x61, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x70, - 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x16, - 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x61, 0x6e, - 0x63, 0x65, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, - 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6e, - 0x63, 0x65, 0x6c, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, 0x15, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x65, 0x64, 0x12, - 0x5f, 0x0a, 0x10, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, - 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x65, - 0x76, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x48, 0x00, 0x52, - 0x0f, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, - 0x12, 0x5a, 0x0a, 0x0f, 0x6f, 0x6e, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x74, 0x72, - 0x69, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x6f, 0x42, 0x69, 0x6c, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x11, 0x6e, 0x6f, 0x42, 0x69, + 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x59, 0x0a, + 0x0e, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x16, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, + 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, + 0x65, 0x64, 0x48, 0x00, 0x52, 0x15, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x5f, 0x0a, 0x10, 0x6e, + 0x65, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x65, 0x76, 0x65, 0x72, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0f, 0x6e, 0x65, 0x76, + 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x12, 0x5a, 0x0a, 0x0f, + 0x6f, 0x6e, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x6e, 0x43, 0x72, 0x65, 0x64, + 0x69, 0x74, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0d, 0x6f, 0x6e, 0x43, 0x72, 0x65, + 0x64, 0x69, 0x74, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x6f, 0x0a, 0x16, 0x74, 0x72, 0x69, 0x61, + 0x6c, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x72, 0x69, + 0x61, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x44, 0x65, 0x70, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x48, 0x00, 0x52, 0x14, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, + 0x73, 0x44, 0x65, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa3, 0x01, 0x0a, 0x1b, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x6e, - 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0d, 0x6f, - 0x6e, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x6f, 0x0a, 0x16, - 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x5f, 0x64, 0x65, - 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, - 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x44, 0x65, 0x70, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x14, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x43, 0x72, - 0x65, 0x64, 0x69, 0x74, 0x73, 0x44, 0x65, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x42, 0x0a, 0x0a, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa3, 0x01, 0x0a, 0x1b, 0x42, 0x69, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x4f, 0x6e, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, - 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x54, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, + 0x65, 0x18, 0x01, 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, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x4d, 0x0a, 0x15, + 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x64, + 0x5f, 0x64, 0x61, 0x74, 0x65, 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, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, - 0x12, 0x4d, 0x0a, 0x15, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 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, 0x12, 0x67, 0x72, 0x61, - 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x22, - 0xa6, 0x01, 0x0a, 0x1e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x45, 0x6e, 0x64, - 0x65, 0x64, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x67, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x45, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x1e, + 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x35, + 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 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, 0x07, 0x65, 0x6e, + 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x4d, 0x0a, 0x15, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, + 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 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, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x4d, 0x0a, 0x15, 0x67, 0x72, 0x61, - 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, - 0x74, 0x65, 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, 0x12, 0x67, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, - 0x64, 0x45, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x22, 0x25, 0x0a, 0x23, 0x42, 0x69, 0x6c, 0x6c, - 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x4e, 0x6f, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, - 0x27, 0x0a, 0x25, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x6f, 0x42, 0x69, 0x6c, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x75, 0x0a, 0x21, 0x42, 0x69, 0x6c, 0x6c, + 0x52, 0x12, 0x67, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x6e, 0x64, + 0x44, 0x61, 0x74, 0x65, 0x22, 0x25, 0x0a, 0x23, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x6f, 0x50, 0x61, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x27, 0x0a, 0x25, 0x42, + 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x4e, 0x6f, 0x42, 0x69, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x22, 0x75, 0x0a, 0x21, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x50, 0x61, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x50, 0x0a, 0x08, 0x69, 0x6e, 0x76, + 0x6f, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x50, 0x0a, - 0x08, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74, + 0x61, 0x52, 0x08, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x73, 0x22, 0x88, 0x03, 0x0a, 0x25, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x73, 0x22, - 0x88, 0x03, 0x0a, 0x25, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x46, - 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, - 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, - 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x6f, - 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x55, 0x72, 0x6c, - 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x64, 0x75, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x75, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x35, 0x0a, 0x08, 0x64, - 0x75, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x64, 0x75, 0x65, 0x44, 0x61, - 0x74, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x64, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x6f, 0x69, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, + 0x76, 0x6f, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x69, + 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, + 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x64, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x65, 0x5f, 0x64, + 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x64, 0x75, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x37, + 0x0a, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x08, 0x66, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x4d, 0x0a, 0x15, 0x67, 0x72, 0x61, 0x63, 0x65, + 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x12, 0x67, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, + 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x22, 0x62, 0x0a, 0x29, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, + 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, + 0x6c, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, + 0x01, 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, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x4d, 0x0a, 0x15, 0x67, - 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x5f, - 0x64, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x67, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x45, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x22, 0x62, 0x0a, 0x29, 0x42, 0x69, + 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x22, 0x25, 0x0a, 0x23, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, - 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, - 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x74, 0x61, 0x4e, 0x65, 0x76, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, + 0x64, 0x22, 0xb1, 0x01, 0x0a, 0x21, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x6e, 0x43, 0x72, 0x65, 0x64, + 0x69, 0x74, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x72, 0x65, + 0x64, 0x69, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x41, 0x6c, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x72, + 0x65, 0x64, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6c, 0x6f, 0x77, 0x43, + 0x72, 0x65, 0x64, 0x69, 0x74, 0x22, 0xa9, 0x01, 0x0a, 0x28, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, + 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x72, + 0x69, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x44, 0x65, 0x70, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, + 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6c, + 0x61, 0x6e, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x5f, 0x6f, 0x6e, 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, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x22, 0x25, - 0x0a, 0x23, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x65, 0x76, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x65, 0x64, 0x22, 0xb1, 0x01, 0x0a, 0x21, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, - 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x6e, - 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x2b, 0x0a, - 0x11, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, - 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, - 0x77, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x6c, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x22, 0xa9, 0x01, 0x0a, 0x28, 0x42, 0x69, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x44, 0x65, - 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x17, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, - 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x2a, 0x6e, 0x0a, 0x10, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x1d, 0x47, 0x49, 0x54, - 0x48, 0x55, 0x42, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, - 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, - 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x47, 0x49, 0x54, 0x48, - 0x55, 0x42, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x57, 0x52, - 0x49, 0x54, 0x45, 0x10, 0x02, 0x2a, 0xb0, 0x02, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x1d, 0x44, 0x45, - 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, - 0x19, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, - 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x44, - 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x45, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4f, + 0x6e, 0x2a, 0x6e, 0x0a, 0x10, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x1d, 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x5f, + 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x47, 0x49, 0x54, 0x48, + 0x55, 0x42, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, + 0x41, 0x44, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x5f, 0x50, + 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, + 0x02, 0x2a, 0x6c, 0x0a, 0x17, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, + 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x26, + 0x50, 0x45, 0x52, 0x53, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, + 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x45, 0x52, 0x53, + 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x46, 0x49, 0x4c, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x56, 0x41, 0x53, 0x10, 0x01, 0x2a, + 0xb0, 0x01, 0x0a, 0x1d, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, + 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, + 0x64, 0x12, 0x31, 0x0a, 0x2d, 0x50, 0x45, 0x52, 0x53, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x56, 0x49, + 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, + 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x45, 0x52, 0x53, 0x4f, 0x4e, 0x41, 0x4c, + 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, + 0x10, 0x01, 0x12, 0x2e, 0x0a, 0x2a, 0x50, 0x45, 0x52, 0x53, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x56, + 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x45, 0x52, 0x53, 0x4f, 0x4e, 0x41, 0x4c, + 0x10, 0x02, 0x2a, 0xb0, 0x02, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x1d, 0x44, 0x45, 0x50, 0x4c, 0x4f, + 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x45, 0x50, - 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, - 0x50, 0x44, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x45, 0x50, - 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, - 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x45, 0x50, - 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, - 0x45, 0x4c, 0x45, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x45, 0x50, - 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, - 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x09, 0x2a, 0xe5, 0x01, 0x0a, 0x0f, 0x42, 0x69, 0x6c, - 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x1d, + 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x45, 0x50, + 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, + 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x45, 0x50, 0x4c, + 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x45, 0x50, 0x4c, 0x4f, + 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x54, 0x4f, + 0x50, 0x50, 0x45, 0x44, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, + 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, + 0x54, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, + 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x54, 0x4f, 0x50, + 0x50, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, + 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, + 0x54, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, + 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, + 0x54, 0x45, 0x44, 0x10, 0x09, 0x2a, 0xe5, 0x01, 0x0a, 0x0f, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, + 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x49, 0x4c, + 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x1b, 0x0a, 0x17, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x49, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, - 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x49, 0x4c, 0x4c, - 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, - 0x4e, 0x41, 0x47, 0x45, 0x44, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x49, 0x4c, 0x4c, 0x49, - 0x4e, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x54, - 0x45, 0x52, 0x50, 0x52, 0x49, 0x53, 0x45, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x49, 0x4c, - 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, - 0x52, 0x45, 0x45, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, - 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x10, 0x06, - 0x2a, 0xa7, 0x03, 0x0a, 0x10, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, - 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x49, 0x4c, - 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x49, - 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x54, 0x52, 0x49, 0x41, 0x4c, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x28, - 0x0a, 0x24, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, - 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x10, 0x03, 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x49, 0x4c, 0x4c, - 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, - 0x4f, 0x5f, 0x42, 0x49, 0x4c, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, - 0x53, 0x53, 0x10, 0x04, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, - 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x59, 0x4d, 0x45, - 0x4e, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x12, 0x2d, 0x0a, 0x29, 0x42, - 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, - 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x12, 0x27, 0x0a, 0x23, 0x42, 0x49, - 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4e, 0x45, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, - 0x44, 0x10, 0x07, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x49, - 0x53, 0x53, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, - 0x44, 0x49, 0x54, 0x5f, 0x54, 0x52, 0x49, 0x41, 0x4c, 0x10, 0x08, 0x12, 0x2d, 0x0a, 0x29, 0x42, + 0x45, 0x5f, 0x54, 0x52, 0x49, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x49, 0x4c, + 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, + 0x45, 0x41, 0x4d, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, + 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, + 0x45, 0x44, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, + 0x50, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x50, + 0x52, 0x49, 0x53, 0x45, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, + 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x52, 0x45, 0x45, + 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4c, + 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x10, 0x06, 0x2a, 0xa7, 0x03, + 0x0a, 0x10, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x53, + 0x53, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, + 0x47, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x4e, 0x5f, + 0x54, 0x52, 0x49, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x49, 0x4c, 0x4c, 0x49, + 0x4e, 0x47, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x52, + 0x49, 0x41, 0x4c, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x54, 0x52, 0x49, 0x41, 0x4c, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x49, 0x54, 0x53, 0x5f, - 0x44, 0x45, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x09, 0x2a, 0x78, 0x0a, 0x11, 0x42, 0x69, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, - 0x23, 0x0a, 0x1f, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, - 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, - 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, 0x4e, - 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, - 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x10, 0x02, 0x32, 0x89, 0xd0, 0x01, 0x0a, 0x0c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x51, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1a, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x10, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, - 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x95, 0x01, 0x0a, 0x11, 0x4c, 0x69, - 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x2d, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, - 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, - 0x73, 0x12, 0x95, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, - 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, - 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x12, 0xb5, 0x01, 0x0a, 0x1c, 0x47, 0x65, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, - 0x65, 0x46, 0x6f, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x32, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, + 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x4d, 0x45, 0x54, + 0x48, 0x4f, 0x44, 0x10, 0x03, 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, + 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x42, + 0x49, 0x4c, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, + 0x04, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x53, 0x53, + 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, + 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x12, 0x2d, 0x0a, 0x29, 0x42, 0x49, 0x4c, 0x4c, + 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, + 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x41, 0x4e, 0x43, + 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x12, 0x27, 0x0a, 0x23, 0x42, 0x49, 0x4c, 0x4c, 0x49, + 0x4e, 0x47, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, + 0x56, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x44, 0x10, 0x07, + 0x12, 0x26, 0x0a, 0x22, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x53, 0x53, 0x55, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x49, 0x54, + 0x5f, 0x54, 0x52, 0x49, 0x41, 0x4c, 0x10, 0x08, 0x12, 0x2d, 0x0a, 0x29, 0x42, 0x49, 0x4c, 0x4c, + 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, + 0x52, 0x49, 0x41, 0x4c, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x49, 0x54, 0x53, 0x5f, 0x44, 0x45, 0x50, + 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x09, 0x2a, 0x78, 0x0a, 0x11, 0x42, 0x69, 0x6c, 0x6c, 0x69, + 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x23, 0x0a, 0x1f, + 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x5f, 0x4c, 0x45, + 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x53, 0x53, + 0x55, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, + 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x53, + 0x53, 0x55, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, + 0x02, 0x32, 0xbd, 0xd9, 0x01, 0x0a, 0x0c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x51, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x10, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76, + 0x31, 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x95, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x2d, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x12, 0x95, + 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x33, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, + 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x12, 0xb5, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x46, 0x6f, - 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x46, 0x6f, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, - 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x66, 0x6f, - 0x72, 0x2d, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x7d, 0x12, 0x9b, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x92, - 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x0d, 0x3a, 0x01, 0x2a, 0x22, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x12, - 0x9e, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x92, 0x41, 0x1a, - 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, - 0x2a, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, - 0x12, 0xa1, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x92, 0x41, - 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x13, 0x3a, 0x01, 0x2a, 0x32, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, - 0x6f, 0x72, 0x67, 0x7d, 0x12, 0xc2, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x46, 0x6f, 0x72, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x46, + 0x6f, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x66, 0x6f, 0x72, 0x2d, 0x64, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x9b, + 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x92, 0x41, 0x1a, 0x6a, + 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, + 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x3a, + 0x01, 0x2a, 0x22, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x12, 0x9e, 0x01, 0x0a, + 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, + 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, + 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x2a, 0x0e, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x12, 0xa1, 0x01, + 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x92, 0x41, 0x1a, 0x6a, 0x18, + 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, + 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x3a, 0x01, + 0x2a, 0x32, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, + 0x7d, 0x12, 0xc2, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x31, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, + 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x92, 0x41, 0x1a, - 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, - 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0xc3, 0x01, 0x0a, 0x22, 0x4c, 0x69, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, + 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, + 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0xc3, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x38, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, - 0x12, 0x38, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, - 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2d, 0x66, 0x6f, 0x72, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x12, - 0xa7, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x46, 0x6f, 0x72, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x30, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x46, 0x69, - 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x31, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2d, 0x66, 0x6f, 0x72, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x12, 0xa7, 0x01, 0x0a, + 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, + 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x30, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x46, 0x69, 0x6e, 0x67, 0x65, + 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x46, 0x69, 0x6e, + 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2d, 0x66, 0x6f, 0x72, 0x2d, 0x66, 0x69, 0x6e, 0x67, 0x65, + 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x99, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x92, 0x41, 0x1a, 0x6a, + 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, + 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, + 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x12, 0x94, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, - 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2d, 0x66, 0x6f, 0x72, 0x2d, 0x66, 0x69, - 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x99, 0x01, 0x0a, 0x0a, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x92, - 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, - 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x12, 0x94, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x78, 0x0a, 0x0e, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x79, 0x49, 0x44, 0x12, 0x24, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x42, - 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x90, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x76, 0x31, 0x2f, - 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x9b, 0x01, 0x0a, 0x0d, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x78, 0x0a, 0x0e, 0x47, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x79, 0x49, 0x44, 0x12, 0x24, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x79, 0x49, 0x44, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, + 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x69, 0x64, 0x7d, 0x12, 0x90, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, + 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x9b, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 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, 0x24, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 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, 0x3f, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, + 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x12, 0xa2, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 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, 0x24, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 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, 0x46, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x2a, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, + 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x12, 0xa5, 0x01, 0x0a, 0x0d, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 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, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 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, 0x3f, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, - 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0xa2, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 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, 0x24, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 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, 0x46, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, - 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x2a, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x6f, - 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x12, 0xa5, 0x01, 0x0a, - 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 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, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 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, 0x49, 0x92, 0x41, 0x1a, 0x6a, 0x18, - 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, - 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x01, - 0x2a, 0x32, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, - 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x12, 0xbe, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x50, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, - 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, - 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x76, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0xad, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x3a, 0x01, 0x2a, 0x1a, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, - 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x76, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x7c, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, - 0x73, 0x73, 0x65, 0x74, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, - 0x73, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, - 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x12, 0x94, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x22, 0x2a, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x01, 0x2a, 0x32, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x72, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x98, 0x01, 0x0a, 0x10, 0x48, - 0x69, 0x62, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x48, 0x69, 0x62, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x69, 0x62, 0x65, 0x72, 0x6e, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, - 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x68, 0x69, 0x62, 0x65, - 0x72, 0x6e, 0x61, 0x74, 0x65, 0x12, 0x97, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, - 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x9d, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, - 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x92, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x30, 0x3a, 0x01, 0x2a, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x12, 0x92, 0x01, 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, - 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x8e, 0x01, 0x0a, 0x0e, 0x53, 0x74, - 0x6f, 0x70, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, - 0x70, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x29, 0x3a, 0x01, 0x2a, 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x7d, 0x12, 0xbe, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x50, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x12, 0xad, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2c, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x30, 0x3a, 0x01, 0x2a, 0x1a, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x12, 0x7c, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, + 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, + 0x72, 0x67, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x12, 0x94, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x22, 0x2a, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, + 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x98, 0x01, 0x0a, 0x10, 0x48, 0x69, 0x62, 0x65, + 0x72, 0x6e, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x26, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x69, 0x62, + 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x69, 0x62, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x68, 0x69, 0x62, 0x65, 0x72, 0x6e, 0x61, + 0x74, 0x65, 0x12, 0x97, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, + 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x9d, 0x01, 0x0a, + 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, + 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x92, 0x01, 0x0a, + 0x0d, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x23, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x30, 0x3a, 0x01, 0x2a, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x8c, 0x01, 0x0a, 0x10, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x2a, 0x1f, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x99, 0x01, 0x0a, 0x10, 0x54, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x12, 0x26, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, - 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a, 0x22, 0x29, 0x2f, 0x76, 0x31, 0x2f, - 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x63, 0x6f, - 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x12, 0xa6, 0x01, 0x0a, 0x15, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, - 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, + 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x12, 0x92, 0x01, 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x22, + 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x2f, 0x7b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x8e, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x6f, 0x70, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x74, 0x6f, 0x70, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, + 0x2a, 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x8c, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x2a, 0x1f, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x99, 0x01, 0x0a, 0x10, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, + 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a, 0x22, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, + 0x6c, 0x65, 0x12, 0xa6, 0x01, 0x0a, 0x15, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x84, - 0x01, 0x0a, 0x0f, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2d, 0x2f, 0x72, 0x65, 0x64, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x84, 0x01, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, - 0x2a, 0x22, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x9c, 0x01, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x61, 0x0a, 0x09, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0xc1, - 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x31, + 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x3a, + 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x84, 0x01, 0x0a, 0x0f, + 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, + 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2d, 0x2f, 0x72, 0x65, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x12, 0x84, 0x01, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a, 0x22, 0x29, + 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, + 0x7b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x9c, 0x01, 0x0a, 0x13, 0x47, 0x65, + 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, + 0x12, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x61, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, + 0x12, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0xc1, 0x01, 0x0a, 0x1b, + 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x31, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, - 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, - 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0x2d, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x92, - 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, - 0x67, 0x7d, 0x2f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0xbe, 0x01, 0x0a, 0x19, 0x41, - 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x92, 0x41, 0x1a, - 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, - 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, - 0x72, 0x67, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0xcc, 0x01, 0x0a, 0x1c, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x32, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x3b, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, + 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, + 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, + 0xb5, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x92, 0x41, 0x1a, 0x6a, + 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, + 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, + 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, + 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0xbe, 0x01, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, + 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, + 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, 0x2a, + 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, + 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0xcc, 0x01, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, - 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x2a, 0x1e, 0x2f, 0x76, 0x31, 0x2f, - 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0x8e, 0x01, 0x0a, 0x11, 0x4c, - 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x2a, 0x1e, 0x2f, 0x76, 0x31, - 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xb5, 0x01, 0x0a, 0x1d, - 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, - 0x3a, 0x01, 0x2a, 0x1a, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, - 0x72, 0x67, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x7d, 0x12, 0xa6, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, - 0x72, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, - 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0xd6, 0x01, 0x0a, - 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x46, - 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, - 0x12, 0x35, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x46, - 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, - 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0xdb, 0x01, 0x0a, 0x26, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x12, 0x3c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a, 0x1a, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, + 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x43, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, + 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x2a, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, + 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0x8e, 0x01, 0x0a, 0x11, 0x4c, 0x65, 0x61, 0x76, + 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, + 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x2a, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x12, 0xc5, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x2c, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x92, 0x41, 0x1a, - 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, - 0x12, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0xb9, 0x01, 0x0a, 0x12, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, - 0x65, 0x73, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, - 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x76, - 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, - 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, - 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, + 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xb5, 0x01, 0x0a, 0x1d, 0x53, 0x65, 0x74, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, 0x2a, + 0x1a, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, + 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, + 0x12, 0xa6, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x2f, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0xd6, 0x01, 0x0a, 0x1f, 0x4c, 0x69, + 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x35, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6e, 0x64, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, + 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x12, 0xdb, 0x01, 0x0a, 0x26, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, + 0x73, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x3c, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2e, 0x3a, 0x01, 0x2a, 0x1a, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x12, 0xc5, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, 0x92, 0x41, 0x1a, 0x6a, 0x18, - 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, - 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, - 0x2a, 0x22, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, - 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0xd0, 0x01, 0x0a, - 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, + 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, + 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, + 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, + 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0xb9, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, + 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, + 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x69, 0x6e, 0x76, + 0x69, 0x74, 0x65, 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x2a, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, + 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, + 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a, 0x22, 0x29, + 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0xd0, 0x01, 0x0a, 0x17, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, + 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x2a, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0xd6, 0x01, 0x0a, + 0x18, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x59, 0x92, 0x41, 0x1a, 0x6a, + 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, + 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x3a, + 0x01, 0x2a, 0x1a, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, + 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0xc7, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x2a, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x2a, 0x31, 0x2f, 0x76, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, - 0xd6, 0x01, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x2e, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x59, 0x92, - 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x36, 0x3a, 0x01, 0x2a, 0x1a, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, - 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0xc7, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, - 0x72, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x92, 0x41, 0x1a, 0x6a, - 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, - 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, - 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x7d, 0x12, 0xcb, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x3a, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x76, - 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, - 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2d, 0x66, 0x6f, 0x72, 0x2d, 0x75, 0x73, 0x65, 0x72, - 0x12, 0xa3, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x41, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, - 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x76, 0x31, - 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, + 0xcb, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x3a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x2d, 0x66, 0x6f, 0x72, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x12, 0xa3, 0x01, + 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x4a, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, + 0x22, 0x41, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, - 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x12, 0xaf, 0x01, 0x0a, - 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, - 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x4d, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x32, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, - 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x12, 0xd3, - 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x12, 0x36, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, - 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x6f, - 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x12, 0xd7, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x12, 0x31, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, 0x92, 0x41, 0x1a, - 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, - 0x12, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0xac, - 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x4a, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x2a, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, - 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x12, 0xc4, 0x01, - 0x0a, 0x1e, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x12, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, + 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, - 0x72, 0x6f, 0x6c, 0x65, 0x12, 0xd0, 0x01, 0x0a, 0x22, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, - 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x38, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x1a, 0x2a, 0x2f, 0x76, 0x31, - 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0xca, 0x01, 0x0a, 0x21, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x37, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, + 0x75, 0x70, 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x92, + 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x27, 0x12, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, + 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x75, + 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x12, 0xaf, 0x01, 0x0a, 0x0f, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0x92, 0x41, + 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x2a, 0x3a, 0x01, 0x2a, 0x32, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, + 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, + 0x7b, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x12, 0xd3, 0x01, 0x0a, 0x20, + 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x12, 0x36, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, - 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x2a, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, + 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x3e, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, + 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x12, 0xd7, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x12, 0x31, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, + 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, + 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, + 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0xac, 0x01, 0x0a, 0x0f, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, + 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x27, 0x2a, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, + 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, + 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x12, 0xc4, 0x01, 0x0a, 0x1e, 0x41, + 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x34, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, + 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, + 0x65, 0x12, 0xd0, 0x01, 0x0a, 0x22, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x38, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, + 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x1a, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, - 0x72, 0x6f, 0x6c, 0x65, 0x12, 0xe6, 0x01, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, + 0x72, 0x6f, 0x6c, 0x65, 0x12, 0xca, 0x01, 0x0a, 0x21, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x37, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x66, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, - 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x3a, 0x01, 0x2a, 0x22, 0x3e, 0x2f, - 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, - 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0xf2, 0x01, - 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x6f, 0x6c, 0x65, 0x12, - 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x6f, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x66, 0x92, 0x41, 0x1a, 0x6a, - 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, - 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x3a, - 0x01, 0x2a, 0x1a, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, - 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x2a, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, - 0x65, 0x73, 0x12, 0xec, 0x01, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x12, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x65, 0x12, 0xe6, 0x01, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x66, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, + 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x3a, 0x01, 0x2a, 0x22, 0x3e, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x75, 0x73, + 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0xf2, 0x01, 0x0a, 0x1d, 0x53, + 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, + 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, + 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x6f, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x66, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, + 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x3a, 0x01, 0x2a, 0x1a, + 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x75, + 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, + 0xec, 0x01, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0x92, 0x41, - 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x40, 0x2a, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, - 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, - 0x7b, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, - 0x73, 0x12, 0xd4, 0x01, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, - 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, - 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5d, 0x92, 0x41, 0x1a, 0x6a, 0x18, + 0x12, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, - 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x3a, 0x01, - 0x2a, 0x1a, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, + 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x2a, 0x3e, + 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x75, 0x73, - 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0xcf, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, + 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0xd4, + 0x01, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, + 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5d, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, - 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0xda, 0x01, 0x0a, 0x19, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, - 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x92, 0x41, 0x1a, - 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, - 0x2a, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, - 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, - 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0x5b, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x75, - 0x73, 0x65, 0x72, 0x73, 0x12, 0x78, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, - 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x6c, - 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x75, - 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0x8d, 0x01, 0x0a, - 0x12, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x3a, 0x01, 0x2a, 0x1a, 0x35, + 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, + 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0xcf, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, + 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x52, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, 0x0c, 0x78, 0x2d, 0x76, 0x69, + 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, 0x06, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, + 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0xda, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x92, 0x41, 0x1a, 0x6a, 0x18, 0x0a, + 0x0c, 0x78, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x08, 0x1a, + 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x2a, 0x35, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x75, 0x73, + 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x7d, 0x12, 0x5b, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, + 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x12, 0x78, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, + 0x65, 0x72, 0x73, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x6c, 0x0a, 0x0a, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0x8d, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, - 0x12, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x90, 0x01, 0x0a, - 0x12, 0x49, 0x73, 0x73, 0x75, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, - 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, + 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, + 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x12, 0x49, 0x73, 0x73, 0x75, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, - 0x3a, 0x01, 0x2a, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, - 0x93, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, - 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x55, 0x73, - 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, - 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x2a, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, - 0x73, 0x2f, 0x2d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9c, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, - 0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x41, - 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, - 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, - 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x12, 0xbe, 0x01, 0x0a, 0x1e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, - 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, - 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, - 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, 0x68, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x2a, 0x27, 0x2f, 0x76, - 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x2d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0x2f, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x7b, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0xa8, 0x01, 0x0a, 0x1c, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, - 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, - 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x70, 0x72, - 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x72, 0x69, 0x6c, + 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x52, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, - 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, - 0x12, 0x91, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, - 0x6b, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, - 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, - 0x2a, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x12, 0x8d, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x29, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, - 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x69, 0x65, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x29, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, 0x31, - 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x12, 0x92, 0x01, 0x0a, - 0x13, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, + 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x93, 0x01, 0x0a, + 0x13, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, + 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x70, 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2f, - 0x75, 0x73, 0x65, 0x72, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, - 0x73, 0x12, 0xb0, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x30, 0x3a, 0x01, 0x2a, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, - 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2f, 0x70, 0x72, 0x12, 0xad, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1f, 0x2a, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x2d, + 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x12, 0x9c, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x6c, 0x6c, + 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x2d, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x73, 0x12, 0xbe, 0x01, 0x0a, 0x1e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x70, 0x72, + 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x70, 0x72, 0x65, + 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, + 0x65, 0x52, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, + 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x2a, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x75, + 0x73, 0x65, 0x72, 0x73, 0x2f, 0x2d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x72, 0x65, + 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x7d, 0x12, 0xa8, 0x01, 0x0a, 0x1c, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x70, 0x72, + 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, + 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x70, + 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x91, 0x01, + 0x0a, 0x16, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, + 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x2a, 0x12, 0x2f, + 0x76, 0x31, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x12, 0x8d, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x52, + 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, - 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2f, 0x70, 0x72, 0x2f, 0x7b, 0x62, 0x72, 0x61, - 0x6e, 0x63, 0x68, 0x7d, 0x12, 0xb5, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x12, - 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x6f, - 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x47, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x38, 0x3a, 0x01, 0x2a, 0x22, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, - 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x2d, 0x74, 0x6f, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x12, 0xa2, 0x01, 0x0a, - 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x47, 0x69, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x64, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x47, - 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x3a, 0x01, 0x2a, 0x1a, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x6f, - 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x2d, 0x67, 0x69, 0x74, 0x2d, 0x72, 0x65, 0x70, - 0x6f, 0x12, 0xa9, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x6f, - 0x6e, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, + 0x68, 0x75, 0x62, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, - 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x6c, 0x6f, 0x6e, - 0x65, 0x2d, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x9f, 0x01, - 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, - 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x52, 0x65, + 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, + 0x73, 0x12, 0x85, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, + 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x73, + 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x4c, 0x69, + 0x73, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, + 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2f, 0x75, 0x73, 0x65, + 0x72, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0xb0, + 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x50, + 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, + 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x30, 0x3a, 0x01, 0x2a, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, + 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2f, 0x70, + 0x72, 0x12, 0xad, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x50, + 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2f, 0x70, 0x72, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x7d, 0x12, 0xb5, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x12, 0x2c, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x47, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x47, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x38, 0x3a, 0x01, 0x2a, 0x22, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, + 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2d, + 0x74, 0x6f, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x12, 0xa2, 0x01, 0x0a, 0x14, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x47, 0x69, 0x74, 0x52, 0x65, + 0x70, 0x6f, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, + 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x47, 0x69, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2b, 0x3a, 0x01, 0x2a, 0x1a, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, + 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2d, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x64, 0x2d, 0x67, 0x69, 0x74, 0x2d, 0x72, 0x65, 0x70, 0x6f, 0x12, 0xa9, + 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x2d, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x9f, 0x01, 0x0a, 0x17, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, + 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, + 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, + 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, + 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x12, 0xa5, 0x01, 0x0a, + 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, + 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, - 0x3a, 0x01, 0x2a, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, - 0x72, 0x67, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x12, - 0xa5, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, - 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2d, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x25, 0x2a, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, - 0x67, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x2f, 0x7b, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x99, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, - 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x73, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, - 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, - 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, - 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, - 0x74, 0x65, 0x64, 0x12, 0x6e, 0x0a, 0x0b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, - 0x72, 0x73, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x68, + 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x2a, + 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, + 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x99, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x68, 0x69, + 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, + 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, + 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, + 0x12, 0x6e, 0x0a, 0x0b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, + 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x12, 0x12, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x12, 0xa1, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, - 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, - 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x7c, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, - 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, + 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x12, 0xa1, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, + 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x12, 0x7c, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x70, 0x65, + 0x72, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, + 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, + 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x83, 0x01, 0x0a, 0x09, 0x47, + 0x65, 0x74, 0x49, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x46, 0x72, 0x61, + 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x46, 0x72, + 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2d, 0x3a, 0x01, 0x2a, 0x22, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, + 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x69, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x12, 0x79, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, + 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x65, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1a, 0x3a, 0x01, 0x2a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, + 0x73, 0x65, 0x72, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x80, 0x01, 0x0a, 0x0f, + 0x53, 0x75, 0x64, 0x6f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, - 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x6d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, - 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x83, 0x01, - 0x0a, 0x09, 0x47, 0x65, 0x74, 0x49, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, - 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x49, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x3a, 0x01, 0x2a, 0x22, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x6f, - 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x69, 0x66, 0x72, - 0x61, 0x6d, 0x65, 0x12, 0x79, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, - 0x73, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, - 0x75, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, - 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x80, - 0x01, 0x0a, 0x0f, 0x53, 0x75, 0x64, 0x6f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x73, - 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x95, 0x01, 0x0a, 0x14, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x32, 0x19, - 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x71, 0x75, - 0x6f, 0x74, 0x61, 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x12, 0xb5, 0x01, 0x0a, 0x1c, 0x53, 0x75, - 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x32, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, + 0x53, 0x75, 0x64, 0x6f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, + 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x95, + 0x01, 0x0a, 0x14, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, + 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x32, 0x19, 0x2f, 0x76, 0x31, + 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x71, 0x75, 0x6f, 0x74, 0x61, + 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x12, 0xb5, 0x01, 0x0a, 0x1c, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x01, 0x2a, 0x32, 0x21, - 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x71, 0x75, - 0x6f, 0x74, 0x61, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0xdd, 0x01, 0x0a, 0x25, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6c, 0x6c, - 0x69, 0x6e, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x12, 0x3b, 0x2e, 0x72, 0x69, + 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, + 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x01, 0x2a, 0x32, 0x21, 0x2f, 0x76, 0x31, + 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x71, 0x75, 0x6f, 0x74, 0x61, + 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xdd, + 0x01, 0x0a, 0x25, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x12, 0x3b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, - 0x2a, 0x32, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, - 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x69, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x12, 0xad, 0x01, 0x0a, 0x15, 0x53, 0x75, 0x64, 0x6f, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x54, - 0x72, 0x69, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, - 0x47, 0x72, 0x61, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6c, 0x6c, + 0x69, 0x6e, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, 0x32, 0x2e, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, + 0x6e, 0x67, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x12, 0xad, + 0x01, 0x0a, 0x15, 0x53, 0x75, 0x64, 0x6f, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x61, + 0x6c, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, - 0x2a, 0x22, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, - 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x74, 0x72, - 0x69, 0x61, 0x6c, 0x2f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2d, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, - 0x73, 0x12, 0x9c, 0x01, 0x0a, 0x0f, 0x53, 0x75, 0x64, 0x6f, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, - 0x6f, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x3a, 0x01, 0x2a, 0x22, - 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x69, 0x6c, 0x6c, - 0x69, 0x6e, 0x67, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2d, 0x75, 0x73, 0x61, 0x67, 0x65, - 0x12, 0xce, 0x01, 0x0a, 0x22, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x38, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x39, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x54, + 0x72, 0x69, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, 0x22, 0x2e, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x74, 0x72, 0x69, 0x61, 0x6c, + 0x2f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2d, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x12, 0x9c, + 0x01, 0x0a, 0x0f, 0x53, 0x75, 0x64, 0x6f, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x3a, 0x01, 0x2a, 0x22, 0x2f, 0x2f, 0x76, + 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2d, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0xce, 0x01, + 0x0a, 0x22, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2d, 0x3a, 0x01, 0x2a, 0x32, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, - 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x2d, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x12, 0xa1, 0x01, 0x0a, 0x15, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x38, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x44, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x2d, 0x3a, 0x01, 0x2a, 0x32, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, + 0x73, 0x65, 0x72, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x2d, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0xa1, + 0x01, 0x0a, 0x15, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x3a, 0x01, - 0x2a, 0x32, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xbb, 0x01, 0x0a, 0x1c, 0x53, 0x75, 0x64, 0x6f, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x3a, 0x01, 0x2a, 0x32, 0x22, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0xbb, 0x01, 0x0a, 0x1c, 0x53, 0x75, 0x64, 0x6f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x2f, - 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2d, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0xda, 0x01, 0x0a, 0x22, 0x53, 0x75, 0x64, 0x6f, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x38, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, + 0x6b, 0x65, 0x6e, 0x12, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, + 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0xda, 0x01, 0x0a, 0x22, 0x53, 0x75, 0x64, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x2a, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, - 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, - 0x12, 0xa4, 0x01, 0x0a, 0x18, 0x53, 0x75, 0x64, 0x6f, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x61, 0x69, 0x72, 0x12, 0x2e, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, - 0x64, 0x6f, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x70, 0x61, 0x69, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, - 0x64, 0x6f, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x70, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x73, - 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, - 0x2f, 0x72, 0x65, 0x70, 0x61, 0x69, 0x72, 0x12, 0xc7, 0x01, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, - 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x34, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, - 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x35, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, - 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, - 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, - 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, - 0x64, 0x12, 0xcd, 0x01, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, - 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x2a, 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x6f, - 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x77, 0x68, 0x69, - 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x7d, 0x12, 0xc1, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x73, 0x12, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, + 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x38, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, + 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x39, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x39, 0x2a, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, + 0x73, 0x65, 0x72, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x12, 0xa4, 0x01, + 0x0a, 0x18, 0x53, 0x75, 0x64, 0x6f, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x42, 0x69, 0x6c, + 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x61, 0x69, 0x72, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, + 0x61, 0x69, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, + 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, + 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x72, 0x65, + 0x70, 0x61, 0x69, 0x72, 0x12, 0xc7, 0x01, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, + 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, + 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, + 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x12, 0xcd, + 0x01, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x12, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x2a, 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, - 0x69, 0x73, 0x74, 0x65, 0x64, 0x12, 0x78, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, - 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, - 0xb2, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x2f, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, - 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x12, 0x7e, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x76, 0x31, - 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x12, 0x79, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, - 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, - 0x85, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x32, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, - 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xc3, 0x01, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x36, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x3a, 0x01, 0x2a, 0x1a, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, - 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0xbd, 0x01, - 0x0a, 0x1f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x35, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x2a, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, + 0x69, 0x73, 0x74, 0x65, 0x64, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0xc1, + 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, + 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, + 0x12, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, + 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, + 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, + 0x65, 0x64, 0x12, 0x78, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, + 0x72, 0x67, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0xb2, 0x01, 0x0a, + 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x12, 0x7e, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0xc7, 0x01, - 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x31, 0x2e, + 0x73, 0x12, 0x79, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, + 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x85, 0x01, 0x0a, + 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x23, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x23, 0x3a, 0x01, 0x2a, 0x32, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, + 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xc3, 0x01, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x36, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x37, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x6f, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x28, 0x3a, 0x01, 0x2a, 0x1a, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0xbd, 0x01, 0x0a, 0x1f, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x35, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x2a, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0xc7, 0x01, 0x0a, 0x1b, 0x53, + 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x31, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x1a, - 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0xbc, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x1a, 0x36, 0x2f, 0x76, + 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x72, 0x6f, 0x6c, 0x65, 0x12, 0xbc, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x33, 0x2a, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, - 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x2a, 0x1e, 0x2f, 0x76, 0x31, - 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xa9, 0x01, 0x0a, 0x15, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, - 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, + 0x69, 0x63, 0x65, 0x12, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, + 0x2a, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x2a, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0xac, 0x01, 0x0a, 0x15, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, - 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, + 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xa9, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, + 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x12, 0xac, 0x01, 0x0a, 0x15, 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, - 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x9d, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x76, 0x6f, 0x6b, + 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, - 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, - 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x2a, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa7, 0x01, 0x0a, 0x13, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x29, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, - 0x22, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x6d, 0x61, 0x67, 0x69, 0x63, - 0x12, 0xa4, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, - 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x67, - 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, - 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, - 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0x2f, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x12, 0x9d, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, - 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, - 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, - 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x2d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x94, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x76, 0x6f, - 0x6b, 0x65, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, + 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x12, 0x9d, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, - 0x6f, 0x6b, 0x65, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1d, 0x2a, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x2d, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x94, - 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, - 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x20, 0x2a, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x12, 0xa7, 0x01, 0x0a, 0x13, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x67, + 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x29, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x67, 0x69, + 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, 0x22, 0x2e, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, + 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x12, 0xa4, 0x01, + 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, + 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, + 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x6d, + 0x61, 0x67, 0x69, 0x63, 0x12, 0x9d, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x67, 0x69, + 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x67, 0x69, + 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, + 0x6d, 0x61, 0x67, 0x69, 0x63, 0x2d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x12, 0x94, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4d, + 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2a, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, + 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x2a, 0x1b, + 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x2d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x94, 0x01, 0x0a, 0x15, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x1a, 0x15, - 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x77, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, - 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, - 0x61, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x75, - 0x73, 0x65, 0x72, 0x73, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x7f, - 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x21, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, - 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, - 0x73, 0x2f, 0x7b, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x12, - 0x7d, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, - 0x6b, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, - 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x75, - 0x73, 0x65, 0x72, 0x73, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x7d, - 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, - 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, - 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x1a, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, - 0x65, 0x72, 0x73, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x88, 0x01, - 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, - 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, - 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x2a, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, - 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2f, 0x7b, 0x62, 0x6f, 0x6f, 0x6b, - 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x81, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x70, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, - 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x70, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x90, 0x01, 0x0a, - 0x0f, 0x50, 0x75, 0x6c, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6f, - 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6f, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x56, 0x69, 0x72, 0x74, - 0x75, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x12, - 0x92, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, - 0x6c, 0x65, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, - 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x2f, - 0x66, 0x69, 0x6c, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, - 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, - 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x2a, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x2f, 0x66, 0x69, - 0x6c, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, - 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x3a, 0x01, 0x2a, 0x22, 0x26, 0x2f, 0x76, 0x31, 0x2f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x6d, 0x65, - 0x74, 0x61, 0x12, 0x89, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x1a, 0x15, 0x2f, 0x76, 0x31, + 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x73, 0x12, 0x77, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, + 0x72, 0x6b, 0x73, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, + 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x7f, 0x0a, 0x0b, 0x47, + 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, + 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x75, + 0x73, 0x65, 0x72, 0x73, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2f, 0x7b, + 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x7d, 0x0a, 0x0e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x24, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, + 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x7d, 0x0a, 0x0e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x24, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, + 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x1a, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x88, 0x01, 0x0a, 0x0e, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x24, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, + 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x23, 0x2a, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x62, 0x6f, + 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2f, 0x7b, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, + 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x81, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, + 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x4d, 0x65, 0x74, + 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, + 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x90, 0x01, 0x0a, 0x0f, 0x50, 0x75, + 0x6c, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x25, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, + 0x6c, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, + 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x12, 0x92, 0x01, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x12, + 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, + 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x2f, 0x66, 0x69, 0x6c, + 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x72, 0x74, + 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2d, 0x2a, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, + 0x70, 0x6f, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x12, + 0x8d, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2b, 0x3a, 0x01, 0x2a, 0x22, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x8d, - 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, + 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x12, + 0x89, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, + 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x2a, 0x3a, 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x8d, 0x01, 0x0a, 0x0c, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x22, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a, + 0x22, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x8e, 0x01, 0x0a, 0x0a, + 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x01, 0x2a, 0x1a, 0x30, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xaf, 0x01, 0x0a, + 0x11, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x01, 0x2a, + 0x22, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x2f, 0x75, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x91, + 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, - 0x3a, 0x01, 0x2a, 0x22, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, + 0x2a, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x12, 0x9f, 0x01, 0x0a, 0x0d, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x3a, 0x01, 0x2a, 0x22, 0x38, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x12, 0xa6, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x12, 0x28, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x01, 0x2a, 0x22, 0x30, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x2d, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x12, 0x89, 0x01, + 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x21, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x3a, 0x01, 0x2a, 0x22, + 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x09, 0x45, 0x64, + 0x69, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x34, 0x3a, 0x01, 0x2a, 0x1a, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xab, 0x01, 0x0a, 0x10, 0x55, 0x6e, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x26, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x01, 0x2a, 0x22, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, + 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x75, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x8e, - 0x01, 0x0a, 0x0a, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, - 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x01, 0x2a, 0x1a, 0x30, 0x2f, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xa2, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x3a, 0x01, 0x2a, 0x22, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, + 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x73, 0x2f, 0x2d, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x12, 0x95, 0x01, 0x0a, 0x0c, 0x47, 0x65, + 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x79, 0x61, 0x6d, + 0x6c, 0x12, 0xc3, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, + 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x12, + 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, + 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x3a, 0x01, 0x2a, 0x22, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, - 0xaf, 0x01, 0x0a, 0x11, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, - 0x3a, 0x01, 0x2a, 0x22, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, - 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x75, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, - 0x65, 0x12, 0x91, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x32, 0x2a, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, - 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x9f, 0x01, 0x0a, 0x0d, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x3a, 0x01, 0x2a, 0x22, 0x38, 0x2f, + 0x2f, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x2d, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, + 0x6c, 0x2d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0xcb, 0x01, 0x0a, 0x17, 0x45, 0x64, 0x69, 0x74, + 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, + 0x69, 0x6c, 0x65, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, + 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, + 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x51, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x3a, 0x01, 0x2a, 0x1a, 0x46, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, - 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0xa6, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x12, 0x28, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x59, 0x41, 0x4d, - 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x01, 0x2a, 0x22, 0x30, + 0x2f, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x2d, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, + 0x6c, 0x2d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xce, 0x01, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, + 0x69, 0x6c, 0x65, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, + 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, + 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x2a, 0x46, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x2d, 0x2f, 0x79, 0x61, 0x6d, 0x6c, - 0x12, 0x89, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x3a, - 0x01, 0x2a, 0x22, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, - 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x8a, 0x01, 0x0a, - 0x09, 0x45, 0x64, 0x69, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x3a, 0x01, 0x2a, 0x1a, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, - 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xab, 0x01, 0x0a, 0x10, 0x55, 0x6e, - 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x26, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x46, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x01, 0x2a, 0x22, 0x3b, 0x2f, 0x76, 0x31, 0x2f, - 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x75, 0x6e, 0x73, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, - 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xa2, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x12, 0x27, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x3a, 0x01, 0x2a, 0x22, 0x2f, 0x2f, 0x76, 0x31, + 0x7d, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x2d, 0x76, 0x69, 0x72, 0x74, 0x75, + 0x61, 0x6c, 0x2d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xc4, 0x01, 0x0a, 0x17, 0x43, 0x6f, 0x70, 0x79, 0x50, + 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, + 0x6c, 0x65, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, + 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x01, 0x2a, 0x22, 0x3f, 0x2f, 0x76, + 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, + 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x2d, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, + 0x2d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x2d, 0x2f, 0x63, 0x6f, 0x70, 0x79, 0x12, 0xc5, 0x01, + 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, + 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x73, + 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, + 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x12, 0x46, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, + 0x2f, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x2d, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, + 0x6c, 0x2d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xbd, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, + 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, + 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, + 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x56, + 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x2d, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x12, 0x95, 0x01, 0x0a, - 0x0c, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x12, 0x22, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, - 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, - 0x79, 0x61, 0x6d, 0x6c, 0x12, 0xa3, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, - 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, - 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xaf, 0x01, 0x0a, 0x19, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, - 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x70, + 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x2d, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x2d, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, + 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xaf, 0x01, 0x0a, 0x19, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x29, 0x3a, 0x01, 0x2a, 0x32, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, - 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xac, 0x01, 0x0a, - 0x19, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, - 0x6c, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, 0x2a, 0x32, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, + 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, + 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xac, 0x01, + 0x0a, 0x19, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x2a, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6e, + 0x63, 0x65, 0x6c, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x2a, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, + 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x73, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xb2, 0x01, 0x0a, + 0x18, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x42, + 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x42, + 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xb2, 0x01, 0x0a, 0x18, - 0x52, 0x65, 0x6e, 0x65, 0x77, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x42, 0x69, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x42, 0x69, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, - 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x6e, 0x65, 0x77, - 0x12, 0xa3, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x55, 0x52, 0x4c, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x55, 0x52, 0x4c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x76, 0x31, 0x2f, - 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x2f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x72, 0x74, - 0x61, 0x6c, 0x2d, 0x75, 0x72, 0x6c, 0x12, 0xa0, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x42, 0x69, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x6e, 0x65, + 0x77, 0x12, 0xa3, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x55, 0x52, 0x4c, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x55, 0x52, 0x4c, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x62, 0x69, 0x6c, 0x6c, + 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x72, + 0x74, 0x61, 0x6c, 0x2d, 0x75, 0x72, 0x6c, 0x12, 0xa0, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x42, + 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x42, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x72, + 0x65, 0x64, 0x69, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, - 0x64, 0x69, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, - 0x69, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, - 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, - 0x67, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x16, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, - 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x42, - 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x42, 0x69, 0x6c, - 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x62, - 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0xbb, 0x01, 0x0a, - 0x1c, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x32, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, - 0x2a, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0xac, 0x01, 0x0a, 0x14, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x64, 0x69, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, + 0x6e, 0x67, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x16, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, + 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x42, 0x69, + 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, + 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0xbb, 0x01, + 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x32, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x3a, + 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0xac, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x01, 0x2a, 0x22, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, - 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0xa1, 0x01, 0x0a, 0x17, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x63, 0x65, 0x73, 0x73, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x01, 0x2a, 0x22, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, + 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0xa1, 0x01, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x2d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xa3, 0x01, - 0x0a, 0x14, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x2f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x72, - 0x6f, 0x76, 0x65, 0x12, 0x97, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6e, 0x79, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6e, 0x79, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6e, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, 0x2a, 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x6e, 0x79, 0x12, 0xb1, 0x01, - 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, - 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, 0x72, - 0x67, 0x7d, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, - 0x73, 0x42, 0xf7, 0x03, 0x92, 0x41, 0xc6, 0x02, 0x12, 0x8e, 0x02, 0x0a, 0x0e, 0x52, 0x69, 0x6c, - 0x6c, 0x20, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x12, 0xfb, 0x01, 0x52, 0x69, - 0x6c, 0x6c, 0x20, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x20, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x61, 0x74, 0x69, - 0x63, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, - 0x52, 0x69, 0x6c, 0x6c, 0x20, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2c, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x20, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x73, 0x65, - 0x72, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2e, 0x20, 0x49, 0x74, 0x20, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2c, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x61, 0x73, - 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, - 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x65, 0x72, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x72, 0x33, 0x0a, 0x16, 0x52, 0x69, 0x6c, - 0x6c, 0x20, 0x41, 0x50, 0x49, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x64, 0x6f, 0x63, - 0x73, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x0a, 0x11, - 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x42, 0x08, 0x41, 0x70, 0x69, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x64, 0x61, - 0x74, 0x61, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, - 0x6e, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x76, 0x31, 0x3b, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x41, 0x58, 0xaa, 0x02, 0x0d, - 0x52, 0x69, 0x6c, 0x6c, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, - 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, - 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x52, 0x69, 0x6c, 0x6c, - 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x2d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xa3, + 0x01, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x65, 0x12, 0x97, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6e, 0x79, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6e, 0x79, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6e, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, 0x2a, 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x6e, 0x79, 0x12, 0xb1, + 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, + 0x12, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x7b, 0x6f, + 0x72, 0x67, 0x7d, 0x2f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x69, 0x73, 0x73, 0x75, + 0x65, 0x73, 0x42, 0xf7, 0x03, 0x92, 0x41, 0xc6, 0x02, 0x12, 0x8e, 0x02, 0x0a, 0x0e, 0x52, 0x69, + 0x6c, 0x6c, 0x20, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x12, 0xfb, 0x01, 0x52, + 0x69, 0x6c, 0x6c, 0x20, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x20, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x61, 0x74, + 0x69, 0x63, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x66, + 0x20, 0x52, 0x69, 0x6c, 0x6c, 0x20, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2c, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, + 0x20, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x73, + 0x65, 0x72, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2e, 0x20, 0x49, 0x74, 0x20, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2c, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x61, + 0x73, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, + 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x72, 0x33, 0x0a, 0x16, 0x52, 0x69, + 0x6c, 0x6c, 0x20, 0x41, 0x50, 0x49, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x64, 0x6f, + 0x63, 0x73, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x0a, + 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x42, 0x08, 0x41, 0x70, 0x69, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x64, + 0x61, 0x74, 0x61, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, + 0x65, 0x6e, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x76, 0x31, + 0x3b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x41, 0x58, 0xaa, 0x02, + 0x0d, 0x52, 0x69, 0x6c, 0x6c, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x56, 0x31, 0xca, 0x02, + 0x0d, 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x56, 0x31, 0xe2, 0x02, + 0x19, 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x56, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x52, 0x69, 0x6c, + 0x6c, 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -29613,969 +30746,1007 @@ func file_rill_admin_v1_api_proto_rawDescGZIP() []byte { return file_rill_admin_v1_api_proto_rawDescData } -var file_rill_admin_v1_api_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_rill_admin_v1_api_proto_msgTypes = make([]protoimpl.MessageInfo, 389) +var file_rill_admin_v1_api_proto_enumTypes = make([]protoimpl.EnumInfo, 8) +var file_rill_admin_v1_api_proto_msgTypes = make([]protoimpl.MessageInfo, 402) var file_rill_admin_v1_api_proto_goTypes = []any{ (GithubPermission)(0), // 0: rill.admin.v1.GithubPermission - (DeploymentStatus)(0), // 1: rill.admin.v1.DeploymentStatus - (BillingPlanType)(0), // 2: rill.admin.v1.BillingPlanType - (BillingIssueType)(0), // 3: rill.admin.v1.BillingIssueType - (BillingIssueLevel)(0), // 4: rill.admin.v1.BillingIssueLevel - (GetGithubPullRequestResponse_State)(0), // 5: rill.admin.v1.GetGithubPullRequestResponse.State - (*PingRequest)(nil), // 6: rill.admin.v1.PingRequest - (*PingResponse)(nil), // 7: rill.admin.v1.PingResponse - (*ListOrganizationsRequest)(nil), // 8: rill.admin.v1.ListOrganizationsRequest - (*ListOrganizationsResponse)(nil), // 9: rill.admin.v1.ListOrganizationsResponse - (*GetOrganizationRequest)(nil), // 10: rill.admin.v1.GetOrganizationRequest - (*GetOrganizationResponse)(nil), // 11: rill.admin.v1.GetOrganizationResponse - (*GetOrganizationNameForDomainRequest)(nil), // 12: rill.admin.v1.GetOrganizationNameForDomainRequest - (*GetOrganizationNameForDomainResponse)(nil), // 13: rill.admin.v1.GetOrganizationNameForDomainResponse - (*CreateOrganizationRequest)(nil), // 14: rill.admin.v1.CreateOrganizationRequest - (*CreateOrganizationResponse)(nil), // 15: rill.admin.v1.CreateOrganizationResponse - (*DeleteOrganizationRequest)(nil), // 16: rill.admin.v1.DeleteOrganizationRequest - (*DeleteOrganizationResponse)(nil), // 17: rill.admin.v1.DeleteOrganizationResponse - (*UpdateOrganizationRequest)(nil), // 18: rill.admin.v1.UpdateOrganizationRequest - (*UpdateOrganizationResponse)(nil), // 19: rill.admin.v1.UpdateOrganizationResponse - (*ListProjectsForOrganizationRequest)(nil), // 20: rill.admin.v1.ListProjectsForOrganizationRequest - (*ListDeploymentsRequest)(nil), // 21: rill.admin.v1.ListDeploymentsRequest - (*ListDeploymentsResponse)(nil), // 22: rill.admin.v1.ListDeploymentsResponse - (*CreateDeploymentRequest)(nil), // 23: rill.admin.v1.CreateDeploymentRequest - (*CreateDeploymentResponse)(nil), // 24: rill.admin.v1.CreateDeploymentResponse - (*GetDeploymentRequest)(nil), // 25: rill.admin.v1.GetDeploymentRequest - (*GetDeploymentResponse)(nil), // 26: rill.admin.v1.GetDeploymentResponse - (*StartDeploymentRequest)(nil), // 27: rill.admin.v1.StartDeploymentRequest - (*StartDeploymentResponse)(nil), // 28: rill.admin.v1.StartDeploymentResponse - (*StopDeploymentRequest)(nil), // 29: rill.admin.v1.StopDeploymentRequest - (*StopDeploymentResponse)(nil), // 30: rill.admin.v1.StopDeploymentResponse - (*DeleteDeploymentRequest)(nil), // 31: rill.admin.v1.DeleteDeploymentRequest - (*DeleteDeploymentResponse)(nil), // 32: rill.admin.v1.DeleteDeploymentResponse - (*ListProjectsForOrganizationResponse)(nil), // 33: rill.admin.v1.ListProjectsForOrganizationResponse - (*ListProjectsForOrganizationAndUserRequest)(nil), // 34: rill.admin.v1.ListProjectsForOrganizationAndUserRequest - (*ListProjectsForOrganizationAndUserResponse)(nil), // 35: rill.admin.v1.ListProjectsForOrganizationAndUserResponse - (*ListProjectsForFingerprintRequest)(nil), // 36: rill.admin.v1.ListProjectsForFingerprintRequest - (*ListProjectsForFingerprintResponse)(nil), // 37: rill.admin.v1.ListProjectsForFingerprintResponse - (*GetProjectRequest)(nil), // 38: rill.admin.v1.GetProjectRequest - (*GetProjectResponse)(nil), // 39: rill.admin.v1.GetProjectResponse - (*ListProjectsForUserByNameRequest)(nil), // 40: rill.admin.v1.ListProjectsForUserByNameRequest - (*ListProjectsForUserByNameResponse)(nil), // 41: rill.admin.v1.ListProjectsForUserByNameResponse - (*GetProjectByIDRequest)(nil), // 42: rill.admin.v1.GetProjectByIDRequest - (*GetProjectByIDResponse)(nil), // 43: rill.admin.v1.GetProjectByIDResponse - (*SearchProjectNamesRequest)(nil), // 44: rill.admin.v1.SearchProjectNamesRequest - (*SearchProjectNamesResponse)(nil), // 45: rill.admin.v1.SearchProjectNamesResponse - (*GetProjectVariablesRequest)(nil), // 46: rill.admin.v1.GetProjectVariablesRequest - (*GetProjectVariablesResponse)(nil), // 47: rill.admin.v1.GetProjectVariablesResponse - (*ProjectVariable)(nil), // 48: rill.admin.v1.ProjectVariable - (*UpdateProjectVariablesRequest)(nil), // 49: rill.admin.v1.UpdateProjectVariablesRequest - (*UpdateProjectVariablesResponse)(nil), // 50: rill.admin.v1.UpdateProjectVariablesResponse - (*SearchProjectUsersRequest)(nil), // 51: rill.admin.v1.SearchProjectUsersRequest - (*SearchProjectUsersResponse)(nil), // 52: rill.admin.v1.SearchProjectUsersResponse - (*GetDeploymentCredentialsRequest)(nil), // 53: rill.admin.v1.GetDeploymentCredentialsRequest - (*GetDeploymentCredentialsResponse)(nil), // 54: rill.admin.v1.GetDeploymentCredentialsResponse - (*GetIFrameRequest)(nil), // 55: rill.admin.v1.GetIFrameRequest - (*GetIFrameResponse)(nil), // 56: rill.admin.v1.GetIFrameResponse - (*ListServicesRequest)(nil), // 57: rill.admin.v1.ListServicesRequest - (*ListServicesResponse)(nil), // 58: rill.admin.v1.ListServicesResponse - (*ListProjectMemberServicesRequest)(nil), // 59: rill.admin.v1.ListProjectMemberServicesRequest - (*ListProjectMemberServicesResponse)(nil), // 60: rill.admin.v1.ListProjectMemberServicesResponse - (*CreateServiceRequest)(nil), // 61: rill.admin.v1.CreateServiceRequest - (*CreateServiceResponse)(nil), // 62: rill.admin.v1.CreateServiceResponse - (*GetServiceRequest)(nil), // 63: rill.admin.v1.GetServiceRequest - (*GetServiceResponse)(nil), // 64: rill.admin.v1.GetServiceResponse - (*UpdateServiceRequest)(nil), // 65: rill.admin.v1.UpdateServiceRequest - (*UpdateServiceResponse)(nil), // 66: rill.admin.v1.UpdateServiceResponse - (*SetOrganizationMemberServiceRoleRequest)(nil), // 67: rill.admin.v1.SetOrganizationMemberServiceRoleRequest - (*SetOrganizationMemberServiceRoleResponse)(nil), // 68: rill.admin.v1.SetOrganizationMemberServiceRoleResponse - (*RemoveOrganizationMemberServiceRequest)(nil), // 69: rill.admin.v1.RemoveOrganizationMemberServiceRequest - (*RemoveOrganizationMemberServiceResponse)(nil), // 70: rill.admin.v1.RemoveOrganizationMemberServiceResponse - (*RemoveProjectMemberServiceRequest)(nil), // 71: rill.admin.v1.RemoveProjectMemberServiceRequest - (*RemoveProjectMemberServiceResponse)(nil), // 72: rill.admin.v1.RemoveProjectMemberServiceResponse - (*SetProjectMemberServiceRoleRequest)(nil), // 73: rill.admin.v1.SetProjectMemberServiceRoleRequest - (*SetProjectMemberServiceRoleResponse)(nil), // 74: rill.admin.v1.SetProjectMemberServiceRoleResponse - (*DeleteServiceRequest)(nil), // 75: rill.admin.v1.DeleteServiceRequest - (*DeleteServiceResponse)(nil), // 76: rill.admin.v1.DeleteServiceResponse - (*CreateProjectRequest)(nil), // 77: rill.admin.v1.CreateProjectRequest - (*CreateProjectResponse)(nil), // 78: rill.admin.v1.CreateProjectResponse - (*DeleteProjectRequest)(nil), // 79: rill.admin.v1.DeleteProjectRequest - (*DeleteProjectResponse)(nil), // 80: rill.admin.v1.DeleteProjectResponse - (*UpdateProjectRequest)(nil), // 81: rill.admin.v1.UpdateProjectRequest - (*UpdateProjectResponse)(nil), // 82: rill.admin.v1.UpdateProjectResponse - (*CreateAssetRequest)(nil), // 83: rill.admin.v1.CreateAssetRequest - (*CreateAssetResponse)(nil), // 84: rill.admin.v1.CreateAssetResponse - (*RedeployProjectRequest)(nil), // 85: rill.admin.v1.RedeployProjectRequest - (*RedeployProjectResponse)(nil), // 86: rill.admin.v1.RedeployProjectResponse - (*HibernateProjectRequest)(nil), // 87: rill.admin.v1.HibernateProjectRequest - (*HibernateProjectResponse)(nil), // 88: rill.admin.v1.HibernateProjectResponse - (*TriggerReconcileRequest)(nil), // 89: rill.admin.v1.TriggerReconcileRequest - (*TriggerReconcileResponse)(nil), // 90: rill.admin.v1.TriggerReconcileResponse - (*TriggerRefreshSourcesRequest)(nil), // 91: rill.admin.v1.TriggerRefreshSourcesRequest - (*TriggerRefreshSourcesResponse)(nil), // 92: rill.admin.v1.TriggerRefreshSourcesResponse - (*TriggerRedeployRequest)(nil), // 93: rill.admin.v1.TriggerRedeployRequest - (*TriggerRedeployResponse)(nil), // 94: rill.admin.v1.TriggerRedeployResponse - (*ProvisionRequest)(nil), // 95: rill.admin.v1.ProvisionRequest - (*ProvisionResponse)(nil), // 96: rill.admin.v1.ProvisionResponse - (*GetDeploymentConfigRequest)(nil), // 97: rill.admin.v1.GetDeploymentConfigRequest - (*GetDeploymentConfigResponse)(nil), // 98: rill.admin.v1.GetDeploymentConfigResponse - (*ListRolesRequest)(nil), // 99: rill.admin.v1.ListRolesRequest - (*ListRolesResponse)(nil), // 100: rill.admin.v1.ListRolesResponse - (*ListOrganizationMemberUsersRequest)(nil), // 101: rill.admin.v1.ListOrganizationMemberUsersRequest - (*ListOrganizationMemberUsersResponse)(nil), // 102: rill.admin.v1.ListOrganizationMemberUsersResponse - (*ListOrganizationInvitesRequest)(nil), // 103: rill.admin.v1.ListOrganizationInvitesRequest - (*ListOrganizationInvitesResponse)(nil), // 104: rill.admin.v1.ListOrganizationInvitesResponse - (*AddOrganizationMemberUserRequest)(nil), // 105: rill.admin.v1.AddOrganizationMemberUserRequest - (*AddOrganizationMemberUserResponse)(nil), // 106: rill.admin.v1.AddOrganizationMemberUserResponse - (*RemoveOrganizationMemberUserRequest)(nil), // 107: rill.admin.v1.RemoveOrganizationMemberUserRequest - (*RemoveOrganizationMemberUserResponse)(nil), // 108: rill.admin.v1.RemoveOrganizationMemberUserResponse - (*LeaveOrganizationRequest)(nil), // 109: rill.admin.v1.LeaveOrganizationRequest - (*LeaveOrganizationResponse)(nil), // 110: rill.admin.v1.LeaveOrganizationResponse - (*SetOrganizationMemberUserRoleRequest)(nil), // 111: rill.admin.v1.SetOrganizationMemberUserRoleRequest - (*SetOrganizationMemberUserRoleResponse)(nil), // 112: rill.admin.v1.SetOrganizationMemberUserRoleResponse - (*GetOrganizationMemberUserRequest)(nil), // 113: rill.admin.v1.GetOrganizationMemberUserRequest - (*GetOrganizationMemberUserResponse)(nil), // 114: rill.admin.v1.GetOrganizationMemberUserResponse - (*GetProjectMemberUserRequest)(nil), // 115: rill.admin.v1.GetProjectMemberUserRequest - (*GetProjectMemberUserResponse)(nil), // 116: rill.admin.v1.GetProjectMemberUserResponse - (*ListUsergroupsForProjectAndUserRequest)(nil), // 117: rill.admin.v1.ListUsergroupsForProjectAndUserRequest - (*ListUsergroupsForProjectAndUserResponse)(nil), // 118: rill.admin.v1.ListUsergroupsForProjectAndUserResponse - (*UpdateOrganizationMemberUserAttributesRequest)(nil), // 119: rill.admin.v1.UpdateOrganizationMemberUserAttributesRequest - (*UpdateOrganizationMemberUserAttributesResponse)(nil), // 120: rill.admin.v1.UpdateOrganizationMemberUserAttributesResponse - (*ListSuperusersRequest)(nil), // 121: rill.admin.v1.ListSuperusersRequest - (*ListSuperusersResponse)(nil), // 122: rill.admin.v1.ListSuperusersResponse - (*SetSuperuserRequest)(nil), // 123: rill.admin.v1.SetSuperuserRequest - (*SetSuperuserResponse)(nil), // 124: rill.admin.v1.SetSuperuserResponse - (*SudoGetResourceRequest)(nil), // 125: rill.admin.v1.SudoGetResourceRequest - (*SudoGetResourceResponse)(nil), // 126: rill.admin.v1.SudoGetResourceResponse - (*SudoUpdateOrganizationQuotasRequest)(nil), // 127: rill.admin.v1.SudoUpdateOrganizationQuotasRequest - (*SudoUpdateOrganizationQuotasResponse)(nil), // 128: rill.admin.v1.SudoUpdateOrganizationQuotasResponse - (*SudoUpdateOrganizationBillingCustomerRequest)(nil), // 129: rill.admin.v1.SudoUpdateOrganizationBillingCustomerRequest - (*SudoUpdateOrganizationBillingCustomerResponse)(nil), // 130: rill.admin.v1.SudoUpdateOrganizationBillingCustomerResponse - (*SudoGrantTrialCreditsRequest)(nil), // 131: rill.admin.v1.SudoGrantTrialCreditsRequest - (*SudoGrantTrialCreditsResponse)(nil), // 132: rill.admin.v1.SudoGrantTrialCreditsResponse - (*SudoReportUsageRequest)(nil), // 133: rill.admin.v1.SudoReportUsageRequest - (*SudoReportUsageResponse)(nil), // 134: rill.admin.v1.SudoReportUsageResponse - (*SudoUpdateOrganizationCustomDomainRequest)(nil), // 135: rill.admin.v1.SudoUpdateOrganizationCustomDomainRequest - (*SudoUpdateOrganizationCustomDomainResponse)(nil), // 136: rill.admin.v1.SudoUpdateOrganizationCustomDomainResponse - (*SudoUpdateUserQuotasRequest)(nil), // 137: rill.admin.v1.SudoUpdateUserQuotasRequest - (*SudoUpdateUserQuotasResponse)(nil), // 138: rill.admin.v1.SudoUpdateUserQuotasResponse - (*SudoUpdateAnnotationsRequest)(nil), // 139: rill.admin.v1.SudoUpdateAnnotationsRequest - (*SudoUpdateAnnotationsResponse)(nil), // 140: rill.admin.v1.SudoUpdateAnnotationsResponse - (*SudoIssueRuntimeManagerTokenRequest)(nil), // 141: rill.admin.v1.SudoIssueRuntimeManagerTokenRequest - (*SudoIssueRuntimeManagerTokenResponse)(nil), // 142: rill.admin.v1.SudoIssueRuntimeManagerTokenResponse - (*SudoDeleteOrganizationBillingIssueRequest)(nil), // 143: rill.admin.v1.SudoDeleteOrganizationBillingIssueRequest - (*SudoDeleteOrganizationBillingIssueResponse)(nil), // 144: rill.admin.v1.SudoDeleteOrganizationBillingIssueResponse - (*SudoTriggerBillingRepairRequest)(nil), // 145: rill.admin.v1.SudoTriggerBillingRepairRequest - (*SudoTriggerBillingRepairResponse)(nil), // 146: rill.admin.v1.SudoTriggerBillingRepairResponse - (*ListProjectMemberUsersRequest)(nil), // 147: rill.admin.v1.ListProjectMemberUsersRequest - (*ListProjectMemberUsersResponse)(nil), // 148: rill.admin.v1.ListProjectMemberUsersResponse - (*ListProjectInvitesRequest)(nil), // 149: rill.admin.v1.ListProjectInvitesRequest - (*ListProjectInvitesResponse)(nil), // 150: rill.admin.v1.ListProjectInvitesResponse - (*AddProjectMemberUserRequest)(nil), // 151: rill.admin.v1.AddProjectMemberUserRequest - (*AddProjectMemberUserResponse)(nil), // 152: rill.admin.v1.AddProjectMemberUserResponse - (*RemoveProjectMemberUserRequest)(nil), // 153: rill.admin.v1.RemoveProjectMemberUserRequest - (*RemoveProjectMemberUserResponse)(nil), // 154: rill.admin.v1.RemoveProjectMemberUserResponse - (*SetProjectMemberUserRoleRequest)(nil), // 155: rill.admin.v1.SetProjectMemberUserRoleRequest - (*SetProjectMemberUserRoleResponse)(nil), // 156: rill.admin.v1.SetProjectMemberUserRoleResponse - (*ListUsergroupsForOrganizationAndUserRequest)(nil), // 157: rill.admin.v1.ListUsergroupsForOrganizationAndUserRequest - (*ListUsergroupsForOrganizationAndUserResponse)(nil), // 158: rill.admin.v1.ListUsergroupsForOrganizationAndUserResponse - (*CreateUsergroupRequest)(nil), // 159: rill.admin.v1.CreateUsergroupRequest - (*CreateUsergroupResponse)(nil), // 160: rill.admin.v1.CreateUsergroupResponse - (*GetUsergroupRequest)(nil), // 161: rill.admin.v1.GetUsergroupRequest - (*GetUsergroupResponse)(nil), // 162: rill.admin.v1.GetUsergroupResponse - (*UpdateUsergroupRequest)(nil), // 163: rill.admin.v1.UpdateUsergroupRequest - (*UpdateUsergroupResponse)(nil), // 164: rill.admin.v1.UpdateUsergroupResponse - (*ListOrganizationMemberUsergroupsRequest)(nil), // 165: rill.admin.v1.ListOrganizationMemberUsergroupsRequest - (*ListOrganizationMemberUsergroupsResponse)(nil), // 166: rill.admin.v1.ListOrganizationMemberUsergroupsResponse - (*ListProjectMemberUsergroupsRequest)(nil), // 167: rill.admin.v1.ListProjectMemberUsergroupsRequest - (*ListProjectMemberUsergroupsResponse)(nil), // 168: rill.admin.v1.ListProjectMemberUsergroupsResponse - (*DeleteUsergroupRequest)(nil), // 169: rill.admin.v1.DeleteUsergroupRequest - (*DeleteUsergroupResponse)(nil), // 170: rill.admin.v1.DeleteUsergroupResponse - (*AddOrganizationMemberUsergroupRequest)(nil), // 171: rill.admin.v1.AddOrganizationMemberUsergroupRequest - (*AddOrganizationMemberUsergroupResponse)(nil), // 172: rill.admin.v1.AddOrganizationMemberUsergroupResponse - (*SetOrganizationMemberUsergroupRoleRequest)(nil), // 173: rill.admin.v1.SetOrganizationMemberUsergroupRoleRequest - (*SetOrganizationMemberUsergroupRoleResponse)(nil), // 174: rill.admin.v1.SetOrganizationMemberUsergroupRoleResponse - (*RemoveOrganizationMemberUsergroupRequest)(nil), // 175: rill.admin.v1.RemoveOrganizationMemberUsergroupRequest - (*RemoveOrganizationMemberUsergroupResponse)(nil), // 176: rill.admin.v1.RemoveOrganizationMemberUsergroupResponse - (*AddProjectMemberUsergroupRequest)(nil), // 177: rill.admin.v1.AddProjectMemberUsergroupRequest - (*AddProjectMemberUsergroupResponse)(nil), // 178: rill.admin.v1.AddProjectMemberUsergroupResponse - (*SetProjectMemberUsergroupRoleRequest)(nil), // 179: rill.admin.v1.SetProjectMemberUsergroupRoleRequest - (*SetProjectMemberUsergroupRoleResponse)(nil), // 180: rill.admin.v1.SetProjectMemberUsergroupRoleResponse - (*RemoveProjectMemberUsergroupRequest)(nil), // 181: rill.admin.v1.RemoveProjectMemberUsergroupRequest - (*RemoveProjectMemberUsergroupResponse)(nil), // 182: rill.admin.v1.RemoveProjectMemberUsergroupResponse - (*AddUsergroupMemberUserRequest)(nil), // 183: rill.admin.v1.AddUsergroupMemberUserRequest - (*AddUsergroupMemberUserResponse)(nil), // 184: rill.admin.v1.AddUsergroupMemberUserResponse - (*ListUsergroupMemberUsersRequest)(nil), // 185: rill.admin.v1.ListUsergroupMemberUsersRequest - (*ListUsergroupMemberUsersResponse)(nil), // 186: rill.admin.v1.ListUsergroupMemberUsersResponse - (*RemoveUsergroupMemberUserRequest)(nil), // 187: rill.admin.v1.RemoveUsergroupMemberUserRequest - (*RemoveUsergroupMemberUserResponse)(nil), // 188: rill.admin.v1.RemoveUsergroupMemberUserResponse - (*UserPreferences)(nil), // 189: rill.admin.v1.UserPreferences - (*UpdateUserPreferencesRequest)(nil), // 190: rill.admin.v1.UpdateUserPreferencesRequest - (*UpdateUserPreferencesResponse)(nil), // 191: rill.admin.v1.UpdateUserPreferencesResponse - (*GetUserRequest)(nil), // 192: rill.admin.v1.GetUserRequest - (*GetUserResponse)(nil), // 193: rill.admin.v1.GetUserResponse - (*GetCurrentUserRequest)(nil), // 194: rill.admin.v1.GetCurrentUserRequest - (*GetCurrentUserResponse)(nil), // 195: rill.admin.v1.GetCurrentUserResponse - (*DeleteUserRequest)(nil), // 196: rill.admin.v1.DeleteUserRequest - (*DeleteUserResponse)(nil), // 197: rill.admin.v1.DeleteUserResponse - (*ListUserAuthTokensRequest)(nil), // 198: rill.admin.v1.ListUserAuthTokensRequest - (*ListUserAuthTokensResponse)(nil), // 199: rill.admin.v1.ListUserAuthTokensResponse - (*IssueUserAuthTokenRequest)(nil), // 200: rill.admin.v1.IssueUserAuthTokenRequest - (*IssueUserAuthTokenResponse)(nil), // 201: rill.admin.v1.IssueUserAuthTokenResponse - (*RevokeUserAuthTokenRequest)(nil), // 202: rill.admin.v1.RevokeUserAuthTokenRequest - (*RevokeUserAuthTokenResponse)(nil), // 203: rill.admin.v1.RevokeUserAuthTokenResponse - (*RevokeAllUserAuthTokensRequest)(nil), // 204: rill.admin.v1.RevokeAllUserAuthTokensRequest - (*RevokeAllUserAuthTokensResponse)(nil), // 205: rill.admin.v1.RevokeAllUserAuthTokensResponse - (*RevokeRepresentativeAuthTokensRequest)(nil), // 206: rill.admin.v1.RevokeRepresentativeAuthTokensRequest - (*RevokeRepresentativeAuthTokensResponse)(nil), // 207: rill.admin.v1.RevokeRepresentativeAuthTokensResponse - (*IssueRepresentativeAuthTokenRequest)(nil), // 208: rill.admin.v1.IssueRepresentativeAuthTokenRequest - (*IssueRepresentativeAuthTokenResponse)(nil), // 209: rill.admin.v1.IssueRepresentativeAuthTokenResponse - (*RevokeCurrentAuthTokenRequest)(nil), // 210: rill.admin.v1.RevokeCurrentAuthTokenRequest - (*RevokeCurrentAuthTokenResponse)(nil), // 211: rill.admin.v1.RevokeCurrentAuthTokenResponse - (*ListBookmarksRequest)(nil), // 212: rill.admin.v1.ListBookmarksRequest - (*ListBookmarksResponse)(nil), // 213: rill.admin.v1.ListBookmarksResponse - (*GetBookmarkRequest)(nil), // 214: rill.admin.v1.GetBookmarkRequest - (*GetBookmarkResponse)(nil), // 215: rill.admin.v1.GetBookmarkResponse - (*CreateBookmarkRequest)(nil), // 216: rill.admin.v1.CreateBookmarkRequest - (*CreateBookmarkResponse)(nil), // 217: rill.admin.v1.CreateBookmarkResponse - (*UpdateBookmarkRequest)(nil), // 218: rill.admin.v1.UpdateBookmarkRequest - (*UpdateBookmarkResponse)(nil), // 219: rill.admin.v1.UpdateBookmarkResponse - (*RemoveBookmarkRequest)(nil), // 220: rill.admin.v1.RemoveBookmarkRequest - (*RemoveBookmarkResponse)(nil), // 221: rill.admin.v1.RemoveBookmarkResponse - (*SearchUsersRequest)(nil), // 222: rill.admin.v1.SearchUsersRequest - (*SearchUsersResponse)(nil), // 223: rill.admin.v1.SearchUsersResponse - (*RevokeServiceAuthTokenRequest)(nil), // 224: rill.admin.v1.RevokeServiceAuthTokenRequest - (*RevokeServiceAuthTokenResponse)(nil), // 225: rill.admin.v1.RevokeServiceAuthTokenResponse - (*IssueServiceAuthTokenRequest)(nil), // 226: rill.admin.v1.IssueServiceAuthTokenRequest - (*IssueServiceAuthTokenResponse)(nil), // 227: rill.admin.v1.IssueServiceAuthTokenResponse - (*ListServiceAuthTokensRequest)(nil), // 228: rill.admin.v1.ListServiceAuthTokensRequest - (*ListServiceAuthTokensResponse)(nil), // 229: rill.admin.v1.ListServiceAuthTokensResponse - (*IssueMagicAuthTokenRequest)(nil), // 230: rill.admin.v1.IssueMagicAuthTokenRequest - (*ResourceName)(nil), // 231: rill.admin.v1.ResourceName - (*IssueMagicAuthTokenResponse)(nil), // 232: rill.admin.v1.IssueMagicAuthTokenResponse - (*ListMagicAuthTokensRequest)(nil), // 233: rill.admin.v1.ListMagicAuthTokensRequest - (*ListMagicAuthTokensResponse)(nil), // 234: rill.admin.v1.ListMagicAuthTokensResponse - (*GetCurrentMagicAuthTokenRequest)(nil), // 235: rill.admin.v1.GetCurrentMagicAuthTokenRequest - (*GetCurrentMagicAuthTokenResponse)(nil), // 236: rill.admin.v1.GetCurrentMagicAuthTokenResponse - (*RevokeMagicAuthTokenRequest)(nil), // 237: rill.admin.v1.RevokeMagicAuthTokenRequest - (*RevokeMagicAuthTokenResponse)(nil), // 238: rill.admin.v1.RevokeMagicAuthTokenResponse - (*GetGithubRepoStatusRequest)(nil), // 239: rill.admin.v1.GetGithubRepoStatusRequest - (*GetGithubRepoStatusResponse)(nil), // 240: rill.admin.v1.GetGithubRepoStatusResponse - (*GetGithubUserStatusRequest)(nil), // 241: rill.admin.v1.GetGithubUserStatusRequest - (*GetGithubUserStatusResponse)(nil), // 242: rill.admin.v1.GetGithubUserStatusResponse - (*ListGithubUserReposRequest)(nil), // 243: rill.admin.v1.ListGithubUserReposRequest - (*ListGithubUserReposResponse)(nil), // 244: rill.admin.v1.ListGithubUserReposResponse - (*CreateGithubPullRequestRequest)(nil), // 245: rill.admin.v1.CreateGithubPullRequestRequest - (*CreateGithubPullRequestResponse)(nil), // 246: rill.admin.v1.CreateGithubPullRequestResponse - (*GetGithubPullRequestRequest)(nil), // 247: rill.admin.v1.GetGithubPullRequestRequest - (*GetGithubPullRequestResponse)(nil), // 248: rill.admin.v1.GetGithubPullRequestResponse - (*ConnectProjectToGithubRequest)(nil), // 249: rill.admin.v1.ConnectProjectToGithubRequest - (*ConnectProjectToGithubResponse)(nil), // 250: rill.admin.v1.ConnectProjectToGithubResponse - (*CreateManagedGitRepoRequest)(nil), // 251: rill.admin.v1.CreateManagedGitRepoRequest - (*CreateManagedGitRepoResponse)(nil), // 252: rill.admin.v1.CreateManagedGitRepoResponse - (*GetCloneCredentialsRequest)(nil), // 253: rill.admin.v1.GetCloneCredentialsRequest - (*GetCloneCredentialsResponse)(nil), // 254: rill.admin.v1.GetCloneCredentialsResponse - (*CreateWhitelistedDomainRequest)(nil), // 255: rill.admin.v1.CreateWhitelistedDomainRequest - (*CreateWhitelistedDomainResponse)(nil), // 256: rill.admin.v1.CreateWhitelistedDomainResponse - (*RemoveWhitelistedDomainRequest)(nil), // 257: rill.admin.v1.RemoveWhitelistedDomainRequest - (*RemoveWhitelistedDomainResponse)(nil), // 258: rill.admin.v1.RemoveWhitelistedDomainResponse - (*ListWhitelistedDomainsRequest)(nil), // 259: rill.admin.v1.ListWhitelistedDomainsRequest - (*ListWhitelistedDomainsResponse)(nil), // 260: rill.admin.v1.ListWhitelistedDomainsResponse - (*CreateProjectWhitelistedDomainRequest)(nil), // 261: rill.admin.v1.CreateProjectWhitelistedDomainRequest - (*CreateProjectWhitelistedDomainResponse)(nil), // 262: rill.admin.v1.CreateProjectWhitelistedDomainResponse - (*RemoveProjectWhitelistedDomainRequest)(nil), // 263: rill.admin.v1.RemoveProjectWhitelistedDomainRequest - (*RemoveProjectWhitelistedDomainResponse)(nil), // 264: rill.admin.v1.RemoveProjectWhitelistedDomainResponse - (*ListProjectWhitelistedDomainsRequest)(nil), // 265: rill.admin.v1.ListProjectWhitelistedDomainsRequest - (*ListProjectWhitelistedDomainsResponse)(nil), // 266: rill.admin.v1.ListProjectWhitelistedDomainsResponse - (*GetRepoMetaRequest)(nil), // 267: rill.admin.v1.GetRepoMetaRequest - (*GetRepoMetaResponse)(nil), // 268: rill.admin.v1.GetRepoMetaResponse - (*PullVirtualRepoRequest)(nil), // 269: rill.admin.v1.PullVirtualRepoRequest - (*PullVirtualRepoResponse)(nil), // 270: rill.admin.v1.PullVirtualRepoResponse - (*GetVirtualFileRequest)(nil), // 271: rill.admin.v1.GetVirtualFileRequest - (*GetVirtualFileResponse)(nil), // 272: rill.admin.v1.GetVirtualFileResponse - (*DeleteVirtualFileRequest)(nil), // 273: rill.admin.v1.DeleteVirtualFileRequest - (*DeleteVirtualFileResponse)(nil), // 274: rill.admin.v1.DeleteVirtualFileResponse - (*GetReportMetaRequest)(nil), // 275: rill.admin.v1.GetReportMetaRequest - (*GetReportMetaResponse)(nil), // 276: rill.admin.v1.GetReportMetaResponse - (*GetAlertMetaRequest)(nil), // 277: rill.admin.v1.GetAlertMetaRequest - (*GetAlertMetaResponse)(nil), // 278: rill.admin.v1.GetAlertMetaResponse - (*CreateReportRequest)(nil), // 279: rill.admin.v1.CreateReportRequest - (*CreateReportResponse)(nil), // 280: rill.admin.v1.CreateReportResponse - (*EditReportRequest)(nil), // 281: rill.admin.v1.EditReportRequest - (*EditReportResponse)(nil), // 282: rill.admin.v1.EditReportResponse - (*UnsubscribeReportRequest)(nil), // 283: rill.admin.v1.UnsubscribeReportRequest - (*UnsubscribeReportResponse)(nil), // 284: rill.admin.v1.UnsubscribeReportResponse - (*DeleteReportRequest)(nil), // 285: rill.admin.v1.DeleteReportRequest - (*DeleteReportResponse)(nil), // 286: rill.admin.v1.DeleteReportResponse - (*TriggerReportRequest)(nil), // 287: rill.admin.v1.TriggerReportRequest - (*TriggerReportResponse)(nil), // 288: rill.admin.v1.TriggerReportResponse - (*GenerateReportYAMLRequest)(nil), // 289: rill.admin.v1.GenerateReportYAMLRequest - (*GenerateReportYAMLResponse)(nil), // 290: rill.admin.v1.GenerateReportYAMLResponse - (*CreateAlertRequest)(nil), // 291: rill.admin.v1.CreateAlertRequest - (*CreateAlertResponse)(nil), // 292: rill.admin.v1.CreateAlertResponse - (*EditAlertRequest)(nil), // 293: rill.admin.v1.EditAlertRequest - (*EditAlertResponse)(nil), // 294: rill.admin.v1.EditAlertResponse - (*UnsubscribeAlertRequest)(nil), // 295: rill.admin.v1.UnsubscribeAlertRequest - (*UnsubscribeAlertResponse)(nil), // 296: rill.admin.v1.UnsubscribeAlertResponse - (*DeleteAlertRequest)(nil), // 297: rill.admin.v1.DeleteAlertRequest - (*DeleteAlertResponse)(nil), // 298: rill.admin.v1.DeleteAlertResponse - (*GenerateAlertYAMLRequest)(nil), // 299: rill.admin.v1.GenerateAlertYAMLRequest - (*GenerateAlertYAMLResponse)(nil), // 300: rill.admin.v1.GenerateAlertYAMLResponse - (*GetAlertYAMLRequest)(nil), // 301: rill.admin.v1.GetAlertYAMLRequest - (*GetAlertYAMLResponse)(nil), // 302: rill.admin.v1.GetAlertYAMLResponse - (*GetBillingSubscriptionRequest)(nil), // 303: rill.admin.v1.GetBillingSubscriptionRequest - (*GetBillingSubscriptionResponse)(nil), // 304: rill.admin.v1.GetBillingSubscriptionResponse - (*UpdateBillingSubscriptionRequest)(nil), // 305: rill.admin.v1.UpdateBillingSubscriptionRequest - (*UpdateBillingSubscriptionResponse)(nil), // 306: rill.admin.v1.UpdateBillingSubscriptionResponse - (*CancelBillingSubscriptionRequest)(nil), // 307: rill.admin.v1.CancelBillingSubscriptionRequest - (*CancelBillingSubscriptionResponse)(nil), // 308: rill.admin.v1.CancelBillingSubscriptionResponse - (*RenewBillingSubscriptionRequest)(nil), // 309: rill.admin.v1.RenewBillingSubscriptionRequest - (*RenewBillingSubscriptionResponse)(nil), // 310: rill.admin.v1.RenewBillingSubscriptionResponse - (*GetPaymentsPortalURLRequest)(nil), // 311: rill.admin.v1.GetPaymentsPortalURLRequest - (*GetPaymentsPortalURLResponse)(nil), // 312: rill.admin.v1.GetPaymentsPortalURLResponse - (*GetBillingCreditBalanceRequest)(nil), // 313: rill.admin.v1.GetBillingCreditBalanceRequest - (*GetBillingCreditBalanceResponse)(nil), // 314: rill.admin.v1.GetBillingCreditBalanceResponse - (*ListPublicBillingPlansRequest)(nil), // 315: rill.admin.v1.ListPublicBillingPlansRequest - (*ListPublicBillingPlansResponse)(nil), // 316: rill.admin.v1.ListPublicBillingPlansResponse - (*GetBillingProjectCredentialsRequest)(nil), // 317: rill.admin.v1.GetBillingProjectCredentialsRequest - (*GetBillingProjectCredentialsResponse)(nil), // 318: rill.admin.v1.GetBillingProjectCredentialsResponse - (*TelemetryRequest)(nil), // 319: rill.admin.v1.TelemetryRequest - (*TelemetryResponse)(nil), // 320: rill.admin.v1.TelemetryResponse - (*RequestProjectAccessRequest)(nil), // 321: rill.admin.v1.RequestProjectAccessRequest - (*RequestProjectAccessResponse)(nil), // 322: rill.admin.v1.RequestProjectAccessResponse - (*GetProjectAccessRequestRequest)(nil), // 323: rill.admin.v1.GetProjectAccessRequestRequest - (*GetProjectAccessRequestResponse)(nil), // 324: rill.admin.v1.GetProjectAccessRequestResponse - (*ApproveProjectAccessRequest)(nil), // 325: rill.admin.v1.ApproveProjectAccessRequest - (*ApproveProjectAccessResponse)(nil), // 326: rill.admin.v1.ApproveProjectAccessResponse - (*DenyProjectAccessRequest)(nil), // 327: rill.admin.v1.DenyProjectAccessRequest - (*DenyProjectAccessResponse)(nil), // 328: rill.admin.v1.DenyProjectAccessResponse - (*ListOrganizationBillingIssuesRequest)(nil), // 329: rill.admin.v1.ListOrganizationBillingIssuesRequest - (*ListOrganizationBillingIssuesResponse)(nil), // 330: rill.admin.v1.ListOrganizationBillingIssuesResponse - (*User)(nil), // 331: rill.admin.v1.User - (*Service)(nil), // 332: rill.admin.v1.Service - (*OrganizationMemberService)(nil), // 333: rill.admin.v1.OrganizationMemberService - (*ProjectMemberService)(nil), // 334: rill.admin.v1.ProjectMemberService - (*Organization)(nil), // 335: rill.admin.v1.Organization - (*Subscription)(nil), // 336: rill.admin.v1.Subscription - (*UserQuotas)(nil), // 337: rill.admin.v1.UserQuotas - (*OrganizationQuotas)(nil), // 338: rill.admin.v1.OrganizationQuotas - (*Project)(nil), // 339: rill.admin.v1.Project - (*Deployment)(nil), // 340: rill.admin.v1.Deployment - (*ProvisionerResource)(nil), // 341: rill.admin.v1.ProvisionerResource - (*OrganizationPermissions)(nil), // 342: rill.admin.v1.OrganizationPermissions - (*ProjectPermissions)(nil), // 343: rill.admin.v1.ProjectPermissions - (*OrganizationRole)(nil), // 344: rill.admin.v1.OrganizationRole - (*ProjectRole)(nil), // 345: rill.admin.v1.ProjectRole - (*OrganizationMemberUser)(nil), // 346: rill.admin.v1.OrganizationMemberUser - (*ProjectMemberUser)(nil), // 347: rill.admin.v1.ProjectMemberUser - (*UsergroupMemberUser)(nil), // 348: rill.admin.v1.UsergroupMemberUser - (*OrganizationInvite)(nil), // 349: rill.admin.v1.OrganizationInvite - (*ProjectInvite)(nil), // 350: rill.admin.v1.ProjectInvite - (*WhitelistedDomain)(nil), // 351: rill.admin.v1.WhitelistedDomain - (*Bookmark)(nil), // 352: rill.admin.v1.Bookmark - (*ServiceToken)(nil), // 353: rill.admin.v1.ServiceToken - (*UserAuthToken)(nil), // 354: rill.admin.v1.UserAuthToken - (*MagicAuthToken)(nil), // 355: rill.admin.v1.MagicAuthToken - (*VirtualFile)(nil), // 356: rill.admin.v1.VirtualFile - (*ReportOptions)(nil), // 357: rill.admin.v1.ReportOptions - (*AlertOptions)(nil), // 358: rill.admin.v1.AlertOptions - (*BillingPlan)(nil), // 359: rill.admin.v1.BillingPlan - (*Quotas)(nil), // 360: rill.admin.v1.Quotas - (*Usergroup)(nil), // 361: rill.admin.v1.Usergroup - (*MemberUsergroup)(nil), // 362: rill.admin.v1.MemberUsergroup - (*BillingIssue)(nil), // 363: rill.admin.v1.BillingIssue - (*BillingIssueMetadata)(nil), // 364: rill.admin.v1.BillingIssueMetadata - (*BillingIssueMetadataOnTrial)(nil), // 365: rill.admin.v1.BillingIssueMetadataOnTrial - (*BillingIssueMetadataTrialEnded)(nil), // 366: rill.admin.v1.BillingIssueMetadataTrialEnded - (*BillingIssueMetadataNoPaymentMethod)(nil), // 367: rill.admin.v1.BillingIssueMetadataNoPaymentMethod - (*BillingIssueMetadataNoBillableAddress)(nil), // 368: rill.admin.v1.BillingIssueMetadataNoBillableAddress - (*BillingIssueMetadataPaymentFailed)(nil), // 369: rill.admin.v1.BillingIssueMetadataPaymentFailed - (*BillingIssueMetadataPaymentFailedMeta)(nil), // 370: rill.admin.v1.BillingIssueMetadataPaymentFailedMeta - (*BillingIssueMetadataSubscriptionCancelled)(nil), // 371: rill.admin.v1.BillingIssueMetadataSubscriptionCancelled - (*BillingIssueMetadataNeverSubscribed)(nil), // 372: rill.admin.v1.BillingIssueMetadataNeverSubscribed - (*BillingIssueMetadataOnCreditTrial)(nil), // 373: rill.admin.v1.BillingIssueMetadataOnCreditTrial - (*BillingIssueMetadataTrialCreditsDepleted)(nil), // 374: rill.admin.v1.BillingIssueMetadataTrialCreditsDepleted - nil, // 375: rill.admin.v1.ListProjectsForOrganizationAndUserResponse.ProjectRolesEntry - nil, // 376: rill.admin.v1.SearchProjectNamesRequest.AnnotationsEntry - nil, // 377: rill.admin.v1.GetProjectVariablesResponse.VariablesMapEntry - nil, // 378: rill.admin.v1.UpdateProjectVariablesRequest.VariablesEntry - nil, // 379: rill.admin.v1.GetIFrameRequest.QueryEntry - nil, // 380: rill.admin.v1.CreateAssetResponse.SigningHeadersEntry - nil, // 381: rill.admin.v1.GetDeploymentConfigResponse.VariablesLegacyEntry - nil, // 382: rill.admin.v1.GetDeploymentConfigResponse.AnnotationsEntry - nil, // 383: rill.admin.v1.GetDeploymentConfigResponse.SystemVariablesEntry - nil, // 384: rill.admin.v1.SudoUpdateAnnotationsRequest.AnnotationsEntry - nil, // 385: rill.admin.v1.IssueMagicAuthTokenRequest.MetricsViewFiltersEntry - nil, // 386: rill.admin.v1.GetGithubUserStatusResponse.OrganizationInstallationPermissionsEntry - (*ListGithubUserReposResponse_Repo)(nil), // 387: rill.admin.v1.ListGithubUserReposResponse.Repo - (*GetReportMetaResponse_DeliveryMeta)(nil), // 388: rill.admin.v1.GetReportMetaResponse.DeliveryMeta - nil, // 389: rill.admin.v1.GetReportMetaResponse.DeliveryMetaEntry - nil, // 390: rill.admin.v1.GetAlertMetaRequest.AnnotationsEntry - (*GetAlertMetaResponse_URLs)(nil), // 391: rill.admin.v1.GetAlertMetaResponse.URLs - nil, // 392: rill.admin.v1.GetAlertMetaResponse.RecipientUrlsEntry - nil, // 393: rill.admin.v1.Project.AnnotationsEntry - nil, // 394: rill.admin.v1.MagicAuthToken.MetricsViewFiltersEntry - (*timestamppb.Timestamp)(nil), // 395: google.protobuf.Timestamp - (*structpb.Struct)(nil), // 396: google.protobuf.Struct - (v1.ExportFormat)(0), // 397: rill.runtime.v1.ExportFormat - (*v1.Expression)(nil), // 398: rill.runtime.v1.Expression + (PersonalVirtualFileType)(0), // 1: rill.admin.v1.PersonalVirtualFileType + (PersonalVirtualFileSourceKind)(0), // 2: rill.admin.v1.PersonalVirtualFileSourceKind + (DeploymentStatus)(0), // 3: rill.admin.v1.DeploymentStatus + (BillingPlanType)(0), // 4: rill.admin.v1.BillingPlanType + (BillingIssueType)(0), // 5: rill.admin.v1.BillingIssueType + (BillingIssueLevel)(0), // 6: rill.admin.v1.BillingIssueLevel + (GetGithubPullRequestResponse_State)(0), // 7: rill.admin.v1.GetGithubPullRequestResponse.State + (*PingRequest)(nil), // 8: rill.admin.v1.PingRequest + (*PingResponse)(nil), // 9: rill.admin.v1.PingResponse + (*ListOrganizationsRequest)(nil), // 10: rill.admin.v1.ListOrganizationsRequest + (*ListOrganizationsResponse)(nil), // 11: rill.admin.v1.ListOrganizationsResponse + (*GetOrganizationRequest)(nil), // 12: rill.admin.v1.GetOrganizationRequest + (*GetOrganizationResponse)(nil), // 13: rill.admin.v1.GetOrganizationResponse + (*GetOrganizationNameForDomainRequest)(nil), // 14: rill.admin.v1.GetOrganizationNameForDomainRequest + (*GetOrganizationNameForDomainResponse)(nil), // 15: rill.admin.v1.GetOrganizationNameForDomainResponse + (*CreateOrganizationRequest)(nil), // 16: rill.admin.v1.CreateOrganizationRequest + (*CreateOrganizationResponse)(nil), // 17: rill.admin.v1.CreateOrganizationResponse + (*DeleteOrganizationRequest)(nil), // 18: rill.admin.v1.DeleteOrganizationRequest + (*DeleteOrganizationResponse)(nil), // 19: rill.admin.v1.DeleteOrganizationResponse + (*UpdateOrganizationRequest)(nil), // 20: rill.admin.v1.UpdateOrganizationRequest + (*UpdateOrganizationResponse)(nil), // 21: rill.admin.v1.UpdateOrganizationResponse + (*ListProjectsForOrganizationRequest)(nil), // 22: rill.admin.v1.ListProjectsForOrganizationRequest + (*ListDeploymentsRequest)(nil), // 23: rill.admin.v1.ListDeploymentsRequest + (*ListDeploymentsResponse)(nil), // 24: rill.admin.v1.ListDeploymentsResponse + (*CreateDeploymentRequest)(nil), // 25: rill.admin.v1.CreateDeploymentRequest + (*CreateDeploymentResponse)(nil), // 26: rill.admin.v1.CreateDeploymentResponse + (*GetDeploymentRequest)(nil), // 27: rill.admin.v1.GetDeploymentRequest + (*GetDeploymentResponse)(nil), // 28: rill.admin.v1.GetDeploymentResponse + (*StartDeploymentRequest)(nil), // 29: rill.admin.v1.StartDeploymentRequest + (*StartDeploymentResponse)(nil), // 30: rill.admin.v1.StartDeploymentResponse + (*StopDeploymentRequest)(nil), // 31: rill.admin.v1.StopDeploymentRequest + (*StopDeploymentResponse)(nil), // 32: rill.admin.v1.StopDeploymentResponse + (*DeleteDeploymentRequest)(nil), // 33: rill.admin.v1.DeleteDeploymentRequest + (*DeleteDeploymentResponse)(nil), // 34: rill.admin.v1.DeleteDeploymentResponse + (*ListProjectsForOrganizationResponse)(nil), // 35: rill.admin.v1.ListProjectsForOrganizationResponse + (*ListProjectsForOrganizationAndUserRequest)(nil), // 36: rill.admin.v1.ListProjectsForOrganizationAndUserRequest + (*ListProjectsForOrganizationAndUserResponse)(nil), // 37: rill.admin.v1.ListProjectsForOrganizationAndUserResponse + (*ListProjectsForFingerprintRequest)(nil), // 38: rill.admin.v1.ListProjectsForFingerprintRequest + (*ListProjectsForFingerprintResponse)(nil), // 39: rill.admin.v1.ListProjectsForFingerprintResponse + (*GetProjectRequest)(nil), // 40: rill.admin.v1.GetProjectRequest + (*GetProjectResponse)(nil), // 41: rill.admin.v1.GetProjectResponse + (*ListProjectsForUserByNameRequest)(nil), // 42: rill.admin.v1.ListProjectsForUserByNameRequest + (*ListProjectsForUserByNameResponse)(nil), // 43: rill.admin.v1.ListProjectsForUserByNameResponse + (*GetProjectByIDRequest)(nil), // 44: rill.admin.v1.GetProjectByIDRequest + (*GetProjectByIDResponse)(nil), // 45: rill.admin.v1.GetProjectByIDResponse + (*SearchProjectNamesRequest)(nil), // 46: rill.admin.v1.SearchProjectNamesRequest + (*SearchProjectNamesResponse)(nil), // 47: rill.admin.v1.SearchProjectNamesResponse + (*GetProjectVariablesRequest)(nil), // 48: rill.admin.v1.GetProjectVariablesRequest + (*GetProjectVariablesResponse)(nil), // 49: rill.admin.v1.GetProjectVariablesResponse + (*ProjectVariable)(nil), // 50: rill.admin.v1.ProjectVariable + (*UpdateProjectVariablesRequest)(nil), // 51: rill.admin.v1.UpdateProjectVariablesRequest + (*UpdateProjectVariablesResponse)(nil), // 52: rill.admin.v1.UpdateProjectVariablesResponse + (*SearchProjectUsersRequest)(nil), // 53: rill.admin.v1.SearchProjectUsersRequest + (*SearchProjectUsersResponse)(nil), // 54: rill.admin.v1.SearchProjectUsersResponse + (*GetDeploymentCredentialsRequest)(nil), // 55: rill.admin.v1.GetDeploymentCredentialsRequest + (*GetDeploymentCredentialsResponse)(nil), // 56: rill.admin.v1.GetDeploymentCredentialsResponse + (*GetIFrameRequest)(nil), // 57: rill.admin.v1.GetIFrameRequest + (*GetIFrameResponse)(nil), // 58: rill.admin.v1.GetIFrameResponse + (*ListServicesRequest)(nil), // 59: rill.admin.v1.ListServicesRequest + (*ListServicesResponse)(nil), // 60: rill.admin.v1.ListServicesResponse + (*ListProjectMemberServicesRequest)(nil), // 61: rill.admin.v1.ListProjectMemberServicesRequest + (*ListProjectMemberServicesResponse)(nil), // 62: rill.admin.v1.ListProjectMemberServicesResponse + (*CreateServiceRequest)(nil), // 63: rill.admin.v1.CreateServiceRequest + (*CreateServiceResponse)(nil), // 64: rill.admin.v1.CreateServiceResponse + (*GetServiceRequest)(nil), // 65: rill.admin.v1.GetServiceRequest + (*GetServiceResponse)(nil), // 66: rill.admin.v1.GetServiceResponse + (*UpdateServiceRequest)(nil), // 67: rill.admin.v1.UpdateServiceRequest + (*UpdateServiceResponse)(nil), // 68: rill.admin.v1.UpdateServiceResponse + (*SetOrganizationMemberServiceRoleRequest)(nil), // 69: rill.admin.v1.SetOrganizationMemberServiceRoleRequest + (*SetOrganizationMemberServiceRoleResponse)(nil), // 70: rill.admin.v1.SetOrganizationMemberServiceRoleResponse + (*RemoveOrganizationMemberServiceRequest)(nil), // 71: rill.admin.v1.RemoveOrganizationMemberServiceRequest + (*RemoveOrganizationMemberServiceResponse)(nil), // 72: rill.admin.v1.RemoveOrganizationMemberServiceResponse + (*RemoveProjectMemberServiceRequest)(nil), // 73: rill.admin.v1.RemoveProjectMemberServiceRequest + (*RemoveProjectMemberServiceResponse)(nil), // 74: rill.admin.v1.RemoveProjectMemberServiceResponse + (*SetProjectMemberServiceRoleRequest)(nil), // 75: rill.admin.v1.SetProjectMemberServiceRoleRequest + (*SetProjectMemberServiceRoleResponse)(nil), // 76: rill.admin.v1.SetProjectMemberServiceRoleResponse + (*DeleteServiceRequest)(nil), // 77: rill.admin.v1.DeleteServiceRequest + (*DeleteServiceResponse)(nil), // 78: rill.admin.v1.DeleteServiceResponse + (*CreateProjectRequest)(nil), // 79: rill.admin.v1.CreateProjectRequest + (*CreateProjectResponse)(nil), // 80: rill.admin.v1.CreateProjectResponse + (*DeleteProjectRequest)(nil), // 81: rill.admin.v1.DeleteProjectRequest + (*DeleteProjectResponse)(nil), // 82: rill.admin.v1.DeleteProjectResponse + (*UpdateProjectRequest)(nil), // 83: rill.admin.v1.UpdateProjectRequest + (*UpdateProjectResponse)(nil), // 84: rill.admin.v1.UpdateProjectResponse + (*CreateAssetRequest)(nil), // 85: rill.admin.v1.CreateAssetRequest + (*CreateAssetResponse)(nil), // 86: rill.admin.v1.CreateAssetResponse + (*RedeployProjectRequest)(nil), // 87: rill.admin.v1.RedeployProjectRequest + (*RedeployProjectResponse)(nil), // 88: rill.admin.v1.RedeployProjectResponse + (*HibernateProjectRequest)(nil), // 89: rill.admin.v1.HibernateProjectRequest + (*HibernateProjectResponse)(nil), // 90: rill.admin.v1.HibernateProjectResponse + (*TriggerReconcileRequest)(nil), // 91: rill.admin.v1.TriggerReconcileRequest + (*TriggerReconcileResponse)(nil), // 92: rill.admin.v1.TriggerReconcileResponse + (*TriggerRefreshSourcesRequest)(nil), // 93: rill.admin.v1.TriggerRefreshSourcesRequest + (*TriggerRefreshSourcesResponse)(nil), // 94: rill.admin.v1.TriggerRefreshSourcesResponse + (*TriggerRedeployRequest)(nil), // 95: rill.admin.v1.TriggerRedeployRequest + (*TriggerRedeployResponse)(nil), // 96: rill.admin.v1.TriggerRedeployResponse + (*ProvisionRequest)(nil), // 97: rill.admin.v1.ProvisionRequest + (*ProvisionResponse)(nil), // 98: rill.admin.v1.ProvisionResponse + (*GetDeploymentConfigRequest)(nil), // 99: rill.admin.v1.GetDeploymentConfigRequest + (*GetDeploymentConfigResponse)(nil), // 100: rill.admin.v1.GetDeploymentConfigResponse + (*ListRolesRequest)(nil), // 101: rill.admin.v1.ListRolesRequest + (*ListRolesResponse)(nil), // 102: rill.admin.v1.ListRolesResponse + (*ListOrganizationMemberUsersRequest)(nil), // 103: rill.admin.v1.ListOrganizationMemberUsersRequest + (*ListOrganizationMemberUsersResponse)(nil), // 104: rill.admin.v1.ListOrganizationMemberUsersResponse + (*ListOrganizationInvitesRequest)(nil), // 105: rill.admin.v1.ListOrganizationInvitesRequest + (*ListOrganizationInvitesResponse)(nil), // 106: rill.admin.v1.ListOrganizationInvitesResponse + (*AddOrganizationMemberUserRequest)(nil), // 107: rill.admin.v1.AddOrganizationMemberUserRequest + (*AddOrganizationMemberUserResponse)(nil), // 108: rill.admin.v1.AddOrganizationMemberUserResponse + (*RemoveOrganizationMemberUserRequest)(nil), // 109: rill.admin.v1.RemoveOrganizationMemberUserRequest + (*RemoveOrganizationMemberUserResponse)(nil), // 110: rill.admin.v1.RemoveOrganizationMemberUserResponse + (*LeaveOrganizationRequest)(nil), // 111: rill.admin.v1.LeaveOrganizationRequest + (*LeaveOrganizationResponse)(nil), // 112: rill.admin.v1.LeaveOrganizationResponse + (*SetOrganizationMemberUserRoleRequest)(nil), // 113: rill.admin.v1.SetOrganizationMemberUserRoleRequest + (*SetOrganizationMemberUserRoleResponse)(nil), // 114: rill.admin.v1.SetOrganizationMemberUserRoleResponse + (*GetOrganizationMemberUserRequest)(nil), // 115: rill.admin.v1.GetOrganizationMemberUserRequest + (*GetOrganizationMemberUserResponse)(nil), // 116: rill.admin.v1.GetOrganizationMemberUserResponse + (*GetProjectMemberUserRequest)(nil), // 117: rill.admin.v1.GetProjectMemberUserRequest + (*GetProjectMemberUserResponse)(nil), // 118: rill.admin.v1.GetProjectMemberUserResponse + (*ListUsergroupsForProjectAndUserRequest)(nil), // 119: rill.admin.v1.ListUsergroupsForProjectAndUserRequest + (*ListUsergroupsForProjectAndUserResponse)(nil), // 120: rill.admin.v1.ListUsergroupsForProjectAndUserResponse + (*UpdateOrganizationMemberUserAttributesRequest)(nil), // 121: rill.admin.v1.UpdateOrganizationMemberUserAttributesRequest + (*UpdateOrganizationMemberUserAttributesResponse)(nil), // 122: rill.admin.v1.UpdateOrganizationMemberUserAttributesResponse + (*ListSuperusersRequest)(nil), // 123: rill.admin.v1.ListSuperusersRequest + (*ListSuperusersResponse)(nil), // 124: rill.admin.v1.ListSuperusersResponse + (*SetSuperuserRequest)(nil), // 125: rill.admin.v1.SetSuperuserRequest + (*SetSuperuserResponse)(nil), // 126: rill.admin.v1.SetSuperuserResponse + (*SudoGetResourceRequest)(nil), // 127: rill.admin.v1.SudoGetResourceRequest + (*SudoGetResourceResponse)(nil), // 128: rill.admin.v1.SudoGetResourceResponse + (*SudoUpdateOrganizationQuotasRequest)(nil), // 129: rill.admin.v1.SudoUpdateOrganizationQuotasRequest + (*SudoUpdateOrganizationQuotasResponse)(nil), // 130: rill.admin.v1.SudoUpdateOrganizationQuotasResponse + (*SudoUpdateOrganizationBillingCustomerRequest)(nil), // 131: rill.admin.v1.SudoUpdateOrganizationBillingCustomerRequest + (*SudoUpdateOrganizationBillingCustomerResponse)(nil), // 132: rill.admin.v1.SudoUpdateOrganizationBillingCustomerResponse + (*SudoGrantTrialCreditsRequest)(nil), // 133: rill.admin.v1.SudoGrantTrialCreditsRequest + (*SudoGrantTrialCreditsResponse)(nil), // 134: rill.admin.v1.SudoGrantTrialCreditsResponse + (*SudoReportUsageRequest)(nil), // 135: rill.admin.v1.SudoReportUsageRequest + (*SudoReportUsageResponse)(nil), // 136: rill.admin.v1.SudoReportUsageResponse + (*SudoUpdateOrganizationCustomDomainRequest)(nil), // 137: rill.admin.v1.SudoUpdateOrganizationCustomDomainRequest + (*SudoUpdateOrganizationCustomDomainResponse)(nil), // 138: rill.admin.v1.SudoUpdateOrganizationCustomDomainResponse + (*SudoUpdateUserQuotasRequest)(nil), // 139: rill.admin.v1.SudoUpdateUserQuotasRequest + (*SudoUpdateUserQuotasResponse)(nil), // 140: rill.admin.v1.SudoUpdateUserQuotasResponse + (*SudoUpdateAnnotationsRequest)(nil), // 141: rill.admin.v1.SudoUpdateAnnotationsRequest + (*SudoUpdateAnnotationsResponse)(nil), // 142: rill.admin.v1.SudoUpdateAnnotationsResponse + (*SudoIssueRuntimeManagerTokenRequest)(nil), // 143: rill.admin.v1.SudoIssueRuntimeManagerTokenRequest + (*SudoIssueRuntimeManagerTokenResponse)(nil), // 144: rill.admin.v1.SudoIssueRuntimeManagerTokenResponse + (*SudoDeleteOrganizationBillingIssueRequest)(nil), // 145: rill.admin.v1.SudoDeleteOrganizationBillingIssueRequest + (*SudoDeleteOrganizationBillingIssueResponse)(nil), // 146: rill.admin.v1.SudoDeleteOrganizationBillingIssueResponse + (*SudoTriggerBillingRepairRequest)(nil), // 147: rill.admin.v1.SudoTriggerBillingRepairRequest + (*SudoTriggerBillingRepairResponse)(nil), // 148: rill.admin.v1.SudoTriggerBillingRepairResponse + (*ListProjectMemberUsersRequest)(nil), // 149: rill.admin.v1.ListProjectMemberUsersRequest + (*ListProjectMemberUsersResponse)(nil), // 150: rill.admin.v1.ListProjectMemberUsersResponse + (*ListProjectInvitesRequest)(nil), // 151: rill.admin.v1.ListProjectInvitesRequest + (*ListProjectInvitesResponse)(nil), // 152: rill.admin.v1.ListProjectInvitesResponse + (*AddProjectMemberUserRequest)(nil), // 153: rill.admin.v1.AddProjectMemberUserRequest + (*AddProjectMemberUserResponse)(nil), // 154: rill.admin.v1.AddProjectMemberUserResponse + (*RemoveProjectMemberUserRequest)(nil), // 155: rill.admin.v1.RemoveProjectMemberUserRequest + (*RemoveProjectMemberUserResponse)(nil), // 156: rill.admin.v1.RemoveProjectMemberUserResponse + (*SetProjectMemberUserRoleRequest)(nil), // 157: rill.admin.v1.SetProjectMemberUserRoleRequest + (*SetProjectMemberUserRoleResponse)(nil), // 158: rill.admin.v1.SetProjectMemberUserRoleResponse + (*ListUsergroupsForOrganizationAndUserRequest)(nil), // 159: rill.admin.v1.ListUsergroupsForOrganizationAndUserRequest + (*ListUsergroupsForOrganizationAndUserResponse)(nil), // 160: rill.admin.v1.ListUsergroupsForOrganizationAndUserResponse + (*CreateUsergroupRequest)(nil), // 161: rill.admin.v1.CreateUsergroupRequest + (*CreateUsergroupResponse)(nil), // 162: rill.admin.v1.CreateUsergroupResponse + (*GetUsergroupRequest)(nil), // 163: rill.admin.v1.GetUsergroupRequest + (*GetUsergroupResponse)(nil), // 164: rill.admin.v1.GetUsergroupResponse + (*UpdateUsergroupRequest)(nil), // 165: rill.admin.v1.UpdateUsergroupRequest + (*UpdateUsergroupResponse)(nil), // 166: rill.admin.v1.UpdateUsergroupResponse + (*ListOrganizationMemberUsergroupsRequest)(nil), // 167: rill.admin.v1.ListOrganizationMemberUsergroupsRequest + (*ListOrganizationMemberUsergroupsResponse)(nil), // 168: rill.admin.v1.ListOrganizationMemberUsergroupsResponse + (*ListProjectMemberUsergroupsRequest)(nil), // 169: rill.admin.v1.ListProjectMemberUsergroupsRequest + (*ListProjectMemberUsergroupsResponse)(nil), // 170: rill.admin.v1.ListProjectMemberUsergroupsResponse + (*DeleteUsergroupRequest)(nil), // 171: rill.admin.v1.DeleteUsergroupRequest + (*DeleteUsergroupResponse)(nil), // 172: rill.admin.v1.DeleteUsergroupResponse + (*AddOrganizationMemberUsergroupRequest)(nil), // 173: rill.admin.v1.AddOrganizationMemberUsergroupRequest + (*AddOrganizationMemberUsergroupResponse)(nil), // 174: rill.admin.v1.AddOrganizationMemberUsergroupResponse + (*SetOrganizationMemberUsergroupRoleRequest)(nil), // 175: rill.admin.v1.SetOrganizationMemberUsergroupRoleRequest + (*SetOrganizationMemberUsergroupRoleResponse)(nil), // 176: rill.admin.v1.SetOrganizationMemberUsergroupRoleResponse + (*RemoveOrganizationMemberUsergroupRequest)(nil), // 177: rill.admin.v1.RemoveOrganizationMemberUsergroupRequest + (*RemoveOrganizationMemberUsergroupResponse)(nil), // 178: rill.admin.v1.RemoveOrganizationMemberUsergroupResponse + (*AddProjectMemberUsergroupRequest)(nil), // 179: rill.admin.v1.AddProjectMemberUsergroupRequest + (*AddProjectMemberUsergroupResponse)(nil), // 180: rill.admin.v1.AddProjectMemberUsergroupResponse + (*SetProjectMemberUsergroupRoleRequest)(nil), // 181: rill.admin.v1.SetProjectMemberUsergroupRoleRequest + (*SetProjectMemberUsergroupRoleResponse)(nil), // 182: rill.admin.v1.SetProjectMemberUsergroupRoleResponse + (*RemoveProjectMemberUsergroupRequest)(nil), // 183: rill.admin.v1.RemoveProjectMemberUsergroupRequest + (*RemoveProjectMemberUsergroupResponse)(nil), // 184: rill.admin.v1.RemoveProjectMemberUsergroupResponse + (*AddUsergroupMemberUserRequest)(nil), // 185: rill.admin.v1.AddUsergroupMemberUserRequest + (*AddUsergroupMemberUserResponse)(nil), // 186: rill.admin.v1.AddUsergroupMemberUserResponse + (*ListUsergroupMemberUsersRequest)(nil), // 187: rill.admin.v1.ListUsergroupMemberUsersRequest + (*ListUsergroupMemberUsersResponse)(nil), // 188: rill.admin.v1.ListUsergroupMemberUsersResponse + (*RemoveUsergroupMemberUserRequest)(nil), // 189: rill.admin.v1.RemoveUsergroupMemberUserRequest + (*RemoveUsergroupMemberUserResponse)(nil), // 190: rill.admin.v1.RemoveUsergroupMemberUserResponse + (*UserPreferences)(nil), // 191: rill.admin.v1.UserPreferences + (*UpdateUserPreferencesRequest)(nil), // 192: rill.admin.v1.UpdateUserPreferencesRequest + (*UpdateUserPreferencesResponse)(nil), // 193: rill.admin.v1.UpdateUserPreferencesResponse + (*GetUserRequest)(nil), // 194: rill.admin.v1.GetUserRequest + (*GetUserResponse)(nil), // 195: rill.admin.v1.GetUserResponse + (*GetCurrentUserRequest)(nil), // 196: rill.admin.v1.GetCurrentUserRequest + (*GetCurrentUserResponse)(nil), // 197: rill.admin.v1.GetCurrentUserResponse + (*DeleteUserRequest)(nil), // 198: rill.admin.v1.DeleteUserRequest + (*DeleteUserResponse)(nil), // 199: rill.admin.v1.DeleteUserResponse + (*ListUserAuthTokensRequest)(nil), // 200: rill.admin.v1.ListUserAuthTokensRequest + (*ListUserAuthTokensResponse)(nil), // 201: rill.admin.v1.ListUserAuthTokensResponse + (*IssueUserAuthTokenRequest)(nil), // 202: rill.admin.v1.IssueUserAuthTokenRequest + (*IssueUserAuthTokenResponse)(nil), // 203: rill.admin.v1.IssueUserAuthTokenResponse + (*RevokeUserAuthTokenRequest)(nil), // 204: rill.admin.v1.RevokeUserAuthTokenRequest + (*RevokeUserAuthTokenResponse)(nil), // 205: rill.admin.v1.RevokeUserAuthTokenResponse + (*RevokeAllUserAuthTokensRequest)(nil), // 206: rill.admin.v1.RevokeAllUserAuthTokensRequest + (*RevokeAllUserAuthTokensResponse)(nil), // 207: rill.admin.v1.RevokeAllUserAuthTokensResponse + (*RevokeRepresentativeAuthTokensRequest)(nil), // 208: rill.admin.v1.RevokeRepresentativeAuthTokensRequest + (*RevokeRepresentativeAuthTokensResponse)(nil), // 209: rill.admin.v1.RevokeRepresentativeAuthTokensResponse + (*IssueRepresentativeAuthTokenRequest)(nil), // 210: rill.admin.v1.IssueRepresentativeAuthTokenRequest + (*IssueRepresentativeAuthTokenResponse)(nil), // 211: rill.admin.v1.IssueRepresentativeAuthTokenResponse + (*RevokeCurrentAuthTokenRequest)(nil), // 212: rill.admin.v1.RevokeCurrentAuthTokenRequest + (*RevokeCurrentAuthTokenResponse)(nil), // 213: rill.admin.v1.RevokeCurrentAuthTokenResponse + (*ListBookmarksRequest)(nil), // 214: rill.admin.v1.ListBookmarksRequest + (*ListBookmarksResponse)(nil), // 215: rill.admin.v1.ListBookmarksResponse + (*GetBookmarkRequest)(nil), // 216: rill.admin.v1.GetBookmarkRequest + (*GetBookmarkResponse)(nil), // 217: rill.admin.v1.GetBookmarkResponse + (*CreateBookmarkRequest)(nil), // 218: rill.admin.v1.CreateBookmarkRequest + (*CreateBookmarkResponse)(nil), // 219: rill.admin.v1.CreateBookmarkResponse + (*UpdateBookmarkRequest)(nil), // 220: rill.admin.v1.UpdateBookmarkRequest + (*UpdateBookmarkResponse)(nil), // 221: rill.admin.v1.UpdateBookmarkResponse + (*RemoveBookmarkRequest)(nil), // 222: rill.admin.v1.RemoveBookmarkRequest + (*RemoveBookmarkResponse)(nil), // 223: rill.admin.v1.RemoveBookmarkResponse + (*SearchUsersRequest)(nil), // 224: rill.admin.v1.SearchUsersRequest + (*SearchUsersResponse)(nil), // 225: rill.admin.v1.SearchUsersResponse + (*RevokeServiceAuthTokenRequest)(nil), // 226: rill.admin.v1.RevokeServiceAuthTokenRequest + (*RevokeServiceAuthTokenResponse)(nil), // 227: rill.admin.v1.RevokeServiceAuthTokenResponse + (*IssueServiceAuthTokenRequest)(nil), // 228: rill.admin.v1.IssueServiceAuthTokenRequest + (*IssueServiceAuthTokenResponse)(nil), // 229: rill.admin.v1.IssueServiceAuthTokenResponse + (*ListServiceAuthTokensRequest)(nil), // 230: rill.admin.v1.ListServiceAuthTokensRequest + (*ListServiceAuthTokensResponse)(nil), // 231: rill.admin.v1.ListServiceAuthTokensResponse + (*IssueMagicAuthTokenRequest)(nil), // 232: rill.admin.v1.IssueMagicAuthTokenRequest + (*ResourceName)(nil), // 233: rill.admin.v1.ResourceName + (*IssueMagicAuthTokenResponse)(nil), // 234: rill.admin.v1.IssueMagicAuthTokenResponse + (*ListMagicAuthTokensRequest)(nil), // 235: rill.admin.v1.ListMagicAuthTokensRequest + (*ListMagicAuthTokensResponse)(nil), // 236: rill.admin.v1.ListMagicAuthTokensResponse + (*GetCurrentMagicAuthTokenRequest)(nil), // 237: rill.admin.v1.GetCurrentMagicAuthTokenRequest + (*GetCurrentMagicAuthTokenResponse)(nil), // 238: rill.admin.v1.GetCurrentMagicAuthTokenResponse + (*RevokeMagicAuthTokenRequest)(nil), // 239: rill.admin.v1.RevokeMagicAuthTokenRequest + (*RevokeMagicAuthTokenResponse)(nil), // 240: rill.admin.v1.RevokeMagicAuthTokenResponse + (*GetGithubRepoStatusRequest)(nil), // 241: rill.admin.v1.GetGithubRepoStatusRequest + (*GetGithubRepoStatusResponse)(nil), // 242: rill.admin.v1.GetGithubRepoStatusResponse + (*GetGithubUserStatusRequest)(nil), // 243: rill.admin.v1.GetGithubUserStatusRequest + (*GetGithubUserStatusResponse)(nil), // 244: rill.admin.v1.GetGithubUserStatusResponse + (*ListGithubUserReposRequest)(nil), // 245: rill.admin.v1.ListGithubUserReposRequest + (*ListGithubUserReposResponse)(nil), // 246: rill.admin.v1.ListGithubUserReposResponse + (*CreateGithubPullRequestRequest)(nil), // 247: rill.admin.v1.CreateGithubPullRequestRequest + (*CreateGithubPullRequestResponse)(nil), // 248: rill.admin.v1.CreateGithubPullRequestResponse + (*GetGithubPullRequestRequest)(nil), // 249: rill.admin.v1.GetGithubPullRequestRequest + (*GetGithubPullRequestResponse)(nil), // 250: rill.admin.v1.GetGithubPullRequestResponse + (*ConnectProjectToGithubRequest)(nil), // 251: rill.admin.v1.ConnectProjectToGithubRequest + (*ConnectProjectToGithubResponse)(nil), // 252: rill.admin.v1.ConnectProjectToGithubResponse + (*CreateManagedGitRepoRequest)(nil), // 253: rill.admin.v1.CreateManagedGitRepoRequest + (*CreateManagedGitRepoResponse)(nil), // 254: rill.admin.v1.CreateManagedGitRepoResponse + (*GetCloneCredentialsRequest)(nil), // 255: rill.admin.v1.GetCloneCredentialsRequest + (*GetCloneCredentialsResponse)(nil), // 256: rill.admin.v1.GetCloneCredentialsResponse + (*CreateWhitelistedDomainRequest)(nil), // 257: rill.admin.v1.CreateWhitelistedDomainRequest + (*CreateWhitelistedDomainResponse)(nil), // 258: rill.admin.v1.CreateWhitelistedDomainResponse + (*RemoveWhitelistedDomainRequest)(nil), // 259: rill.admin.v1.RemoveWhitelistedDomainRequest + (*RemoveWhitelistedDomainResponse)(nil), // 260: rill.admin.v1.RemoveWhitelistedDomainResponse + (*ListWhitelistedDomainsRequest)(nil), // 261: rill.admin.v1.ListWhitelistedDomainsRequest + (*ListWhitelistedDomainsResponse)(nil), // 262: rill.admin.v1.ListWhitelistedDomainsResponse + (*CreateProjectWhitelistedDomainRequest)(nil), // 263: rill.admin.v1.CreateProjectWhitelistedDomainRequest + (*CreateProjectWhitelistedDomainResponse)(nil), // 264: rill.admin.v1.CreateProjectWhitelistedDomainResponse + (*RemoveProjectWhitelistedDomainRequest)(nil), // 265: rill.admin.v1.RemoveProjectWhitelistedDomainRequest + (*RemoveProjectWhitelistedDomainResponse)(nil), // 266: rill.admin.v1.RemoveProjectWhitelistedDomainResponse + (*ListProjectWhitelistedDomainsRequest)(nil), // 267: rill.admin.v1.ListProjectWhitelistedDomainsRequest + (*ListProjectWhitelistedDomainsResponse)(nil), // 268: rill.admin.v1.ListProjectWhitelistedDomainsResponse + (*GetRepoMetaRequest)(nil), // 269: rill.admin.v1.GetRepoMetaRequest + (*GetRepoMetaResponse)(nil), // 270: rill.admin.v1.GetRepoMetaResponse + (*PullVirtualRepoRequest)(nil), // 271: rill.admin.v1.PullVirtualRepoRequest + (*PullVirtualRepoResponse)(nil), // 272: rill.admin.v1.PullVirtualRepoResponse + (*GetVirtualFileRequest)(nil), // 273: rill.admin.v1.GetVirtualFileRequest + (*GetVirtualFileResponse)(nil), // 274: rill.admin.v1.GetVirtualFileResponse + (*DeleteVirtualFileRequest)(nil), // 275: rill.admin.v1.DeleteVirtualFileRequest + (*DeleteVirtualFileResponse)(nil), // 276: rill.admin.v1.DeleteVirtualFileResponse + (*GetReportMetaRequest)(nil), // 277: rill.admin.v1.GetReportMetaRequest + (*GetReportMetaResponse)(nil), // 278: rill.admin.v1.GetReportMetaResponse + (*GetAlertMetaRequest)(nil), // 279: rill.admin.v1.GetAlertMetaRequest + (*GetAlertMetaResponse)(nil), // 280: rill.admin.v1.GetAlertMetaResponse + (*CreateReportRequest)(nil), // 281: rill.admin.v1.CreateReportRequest + (*CreateReportResponse)(nil), // 282: rill.admin.v1.CreateReportResponse + (*EditReportRequest)(nil), // 283: rill.admin.v1.EditReportRequest + (*EditReportResponse)(nil), // 284: rill.admin.v1.EditReportResponse + (*UnsubscribeReportRequest)(nil), // 285: rill.admin.v1.UnsubscribeReportRequest + (*UnsubscribeReportResponse)(nil), // 286: rill.admin.v1.UnsubscribeReportResponse + (*DeleteReportRequest)(nil), // 287: rill.admin.v1.DeleteReportRequest + (*DeleteReportResponse)(nil), // 288: rill.admin.v1.DeleteReportResponse + (*TriggerReportRequest)(nil), // 289: rill.admin.v1.TriggerReportRequest + (*TriggerReportResponse)(nil), // 290: rill.admin.v1.TriggerReportResponse + (*GenerateReportYAMLRequest)(nil), // 291: rill.admin.v1.GenerateReportYAMLRequest + (*GenerateReportYAMLResponse)(nil), // 292: rill.admin.v1.GenerateReportYAMLResponse + (*CreateAlertRequest)(nil), // 293: rill.admin.v1.CreateAlertRequest + (*CreateAlertResponse)(nil), // 294: rill.admin.v1.CreateAlertResponse + (*EditAlertRequest)(nil), // 295: rill.admin.v1.EditAlertRequest + (*EditAlertResponse)(nil), // 296: rill.admin.v1.EditAlertResponse + (*UnsubscribeAlertRequest)(nil), // 297: rill.admin.v1.UnsubscribeAlertRequest + (*UnsubscribeAlertResponse)(nil), // 298: rill.admin.v1.UnsubscribeAlertResponse + (*DeleteAlertRequest)(nil), // 299: rill.admin.v1.DeleteAlertRequest + (*DeleteAlertResponse)(nil), // 300: rill.admin.v1.DeleteAlertResponse + (*GenerateAlertYAMLRequest)(nil), // 301: rill.admin.v1.GenerateAlertYAMLRequest + (*GenerateAlertYAMLResponse)(nil), // 302: rill.admin.v1.GenerateAlertYAMLResponse + (*GetAlertYAMLRequest)(nil), // 303: rill.admin.v1.GetAlertYAMLRequest + (*GetAlertYAMLResponse)(nil), // 304: rill.admin.v1.GetAlertYAMLResponse + (*PersonalVirtualFileSummary)(nil), // 305: rill.admin.v1.PersonalVirtualFileSummary + (*CreatePersonalVirtualFileRequest)(nil), // 306: rill.admin.v1.CreatePersonalVirtualFileRequest + (*CreatePersonalVirtualFileResponse)(nil), // 307: rill.admin.v1.CreatePersonalVirtualFileResponse + (*EditPersonalVirtualFileRequest)(nil), // 308: rill.admin.v1.EditPersonalVirtualFileRequest + (*EditPersonalVirtualFileResponse)(nil), // 309: rill.admin.v1.EditPersonalVirtualFileResponse + (*DeletePersonalVirtualFileRequest)(nil), // 310: rill.admin.v1.DeletePersonalVirtualFileRequest + (*DeletePersonalVirtualFileResponse)(nil), // 311: rill.admin.v1.DeletePersonalVirtualFileResponse + (*CopyPersonalVirtualFileRequest)(nil), // 312: rill.admin.v1.CopyPersonalVirtualFileRequest + (*CopyPersonalVirtualFileResponse)(nil), // 313: rill.admin.v1.CopyPersonalVirtualFileResponse + (*GetPersonalVirtualFileRequest)(nil), // 314: rill.admin.v1.GetPersonalVirtualFileRequest + (*GetPersonalVirtualFileResponse)(nil), // 315: rill.admin.v1.GetPersonalVirtualFileResponse + (*ListPersonalVirtualFilesRequest)(nil), // 316: rill.admin.v1.ListPersonalVirtualFilesRequest + (*ListPersonalVirtualFilesResponse)(nil), // 317: rill.admin.v1.ListPersonalVirtualFilesResponse + (*GetBillingSubscriptionRequest)(nil), // 318: rill.admin.v1.GetBillingSubscriptionRequest + (*GetBillingSubscriptionResponse)(nil), // 319: rill.admin.v1.GetBillingSubscriptionResponse + (*UpdateBillingSubscriptionRequest)(nil), // 320: rill.admin.v1.UpdateBillingSubscriptionRequest + (*UpdateBillingSubscriptionResponse)(nil), // 321: rill.admin.v1.UpdateBillingSubscriptionResponse + (*CancelBillingSubscriptionRequest)(nil), // 322: rill.admin.v1.CancelBillingSubscriptionRequest + (*CancelBillingSubscriptionResponse)(nil), // 323: rill.admin.v1.CancelBillingSubscriptionResponse + (*RenewBillingSubscriptionRequest)(nil), // 324: rill.admin.v1.RenewBillingSubscriptionRequest + (*RenewBillingSubscriptionResponse)(nil), // 325: rill.admin.v1.RenewBillingSubscriptionResponse + (*GetPaymentsPortalURLRequest)(nil), // 326: rill.admin.v1.GetPaymentsPortalURLRequest + (*GetPaymentsPortalURLResponse)(nil), // 327: rill.admin.v1.GetPaymentsPortalURLResponse + (*GetBillingCreditBalanceRequest)(nil), // 328: rill.admin.v1.GetBillingCreditBalanceRequest + (*GetBillingCreditBalanceResponse)(nil), // 329: rill.admin.v1.GetBillingCreditBalanceResponse + (*ListPublicBillingPlansRequest)(nil), // 330: rill.admin.v1.ListPublicBillingPlansRequest + (*ListPublicBillingPlansResponse)(nil), // 331: rill.admin.v1.ListPublicBillingPlansResponse + (*GetBillingProjectCredentialsRequest)(nil), // 332: rill.admin.v1.GetBillingProjectCredentialsRequest + (*GetBillingProjectCredentialsResponse)(nil), // 333: rill.admin.v1.GetBillingProjectCredentialsResponse + (*TelemetryRequest)(nil), // 334: rill.admin.v1.TelemetryRequest + (*TelemetryResponse)(nil), // 335: rill.admin.v1.TelemetryResponse + (*RequestProjectAccessRequest)(nil), // 336: rill.admin.v1.RequestProjectAccessRequest + (*RequestProjectAccessResponse)(nil), // 337: rill.admin.v1.RequestProjectAccessResponse + (*GetProjectAccessRequestRequest)(nil), // 338: rill.admin.v1.GetProjectAccessRequestRequest + (*GetProjectAccessRequestResponse)(nil), // 339: rill.admin.v1.GetProjectAccessRequestResponse + (*ApproveProjectAccessRequest)(nil), // 340: rill.admin.v1.ApproveProjectAccessRequest + (*ApproveProjectAccessResponse)(nil), // 341: rill.admin.v1.ApproveProjectAccessResponse + (*DenyProjectAccessRequest)(nil), // 342: rill.admin.v1.DenyProjectAccessRequest + (*DenyProjectAccessResponse)(nil), // 343: rill.admin.v1.DenyProjectAccessResponse + (*ListOrganizationBillingIssuesRequest)(nil), // 344: rill.admin.v1.ListOrganizationBillingIssuesRequest + (*ListOrganizationBillingIssuesResponse)(nil), // 345: rill.admin.v1.ListOrganizationBillingIssuesResponse + (*User)(nil), // 346: rill.admin.v1.User + (*Service)(nil), // 347: rill.admin.v1.Service + (*OrganizationMemberService)(nil), // 348: rill.admin.v1.OrganizationMemberService + (*ProjectMemberService)(nil), // 349: rill.admin.v1.ProjectMemberService + (*Organization)(nil), // 350: rill.admin.v1.Organization + (*Subscription)(nil), // 351: rill.admin.v1.Subscription + (*UserQuotas)(nil), // 352: rill.admin.v1.UserQuotas + (*OrganizationQuotas)(nil), // 353: rill.admin.v1.OrganizationQuotas + (*Project)(nil), // 354: rill.admin.v1.Project + (*Deployment)(nil), // 355: rill.admin.v1.Deployment + (*ProvisionerResource)(nil), // 356: rill.admin.v1.ProvisionerResource + (*OrganizationPermissions)(nil), // 357: rill.admin.v1.OrganizationPermissions + (*ProjectPermissions)(nil), // 358: rill.admin.v1.ProjectPermissions + (*OrganizationRole)(nil), // 359: rill.admin.v1.OrganizationRole + (*ProjectRole)(nil), // 360: rill.admin.v1.ProjectRole + (*OrganizationMemberUser)(nil), // 361: rill.admin.v1.OrganizationMemberUser + (*ProjectMemberUser)(nil), // 362: rill.admin.v1.ProjectMemberUser + (*UsergroupMemberUser)(nil), // 363: rill.admin.v1.UsergroupMemberUser + (*OrganizationInvite)(nil), // 364: rill.admin.v1.OrganizationInvite + (*ProjectInvite)(nil), // 365: rill.admin.v1.ProjectInvite + (*WhitelistedDomain)(nil), // 366: rill.admin.v1.WhitelistedDomain + (*Bookmark)(nil), // 367: rill.admin.v1.Bookmark + (*ServiceToken)(nil), // 368: rill.admin.v1.ServiceToken + (*UserAuthToken)(nil), // 369: rill.admin.v1.UserAuthToken + (*MagicAuthToken)(nil), // 370: rill.admin.v1.MagicAuthToken + (*VirtualFile)(nil), // 371: rill.admin.v1.VirtualFile + (*ReportOptions)(nil), // 372: rill.admin.v1.ReportOptions + (*AlertOptions)(nil), // 373: rill.admin.v1.AlertOptions + (*BillingPlan)(nil), // 374: rill.admin.v1.BillingPlan + (*Quotas)(nil), // 375: rill.admin.v1.Quotas + (*Usergroup)(nil), // 376: rill.admin.v1.Usergroup + (*MemberUsergroup)(nil), // 377: rill.admin.v1.MemberUsergroup + (*BillingIssue)(nil), // 378: rill.admin.v1.BillingIssue + (*BillingIssueMetadata)(nil), // 379: rill.admin.v1.BillingIssueMetadata + (*BillingIssueMetadataOnTrial)(nil), // 380: rill.admin.v1.BillingIssueMetadataOnTrial + (*BillingIssueMetadataTrialEnded)(nil), // 381: rill.admin.v1.BillingIssueMetadataTrialEnded + (*BillingIssueMetadataNoPaymentMethod)(nil), // 382: rill.admin.v1.BillingIssueMetadataNoPaymentMethod + (*BillingIssueMetadataNoBillableAddress)(nil), // 383: rill.admin.v1.BillingIssueMetadataNoBillableAddress + (*BillingIssueMetadataPaymentFailed)(nil), // 384: rill.admin.v1.BillingIssueMetadataPaymentFailed + (*BillingIssueMetadataPaymentFailedMeta)(nil), // 385: rill.admin.v1.BillingIssueMetadataPaymentFailedMeta + (*BillingIssueMetadataSubscriptionCancelled)(nil), // 386: rill.admin.v1.BillingIssueMetadataSubscriptionCancelled + (*BillingIssueMetadataNeverSubscribed)(nil), // 387: rill.admin.v1.BillingIssueMetadataNeverSubscribed + (*BillingIssueMetadataOnCreditTrial)(nil), // 388: rill.admin.v1.BillingIssueMetadataOnCreditTrial + (*BillingIssueMetadataTrialCreditsDepleted)(nil), // 389: rill.admin.v1.BillingIssueMetadataTrialCreditsDepleted + nil, // 390: rill.admin.v1.ListProjectsForOrganizationAndUserResponse.ProjectRolesEntry + nil, // 391: rill.admin.v1.SearchProjectNamesRequest.AnnotationsEntry + nil, // 392: rill.admin.v1.GetProjectVariablesResponse.VariablesMapEntry + nil, // 393: rill.admin.v1.UpdateProjectVariablesRequest.VariablesEntry + nil, // 394: rill.admin.v1.GetIFrameRequest.QueryEntry + nil, // 395: rill.admin.v1.CreateAssetResponse.SigningHeadersEntry + nil, // 396: rill.admin.v1.GetDeploymentConfigResponse.VariablesLegacyEntry + nil, // 397: rill.admin.v1.GetDeploymentConfigResponse.AnnotationsEntry + nil, // 398: rill.admin.v1.GetDeploymentConfigResponse.SystemVariablesEntry + nil, // 399: rill.admin.v1.SudoUpdateAnnotationsRequest.AnnotationsEntry + nil, // 400: rill.admin.v1.IssueMagicAuthTokenRequest.MetricsViewFiltersEntry + nil, // 401: rill.admin.v1.GetGithubUserStatusResponse.OrganizationInstallationPermissionsEntry + (*ListGithubUserReposResponse_Repo)(nil), // 402: rill.admin.v1.ListGithubUserReposResponse.Repo + (*GetReportMetaResponse_DeliveryMeta)(nil), // 403: rill.admin.v1.GetReportMetaResponse.DeliveryMeta + nil, // 404: rill.admin.v1.GetReportMetaResponse.DeliveryMetaEntry + nil, // 405: rill.admin.v1.GetAlertMetaRequest.AnnotationsEntry + (*GetAlertMetaResponse_URLs)(nil), // 406: rill.admin.v1.GetAlertMetaResponse.URLs + nil, // 407: rill.admin.v1.GetAlertMetaResponse.RecipientUrlsEntry + nil, // 408: rill.admin.v1.Project.AnnotationsEntry + nil, // 409: rill.admin.v1.MagicAuthToken.MetricsViewFiltersEntry + (*timestamppb.Timestamp)(nil), // 410: google.protobuf.Timestamp + (*structpb.Struct)(nil), // 411: google.protobuf.Struct + (v1.ExportFormat)(0), // 412: rill.runtime.v1.ExportFormat + (*v1.Expression)(nil), // 413: rill.runtime.v1.Expression } var file_rill_admin_v1_api_proto_depIdxs = []int32{ - 395, // 0: rill.admin.v1.PingResponse.time:type_name -> google.protobuf.Timestamp - 335, // 1: rill.admin.v1.ListOrganizationsResponse.organizations:type_name -> rill.admin.v1.Organization - 335, // 2: rill.admin.v1.GetOrganizationResponse.organization:type_name -> rill.admin.v1.Organization - 342, // 3: rill.admin.v1.GetOrganizationResponse.permissions:type_name -> rill.admin.v1.OrganizationPermissions - 335, // 4: rill.admin.v1.CreateOrganizationResponse.organization:type_name -> rill.admin.v1.Organization - 335, // 5: rill.admin.v1.UpdateOrganizationResponse.organization:type_name -> rill.admin.v1.Organization - 340, // 6: rill.admin.v1.ListDeploymentsResponse.deployments:type_name -> rill.admin.v1.Deployment - 340, // 7: rill.admin.v1.CreateDeploymentResponse.deployment:type_name -> rill.admin.v1.Deployment - 396, // 8: rill.admin.v1.GetDeploymentRequest.attributes:type_name -> google.protobuf.Struct - 340, // 9: rill.admin.v1.StartDeploymentResponse.deployment:type_name -> rill.admin.v1.Deployment - 339, // 10: rill.admin.v1.ListProjectsForOrganizationResponse.projects:type_name -> rill.admin.v1.Project - 339, // 11: rill.admin.v1.ListProjectsForOrganizationAndUserResponse.projects:type_name -> rill.admin.v1.Project - 375, // 12: rill.admin.v1.ListProjectsForOrganizationAndUserResponse.project_roles:type_name -> rill.admin.v1.ListProjectsForOrganizationAndUserResponse.ProjectRolesEntry - 339, // 13: rill.admin.v1.ListProjectsForFingerprintResponse.projects:type_name -> rill.admin.v1.Project - 339, // 14: rill.admin.v1.GetProjectResponse.project:type_name -> rill.admin.v1.Project - 340, // 15: rill.admin.v1.GetProjectResponse.deployment:type_name -> rill.admin.v1.Deployment - 343, // 16: rill.admin.v1.GetProjectResponse.project_permissions:type_name -> rill.admin.v1.ProjectPermissions - 339, // 17: rill.admin.v1.ListProjectsForUserByNameResponse.projects:type_name -> rill.admin.v1.Project - 339, // 18: rill.admin.v1.GetProjectByIDResponse.project:type_name -> rill.admin.v1.Project - 376, // 19: rill.admin.v1.SearchProjectNamesRequest.annotations:type_name -> rill.admin.v1.SearchProjectNamesRequest.AnnotationsEntry - 48, // 20: rill.admin.v1.GetProjectVariablesResponse.variables:type_name -> rill.admin.v1.ProjectVariable - 377, // 21: rill.admin.v1.GetProjectVariablesResponse.variables_map:type_name -> rill.admin.v1.GetProjectVariablesResponse.VariablesMapEntry - 395, // 22: rill.admin.v1.ProjectVariable.created_on:type_name -> google.protobuf.Timestamp - 395, // 23: rill.admin.v1.ProjectVariable.updated_on:type_name -> google.protobuf.Timestamp - 378, // 24: rill.admin.v1.UpdateProjectVariablesRequest.variables:type_name -> rill.admin.v1.UpdateProjectVariablesRequest.VariablesEntry - 48, // 25: rill.admin.v1.UpdateProjectVariablesResponse.variables:type_name -> rill.admin.v1.ProjectVariable - 331, // 26: rill.admin.v1.SearchProjectUsersResponse.users:type_name -> rill.admin.v1.User - 396, // 27: rill.admin.v1.GetDeploymentCredentialsRequest.attributes:type_name -> google.protobuf.Struct - 396, // 28: rill.admin.v1.GetIFrameRequest.attributes:type_name -> google.protobuf.Struct - 379, // 29: rill.admin.v1.GetIFrameRequest.query:type_name -> rill.admin.v1.GetIFrameRequest.QueryEntry - 333, // 30: rill.admin.v1.ListServicesResponse.services:type_name -> rill.admin.v1.OrganizationMemberService - 334, // 31: rill.admin.v1.ListProjectMemberServicesResponse.services:type_name -> rill.admin.v1.ProjectMemberService - 396, // 32: rill.admin.v1.CreateServiceRequest.attributes:type_name -> google.protobuf.Struct - 332, // 33: rill.admin.v1.CreateServiceResponse.service:type_name -> rill.admin.v1.Service - 333, // 34: rill.admin.v1.GetServiceResponse.service:type_name -> rill.admin.v1.OrganizationMemberService - 334, // 35: rill.admin.v1.GetServiceResponse.project_memberships:type_name -> rill.admin.v1.ProjectMemberService - 396, // 36: rill.admin.v1.UpdateServiceRequest.attributes:type_name -> google.protobuf.Struct - 332, // 37: rill.admin.v1.UpdateServiceResponse.service:type_name -> rill.admin.v1.Service - 332, // 38: rill.admin.v1.DeleteServiceResponse.service:type_name -> rill.admin.v1.Service - 339, // 39: rill.admin.v1.CreateProjectResponse.project:type_name -> rill.admin.v1.Project - 339, // 40: rill.admin.v1.UpdateProjectResponse.project:type_name -> rill.admin.v1.Project - 380, // 41: rill.admin.v1.CreateAssetResponse.signing_headers:type_name -> rill.admin.v1.CreateAssetResponse.SigningHeadersEntry - 396, // 42: rill.admin.v1.ProvisionRequest.args:type_name -> google.protobuf.Struct - 341, // 43: rill.admin.v1.ProvisionResponse.resource:type_name -> rill.admin.v1.ProvisionerResource - 48, // 44: rill.admin.v1.GetDeploymentConfigResponse.variables:type_name -> rill.admin.v1.ProjectVariable - 381, // 45: rill.admin.v1.GetDeploymentConfigResponse.variables_legacy:type_name -> rill.admin.v1.GetDeploymentConfigResponse.VariablesLegacyEntry - 382, // 46: rill.admin.v1.GetDeploymentConfigResponse.annotations:type_name -> rill.admin.v1.GetDeploymentConfigResponse.AnnotationsEntry - 395, // 47: rill.admin.v1.GetDeploymentConfigResponse.updated_on:type_name -> google.protobuf.Timestamp - 396, // 48: rill.admin.v1.GetDeploymentConfigResponse.duckdb_connector_config:type_name -> google.protobuf.Struct - 383, // 49: rill.admin.v1.GetDeploymentConfigResponse.system_variables:type_name -> rill.admin.v1.GetDeploymentConfigResponse.SystemVariablesEntry - 344, // 50: rill.admin.v1.ListRolesResponse.organization_roles:type_name -> rill.admin.v1.OrganizationRole - 345, // 51: rill.admin.v1.ListRolesResponse.project_roles:type_name -> rill.admin.v1.ProjectRole - 346, // 52: rill.admin.v1.ListOrganizationMemberUsersResponse.members:type_name -> rill.admin.v1.OrganizationMemberUser - 349, // 53: rill.admin.v1.ListOrganizationInvitesResponse.invites:type_name -> rill.admin.v1.OrganizationInvite - 346, // 54: rill.admin.v1.GetOrganizationMemberUserResponse.member:type_name -> rill.admin.v1.OrganizationMemberUser - 347, // 55: rill.admin.v1.GetProjectMemberUserResponse.member:type_name -> rill.admin.v1.ProjectMemberUser - 362, // 56: rill.admin.v1.ListUsergroupsForProjectAndUserResponse.usergroups:type_name -> rill.admin.v1.MemberUsergroup - 396, // 57: rill.admin.v1.UpdateOrganizationMemberUserAttributesRequest.attributes:type_name -> google.protobuf.Struct - 331, // 58: rill.admin.v1.ListSuperusersResponse.users:type_name -> rill.admin.v1.User - 331, // 59: rill.admin.v1.SudoGetResourceResponse.user:type_name -> rill.admin.v1.User - 335, // 60: rill.admin.v1.SudoGetResourceResponse.org:type_name -> rill.admin.v1.Organization - 339, // 61: rill.admin.v1.SudoGetResourceResponse.project:type_name -> rill.admin.v1.Project - 340, // 62: rill.admin.v1.SudoGetResourceResponse.deployment:type_name -> rill.admin.v1.Deployment - 340, // 63: rill.admin.v1.SudoGetResourceResponse.instance:type_name -> rill.admin.v1.Deployment - 335, // 64: rill.admin.v1.SudoUpdateOrganizationQuotasResponse.organization:type_name -> rill.admin.v1.Organization - 335, // 65: rill.admin.v1.SudoUpdateOrganizationBillingCustomerResponse.organization:type_name -> rill.admin.v1.Organization - 336, // 66: rill.admin.v1.SudoUpdateOrganizationBillingCustomerResponse.subscription:type_name -> rill.admin.v1.Subscription - 395, // 67: rill.admin.v1.SudoReportUsageRequest.end_time:type_name -> google.protobuf.Timestamp - 395, // 68: rill.admin.v1.SudoReportUsageResponse.start_time:type_name -> google.protobuf.Timestamp - 395, // 69: rill.admin.v1.SudoReportUsageResponse.end_time:type_name -> google.protobuf.Timestamp - 335, // 70: rill.admin.v1.SudoUpdateOrganizationCustomDomainResponse.organization:type_name -> rill.admin.v1.Organization - 331, // 71: rill.admin.v1.SudoUpdateUserQuotasResponse.user:type_name -> rill.admin.v1.User - 384, // 72: rill.admin.v1.SudoUpdateAnnotationsRequest.annotations:type_name -> rill.admin.v1.SudoUpdateAnnotationsRequest.AnnotationsEntry - 339, // 73: rill.admin.v1.SudoUpdateAnnotationsResponse.project:type_name -> rill.admin.v1.Project - 3, // 74: rill.admin.v1.SudoDeleteOrganizationBillingIssueRequest.type:type_name -> rill.admin.v1.BillingIssueType - 347, // 75: rill.admin.v1.ListProjectMemberUsersResponse.members:type_name -> rill.admin.v1.ProjectMemberUser - 350, // 76: rill.admin.v1.ListProjectInvitesResponse.invites:type_name -> rill.admin.v1.ProjectInvite - 231, // 77: rill.admin.v1.AddProjectMemberUserRequest.resources:type_name -> rill.admin.v1.ResourceName - 231, // 78: rill.admin.v1.SetProjectMemberUserRoleRequest.resources:type_name -> rill.admin.v1.ResourceName - 361, // 79: rill.admin.v1.ListUsergroupsForOrganizationAndUserResponse.usergroups:type_name -> rill.admin.v1.Usergroup - 361, // 80: rill.admin.v1.CreateUsergroupResponse.usergroup:type_name -> rill.admin.v1.Usergroup - 361, // 81: rill.admin.v1.GetUsergroupResponse.usergroup:type_name -> rill.admin.v1.Usergroup - 361, // 82: rill.admin.v1.UpdateUsergroupResponse.usergroup:type_name -> rill.admin.v1.Usergroup - 362, // 83: rill.admin.v1.ListOrganizationMemberUsergroupsResponse.members:type_name -> rill.admin.v1.MemberUsergroup - 362, // 84: rill.admin.v1.ListProjectMemberUsergroupsResponse.members:type_name -> rill.admin.v1.MemberUsergroup - 231, // 85: rill.admin.v1.AddProjectMemberUsergroupRequest.resources:type_name -> rill.admin.v1.ResourceName - 231, // 86: rill.admin.v1.SetProjectMemberUsergroupRoleRequest.resources:type_name -> rill.admin.v1.ResourceName - 348, // 87: rill.admin.v1.ListUsergroupMemberUsersResponse.members:type_name -> rill.admin.v1.UsergroupMemberUser - 189, // 88: rill.admin.v1.UpdateUserPreferencesRequest.preferences:type_name -> rill.admin.v1.UserPreferences - 189, // 89: rill.admin.v1.UpdateUserPreferencesResponse.preferences:type_name -> rill.admin.v1.UserPreferences - 331, // 90: rill.admin.v1.GetUserResponse.user:type_name -> rill.admin.v1.User - 331, // 91: rill.admin.v1.GetCurrentUserResponse.user:type_name -> rill.admin.v1.User - 189, // 92: rill.admin.v1.GetCurrentUserResponse.preferences:type_name -> rill.admin.v1.UserPreferences - 354, // 93: rill.admin.v1.ListUserAuthTokensResponse.tokens:type_name -> rill.admin.v1.UserAuthToken - 352, // 94: rill.admin.v1.ListBookmarksResponse.bookmarks:type_name -> rill.admin.v1.Bookmark - 352, // 95: rill.admin.v1.GetBookmarkResponse.bookmark:type_name -> rill.admin.v1.Bookmark - 352, // 96: rill.admin.v1.CreateBookmarkResponse.bookmark:type_name -> rill.admin.v1.Bookmark - 331, // 97: rill.admin.v1.SearchUsersResponse.users:type_name -> rill.admin.v1.User - 353, // 98: rill.admin.v1.ListServiceAuthTokensResponse.tokens:type_name -> rill.admin.v1.ServiceToken - 385, // 99: rill.admin.v1.IssueMagicAuthTokenRequest.metrics_view_filters:type_name -> rill.admin.v1.IssueMagicAuthTokenRequest.MetricsViewFiltersEntry - 231, // 100: rill.admin.v1.IssueMagicAuthTokenRequest.resources:type_name -> rill.admin.v1.ResourceName - 355, // 101: rill.admin.v1.ListMagicAuthTokensResponse.tokens:type_name -> rill.admin.v1.MagicAuthToken - 355, // 102: rill.admin.v1.GetCurrentMagicAuthTokenResponse.token:type_name -> rill.admin.v1.MagicAuthToken + 410, // 0: rill.admin.v1.PingResponse.time:type_name -> google.protobuf.Timestamp + 350, // 1: rill.admin.v1.ListOrganizationsResponse.organizations:type_name -> rill.admin.v1.Organization + 350, // 2: rill.admin.v1.GetOrganizationResponse.organization:type_name -> rill.admin.v1.Organization + 357, // 3: rill.admin.v1.GetOrganizationResponse.permissions:type_name -> rill.admin.v1.OrganizationPermissions + 350, // 4: rill.admin.v1.CreateOrganizationResponse.organization:type_name -> rill.admin.v1.Organization + 350, // 5: rill.admin.v1.UpdateOrganizationResponse.organization:type_name -> rill.admin.v1.Organization + 355, // 6: rill.admin.v1.ListDeploymentsResponse.deployments:type_name -> rill.admin.v1.Deployment + 355, // 7: rill.admin.v1.CreateDeploymentResponse.deployment:type_name -> rill.admin.v1.Deployment + 411, // 8: rill.admin.v1.GetDeploymentRequest.attributes:type_name -> google.protobuf.Struct + 355, // 9: rill.admin.v1.StartDeploymentResponse.deployment:type_name -> rill.admin.v1.Deployment + 354, // 10: rill.admin.v1.ListProjectsForOrganizationResponse.projects:type_name -> rill.admin.v1.Project + 354, // 11: rill.admin.v1.ListProjectsForOrganizationAndUserResponse.projects:type_name -> rill.admin.v1.Project + 390, // 12: rill.admin.v1.ListProjectsForOrganizationAndUserResponse.project_roles:type_name -> rill.admin.v1.ListProjectsForOrganizationAndUserResponse.ProjectRolesEntry + 354, // 13: rill.admin.v1.ListProjectsForFingerprintResponse.projects:type_name -> rill.admin.v1.Project + 354, // 14: rill.admin.v1.GetProjectResponse.project:type_name -> rill.admin.v1.Project + 355, // 15: rill.admin.v1.GetProjectResponse.deployment:type_name -> rill.admin.v1.Deployment + 358, // 16: rill.admin.v1.GetProjectResponse.project_permissions:type_name -> rill.admin.v1.ProjectPermissions + 354, // 17: rill.admin.v1.ListProjectsForUserByNameResponse.projects:type_name -> rill.admin.v1.Project + 354, // 18: rill.admin.v1.GetProjectByIDResponse.project:type_name -> rill.admin.v1.Project + 391, // 19: rill.admin.v1.SearchProjectNamesRequest.annotations:type_name -> rill.admin.v1.SearchProjectNamesRequest.AnnotationsEntry + 50, // 20: rill.admin.v1.GetProjectVariablesResponse.variables:type_name -> rill.admin.v1.ProjectVariable + 392, // 21: rill.admin.v1.GetProjectVariablesResponse.variables_map:type_name -> rill.admin.v1.GetProjectVariablesResponse.VariablesMapEntry + 410, // 22: rill.admin.v1.ProjectVariable.created_on:type_name -> google.protobuf.Timestamp + 410, // 23: rill.admin.v1.ProjectVariable.updated_on:type_name -> google.protobuf.Timestamp + 393, // 24: rill.admin.v1.UpdateProjectVariablesRequest.variables:type_name -> rill.admin.v1.UpdateProjectVariablesRequest.VariablesEntry + 50, // 25: rill.admin.v1.UpdateProjectVariablesResponse.variables:type_name -> rill.admin.v1.ProjectVariable + 346, // 26: rill.admin.v1.SearchProjectUsersResponse.users:type_name -> rill.admin.v1.User + 411, // 27: rill.admin.v1.GetDeploymentCredentialsRequest.attributes:type_name -> google.protobuf.Struct + 411, // 28: rill.admin.v1.GetIFrameRequest.attributes:type_name -> google.protobuf.Struct + 394, // 29: rill.admin.v1.GetIFrameRequest.query:type_name -> rill.admin.v1.GetIFrameRequest.QueryEntry + 348, // 30: rill.admin.v1.ListServicesResponse.services:type_name -> rill.admin.v1.OrganizationMemberService + 349, // 31: rill.admin.v1.ListProjectMemberServicesResponse.services:type_name -> rill.admin.v1.ProjectMemberService + 411, // 32: rill.admin.v1.CreateServiceRequest.attributes:type_name -> google.protobuf.Struct + 347, // 33: rill.admin.v1.CreateServiceResponse.service:type_name -> rill.admin.v1.Service + 348, // 34: rill.admin.v1.GetServiceResponse.service:type_name -> rill.admin.v1.OrganizationMemberService + 349, // 35: rill.admin.v1.GetServiceResponse.project_memberships:type_name -> rill.admin.v1.ProjectMemberService + 411, // 36: rill.admin.v1.UpdateServiceRequest.attributes:type_name -> google.protobuf.Struct + 347, // 37: rill.admin.v1.UpdateServiceResponse.service:type_name -> rill.admin.v1.Service + 347, // 38: rill.admin.v1.DeleteServiceResponse.service:type_name -> rill.admin.v1.Service + 354, // 39: rill.admin.v1.CreateProjectResponse.project:type_name -> rill.admin.v1.Project + 354, // 40: rill.admin.v1.UpdateProjectResponse.project:type_name -> rill.admin.v1.Project + 395, // 41: rill.admin.v1.CreateAssetResponse.signing_headers:type_name -> rill.admin.v1.CreateAssetResponse.SigningHeadersEntry + 411, // 42: rill.admin.v1.ProvisionRequest.args:type_name -> google.protobuf.Struct + 356, // 43: rill.admin.v1.ProvisionResponse.resource:type_name -> rill.admin.v1.ProvisionerResource + 50, // 44: rill.admin.v1.GetDeploymentConfigResponse.variables:type_name -> rill.admin.v1.ProjectVariable + 396, // 45: rill.admin.v1.GetDeploymentConfigResponse.variables_legacy:type_name -> rill.admin.v1.GetDeploymentConfigResponse.VariablesLegacyEntry + 397, // 46: rill.admin.v1.GetDeploymentConfigResponse.annotations:type_name -> rill.admin.v1.GetDeploymentConfigResponse.AnnotationsEntry + 410, // 47: rill.admin.v1.GetDeploymentConfigResponse.updated_on:type_name -> google.protobuf.Timestamp + 411, // 48: rill.admin.v1.GetDeploymentConfigResponse.duckdb_connector_config:type_name -> google.protobuf.Struct + 398, // 49: rill.admin.v1.GetDeploymentConfigResponse.system_variables:type_name -> rill.admin.v1.GetDeploymentConfigResponse.SystemVariablesEntry + 359, // 50: rill.admin.v1.ListRolesResponse.organization_roles:type_name -> rill.admin.v1.OrganizationRole + 360, // 51: rill.admin.v1.ListRolesResponse.project_roles:type_name -> rill.admin.v1.ProjectRole + 361, // 52: rill.admin.v1.ListOrganizationMemberUsersResponse.members:type_name -> rill.admin.v1.OrganizationMemberUser + 364, // 53: rill.admin.v1.ListOrganizationInvitesResponse.invites:type_name -> rill.admin.v1.OrganizationInvite + 361, // 54: rill.admin.v1.GetOrganizationMemberUserResponse.member:type_name -> rill.admin.v1.OrganizationMemberUser + 362, // 55: rill.admin.v1.GetProjectMemberUserResponse.member:type_name -> rill.admin.v1.ProjectMemberUser + 377, // 56: rill.admin.v1.ListUsergroupsForProjectAndUserResponse.usergroups:type_name -> rill.admin.v1.MemberUsergroup + 411, // 57: rill.admin.v1.UpdateOrganizationMemberUserAttributesRequest.attributes:type_name -> google.protobuf.Struct + 346, // 58: rill.admin.v1.ListSuperusersResponse.users:type_name -> rill.admin.v1.User + 346, // 59: rill.admin.v1.SudoGetResourceResponse.user:type_name -> rill.admin.v1.User + 350, // 60: rill.admin.v1.SudoGetResourceResponse.org:type_name -> rill.admin.v1.Organization + 354, // 61: rill.admin.v1.SudoGetResourceResponse.project:type_name -> rill.admin.v1.Project + 355, // 62: rill.admin.v1.SudoGetResourceResponse.deployment:type_name -> rill.admin.v1.Deployment + 355, // 63: rill.admin.v1.SudoGetResourceResponse.instance:type_name -> rill.admin.v1.Deployment + 350, // 64: rill.admin.v1.SudoUpdateOrganizationQuotasResponse.organization:type_name -> rill.admin.v1.Organization + 350, // 65: rill.admin.v1.SudoUpdateOrganizationBillingCustomerResponse.organization:type_name -> rill.admin.v1.Organization + 351, // 66: rill.admin.v1.SudoUpdateOrganizationBillingCustomerResponse.subscription:type_name -> rill.admin.v1.Subscription + 410, // 67: rill.admin.v1.SudoReportUsageRequest.end_time:type_name -> google.protobuf.Timestamp + 410, // 68: rill.admin.v1.SudoReportUsageResponse.start_time:type_name -> google.protobuf.Timestamp + 410, // 69: rill.admin.v1.SudoReportUsageResponse.end_time:type_name -> google.protobuf.Timestamp + 350, // 70: rill.admin.v1.SudoUpdateOrganizationCustomDomainResponse.organization:type_name -> rill.admin.v1.Organization + 346, // 71: rill.admin.v1.SudoUpdateUserQuotasResponse.user:type_name -> rill.admin.v1.User + 399, // 72: rill.admin.v1.SudoUpdateAnnotationsRequest.annotations:type_name -> rill.admin.v1.SudoUpdateAnnotationsRequest.AnnotationsEntry + 354, // 73: rill.admin.v1.SudoUpdateAnnotationsResponse.project:type_name -> rill.admin.v1.Project + 5, // 74: rill.admin.v1.SudoDeleteOrganizationBillingIssueRequest.type:type_name -> rill.admin.v1.BillingIssueType + 362, // 75: rill.admin.v1.ListProjectMemberUsersResponse.members:type_name -> rill.admin.v1.ProjectMemberUser + 365, // 76: rill.admin.v1.ListProjectInvitesResponse.invites:type_name -> rill.admin.v1.ProjectInvite + 233, // 77: rill.admin.v1.AddProjectMemberUserRequest.resources:type_name -> rill.admin.v1.ResourceName + 233, // 78: rill.admin.v1.SetProjectMemberUserRoleRequest.resources:type_name -> rill.admin.v1.ResourceName + 376, // 79: rill.admin.v1.ListUsergroupsForOrganizationAndUserResponse.usergroups:type_name -> rill.admin.v1.Usergroup + 376, // 80: rill.admin.v1.CreateUsergroupResponse.usergroup:type_name -> rill.admin.v1.Usergroup + 376, // 81: rill.admin.v1.GetUsergroupResponse.usergroup:type_name -> rill.admin.v1.Usergroup + 376, // 82: rill.admin.v1.UpdateUsergroupResponse.usergroup:type_name -> rill.admin.v1.Usergroup + 377, // 83: rill.admin.v1.ListOrganizationMemberUsergroupsResponse.members:type_name -> rill.admin.v1.MemberUsergroup + 377, // 84: rill.admin.v1.ListProjectMemberUsergroupsResponse.members:type_name -> rill.admin.v1.MemberUsergroup + 233, // 85: rill.admin.v1.AddProjectMemberUsergroupRequest.resources:type_name -> rill.admin.v1.ResourceName + 233, // 86: rill.admin.v1.SetProjectMemberUsergroupRoleRequest.resources:type_name -> rill.admin.v1.ResourceName + 363, // 87: rill.admin.v1.ListUsergroupMemberUsersResponse.members:type_name -> rill.admin.v1.UsergroupMemberUser + 191, // 88: rill.admin.v1.UpdateUserPreferencesRequest.preferences:type_name -> rill.admin.v1.UserPreferences + 191, // 89: rill.admin.v1.UpdateUserPreferencesResponse.preferences:type_name -> rill.admin.v1.UserPreferences + 346, // 90: rill.admin.v1.GetUserResponse.user:type_name -> rill.admin.v1.User + 346, // 91: rill.admin.v1.GetCurrentUserResponse.user:type_name -> rill.admin.v1.User + 191, // 92: rill.admin.v1.GetCurrentUserResponse.preferences:type_name -> rill.admin.v1.UserPreferences + 369, // 93: rill.admin.v1.ListUserAuthTokensResponse.tokens:type_name -> rill.admin.v1.UserAuthToken + 367, // 94: rill.admin.v1.ListBookmarksResponse.bookmarks:type_name -> rill.admin.v1.Bookmark + 367, // 95: rill.admin.v1.GetBookmarkResponse.bookmark:type_name -> rill.admin.v1.Bookmark + 367, // 96: rill.admin.v1.CreateBookmarkResponse.bookmark:type_name -> rill.admin.v1.Bookmark + 346, // 97: rill.admin.v1.SearchUsersResponse.users:type_name -> rill.admin.v1.User + 368, // 98: rill.admin.v1.ListServiceAuthTokensResponse.tokens:type_name -> rill.admin.v1.ServiceToken + 400, // 99: rill.admin.v1.IssueMagicAuthTokenRequest.metrics_view_filters:type_name -> rill.admin.v1.IssueMagicAuthTokenRequest.MetricsViewFiltersEntry + 233, // 100: rill.admin.v1.IssueMagicAuthTokenRequest.resources:type_name -> rill.admin.v1.ResourceName + 370, // 101: rill.admin.v1.ListMagicAuthTokensResponse.tokens:type_name -> rill.admin.v1.MagicAuthToken + 370, // 102: rill.admin.v1.GetCurrentMagicAuthTokenResponse.token:type_name -> rill.admin.v1.MagicAuthToken 0, // 103: rill.admin.v1.GetGithubUserStatusResponse.user_installation_permission:type_name -> rill.admin.v1.GithubPermission - 386, // 104: rill.admin.v1.GetGithubUserStatusResponse.organization_installation_permissions:type_name -> rill.admin.v1.GetGithubUserStatusResponse.OrganizationInstallationPermissionsEntry - 387, // 105: rill.admin.v1.ListGithubUserReposResponse.repos:type_name -> rill.admin.v1.ListGithubUserReposResponse.Repo - 5, // 106: rill.admin.v1.GetGithubPullRequestResponse.pr_state:type_name -> rill.admin.v1.GetGithubPullRequestResponse.State - 395, // 107: rill.admin.v1.CreateManagedGitRepoResponse.password_expires_at:type_name -> google.protobuf.Timestamp - 395, // 108: rill.admin.v1.GetCloneCredentialsResponse.git_password_expires_at:type_name -> google.protobuf.Timestamp - 351, // 109: rill.admin.v1.ListWhitelistedDomainsResponse.domains:type_name -> rill.admin.v1.WhitelistedDomain - 351, // 110: rill.admin.v1.ListProjectWhitelistedDomainsResponse.domains:type_name -> rill.admin.v1.WhitelistedDomain - 395, // 111: rill.admin.v1.GetRepoMetaResponse.expires_on:type_name -> google.protobuf.Timestamp - 395, // 112: rill.admin.v1.GetRepoMetaResponse.last_updated_on:type_name -> google.protobuf.Timestamp - 395, // 113: rill.admin.v1.GetRepoMetaResponse.archive_created_on:type_name -> google.protobuf.Timestamp - 356, // 114: rill.admin.v1.PullVirtualRepoResponse.files:type_name -> rill.admin.v1.VirtualFile - 356, // 115: rill.admin.v1.GetVirtualFileResponse.file:type_name -> rill.admin.v1.VirtualFile - 395, // 116: rill.admin.v1.GetReportMetaRequest.execution_time:type_name -> google.protobuf.Timestamp - 231, // 117: rill.admin.v1.GetReportMetaRequest.resources:type_name -> rill.admin.v1.ResourceName - 389, // 118: rill.admin.v1.GetReportMetaResponse.delivery_meta:type_name -> rill.admin.v1.GetReportMetaResponse.DeliveryMetaEntry - 390, // 119: rill.admin.v1.GetAlertMetaRequest.annotations:type_name -> rill.admin.v1.GetAlertMetaRequest.AnnotationsEntry - 392, // 120: rill.admin.v1.GetAlertMetaResponse.recipient_urls:type_name -> rill.admin.v1.GetAlertMetaResponse.RecipientUrlsEntry - 396, // 121: rill.admin.v1.GetAlertMetaResponse.query_for_attributes:type_name -> google.protobuf.Struct - 357, // 122: rill.admin.v1.CreateReportRequest.options:type_name -> rill.admin.v1.ReportOptions - 357, // 123: rill.admin.v1.EditReportRequest.options:type_name -> rill.admin.v1.ReportOptions - 357, // 124: rill.admin.v1.GenerateReportYAMLRequest.options:type_name -> rill.admin.v1.ReportOptions - 358, // 125: rill.admin.v1.CreateAlertRequest.options:type_name -> rill.admin.v1.AlertOptions - 358, // 126: rill.admin.v1.EditAlertRequest.options:type_name -> rill.admin.v1.AlertOptions - 358, // 127: rill.admin.v1.GenerateAlertYAMLRequest.options:type_name -> rill.admin.v1.AlertOptions - 335, // 128: rill.admin.v1.GetBillingSubscriptionResponse.organization:type_name -> rill.admin.v1.Organization - 336, // 129: rill.admin.v1.GetBillingSubscriptionResponse.subscription:type_name -> rill.admin.v1.Subscription - 335, // 130: rill.admin.v1.UpdateBillingSubscriptionResponse.organization:type_name -> rill.admin.v1.Organization - 336, // 131: rill.admin.v1.UpdateBillingSubscriptionResponse.subscription:type_name -> rill.admin.v1.Subscription - 335, // 132: rill.admin.v1.RenewBillingSubscriptionResponse.organization:type_name -> rill.admin.v1.Organization - 336, // 133: rill.admin.v1.RenewBillingSubscriptionResponse.subscription:type_name -> rill.admin.v1.Subscription - 359, // 134: rill.admin.v1.ListPublicBillingPlansResponse.plans:type_name -> rill.admin.v1.BillingPlan - 396, // 135: rill.admin.v1.TelemetryRequest.event:type_name -> google.protobuf.Struct - 363, // 136: rill.admin.v1.ListOrganizationBillingIssuesResponse.issues:type_name -> rill.admin.v1.BillingIssue - 337, // 137: rill.admin.v1.User.quotas:type_name -> rill.admin.v1.UserQuotas - 395, // 138: rill.admin.v1.User.created_on:type_name -> google.protobuf.Timestamp - 395, // 139: rill.admin.v1.User.updated_on:type_name -> google.protobuf.Timestamp - 396, // 140: rill.admin.v1.Service.attributes:type_name -> google.protobuf.Struct - 395, // 141: rill.admin.v1.Service.created_on:type_name -> google.protobuf.Timestamp - 395, // 142: rill.admin.v1.Service.updated_on:type_name -> google.protobuf.Timestamp - 396, // 143: rill.admin.v1.OrganizationMemberService.attributes:type_name -> google.protobuf.Struct - 395, // 144: rill.admin.v1.OrganizationMemberService.created_on:type_name -> google.protobuf.Timestamp - 395, // 145: rill.admin.v1.OrganizationMemberService.updated_on:type_name -> google.protobuf.Timestamp - 396, // 146: rill.admin.v1.ProjectMemberService.attributes:type_name -> google.protobuf.Struct - 395, // 147: rill.admin.v1.ProjectMemberService.created_on:type_name -> google.protobuf.Timestamp - 395, // 148: rill.admin.v1.ProjectMemberService.updated_on:type_name -> google.protobuf.Timestamp - 338, // 149: rill.admin.v1.Organization.quotas:type_name -> rill.admin.v1.OrganizationQuotas - 395, // 150: rill.admin.v1.Organization.created_on:type_name -> google.protobuf.Timestamp - 395, // 151: rill.admin.v1.Organization.updated_on:type_name -> google.protobuf.Timestamp - 359, // 152: rill.admin.v1.Subscription.plan:type_name -> rill.admin.v1.BillingPlan - 395, // 153: rill.admin.v1.Subscription.start_date:type_name -> google.protobuf.Timestamp - 395, // 154: rill.admin.v1.Subscription.end_date:type_name -> google.protobuf.Timestamp - 395, // 155: rill.admin.v1.Subscription.current_billing_cycle_start_date:type_name -> google.protobuf.Timestamp - 395, // 156: rill.admin.v1.Subscription.current_billing_cycle_end_date:type_name -> google.protobuf.Timestamp - 395, // 157: rill.admin.v1.Subscription.trial_end_date:type_name -> google.protobuf.Timestamp - 393, // 158: rill.admin.v1.Project.annotations:type_name -> rill.admin.v1.Project.AnnotationsEntry - 395, // 159: rill.admin.v1.Project.created_on:type_name -> google.protobuf.Timestamp - 395, // 160: rill.admin.v1.Project.updated_on:type_name -> google.protobuf.Timestamp - 1, // 161: rill.admin.v1.Deployment.status:type_name -> rill.admin.v1.DeploymentStatus - 395, // 162: rill.admin.v1.Deployment.created_on:type_name -> google.protobuf.Timestamp - 395, // 163: rill.admin.v1.Deployment.updated_on:type_name -> google.protobuf.Timestamp - 395, // 164: rill.admin.v1.Deployment.used_on:type_name -> google.protobuf.Timestamp - 396, // 165: rill.admin.v1.ProvisionerResource.args:type_name -> google.protobuf.Struct - 396, // 166: rill.admin.v1.ProvisionerResource.config:type_name -> google.protobuf.Struct - 342, // 167: rill.admin.v1.OrganizationRole.permissions:type_name -> rill.admin.v1.OrganizationPermissions - 343, // 168: rill.admin.v1.ProjectRole.permissions:type_name -> rill.admin.v1.ProjectPermissions - 396, // 169: rill.admin.v1.OrganizationMemberUser.attributes:type_name -> google.protobuf.Struct - 395, // 170: rill.admin.v1.OrganizationMemberUser.created_on:type_name -> google.protobuf.Timestamp - 395, // 171: rill.admin.v1.OrganizationMemberUser.updated_on:type_name -> google.protobuf.Timestamp - 395, // 172: rill.admin.v1.ProjectMemberUser.created_on:type_name -> google.protobuf.Timestamp - 395, // 173: rill.admin.v1.ProjectMemberUser.updated_on:type_name -> google.protobuf.Timestamp - 231, // 174: rill.admin.v1.ProjectMemberUser.resources:type_name -> rill.admin.v1.ResourceName - 395, // 175: rill.admin.v1.UsergroupMemberUser.created_on:type_name -> google.protobuf.Timestamp - 395, // 176: rill.admin.v1.UsergroupMemberUser.updated_on:type_name -> google.protobuf.Timestamp - 231, // 177: rill.admin.v1.ProjectInvite.resources:type_name -> rill.admin.v1.ResourceName - 395, // 178: rill.admin.v1.Bookmark.created_on:type_name -> google.protobuf.Timestamp - 395, // 179: rill.admin.v1.Bookmark.updated_on:type_name -> google.protobuf.Timestamp - 395, // 180: rill.admin.v1.ServiceToken.created_on:type_name -> google.protobuf.Timestamp - 395, // 181: rill.admin.v1.ServiceToken.expires_on:type_name -> google.protobuf.Timestamp - 396, // 182: rill.admin.v1.UserAuthToken.attributes:type_name -> google.protobuf.Struct - 395, // 183: rill.admin.v1.UserAuthToken.created_on:type_name -> google.protobuf.Timestamp - 395, // 184: rill.admin.v1.UserAuthToken.expires_on:type_name -> google.protobuf.Timestamp - 395, // 185: rill.admin.v1.UserAuthToken.used_on:type_name -> google.protobuf.Timestamp - 395, // 186: rill.admin.v1.MagicAuthToken.created_on:type_name -> google.protobuf.Timestamp - 395, // 187: rill.admin.v1.MagicAuthToken.expires_on:type_name -> google.protobuf.Timestamp - 395, // 188: rill.admin.v1.MagicAuthToken.used_on:type_name -> google.protobuf.Timestamp - 396, // 189: rill.admin.v1.MagicAuthToken.attributes:type_name -> google.protobuf.Struct - 231, // 190: rill.admin.v1.MagicAuthToken.resources:type_name -> rill.admin.v1.ResourceName - 394, // 191: rill.admin.v1.MagicAuthToken.metrics_view_filters:type_name -> rill.admin.v1.MagicAuthToken.MetricsViewFiltersEntry - 395, // 192: rill.admin.v1.VirtualFile.updated_on:type_name -> google.protobuf.Timestamp - 396, // 193: rill.admin.v1.ReportOptions.resolver_properties:type_name -> google.protobuf.Struct - 397, // 194: rill.admin.v1.ReportOptions.export_format:type_name -> rill.runtime.v1.ExportFormat - 396, // 195: rill.admin.v1.AlertOptions.resolver_properties:type_name -> google.protobuf.Struct - 2, // 196: rill.admin.v1.BillingPlan.plan_type:type_name -> rill.admin.v1.BillingPlanType - 360, // 197: rill.admin.v1.BillingPlan.quotas:type_name -> rill.admin.v1.Quotas - 395, // 198: rill.admin.v1.Usergroup.created_on:type_name -> google.protobuf.Timestamp - 395, // 199: rill.admin.v1.Usergroup.updated_on:type_name -> google.protobuf.Timestamp - 395, // 200: rill.admin.v1.MemberUsergroup.created_on:type_name -> google.protobuf.Timestamp - 395, // 201: rill.admin.v1.MemberUsergroup.updated_on:type_name -> google.protobuf.Timestamp - 231, // 202: rill.admin.v1.MemberUsergroup.resources:type_name -> rill.admin.v1.ResourceName - 3, // 203: rill.admin.v1.BillingIssue.type:type_name -> rill.admin.v1.BillingIssueType - 4, // 204: rill.admin.v1.BillingIssue.level:type_name -> rill.admin.v1.BillingIssueLevel - 364, // 205: rill.admin.v1.BillingIssue.metadata:type_name -> rill.admin.v1.BillingIssueMetadata - 395, // 206: rill.admin.v1.BillingIssue.event_time:type_name -> google.protobuf.Timestamp - 395, // 207: rill.admin.v1.BillingIssue.created_on:type_name -> google.protobuf.Timestamp - 365, // 208: rill.admin.v1.BillingIssueMetadata.on_trial:type_name -> rill.admin.v1.BillingIssueMetadataOnTrial - 366, // 209: rill.admin.v1.BillingIssueMetadata.trial_ended:type_name -> rill.admin.v1.BillingIssueMetadataTrialEnded - 367, // 210: rill.admin.v1.BillingIssueMetadata.no_payment_method:type_name -> rill.admin.v1.BillingIssueMetadataNoPaymentMethod - 368, // 211: rill.admin.v1.BillingIssueMetadata.no_billable_address:type_name -> rill.admin.v1.BillingIssueMetadataNoBillableAddress - 369, // 212: rill.admin.v1.BillingIssueMetadata.payment_failed:type_name -> rill.admin.v1.BillingIssueMetadataPaymentFailed - 371, // 213: rill.admin.v1.BillingIssueMetadata.subscription_cancelled:type_name -> rill.admin.v1.BillingIssueMetadataSubscriptionCancelled - 372, // 214: rill.admin.v1.BillingIssueMetadata.never_subscribed:type_name -> rill.admin.v1.BillingIssueMetadataNeverSubscribed - 373, // 215: rill.admin.v1.BillingIssueMetadata.on_credit_trial:type_name -> rill.admin.v1.BillingIssueMetadataOnCreditTrial - 374, // 216: rill.admin.v1.BillingIssueMetadata.trial_credits_depleted:type_name -> rill.admin.v1.BillingIssueMetadataTrialCreditsDepleted - 395, // 217: rill.admin.v1.BillingIssueMetadataOnTrial.end_date:type_name -> google.protobuf.Timestamp - 395, // 218: rill.admin.v1.BillingIssueMetadataOnTrial.grace_period_end_date:type_name -> google.protobuf.Timestamp - 395, // 219: rill.admin.v1.BillingIssueMetadataTrialEnded.end_date:type_name -> google.protobuf.Timestamp - 395, // 220: rill.admin.v1.BillingIssueMetadataTrialEnded.grace_period_end_date:type_name -> google.protobuf.Timestamp - 370, // 221: rill.admin.v1.BillingIssueMetadataPaymentFailed.invoices:type_name -> rill.admin.v1.BillingIssueMetadataPaymentFailedMeta - 395, // 222: rill.admin.v1.BillingIssueMetadataPaymentFailedMeta.due_date:type_name -> google.protobuf.Timestamp - 395, // 223: rill.admin.v1.BillingIssueMetadataPaymentFailedMeta.failed_on:type_name -> google.protobuf.Timestamp - 395, // 224: rill.admin.v1.BillingIssueMetadataPaymentFailedMeta.grace_period_end_date:type_name -> google.protobuf.Timestamp - 395, // 225: rill.admin.v1.BillingIssueMetadataSubscriptionCancelled.end_date:type_name -> google.protobuf.Timestamp - 395, // 226: rill.admin.v1.BillingIssueMetadataTrialCreditsDepleted.depleted_on:type_name -> google.protobuf.Timestamp - 347, // 227: rill.admin.v1.ListProjectsForOrganizationAndUserResponse.ProjectRolesEntry.value:type_name -> rill.admin.v1.ProjectMemberUser - 398, // 228: rill.admin.v1.IssueMagicAuthTokenRequest.MetricsViewFiltersEntry.value:type_name -> rill.runtime.v1.Expression - 0, // 229: rill.admin.v1.GetGithubUserStatusResponse.OrganizationInstallationPermissionsEntry.value:type_name -> rill.admin.v1.GithubPermission - 396, // 230: rill.admin.v1.GetReportMetaResponse.DeliveryMeta.user_attrs:type_name -> google.protobuf.Struct - 388, // 231: rill.admin.v1.GetReportMetaResponse.DeliveryMetaEntry.value:type_name -> rill.admin.v1.GetReportMetaResponse.DeliveryMeta - 391, // 232: rill.admin.v1.GetAlertMetaResponse.RecipientUrlsEntry.value:type_name -> rill.admin.v1.GetAlertMetaResponse.URLs - 398, // 233: rill.admin.v1.MagicAuthToken.MetricsViewFiltersEntry.value:type_name -> rill.runtime.v1.Expression - 6, // 234: rill.admin.v1.AdminService.Ping:input_type -> rill.admin.v1.PingRequest - 8, // 235: rill.admin.v1.AdminService.ListOrganizations:input_type -> rill.admin.v1.ListOrganizationsRequest - 10, // 236: rill.admin.v1.AdminService.GetOrganization:input_type -> rill.admin.v1.GetOrganizationRequest - 12, // 237: rill.admin.v1.AdminService.GetOrganizationNameForDomain:input_type -> rill.admin.v1.GetOrganizationNameForDomainRequest - 14, // 238: rill.admin.v1.AdminService.CreateOrganization:input_type -> rill.admin.v1.CreateOrganizationRequest - 16, // 239: rill.admin.v1.AdminService.DeleteOrganization:input_type -> rill.admin.v1.DeleteOrganizationRequest - 18, // 240: rill.admin.v1.AdminService.UpdateOrganization:input_type -> rill.admin.v1.UpdateOrganizationRequest - 20, // 241: rill.admin.v1.AdminService.ListProjectsForOrganization:input_type -> rill.admin.v1.ListProjectsForOrganizationRequest - 34, // 242: rill.admin.v1.AdminService.ListProjectsForOrganizationAndUser:input_type -> rill.admin.v1.ListProjectsForOrganizationAndUserRequest - 36, // 243: rill.admin.v1.AdminService.ListProjectsForFingerprint:input_type -> rill.admin.v1.ListProjectsForFingerprintRequest - 38, // 244: rill.admin.v1.AdminService.GetProject:input_type -> rill.admin.v1.GetProjectRequest - 40, // 245: rill.admin.v1.AdminService.ListProjectsForUserByName:input_type -> rill.admin.v1.ListProjectsForUserByNameRequest - 42, // 246: rill.admin.v1.AdminService.GetProjectByID:input_type -> rill.admin.v1.GetProjectByIDRequest - 44, // 247: rill.admin.v1.AdminService.SearchProjectNames:input_type -> rill.admin.v1.SearchProjectNamesRequest - 77, // 248: rill.admin.v1.AdminService.CreateProject:input_type -> rill.admin.v1.CreateProjectRequest - 79, // 249: rill.admin.v1.AdminService.DeleteProject:input_type -> rill.admin.v1.DeleteProjectRequest - 81, // 250: rill.admin.v1.AdminService.UpdateProject:input_type -> rill.admin.v1.UpdateProjectRequest - 46, // 251: rill.admin.v1.AdminService.GetProjectVariables:input_type -> rill.admin.v1.GetProjectVariablesRequest - 49, // 252: rill.admin.v1.AdminService.UpdateProjectVariables:input_type -> rill.admin.v1.UpdateProjectVariablesRequest - 83, // 253: rill.admin.v1.AdminService.CreateAsset:input_type -> rill.admin.v1.CreateAssetRequest - 85, // 254: rill.admin.v1.AdminService.RedeployProject:input_type -> rill.admin.v1.RedeployProjectRequest - 87, // 255: rill.admin.v1.AdminService.HibernateProject:input_type -> rill.admin.v1.HibernateProjectRequest - 21, // 256: rill.admin.v1.AdminService.ListDeployments:input_type -> rill.admin.v1.ListDeploymentsRequest - 23, // 257: rill.admin.v1.AdminService.CreateDeployment:input_type -> rill.admin.v1.CreateDeploymentRequest - 25, // 258: rill.admin.v1.AdminService.GetDeployment:input_type -> rill.admin.v1.GetDeploymentRequest - 27, // 259: rill.admin.v1.AdminService.StartDeployment:input_type -> rill.admin.v1.StartDeploymentRequest - 29, // 260: rill.admin.v1.AdminService.StopDeployment:input_type -> rill.admin.v1.StopDeploymentRequest - 31, // 261: rill.admin.v1.AdminService.DeleteDeployment:input_type -> rill.admin.v1.DeleteDeploymentRequest - 89, // 262: rill.admin.v1.AdminService.TriggerReconcile:input_type -> rill.admin.v1.TriggerReconcileRequest - 91, // 263: rill.admin.v1.AdminService.TriggerRefreshSources:input_type -> rill.admin.v1.TriggerRefreshSourcesRequest - 93, // 264: rill.admin.v1.AdminService.TriggerRedeploy:input_type -> rill.admin.v1.TriggerRedeployRequest - 95, // 265: rill.admin.v1.AdminService.Provision:input_type -> rill.admin.v1.ProvisionRequest - 97, // 266: rill.admin.v1.AdminService.GetDeploymentConfig:input_type -> rill.admin.v1.GetDeploymentConfigRequest - 99, // 267: rill.admin.v1.AdminService.ListRoles:input_type -> rill.admin.v1.ListRolesRequest - 101, // 268: rill.admin.v1.AdminService.ListOrganizationMemberUsers:input_type -> rill.admin.v1.ListOrganizationMemberUsersRequest - 103, // 269: rill.admin.v1.AdminService.ListOrganizationInvites:input_type -> rill.admin.v1.ListOrganizationInvitesRequest - 105, // 270: rill.admin.v1.AdminService.AddOrganizationMemberUser:input_type -> rill.admin.v1.AddOrganizationMemberUserRequest - 107, // 271: rill.admin.v1.AdminService.RemoveOrganizationMemberUser:input_type -> rill.admin.v1.RemoveOrganizationMemberUserRequest - 109, // 272: rill.admin.v1.AdminService.LeaveOrganization:input_type -> rill.admin.v1.LeaveOrganizationRequest - 111, // 273: rill.admin.v1.AdminService.SetOrganizationMemberUserRole:input_type -> rill.admin.v1.SetOrganizationMemberUserRoleRequest - 113, // 274: rill.admin.v1.AdminService.GetOrganizationMemberUser:input_type -> rill.admin.v1.GetOrganizationMemberUserRequest - 117, // 275: rill.admin.v1.AdminService.ListUsergroupsForProjectAndUser:input_type -> rill.admin.v1.ListUsergroupsForProjectAndUserRequest - 119, // 276: rill.admin.v1.AdminService.UpdateOrganizationMemberUserAttributes:input_type -> rill.admin.v1.UpdateOrganizationMemberUserAttributesRequest - 147, // 277: rill.admin.v1.AdminService.ListProjectMemberUsers:input_type -> rill.admin.v1.ListProjectMemberUsersRequest - 149, // 278: rill.admin.v1.AdminService.ListProjectInvites:input_type -> rill.admin.v1.ListProjectInvitesRequest - 151, // 279: rill.admin.v1.AdminService.AddProjectMemberUser:input_type -> rill.admin.v1.AddProjectMemberUserRequest - 153, // 280: rill.admin.v1.AdminService.RemoveProjectMemberUser:input_type -> rill.admin.v1.RemoveProjectMemberUserRequest - 155, // 281: rill.admin.v1.AdminService.SetProjectMemberUserRole:input_type -> rill.admin.v1.SetProjectMemberUserRoleRequest - 115, // 282: rill.admin.v1.AdminService.GetProjectMemberUser:input_type -> rill.admin.v1.GetProjectMemberUserRequest - 157, // 283: rill.admin.v1.AdminService.ListUsergroupsForOrganizationAndUser:input_type -> rill.admin.v1.ListUsergroupsForOrganizationAndUserRequest - 159, // 284: rill.admin.v1.AdminService.CreateUsergroup:input_type -> rill.admin.v1.CreateUsergroupRequest - 161, // 285: rill.admin.v1.AdminService.GetUsergroup:input_type -> rill.admin.v1.GetUsergroupRequest - 163, // 286: rill.admin.v1.AdminService.UpdateUsergroup:input_type -> rill.admin.v1.UpdateUsergroupRequest - 165, // 287: rill.admin.v1.AdminService.ListOrganizationMemberUsergroups:input_type -> rill.admin.v1.ListOrganizationMemberUsergroupsRequest - 167, // 288: rill.admin.v1.AdminService.ListProjectMemberUsergroups:input_type -> rill.admin.v1.ListProjectMemberUsergroupsRequest - 169, // 289: rill.admin.v1.AdminService.DeleteUsergroup:input_type -> rill.admin.v1.DeleteUsergroupRequest - 171, // 290: rill.admin.v1.AdminService.AddOrganizationMemberUsergroup:input_type -> rill.admin.v1.AddOrganizationMemberUsergroupRequest - 173, // 291: rill.admin.v1.AdminService.SetOrganizationMemberUsergroupRole:input_type -> rill.admin.v1.SetOrganizationMemberUsergroupRoleRequest - 175, // 292: rill.admin.v1.AdminService.RemoveOrganizationMemberUsergroup:input_type -> rill.admin.v1.RemoveOrganizationMemberUsergroupRequest - 177, // 293: rill.admin.v1.AdminService.AddProjectMemberUsergroup:input_type -> rill.admin.v1.AddProjectMemberUsergroupRequest - 179, // 294: rill.admin.v1.AdminService.SetProjectMemberUsergroupRole:input_type -> rill.admin.v1.SetProjectMemberUsergroupRoleRequest - 181, // 295: rill.admin.v1.AdminService.RemoveProjectMemberUsergroup:input_type -> rill.admin.v1.RemoveProjectMemberUsergroupRequest - 183, // 296: rill.admin.v1.AdminService.AddUsergroupMemberUser:input_type -> rill.admin.v1.AddUsergroupMemberUserRequest - 185, // 297: rill.admin.v1.AdminService.ListUsergroupMemberUsers:input_type -> rill.admin.v1.ListUsergroupMemberUsersRequest - 187, // 298: rill.admin.v1.AdminService.RemoveUsergroupMemberUser:input_type -> rill.admin.v1.RemoveUsergroupMemberUserRequest - 192, // 299: rill.admin.v1.AdminService.GetUser:input_type -> rill.admin.v1.GetUserRequest - 194, // 300: rill.admin.v1.AdminService.GetCurrentUser:input_type -> rill.admin.v1.GetCurrentUserRequest - 196, // 301: rill.admin.v1.AdminService.DeleteUser:input_type -> rill.admin.v1.DeleteUserRequest - 198, // 302: rill.admin.v1.AdminService.ListUserAuthTokens:input_type -> rill.admin.v1.ListUserAuthTokensRequest - 200, // 303: rill.admin.v1.AdminService.IssueUserAuthToken:input_type -> rill.admin.v1.IssueUserAuthTokenRequest - 202, // 304: rill.admin.v1.AdminService.RevokeUserAuthToken:input_type -> rill.admin.v1.RevokeUserAuthTokenRequest - 204, // 305: rill.admin.v1.AdminService.RevokeAllUserAuthTokens:input_type -> rill.admin.v1.RevokeAllUserAuthTokensRequest - 206, // 306: rill.admin.v1.AdminService.RevokeRepresentativeAuthTokens:input_type -> rill.admin.v1.RevokeRepresentativeAuthTokensRequest - 208, // 307: rill.admin.v1.AdminService.IssueRepresentativeAuthToken:input_type -> rill.admin.v1.IssueRepresentativeAuthTokenRequest - 210, // 308: rill.admin.v1.AdminService.RevokeCurrentAuthToken:input_type -> rill.admin.v1.RevokeCurrentAuthTokenRequest - 239, // 309: rill.admin.v1.AdminService.GetGithubRepoStatus:input_type -> rill.admin.v1.GetGithubRepoStatusRequest - 241, // 310: rill.admin.v1.AdminService.GetGithubUserStatus:input_type -> rill.admin.v1.GetGithubUserStatusRequest - 243, // 311: rill.admin.v1.AdminService.ListGithubUserRepos:input_type -> rill.admin.v1.ListGithubUserReposRequest - 245, // 312: rill.admin.v1.AdminService.CreateGithubPullRequest:input_type -> rill.admin.v1.CreateGithubPullRequestRequest - 247, // 313: rill.admin.v1.AdminService.GetGithubPullRequest:input_type -> rill.admin.v1.GetGithubPullRequestRequest - 249, // 314: rill.admin.v1.AdminService.ConnectProjectToGithub:input_type -> rill.admin.v1.ConnectProjectToGithubRequest - 251, // 315: rill.admin.v1.AdminService.CreateManagedGitRepo:input_type -> rill.admin.v1.CreateManagedGitRepoRequest - 253, // 316: rill.admin.v1.AdminService.GetCloneCredentials:input_type -> rill.admin.v1.GetCloneCredentialsRequest - 255, // 317: rill.admin.v1.AdminService.CreateWhitelistedDomain:input_type -> rill.admin.v1.CreateWhitelistedDomainRequest - 257, // 318: rill.admin.v1.AdminService.RemoveWhitelistedDomain:input_type -> rill.admin.v1.RemoveWhitelistedDomainRequest - 259, // 319: rill.admin.v1.AdminService.ListWhitelistedDomains:input_type -> rill.admin.v1.ListWhitelistedDomainsRequest - 222, // 320: rill.admin.v1.AdminService.SearchUsers:input_type -> rill.admin.v1.SearchUsersRequest - 51, // 321: rill.admin.v1.AdminService.SearchProjectUsers:input_type -> rill.admin.v1.SearchProjectUsersRequest - 121, // 322: rill.admin.v1.AdminService.ListSuperusers:input_type -> rill.admin.v1.ListSuperusersRequest - 53, // 323: rill.admin.v1.AdminService.GetDeploymentCredentials:input_type -> rill.admin.v1.GetDeploymentCredentialsRequest - 55, // 324: rill.admin.v1.AdminService.GetIFrame:input_type -> rill.admin.v1.GetIFrameRequest - 123, // 325: rill.admin.v1.AdminService.SetSuperuser:input_type -> rill.admin.v1.SetSuperuserRequest - 125, // 326: rill.admin.v1.AdminService.SudoGetResource:input_type -> rill.admin.v1.SudoGetResourceRequest - 137, // 327: rill.admin.v1.AdminService.SudoUpdateUserQuotas:input_type -> rill.admin.v1.SudoUpdateUserQuotasRequest - 127, // 328: rill.admin.v1.AdminService.SudoUpdateOrganizationQuotas:input_type -> rill.admin.v1.SudoUpdateOrganizationQuotasRequest - 129, // 329: rill.admin.v1.AdminService.SudoUpdateOrganizationBillingCustomer:input_type -> rill.admin.v1.SudoUpdateOrganizationBillingCustomerRequest - 131, // 330: rill.admin.v1.AdminService.SudoGrantTrialCredits:input_type -> rill.admin.v1.SudoGrantTrialCreditsRequest - 133, // 331: rill.admin.v1.AdminService.SudoReportUsage:input_type -> rill.admin.v1.SudoReportUsageRequest - 135, // 332: rill.admin.v1.AdminService.SudoUpdateOrganizationCustomDomain:input_type -> rill.admin.v1.SudoUpdateOrganizationCustomDomainRequest - 139, // 333: rill.admin.v1.AdminService.SudoUpdateAnnotations:input_type -> rill.admin.v1.SudoUpdateAnnotationsRequest - 141, // 334: rill.admin.v1.AdminService.SudoIssueRuntimeManagerToken:input_type -> rill.admin.v1.SudoIssueRuntimeManagerTokenRequest - 143, // 335: rill.admin.v1.AdminService.SudoDeleteOrganizationBillingIssue:input_type -> rill.admin.v1.SudoDeleteOrganizationBillingIssueRequest - 145, // 336: rill.admin.v1.AdminService.SudoTriggerBillingRepair:input_type -> rill.admin.v1.SudoTriggerBillingRepairRequest - 261, // 337: rill.admin.v1.AdminService.CreateProjectWhitelistedDomain:input_type -> rill.admin.v1.CreateProjectWhitelistedDomainRequest - 263, // 338: rill.admin.v1.AdminService.RemoveProjectWhitelistedDomain:input_type -> rill.admin.v1.RemoveProjectWhitelistedDomainRequest - 265, // 339: rill.admin.v1.AdminService.ListProjectWhitelistedDomains:input_type -> rill.admin.v1.ListProjectWhitelistedDomainsRequest - 57, // 340: rill.admin.v1.AdminService.ListServices:input_type -> rill.admin.v1.ListServicesRequest - 59, // 341: rill.admin.v1.AdminService.ListProjectMemberServices:input_type -> rill.admin.v1.ListProjectMemberServicesRequest - 61, // 342: rill.admin.v1.AdminService.CreateService:input_type -> rill.admin.v1.CreateServiceRequest - 63, // 343: rill.admin.v1.AdminService.GetService:input_type -> rill.admin.v1.GetServiceRequest - 65, // 344: rill.admin.v1.AdminService.UpdateService:input_type -> rill.admin.v1.UpdateServiceRequest - 67, // 345: rill.admin.v1.AdminService.SetOrganizationMemberServiceRole:input_type -> rill.admin.v1.SetOrganizationMemberServiceRoleRequest - 69, // 346: rill.admin.v1.AdminService.RemoveOrganizationMemberService:input_type -> rill.admin.v1.RemoveOrganizationMemberServiceRequest - 73, // 347: rill.admin.v1.AdminService.SetProjectMemberServiceRole:input_type -> rill.admin.v1.SetProjectMemberServiceRoleRequest - 71, // 348: rill.admin.v1.AdminService.RemoveProjectMemberService:input_type -> rill.admin.v1.RemoveProjectMemberServiceRequest - 75, // 349: rill.admin.v1.AdminService.DeleteService:input_type -> rill.admin.v1.DeleteServiceRequest - 228, // 350: rill.admin.v1.AdminService.ListServiceAuthTokens:input_type -> rill.admin.v1.ListServiceAuthTokensRequest - 226, // 351: rill.admin.v1.AdminService.IssueServiceAuthToken:input_type -> rill.admin.v1.IssueServiceAuthTokenRequest - 224, // 352: rill.admin.v1.AdminService.RevokeServiceAuthToken:input_type -> rill.admin.v1.RevokeServiceAuthTokenRequest - 230, // 353: rill.admin.v1.AdminService.IssueMagicAuthToken:input_type -> rill.admin.v1.IssueMagicAuthTokenRequest - 233, // 354: rill.admin.v1.AdminService.ListMagicAuthTokens:input_type -> rill.admin.v1.ListMagicAuthTokensRequest - 235, // 355: rill.admin.v1.AdminService.GetCurrentMagicAuthToken:input_type -> rill.admin.v1.GetCurrentMagicAuthTokenRequest - 237, // 356: rill.admin.v1.AdminService.RevokeMagicAuthToken:input_type -> rill.admin.v1.RevokeMagicAuthTokenRequest - 190, // 357: rill.admin.v1.AdminService.UpdateUserPreferences:input_type -> rill.admin.v1.UpdateUserPreferencesRequest - 212, // 358: rill.admin.v1.AdminService.ListBookmarks:input_type -> rill.admin.v1.ListBookmarksRequest - 214, // 359: rill.admin.v1.AdminService.GetBookmark:input_type -> rill.admin.v1.GetBookmarkRequest - 216, // 360: rill.admin.v1.AdminService.CreateBookmark:input_type -> rill.admin.v1.CreateBookmarkRequest - 218, // 361: rill.admin.v1.AdminService.UpdateBookmark:input_type -> rill.admin.v1.UpdateBookmarkRequest - 220, // 362: rill.admin.v1.AdminService.RemoveBookmark:input_type -> rill.admin.v1.RemoveBookmarkRequest - 267, // 363: rill.admin.v1.AdminService.GetRepoMeta:input_type -> rill.admin.v1.GetRepoMetaRequest - 269, // 364: rill.admin.v1.AdminService.PullVirtualRepo:input_type -> rill.admin.v1.PullVirtualRepoRequest - 271, // 365: rill.admin.v1.AdminService.GetVirtualFile:input_type -> rill.admin.v1.GetVirtualFileRequest - 273, // 366: rill.admin.v1.AdminService.DeleteVirtualFile:input_type -> rill.admin.v1.DeleteVirtualFileRequest - 275, // 367: rill.admin.v1.AdminService.GetReportMeta:input_type -> rill.admin.v1.GetReportMetaRequest - 277, // 368: rill.admin.v1.AdminService.GetAlertMeta:input_type -> rill.admin.v1.GetAlertMetaRequest - 279, // 369: rill.admin.v1.AdminService.CreateReport:input_type -> rill.admin.v1.CreateReportRequest - 281, // 370: rill.admin.v1.AdminService.EditReport:input_type -> rill.admin.v1.EditReportRequest - 283, // 371: rill.admin.v1.AdminService.UnsubscribeReport:input_type -> rill.admin.v1.UnsubscribeReportRequest - 285, // 372: rill.admin.v1.AdminService.DeleteReport:input_type -> rill.admin.v1.DeleteReportRequest - 287, // 373: rill.admin.v1.AdminService.TriggerReport:input_type -> rill.admin.v1.TriggerReportRequest - 289, // 374: rill.admin.v1.AdminService.GenerateReportYAML:input_type -> rill.admin.v1.GenerateReportYAMLRequest - 291, // 375: rill.admin.v1.AdminService.CreateAlert:input_type -> rill.admin.v1.CreateAlertRequest - 293, // 376: rill.admin.v1.AdminService.EditAlert:input_type -> rill.admin.v1.EditAlertRequest - 295, // 377: rill.admin.v1.AdminService.UnsubscribeAlert:input_type -> rill.admin.v1.UnsubscribeAlertRequest - 297, // 378: rill.admin.v1.AdminService.DeleteAlert:input_type -> rill.admin.v1.DeleteAlertRequest - 299, // 379: rill.admin.v1.AdminService.GenerateAlertYAML:input_type -> rill.admin.v1.GenerateAlertYAMLRequest - 301, // 380: rill.admin.v1.AdminService.GetAlertYAML:input_type -> rill.admin.v1.GetAlertYAMLRequest - 303, // 381: rill.admin.v1.AdminService.GetBillingSubscription:input_type -> rill.admin.v1.GetBillingSubscriptionRequest - 305, // 382: rill.admin.v1.AdminService.UpdateBillingSubscription:input_type -> rill.admin.v1.UpdateBillingSubscriptionRequest - 307, // 383: rill.admin.v1.AdminService.CancelBillingSubscription:input_type -> rill.admin.v1.CancelBillingSubscriptionRequest - 309, // 384: rill.admin.v1.AdminService.RenewBillingSubscription:input_type -> rill.admin.v1.RenewBillingSubscriptionRequest - 311, // 385: rill.admin.v1.AdminService.GetPaymentsPortalURL:input_type -> rill.admin.v1.GetPaymentsPortalURLRequest - 313, // 386: rill.admin.v1.AdminService.GetBillingCreditBalance:input_type -> rill.admin.v1.GetBillingCreditBalanceRequest - 315, // 387: rill.admin.v1.AdminService.ListPublicBillingPlans:input_type -> rill.admin.v1.ListPublicBillingPlansRequest - 317, // 388: rill.admin.v1.AdminService.GetBillingProjectCredentials:input_type -> rill.admin.v1.GetBillingProjectCredentialsRequest - 321, // 389: rill.admin.v1.AdminService.RequestProjectAccess:input_type -> rill.admin.v1.RequestProjectAccessRequest - 323, // 390: rill.admin.v1.AdminService.GetProjectAccessRequest:input_type -> rill.admin.v1.GetProjectAccessRequestRequest - 325, // 391: rill.admin.v1.AdminService.ApproveProjectAccess:input_type -> rill.admin.v1.ApproveProjectAccessRequest - 327, // 392: rill.admin.v1.AdminService.DenyProjectAccess:input_type -> rill.admin.v1.DenyProjectAccessRequest - 329, // 393: rill.admin.v1.AdminService.ListOrganizationBillingIssues:input_type -> rill.admin.v1.ListOrganizationBillingIssuesRequest - 7, // 394: rill.admin.v1.AdminService.Ping:output_type -> rill.admin.v1.PingResponse - 9, // 395: rill.admin.v1.AdminService.ListOrganizations:output_type -> rill.admin.v1.ListOrganizationsResponse - 11, // 396: rill.admin.v1.AdminService.GetOrganization:output_type -> rill.admin.v1.GetOrganizationResponse - 13, // 397: rill.admin.v1.AdminService.GetOrganizationNameForDomain:output_type -> rill.admin.v1.GetOrganizationNameForDomainResponse - 15, // 398: rill.admin.v1.AdminService.CreateOrganization:output_type -> rill.admin.v1.CreateOrganizationResponse - 17, // 399: rill.admin.v1.AdminService.DeleteOrganization:output_type -> rill.admin.v1.DeleteOrganizationResponse - 19, // 400: rill.admin.v1.AdminService.UpdateOrganization:output_type -> rill.admin.v1.UpdateOrganizationResponse - 33, // 401: rill.admin.v1.AdminService.ListProjectsForOrganization:output_type -> rill.admin.v1.ListProjectsForOrganizationResponse - 35, // 402: rill.admin.v1.AdminService.ListProjectsForOrganizationAndUser:output_type -> rill.admin.v1.ListProjectsForOrganizationAndUserResponse - 37, // 403: rill.admin.v1.AdminService.ListProjectsForFingerprint:output_type -> rill.admin.v1.ListProjectsForFingerprintResponse - 39, // 404: rill.admin.v1.AdminService.GetProject:output_type -> rill.admin.v1.GetProjectResponse - 41, // 405: rill.admin.v1.AdminService.ListProjectsForUserByName:output_type -> rill.admin.v1.ListProjectsForUserByNameResponse - 43, // 406: rill.admin.v1.AdminService.GetProjectByID:output_type -> rill.admin.v1.GetProjectByIDResponse - 45, // 407: rill.admin.v1.AdminService.SearchProjectNames:output_type -> rill.admin.v1.SearchProjectNamesResponse - 78, // 408: rill.admin.v1.AdminService.CreateProject:output_type -> rill.admin.v1.CreateProjectResponse - 80, // 409: rill.admin.v1.AdminService.DeleteProject:output_type -> rill.admin.v1.DeleteProjectResponse - 82, // 410: rill.admin.v1.AdminService.UpdateProject:output_type -> rill.admin.v1.UpdateProjectResponse - 47, // 411: rill.admin.v1.AdminService.GetProjectVariables:output_type -> rill.admin.v1.GetProjectVariablesResponse - 50, // 412: rill.admin.v1.AdminService.UpdateProjectVariables:output_type -> rill.admin.v1.UpdateProjectVariablesResponse - 84, // 413: rill.admin.v1.AdminService.CreateAsset:output_type -> rill.admin.v1.CreateAssetResponse - 86, // 414: rill.admin.v1.AdminService.RedeployProject:output_type -> rill.admin.v1.RedeployProjectResponse - 88, // 415: rill.admin.v1.AdminService.HibernateProject:output_type -> rill.admin.v1.HibernateProjectResponse - 22, // 416: rill.admin.v1.AdminService.ListDeployments:output_type -> rill.admin.v1.ListDeploymentsResponse - 24, // 417: rill.admin.v1.AdminService.CreateDeployment:output_type -> rill.admin.v1.CreateDeploymentResponse - 26, // 418: rill.admin.v1.AdminService.GetDeployment:output_type -> rill.admin.v1.GetDeploymentResponse - 28, // 419: rill.admin.v1.AdminService.StartDeployment:output_type -> rill.admin.v1.StartDeploymentResponse - 30, // 420: rill.admin.v1.AdminService.StopDeployment:output_type -> rill.admin.v1.StopDeploymentResponse - 32, // 421: rill.admin.v1.AdminService.DeleteDeployment:output_type -> rill.admin.v1.DeleteDeploymentResponse - 90, // 422: rill.admin.v1.AdminService.TriggerReconcile:output_type -> rill.admin.v1.TriggerReconcileResponse - 92, // 423: rill.admin.v1.AdminService.TriggerRefreshSources:output_type -> rill.admin.v1.TriggerRefreshSourcesResponse - 94, // 424: rill.admin.v1.AdminService.TriggerRedeploy:output_type -> rill.admin.v1.TriggerRedeployResponse - 96, // 425: rill.admin.v1.AdminService.Provision:output_type -> rill.admin.v1.ProvisionResponse - 98, // 426: rill.admin.v1.AdminService.GetDeploymentConfig:output_type -> rill.admin.v1.GetDeploymentConfigResponse - 100, // 427: rill.admin.v1.AdminService.ListRoles:output_type -> rill.admin.v1.ListRolesResponse - 102, // 428: rill.admin.v1.AdminService.ListOrganizationMemberUsers:output_type -> rill.admin.v1.ListOrganizationMemberUsersResponse - 104, // 429: rill.admin.v1.AdminService.ListOrganizationInvites:output_type -> rill.admin.v1.ListOrganizationInvitesResponse - 106, // 430: rill.admin.v1.AdminService.AddOrganizationMemberUser:output_type -> rill.admin.v1.AddOrganizationMemberUserResponse - 108, // 431: rill.admin.v1.AdminService.RemoveOrganizationMemberUser:output_type -> rill.admin.v1.RemoveOrganizationMemberUserResponse - 110, // 432: rill.admin.v1.AdminService.LeaveOrganization:output_type -> rill.admin.v1.LeaveOrganizationResponse - 112, // 433: rill.admin.v1.AdminService.SetOrganizationMemberUserRole:output_type -> rill.admin.v1.SetOrganizationMemberUserRoleResponse - 114, // 434: rill.admin.v1.AdminService.GetOrganizationMemberUser:output_type -> rill.admin.v1.GetOrganizationMemberUserResponse - 118, // 435: rill.admin.v1.AdminService.ListUsergroupsForProjectAndUser:output_type -> rill.admin.v1.ListUsergroupsForProjectAndUserResponse - 120, // 436: rill.admin.v1.AdminService.UpdateOrganizationMemberUserAttributes:output_type -> rill.admin.v1.UpdateOrganizationMemberUserAttributesResponse - 148, // 437: rill.admin.v1.AdminService.ListProjectMemberUsers:output_type -> rill.admin.v1.ListProjectMemberUsersResponse - 150, // 438: rill.admin.v1.AdminService.ListProjectInvites:output_type -> rill.admin.v1.ListProjectInvitesResponse - 152, // 439: rill.admin.v1.AdminService.AddProjectMemberUser:output_type -> rill.admin.v1.AddProjectMemberUserResponse - 154, // 440: rill.admin.v1.AdminService.RemoveProjectMemberUser:output_type -> rill.admin.v1.RemoveProjectMemberUserResponse - 156, // 441: rill.admin.v1.AdminService.SetProjectMemberUserRole:output_type -> rill.admin.v1.SetProjectMemberUserRoleResponse - 116, // 442: rill.admin.v1.AdminService.GetProjectMemberUser:output_type -> rill.admin.v1.GetProjectMemberUserResponse - 158, // 443: rill.admin.v1.AdminService.ListUsergroupsForOrganizationAndUser:output_type -> rill.admin.v1.ListUsergroupsForOrganizationAndUserResponse - 160, // 444: rill.admin.v1.AdminService.CreateUsergroup:output_type -> rill.admin.v1.CreateUsergroupResponse - 162, // 445: rill.admin.v1.AdminService.GetUsergroup:output_type -> rill.admin.v1.GetUsergroupResponse - 164, // 446: rill.admin.v1.AdminService.UpdateUsergroup:output_type -> rill.admin.v1.UpdateUsergroupResponse - 166, // 447: rill.admin.v1.AdminService.ListOrganizationMemberUsergroups:output_type -> rill.admin.v1.ListOrganizationMemberUsergroupsResponse - 168, // 448: rill.admin.v1.AdminService.ListProjectMemberUsergroups:output_type -> rill.admin.v1.ListProjectMemberUsergroupsResponse - 170, // 449: rill.admin.v1.AdminService.DeleteUsergroup:output_type -> rill.admin.v1.DeleteUsergroupResponse - 172, // 450: rill.admin.v1.AdminService.AddOrganizationMemberUsergroup:output_type -> rill.admin.v1.AddOrganizationMemberUsergroupResponse - 174, // 451: rill.admin.v1.AdminService.SetOrganizationMemberUsergroupRole:output_type -> rill.admin.v1.SetOrganizationMemberUsergroupRoleResponse - 176, // 452: rill.admin.v1.AdminService.RemoveOrganizationMemberUsergroup:output_type -> rill.admin.v1.RemoveOrganizationMemberUsergroupResponse - 178, // 453: rill.admin.v1.AdminService.AddProjectMemberUsergroup:output_type -> rill.admin.v1.AddProjectMemberUsergroupResponse - 180, // 454: rill.admin.v1.AdminService.SetProjectMemberUsergroupRole:output_type -> rill.admin.v1.SetProjectMemberUsergroupRoleResponse - 182, // 455: rill.admin.v1.AdminService.RemoveProjectMemberUsergroup:output_type -> rill.admin.v1.RemoveProjectMemberUsergroupResponse - 184, // 456: rill.admin.v1.AdminService.AddUsergroupMemberUser:output_type -> rill.admin.v1.AddUsergroupMemberUserResponse - 186, // 457: rill.admin.v1.AdminService.ListUsergroupMemberUsers:output_type -> rill.admin.v1.ListUsergroupMemberUsersResponse - 188, // 458: rill.admin.v1.AdminService.RemoveUsergroupMemberUser:output_type -> rill.admin.v1.RemoveUsergroupMemberUserResponse - 193, // 459: rill.admin.v1.AdminService.GetUser:output_type -> rill.admin.v1.GetUserResponse - 195, // 460: rill.admin.v1.AdminService.GetCurrentUser:output_type -> rill.admin.v1.GetCurrentUserResponse - 197, // 461: rill.admin.v1.AdminService.DeleteUser:output_type -> rill.admin.v1.DeleteUserResponse - 199, // 462: rill.admin.v1.AdminService.ListUserAuthTokens:output_type -> rill.admin.v1.ListUserAuthTokensResponse - 201, // 463: rill.admin.v1.AdminService.IssueUserAuthToken:output_type -> rill.admin.v1.IssueUserAuthTokenResponse - 203, // 464: rill.admin.v1.AdminService.RevokeUserAuthToken:output_type -> rill.admin.v1.RevokeUserAuthTokenResponse - 205, // 465: rill.admin.v1.AdminService.RevokeAllUserAuthTokens:output_type -> rill.admin.v1.RevokeAllUserAuthTokensResponse - 207, // 466: rill.admin.v1.AdminService.RevokeRepresentativeAuthTokens:output_type -> rill.admin.v1.RevokeRepresentativeAuthTokensResponse - 209, // 467: rill.admin.v1.AdminService.IssueRepresentativeAuthToken:output_type -> rill.admin.v1.IssueRepresentativeAuthTokenResponse - 211, // 468: rill.admin.v1.AdminService.RevokeCurrentAuthToken:output_type -> rill.admin.v1.RevokeCurrentAuthTokenResponse - 240, // 469: rill.admin.v1.AdminService.GetGithubRepoStatus:output_type -> rill.admin.v1.GetGithubRepoStatusResponse - 242, // 470: rill.admin.v1.AdminService.GetGithubUserStatus:output_type -> rill.admin.v1.GetGithubUserStatusResponse - 244, // 471: rill.admin.v1.AdminService.ListGithubUserRepos:output_type -> rill.admin.v1.ListGithubUserReposResponse - 246, // 472: rill.admin.v1.AdminService.CreateGithubPullRequest:output_type -> rill.admin.v1.CreateGithubPullRequestResponse - 248, // 473: rill.admin.v1.AdminService.GetGithubPullRequest:output_type -> rill.admin.v1.GetGithubPullRequestResponse - 250, // 474: rill.admin.v1.AdminService.ConnectProjectToGithub:output_type -> rill.admin.v1.ConnectProjectToGithubResponse - 252, // 475: rill.admin.v1.AdminService.CreateManagedGitRepo:output_type -> rill.admin.v1.CreateManagedGitRepoResponse - 254, // 476: rill.admin.v1.AdminService.GetCloneCredentials:output_type -> rill.admin.v1.GetCloneCredentialsResponse - 256, // 477: rill.admin.v1.AdminService.CreateWhitelistedDomain:output_type -> rill.admin.v1.CreateWhitelistedDomainResponse - 258, // 478: rill.admin.v1.AdminService.RemoveWhitelistedDomain:output_type -> rill.admin.v1.RemoveWhitelistedDomainResponse - 260, // 479: rill.admin.v1.AdminService.ListWhitelistedDomains:output_type -> rill.admin.v1.ListWhitelistedDomainsResponse - 223, // 480: rill.admin.v1.AdminService.SearchUsers:output_type -> rill.admin.v1.SearchUsersResponse - 52, // 481: rill.admin.v1.AdminService.SearchProjectUsers:output_type -> rill.admin.v1.SearchProjectUsersResponse - 122, // 482: rill.admin.v1.AdminService.ListSuperusers:output_type -> rill.admin.v1.ListSuperusersResponse - 54, // 483: rill.admin.v1.AdminService.GetDeploymentCredentials:output_type -> rill.admin.v1.GetDeploymentCredentialsResponse - 56, // 484: rill.admin.v1.AdminService.GetIFrame:output_type -> rill.admin.v1.GetIFrameResponse - 124, // 485: rill.admin.v1.AdminService.SetSuperuser:output_type -> rill.admin.v1.SetSuperuserResponse - 126, // 486: rill.admin.v1.AdminService.SudoGetResource:output_type -> rill.admin.v1.SudoGetResourceResponse - 138, // 487: rill.admin.v1.AdminService.SudoUpdateUserQuotas:output_type -> rill.admin.v1.SudoUpdateUserQuotasResponse - 128, // 488: rill.admin.v1.AdminService.SudoUpdateOrganizationQuotas:output_type -> rill.admin.v1.SudoUpdateOrganizationQuotasResponse - 130, // 489: rill.admin.v1.AdminService.SudoUpdateOrganizationBillingCustomer:output_type -> rill.admin.v1.SudoUpdateOrganizationBillingCustomerResponse - 132, // 490: rill.admin.v1.AdminService.SudoGrantTrialCredits:output_type -> rill.admin.v1.SudoGrantTrialCreditsResponse - 134, // 491: rill.admin.v1.AdminService.SudoReportUsage:output_type -> rill.admin.v1.SudoReportUsageResponse - 136, // 492: rill.admin.v1.AdminService.SudoUpdateOrganizationCustomDomain:output_type -> rill.admin.v1.SudoUpdateOrganizationCustomDomainResponse - 140, // 493: rill.admin.v1.AdminService.SudoUpdateAnnotations:output_type -> rill.admin.v1.SudoUpdateAnnotationsResponse - 142, // 494: rill.admin.v1.AdminService.SudoIssueRuntimeManagerToken:output_type -> rill.admin.v1.SudoIssueRuntimeManagerTokenResponse - 144, // 495: rill.admin.v1.AdminService.SudoDeleteOrganizationBillingIssue:output_type -> rill.admin.v1.SudoDeleteOrganizationBillingIssueResponse - 146, // 496: rill.admin.v1.AdminService.SudoTriggerBillingRepair:output_type -> rill.admin.v1.SudoTriggerBillingRepairResponse - 262, // 497: rill.admin.v1.AdminService.CreateProjectWhitelistedDomain:output_type -> rill.admin.v1.CreateProjectWhitelistedDomainResponse - 264, // 498: rill.admin.v1.AdminService.RemoveProjectWhitelistedDomain:output_type -> rill.admin.v1.RemoveProjectWhitelistedDomainResponse - 266, // 499: rill.admin.v1.AdminService.ListProjectWhitelistedDomains:output_type -> rill.admin.v1.ListProjectWhitelistedDomainsResponse - 58, // 500: rill.admin.v1.AdminService.ListServices:output_type -> rill.admin.v1.ListServicesResponse - 60, // 501: rill.admin.v1.AdminService.ListProjectMemberServices:output_type -> rill.admin.v1.ListProjectMemberServicesResponse - 62, // 502: rill.admin.v1.AdminService.CreateService:output_type -> rill.admin.v1.CreateServiceResponse - 64, // 503: rill.admin.v1.AdminService.GetService:output_type -> rill.admin.v1.GetServiceResponse - 66, // 504: rill.admin.v1.AdminService.UpdateService:output_type -> rill.admin.v1.UpdateServiceResponse - 68, // 505: rill.admin.v1.AdminService.SetOrganizationMemberServiceRole:output_type -> rill.admin.v1.SetOrganizationMemberServiceRoleResponse - 70, // 506: rill.admin.v1.AdminService.RemoveOrganizationMemberService:output_type -> rill.admin.v1.RemoveOrganizationMemberServiceResponse - 74, // 507: rill.admin.v1.AdminService.SetProjectMemberServiceRole:output_type -> rill.admin.v1.SetProjectMemberServiceRoleResponse - 72, // 508: rill.admin.v1.AdminService.RemoveProjectMemberService:output_type -> rill.admin.v1.RemoveProjectMemberServiceResponse - 76, // 509: rill.admin.v1.AdminService.DeleteService:output_type -> rill.admin.v1.DeleteServiceResponse - 229, // 510: rill.admin.v1.AdminService.ListServiceAuthTokens:output_type -> rill.admin.v1.ListServiceAuthTokensResponse - 227, // 511: rill.admin.v1.AdminService.IssueServiceAuthToken:output_type -> rill.admin.v1.IssueServiceAuthTokenResponse - 225, // 512: rill.admin.v1.AdminService.RevokeServiceAuthToken:output_type -> rill.admin.v1.RevokeServiceAuthTokenResponse - 232, // 513: rill.admin.v1.AdminService.IssueMagicAuthToken:output_type -> rill.admin.v1.IssueMagicAuthTokenResponse - 234, // 514: rill.admin.v1.AdminService.ListMagicAuthTokens:output_type -> rill.admin.v1.ListMagicAuthTokensResponse - 236, // 515: rill.admin.v1.AdminService.GetCurrentMagicAuthToken:output_type -> rill.admin.v1.GetCurrentMagicAuthTokenResponse - 238, // 516: rill.admin.v1.AdminService.RevokeMagicAuthToken:output_type -> rill.admin.v1.RevokeMagicAuthTokenResponse - 191, // 517: rill.admin.v1.AdminService.UpdateUserPreferences:output_type -> rill.admin.v1.UpdateUserPreferencesResponse - 213, // 518: rill.admin.v1.AdminService.ListBookmarks:output_type -> rill.admin.v1.ListBookmarksResponse - 215, // 519: rill.admin.v1.AdminService.GetBookmark:output_type -> rill.admin.v1.GetBookmarkResponse - 217, // 520: rill.admin.v1.AdminService.CreateBookmark:output_type -> rill.admin.v1.CreateBookmarkResponse - 219, // 521: rill.admin.v1.AdminService.UpdateBookmark:output_type -> rill.admin.v1.UpdateBookmarkResponse - 221, // 522: rill.admin.v1.AdminService.RemoveBookmark:output_type -> rill.admin.v1.RemoveBookmarkResponse - 268, // 523: rill.admin.v1.AdminService.GetRepoMeta:output_type -> rill.admin.v1.GetRepoMetaResponse - 270, // 524: rill.admin.v1.AdminService.PullVirtualRepo:output_type -> rill.admin.v1.PullVirtualRepoResponse - 272, // 525: rill.admin.v1.AdminService.GetVirtualFile:output_type -> rill.admin.v1.GetVirtualFileResponse - 274, // 526: rill.admin.v1.AdminService.DeleteVirtualFile:output_type -> rill.admin.v1.DeleteVirtualFileResponse - 276, // 527: rill.admin.v1.AdminService.GetReportMeta:output_type -> rill.admin.v1.GetReportMetaResponse - 278, // 528: rill.admin.v1.AdminService.GetAlertMeta:output_type -> rill.admin.v1.GetAlertMetaResponse - 280, // 529: rill.admin.v1.AdminService.CreateReport:output_type -> rill.admin.v1.CreateReportResponse - 282, // 530: rill.admin.v1.AdminService.EditReport:output_type -> rill.admin.v1.EditReportResponse - 284, // 531: rill.admin.v1.AdminService.UnsubscribeReport:output_type -> rill.admin.v1.UnsubscribeReportResponse - 286, // 532: rill.admin.v1.AdminService.DeleteReport:output_type -> rill.admin.v1.DeleteReportResponse - 288, // 533: rill.admin.v1.AdminService.TriggerReport:output_type -> rill.admin.v1.TriggerReportResponse - 290, // 534: rill.admin.v1.AdminService.GenerateReportYAML:output_type -> rill.admin.v1.GenerateReportYAMLResponse - 292, // 535: rill.admin.v1.AdminService.CreateAlert:output_type -> rill.admin.v1.CreateAlertResponse - 294, // 536: rill.admin.v1.AdminService.EditAlert:output_type -> rill.admin.v1.EditAlertResponse - 296, // 537: rill.admin.v1.AdminService.UnsubscribeAlert:output_type -> rill.admin.v1.UnsubscribeAlertResponse - 298, // 538: rill.admin.v1.AdminService.DeleteAlert:output_type -> rill.admin.v1.DeleteAlertResponse - 300, // 539: rill.admin.v1.AdminService.GenerateAlertYAML:output_type -> rill.admin.v1.GenerateAlertYAMLResponse - 302, // 540: rill.admin.v1.AdminService.GetAlertYAML:output_type -> rill.admin.v1.GetAlertYAMLResponse - 304, // 541: rill.admin.v1.AdminService.GetBillingSubscription:output_type -> rill.admin.v1.GetBillingSubscriptionResponse - 306, // 542: rill.admin.v1.AdminService.UpdateBillingSubscription:output_type -> rill.admin.v1.UpdateBillingSubscriptionResponse - 308, // 543: rill.admin.v1.AdminService.CancelBillingSubscription:output_type -> rill.admin.v1.CancelBillingSubscriptionResponse - 310, // 544: rill.admin.v1.AdminService.RenewBillingSubscription:output_type -> rill.admin.v1.RenewBillingSubscriptionResponse - 312, // 545: rill.admin.v1.AdminService.GetPaymentsPortalURL:output_type -> rill.admin.v1.GetPaymentsPortalURLResponse - 314, // 546: rill.admin.v1.AdminService.GetBillingCreditBalance:output_type -> rill.admin.v1.GetBillingCreditBalanceResponse - 316, // 547: rill.admin.v1.AdminService.ListPublicBillingPlans:output_type -> rill.admin.v1.ListPublicBillingPlansResponse - 318, // 548: rill.admin.v1.AdminService.GetBillingProjectCredentials:output_type -> rill.admin.v1.GetBillingProjectCredentialsResponse - 322, // 549: rill.admin.v1.AdminService.RequestProjectAccess:output_type -> rill.admin.v1.RequestProjectAccessResponse - 324, // 550: rill.admin.v1.AdminService.GetProjectAccessRequest:output_type -> rill.admin.v1.GetProjectAccessRequestResponse - 326, // 551: rill.admin.v1.AdminService.ApproveProjectAccess:output_type -> rill.admin.v1.ApproveProjectAccessResponse - 328, // 552: rill.admin.v1.AdminService.DenyProjectAccess:output_type -> rill.admin.v1.DenyProjectAccessResponse - 330, // 553: rill.admin.v1.AdminService.ListOrganizationBillingIssues:output_type -> rill.admin.v1.ListOrganizationBillingIssuesResponse - 394, // [394:554] is the sub-list for method output_type - 234, // [234:394] is the sub-list for method input_type - 234, // [234:234] is the sub-list for extension type_name - 234, // [234:234] is the sub-list for extension extendee - 0, // [0:234] is the sub-list for field type_name + 401, // 104: rill.admin.v1.GetGithubUserStatusResponse.organization_installation_permissions:type_name -> rill.admin.v1.GetGithubUserStatusResponse.OrganizationInstallationPermissionsEntry + 402, // 105: rill.admin.v1.ListGithubUserReposResponse.repos:type_name -> rill.admin.v1.ListGithubUserReposResponse.Repo + 7, // 106: rill.admin.v1.GetGithubPullRequestResponse.pr_state:type_name -> rill.admin.v1.GetGithubPullRequestResponse.State + 410, // 107: rill.admin.v1.CreateManagedGitRepoResponse.password_expires_at:type_name -> google.protobuf.Timestamp + 410, // 108: rill.admin.v1.GetCloneCredentialsResponse.git_password_expires_at:type_name -> google.protobuf.Timestamp + 366, // 109: rill.admin.v1.ListWhitelistedDomainsResponse.domains:type_name -> rill.admin.v1.WhitelistedDomain + 366, // 110: rill.admin.v1.ListProjectWhitelistedDomainsResponse.domains:type_name -> rill.admin.v1.WhitelistedDomain + 410, // 111: rill.admin.v1.GetRepoMetaResponse.expires_on:type_name -> google.protobuf.Timestamp + 410, // 112: rill.admin.v1.GetRepoMetaResponse.last_updated_on:type_name -> google.protobuf.Timestamp + 410, // 113: rill.admin.v1.GetRepoMetaResponse.archive_created_on:type_name -> google.protobuf.Timestamp + 371, // 114: rill.admin.v1.PullVirtualRepoResponse.files:type_name -> rill.admin.v1.VirtualFile + 371, // 115: rill.admin.v1.GetVirtualFileResponse.file:type_name -> rill.admin.v1.VirtualFile + 410, // 116: rill.admin.v1.GetReportMetaRequest.execution_time:type_name -> google.protobuf.Timestamp + 233, // 117: rill.admin.v1.GetReportMetaRequest.resources:type_name -> rill.admin.v1.ResourceName + 404, // 118: rill.admin.v1.GetReportMetaResponse.delivery_meta:type_name -> rill.admin.v1.GetReportMetaResponse.DeliveryMetaEntry + 405, // 119: rill.admin.v1.GetAlertMetaRequest.annotations:type_name -> rill.admin.v1.GetAlertMetaRequest.AnnotationsEntry + 407, // 120: rill.admin.v1.GetAlertMetaResponse.recipient_urls:type_name -> rill.admin.v1.GetAlertMetaResponse.RecipientUrlsEntry + 411, // 121: rill.admin.v1.GetAlertMetaResponse.query_for_attributes:type_name -> google.protobuf.Struct + 372, // 122: rill.admin.v1.CreateReportRequest.options:type_name -> rill.admin.v1.ReportOptions + 372, // 123: rill.admin.v1.EditReportRequest.options:type_name -> rill.admin.v1.ReportOptions + 372, // 124: rill.admin.v1.GenerateReportYAMLRequest.options:type_name -> rill.admin.v1.ReportOptions + 373, // 125: rill.admin.v1.CreateAlertRequest.options:type_name -> rill.admin.v1.AlertOptions + 373, // 126: rill.admin.v1.EditAlertRequest.options:type_name -> rill.admin.v1.AlertOptions + 373, // 127: rill.admin.v1.GenerateAlertYAMLRequest.options:type_name -> rill.admin.v1.AlertOptions + 1, // 128: rill.admin.v1.PersonalVirtualFileSummary.type:type_name -> rill.admin.v1.PersonalVirtualFileType + 410, // 129: rill.admin.v1.PersonalVirtualFileSummary.updated_on:type_name -> google.protobuf.Timestamp + 1, // 130: rill.admin.v1.CreatePersonalVirtualFileRequest.type:type_name -> rill.admin.v1.PersonalVirtualFileType + 1, // 131: rill.admin.v1.EditPersonalVirtualFileRequest.type:type_name -> rill.admin.v1.PersonalVirtualFileType + 1, // 132: rill.admin.v1.DeletePersonalVirtualFileRequest.type:type_name -> rill.admin.v1.PersonalVirtualFileType + 1, // 133: rill.admin.v1.CopyPersonalVirtualFileRequest.type:type_name -> rill.admin.v1.PersonalVirtualFileType + 2, // 134: rill.admin.v1.CopyPersonalVirtualFileRequest.source_kind:type_name -> rill.admin.v1.PersonalVirtualFileSourceKind + 1, // 135: rill.admin.v1.GetPersonalVirtualFileRequest.type:type_name -> rill.admin.v1.PersonalVirtualFileType + 410, // 136: rill.admin.v1.GetPersonalVirtualFileResponse.updated_on:type_name -> google.protobuf.Timestamp + 1, // 137: rill.admin.v1.ListPersonalVirtualFilesRequest.type:type_name -> rill.admin.v1.PersonalVirtualFileType + 305, // 138: rill.admin.v1.ListPersonalVirtualFilesResponse.files:type_name -> rill.admin.v1.PersonalVirtualFileSummary + 350, // 139: rill.admin.v1.GetBillingSubscriptionResponse.organization:type_name -> rill.admin.v1.Organization + 351, // 140: rill.admin.v1.GetBillingSubscriptionResponse.subscription:type_name -> rill.admin.v1.Subscription + 350, // 141: rill.admin.v1.UpdateBillingSubscriptionResponse.organization:type_name -> rill.admin.v1.Organization + 351, // 142: rill.admin.v1.UpdateBillingSubscriptionResponse.subscription:type_name -> rill.admin.v1.Subscription + 350, // 143: rill.admin.v1.RenewBillingSubscriptionResponse.organization:type_name -> rill.admin.v1.Organization + 351, // 144: rill.admin.v1.RenewBillingSubscriptionResponse.subscription:type_name -> rill.admin.v1.Subscription + 374, // 145: rill.admin.v1.ListPublicBillingPlansResponse.plans:type_name -> rill.admin.v1.BillingPlan + 411, // 146: rill.admin.v1.TelemetryRequest.event:type_name -> google.protobuf.Struct + 378, // 147: rill.admin.v1.ListOrganizationBillingIssuesResponse.issues:type_name -> rill.admin.v1.BillingIssue + 352, // 148: rill.admin.v1.User.quotas:type_name -> rill.admin.v1.UserQuotas + 410, // 149: rill.admin.v1.User.created_on:type_name -> google.protobuf.Timestamp + 410, // 150: rill.admin.v1.User.updated_on:type_name -> google.protobuf.Timestamp + 411, // 151: rill.admin.v1.Service.attributes:type_name -> google.protobuf.Struct + 410, // 152: rill.admin.v1.Service.created_on:type_name -> google.protobuf.Timestamp + 410, // 153: rill.admin.v1.Service.updated_on:type_name -> google.protobuf.Timestamp + 411, // 154: rill.admin.v1.OrganizationMemberService.attributes:type_name -> google.protobuf.Struct + 410, // 155: rill.admin.v1.OrganizationMemberService.created_on:type_name -> google.protobuf.Timestamp + 410, // 156: rill.admin.v1.OrganizationMemberService.updated_on:type_name -> google.protobuf.Timestamp + 411, // 157: rill.admin.v1.ProjectMemberService.attributes:type_name -> google.protobuf.Struct + 410, // 158: rill.admin.v1.ProjectMemberService.created_on:type_name -> google.protobuf.Timestamp + 410, // 159: rill.admin.v1.ProjectMemberService.updated_on:type_name -> google.protobuf.Timestamp + 353, // 160: rill.admin.v1.Organization.quotas:type_name -> rill.admin.v1.OrganizationQuotas + 410, // 161: rill.admin.v1.Organization.created_on:type_name -> google.protobuf.Timestamp + 410, // 162: rill.admin.v1.Organization.updated_on:type_name -> google.protobuf.Timestamp + 374, // 163: rill.admin.v1.Subscription.plan:type_name -> rill.admin.v1.BillingPlan + 410, // 164: rill.admin.v1.Subscription.start_date:type_name -> google.protobuf.Timestamp + 410, // 165: rill.admin.v1.Subscription.end_date:type_name -> google.protobuf.Timestamp + 410, // 166: rill.admin.v1.Subscription.current_billing_cycle_start_date:type_name -> google.protobuf.Timestamp + 410, // 167: rill.admin.v1.Subscription.current_billing_cycle_end_date:type_name -> google.protobuf.Timestamp + 410, // 168: rill.admin.v1.Subscription.trial_end_date:type_name -> google.protobuf.Timestamp + 408, // 169: rill.admin.v1.Project.annotations:type_name -> rill.admin.v1.Project.AnnotationsEntry + 410, // 170: rill.admin.v1.Project.created_on:type_name -> google.protobuf.Timestamp + 410, // 171: rill.admin.v1.Project.updated_on:type_name -> google.protobuf.Timestamp + 3, // 172: rill.admin.v1.Deployment.status:type_name -> rill.admin.v1.DeploymentStatus + 410, // 173: rill.admin.v1.Deployment.created_on:type_name -> google.protobuf.Timestamp + 410, // 174: rill.admin.v1.Deployment.updated_on:type_name -> google.protobuf.Timestamp + 410, // 175: rill.admin.v1.Deployment.used_on:type_name -> google.protobuf.Timestamp + 411, // 176: rill.admin.v1.ProvisionerResource.args:type_name -> google.protobuf.Struct + 411, // 177: rill.admin.v1.ProvisionerResource.config:type_name -> google.protobuf.Struct + 357, // 178: rill.admin.v1.OrganizationRole.permissions:type_name -> rill.admin.v1.OrganizationPermissions + 358, // 179: rill.admin.v1.ProjectRole.permissions:type_name -> rill.admin.v1.ProjectPermissions + 411, // 180: rill.admin.v1.OrganizationMemberUser.attributes:type_name -> google.protobuf.Struct + 410, // 181: rill.admin.v1.OrganizationMemberUser.created_on:type_name -> google.protobuf.Timestamp + 410, // 182: rill.admin.v1.OrganizationMemberUser.updated_on:type_name -> google.protobuf.Timestamp + 410, // 183: rill.admin.v1.ProjectMemberUser.created_on:type_name -> google.protobuf.Timestamp + 410, // 184: rill.admin.v1.ProjectMemberUser.updated_on:type_name -> google.protobuf.Timestamp + 233, // 185: rill.admin.v1.ProjectMemberUser.resources:type_name -> rill.admin.v1.ResourceName + 410, // 186: rill.admin.v1.UsergroupMemberUser.created_on:type_name -> google.protobuf.Timestamp + 410, // 187: rill.admin.v1.UsergroupMemberUser.updated_on:type_name -> google.protobuf.Timestamp + 233, // 188: rill.admin.v1.ProjectInvite.resources:type_name -> rill.admin.v1.ResourceName + 410, // 189: rill.admin.v1.Bookmark.created_on:type_name -> google.protobuf.Timestamp + 410, // 190: rill.admin.v1.Bookmark.updated_on:type_name -> google.protobuf.Timestamp + 410, // 191: rill.admin.v1.ServiceToken.created_on:type_name -> google.protobuf.Timestamp + 410, // 192: rill.admin.v1.ServiceToken.expires_on:type_name -> google.protobuf.Timestamp + 411, // 193: rill.admin.v1.UserAuthToken.attributes:type_name -> google.protobuf.Struct + 410, // 194: rill.admin.v1.UserAuthToken.created_on:type_name -> google.protobuf.Timestamp + 410, // 195: rill.admin.v1.UserAuthToken.expires_on:type_name -> google.protobuf.Timestamp + 410, // 196: rill.admin.v1.UserAuthToken.used_on:type_name -> google.protobuf.Timestamp + 410, // 197: rill.admin.v1.MagicAuthToken.created_on:type_name -> google.protobuf.Timestamp + 410, // 198: rill.admin.v1.MagicAuthToken.expires_on:type_name -> google.protobuf.Timestamp + 410, // 199: rill.admin.v1.MagicAuthToken.used_on:type_name -> google.protobuf.Timestamp + 411, // 200: rill.admin.v1.MagicAuthToken.attributes:type_name -> google.protobuf.Struct + 233, // 201: rill.admin.v1.MagicAuthToken.resources:type_name -> rill.admin.v1.ResourceName + 409, // 202: rill.admin.v1.MagicAuthToken.metrics_view_filters:type_name -> rill.admin.v1.MagicAuthToken.MetricsViewFiltersEntry + 410, // 203: rill.admin.v1.VirtualFile.updated_on:type_name -> google.protobuf.Timestamp + 411, // 204: rill.admin.v1.ReportOptions.resolver_properties:type_name -> google.protobuf.Struct + 412, // 205: rill.admin.v1.ReportOptions.export_format:type_name -> rill.runtime.v1.ExportFormat + 411, // 206: rill.admin.v1.AlertOptions.resolver_properties:type_name -> google.protobuf.Struct + 4, // 207: rill.admin.v1.BillingPlan.plan_type:type_name -> rill.admin.v1.BillingPlanType + 375, // 208: rill.admin.v1.BillingPlan.quotas:type_name -> rill.admin.v1.Quotas + 410, // 209: rill.admin.v1.Usergroup.created_on:type_name -> google.protobuf.Timestamp + 410, // 210: rill.admin.v1.Usergroup.updated_on:type_name -> google.protobuf.Timestamp + 410, // 211: rill.admin.v1.MemberUsergroup.created_on:type_name -> google.protobuf.Timestamp + 410, // 212: rill.admin.v1.MemberUsergroup.updated_on:type_name -> google.protobuf.Timestamp + 233, // 213: rill.admin.v1.MemberUsergroup.resources:type_name -> rill.admin.v1.ResourceName + 5, // 214: rill.admin.v1.BillingIssue.type:type_name -> rill.admin.v1.BillingIssueType + 6, // 215: rill.admin.v1.BillingIssue.level:type_name -> rill.admin.v1.BillingIssueLevel + 379, // 216: rill.admin.v1.BillingIssue.metadata:type_name -> rill.admin.v1.BillingIssueMetadata + 410, // 217: rill.admin.v1.BillingIssue.event_time:type_name -> google.protobuf.Timestamp + 410, // 218: rill.admin.v1.BillingIssue.created_on:type_name -> google.protobuf.Timestamp + 380, // 219: rill.admin.v1.BillingIssueMetadata.on_trial:type_name -> rill.admin.v1.BillingIssueMetadataOnTrial + 381, // 220: rill.admin.v1.BillingIssueMetadata.trial_ended:type_name -> rill.admin.v1.BillingIssueMetadataTrialEnded + 382, // 221: rill.admin.v1.BillingIssueMetadata.no_payment_method:type_name -> rill.admin.v1.BillingIssueMetadataNoPaymentMethod + 383, // 222: rill.admin.v1.BillingIssueMetadata.no_billable_address:type_name -> rill.admin.v1.BillingIssueMetadataNoBillableAddress + 384, // 223: rill.admin.v1.BillingIssueMetadata.payment_failed:type_name -> rill.admin.v1.BillingIssueMetadataPaymentFailed + 386, // 224: rill.admin.v1.BillingIssueMetadata.subscription_cancelled:type_name -> rill.admin.v1.BillingIssueMetadataSubscriptionCancelled + 387, // 225: rill.admin.v1.BillingIssueMetadata.never_subscribed:type_name -> rill.admin.v1.BillingIssueMetadataNeverSubscribed + 388, // 226: rill.admin.v1.BillingIssueMetadata.on_credit_trial:type_name -> rill.admin.v1.BillingIssueMetadataOnCreditTrial + 389, // 227: rill.admin.v1.BillingIssueMetadata.trial_credits_depleted:type_name -> rill.admin.v1.BillingIssueMetadataTrialCreditsDepleted + 410, // 228: rill.admin.v1.BillingIssueMetadataOnTrial.end_date:type_name -> google.protobuf.Timestamp + 410, // 229: rill.admin.v1.BillingIssueMetadataOnTrial.grace_period_end_date:type_name -> google.protobuf.Timestamp + 410, // 230: rill.admin.v1.BillingIssueMetadataTrialEnded.end_date:type_name -> google.protobuf.Timestamp + 410, // 231: rill.admin.v1.BillingIssueMetadataTrialEnded.grace_period_end_date:type_name -> google.protobuf.Timestamp + 385, // 232: rill.admin.v1.BillingIssueMetadataPaymentFailed.invoices:type_name -> rill.admin.v1.BillingIssueMetadataPaymentFailedMeta + 410, // 233: rill.admin.v1.BillingIssueMetadataPaymentFailedMeta.due_date:type_name -> google.protobuf.Timestamp + 410, // 234: rill.admin.v1.BillingIssueMetadataPaymentFailedMeta.failed_on:type_name -> google.protobuf.Timestamp + 410, // 235: rill.admin.v1.BillingIssueMetadataPaymentFailedMeta.grace_period_end_date:type_name -> google.protobuf.Timestamp + 410, // 236: rill.admin.v1.BillingIssueMetadataSubscriptionCancelled.end_date:type_name -> google.protobuf.Timestamp + 410, // 237: rill.admin.v1.BillingIssueMetadataTrialCreditsDepleted.depleted_on:type_name -> google.protobuf.Timestamp + 362, // 238: rill.admin.v1.ListProjectsForOrganizationAndUserResponse.ProjectRolesEntry.value:type_name -> rill.admin.v1.ProjectMemberUser + 413, // 239: rill.admin.v1.IssueMagicAuthTokenRequest.MetricsViewFiltersEntry.value:type_name -> rill.runtime.v1.Expression + 0, // 240: rill.admin.v1.GetGithubUserStatusResponse.OrganizationInstallationPermissionsEntry.value:type_name -> rill.admin.v1.GithubPermission + 411, // 241: rill.admin.v1.GetReportMetaResponse.DeliveryMeta.user_attrs:type_name -> google.protobuf.Struct + 403, // 242: rill.admin.v1.GetReportMetaResponse.DeliveryMetaEntry.value:type_name -> rill.admin.v1.GetReportMetaResponse.DeliveryMeta + 406, // 243: rill.admin.v1.GetAlertMetaResponse.RecipientUrlsEntry.value:type_name -> rill.admin.v1.GetAlertMetaResponse.URLs + 413, // 244: rill.admin.v1.MagicAuthToken.MetricsViewFiltersEntry.value:type_name -> rill.runtime.v1.Expression + 8, // 245: rill.admin.v1.AdminService.Ping:input_type -> rill.admin.v1.PingRequest + 10, // 246: rill.admin.v1.AdminService.ListOrganizations:input_type -> rill.admin.v1.ListOrganizationsRequest + 12, // 247: rill.admin.v1.AdminService.GetOrganization:input_type -> rill.admin.v1.GetOrganizationRequest + 14, // 248: rill.admin.v1.AdminService.GetOrganizationNameForDomain:input_type -> rill.admin.v1.GetOrganizationNameForDomainRequest + 16, // 249: rill.admin.v1.AdminService.CreateOrganization:input_type -> rill.admin.v1.CreateOrganizationRequest + 18, // 250: rill.admin.v1.AdminService.DeleteOrganization:input_type -> rill.admin.v1.DeleteOrganizationRequest + 20, // 251: rill.admin.v1.AdminService.UpdateOrganization:input_type -> rill.admin.v1.UpdateOrganizationRequest + 22, // 252: rill.admin.v1.AdminService.ListProjectsForOrganization:input_type -> rill.admin.v1.ListProjectsForOrganizationRequest + 36, // 253: rill.admin.v1.AdminService.ListProjectsForOrganizationAndUser:input_type -> rill.admin.v1.ListProjectsForOrganizationAndUserRequest + 38, // 254: rill.admin.v1.AdminService.ListProjectsForFingerprint:input_type -> rill.admin.v1.ListProjectsForFingerprintRequest + 40, // 255: rill.admin.v1.AdminService.GetProject:input_type -> rill.admin.v1.GetProjectRequest + 42, // 256: rill.admin.v1.AdminService.ListProjectsForUserByName:input_type -> rill.admin.v1.ListProjectsForUserByNameRequest + 44, // 257: rill.admin.v1.AdminService.GetProjectByID:input_type -> rill.admin.v1.GetProjectByIDRequest + 46, // 258: rill.admin.v1.AdminService.SearchProjectNames:input_type -> rill.admin.v1.SearchProjectNamesRequest + 79, // 259: rill.admin.v1.AdminService.CreateProject:input_type -> rill.admin.v1.CreateProjectRequest + 81, // 260: rill.admin.v1.AdminService.DeleteProject:input_type -> rill.admin.v1.DeleteProjectRequest + 83, // 261: rill.admin.v1.AdminService.UpdateProject:input_type -> rill.admin.v1.UpdateProjectRequest + 48, // 262: rill.admin.v1.AdminService.GetProjectVariables:input_type -> rill.admin.v1.GetProjectVariablesRequest + 51, // 263: rill.admin.v1.AdminService.UpdateProjectVariables:input_type -> rill.admin.v1.UpdateProjectVariablesRequest + 85, // 264: rill.admin.v1.AdminService.CreateAsset:input_type -> rill.admin.v1.CreateAssetRequest + 87, // 265: rill.admin.v1.AdminService.RedeployProject:input_type -> rill.admin.v1.RedeployProjectRequest + 89, // 266: rill.admin.v1.AdminService.HibernateProject:input_type -> rill.admin.v1.HibernateProjectRequest + 23, // 267: rill.admin.v1.AdminService.ListDeployments:input_type -> rill.admin.v1.ListDeploymentsRequest + 25, // 268: rill.admin.v1.AdminService.CreateDeployment:input_type -> rill.admin.v1.CreateDeploymentRequest + 27, // 269: rill.admin.v1.AdminService.GetDeployment:input_type -> rill.admin.v1.GetDeploymentRequest + 29, // 270: rill.admin.v1.AdminService.StartDeployment:input_type -> rill.admin.v1.StartDeploymentRequest + 31, // 271: rill.admin.v1.AdminService.StopDeployment:input_type -> rill.admin.v1.StopDeploymentRequest + 33, // 272: rill.admin.v1.AdminService.DeleteDeployment:input_type -> rill.admin.v1.DeleteDeploymentRequest + 91, // 273: rill.admin.v1.AdminService.TriggerReconcile:input_type -> rill.admin.v1.TriggerReconcileRequest + 93, // 274: rill.admin.v1.AdminService.TriggerRefreshSources:input_type -> rill.admin.v1.TriggerRefreshSourcesRequest + 95, // 275: rill.admin.v1.AdminService.TriggerRedeploy:input_type -> rill.admin.v1.TriggerRedeployRequest + 97, // 276: rill.admin.v1.AdminService.Provision:input_type -> rill.admin.v1.ProvisionRequest + 99, // 277: rill.admin.v1.AdminService.GetDeploymentConfig:input_type -> rill.admin.v1.GetDeploymentConfigRequest + 101, // 278: rill.admin.v1.AdminService.ListRoles:input_type -> rill.admin.v1.ListRolesRequest + 103, // 279: rill.admin.v1.AdminService.ListOrganizationMemberUsers:input_type -> rill.admin.v1.ListOrganizationMemberUsersRequest + 105, // 280: rill.admin.v1.AdminService.ListOrganizationInvites:input_type -> rill.admin.v1.ListOrganizationInvitesRequest + 107, // 281: rill.admin.v1.AdminService.AddOrganizationMemberUser:input_type -> rill.admin.v1.AddOrganizationMemberUserRequest + 109, // 282: rill.admin.v1.AdminService.RemoveOrganizationMemberUser:input_type -> rill.admin.v1.RemoveOrganizationMemberUserRequest + 111, // 283: rill.admin.v1.AdminService.LeaveOrganization:input_type -> rill.admin.v1.LeaveOrganizationRequest + 113, // 284: rill.admin.v1.AdminService.SetOrganizationMemberUserRole:input_type -> rill.admin.v1.SetOrganizationMemberUserRoleRequest + 115, // 285: rill.admin.v1.AdminService.GetOrganizationMemberUser:input_type -> rill.admin.v1.GetOrganizationMemberUserRequest + 119, // 286: rill.admin.v1.AdminService.ListUsergroupsForProjectAndUser:input_type -> rill.admin.v1.ListUsergroupsForProjectAndUserRequest + 121, // 287: rill.admin.v1.AdminService.UpdateOrganizationMemberUserAttributes:input_type -> rill.admin.v1.UpdateOrganizationMemberUserAttributesRequest + 149, // 288: rill.admin.v1.AdminService.ListProjectMemberUsers:input_type -> rill.admin.v1.ListProjectMemberUsersRequest + 151, // 289: rill.admin.v1.AdminService.ListProjectInvites:input_type -> rill.admin.v1.ListProjectInvitesRequest + 153, // 290: rill.admin.v1.AdminService.AddProjectMemberUser:input_type -> rill.admin.v1.AddProjectMemberUserRequest + 155, // 291: rill.admin.v1.AdminService.RemoveProjectMemberUser:input_type -> rill.admin.v1.RemoveProjectMemberUserRequest + 157, // 292: rill.admin.v1.AdminService.SetProjectMemberUserRole:input_type -> rill.admin.v1.SetProjectMemberUserRoleRequest + 117, // 293: rill.admin.v1.AdminService.GetProjectMemberUser:input_type -> rill.admin.v1.GetProjectMemberUserRequest + 159, // 294: rill.admin.v1.AdminService.ListUsergroupsForOrganizationAndUser:input_type -> rill.admin.v1.ListUsergroupsForOrganizationAndUserRequest + 161, // 295: rill.admin.v1.AdminService.CreateUsergroup:input_type -> rill.admin.v1.CreateUsergroupRequest + 163, // 296: rill.admin.v1.AdminService.GetUsergroup:input_type -> rill.admin.v1.GetUsergroupRequest + 165, // 297: rill.admin.v1.AdminService.UpdateUsergroup:input_type -> rill.admin.v1.UpdateUsergroupRequest + 167, // 298: rill.admin.v1.AdminService.ListOrganizationMemberUsergroups:input_type -> rill.admin.v1.ListOrganizationMemberUsergroupsRequest + 169, // 299: rill.admin.v1.AdminService.ListProjectMemberUsergroups:input_type -> rill.admin.v1.ListProjectMemberUsergroupsRequest + 171, // 300: rill.admin.v1.AdminService.DeleteUsergroup:input_type -> rill.admin.v1.DeleteUsergroupRequest + 173, // 301: rill.admin.v1.AdminService.AddOrganizationMemberUsergroup:input_type -> rill.admin.v1.AddOrganizationMemberUsergroupRequest + 175, // 302: rill.admin.v1.AdminService.SetOrganizationMemberUsergroupRole:input_type -> rill.admin.v1.SetOrganizationMemberUsergroupRoleRequest + 177, // 303: rill.admin.v1.AdminService.RemoveOrganizationMemberUsergroup:input_type -> rill.admin.v1.RemoveOrganizationMemberUsergroupRequest + 179, // 304: rill.admin.v1.AdminService.AddProjectMemberUsergroup:input_type -> rill.admin.v1.AddProjectMemberUsergroupRequest + 181, // 305: rill.admin.v1.AdminService.SetProjectMemberUsergroupRole:input_type -> rill.admin.v1.SetProjectMemberUsergroupRoleRequest + 183, // 306: rill.admin.v1.AdminService.RemoveProjectMemberUsergroup:input_type -> rill.admin.v1.RemoveProjectMemberUsergroupRequest + 185, // 307: rill.admin.v1.AdminService.AddUsergroupMemberUser:input_type -> rill.admin.v1.AddUsergroupMemberUserRequest + 187, // 308: rill.admin.v1.AdminService.ListUsergroupMemberUsers:input_type -> rill.admin.v1.ListUsergroupMemberUsersRequest + 189, // 309: rill.admin.v1.AdminService.RemoveUsergroupMemberUser:input_type -> rill.admin.v1.RemoveUsergroupMemberUserRequest + 194, // 310: rill.admin.v1.AdminService.GetUser:input_type -> rill.admin.v1.GetUserRequest + 196, // 311: rill.admin.v1.AdminService.GetCurrentUser:input_type -> rill.admin.v1.GetCurrentUserRequest + 198, // 312: rill.admin.v1.AdminService.DeleteUser:input_type -> rill.admin.v1.DeleteUserRequest + 200, // 313: rill.admin.v1.AdminService.ListUserAuthTokens:input_type -> rill.admin.v1.ListUserAuthTokensRequest + 202, // 314: rill.admin.v1.AdminService.IssueUserAuthToken:input_type -> rill.admin.v1.IssueUserAuthTokenRequest + 204, // 315: rill.admin.v1.AdminService.RevokeUserAuthToken:input_type -> rill.admin.v1.RevokeUserAuthTokenRequest + 206, // 316: rill.admin.v1.AdminService.RevokeAllUserAuthTokens:input_type -> rill.admin.v1.RevokeAllUserAuthTokensRequest + 208, // 317: rill.admin.v1.AdminService.RevokeRepresentativeAuthTokens:input_type -> rill.admin.v1.RevokeRepresentativeAuthTokensRequest + 210, // 318: rill.admin.v1.AdminService.IssueRepresentativeAuthToken:input_type -> rill.admin.v1.IssueRepresentativeAuthTokenRequest + 212, // 319: rill.admin.v1.AdminService.RevokeCurrentAuthToken:input_type -> rill.admin.v1.RevokeCurrentAuthTokenRequest + 241, // 320: rill.admin.v1.AdminService.GetGithubRepoStatus:input_type -> rill.admin.v1.GetGithubRepoStatusRequest + 243, // 321: rill.admin.v1.AdminService.GetGithubUserStatus:input_type -> rill.admin.v1.GetGithubUserStatusRequest + 245, // 322: rill.admin.v1.AdminService.ListGithubUserRepos:input_type -> rill.admin.v1.ListGithubUserReposRequest + 247, // 323: rill.admin.v1.AdminService.CreateGithubPullRequest:input_type -> rill.admin.v1.CreateGithubPullRequestRequest + 249, // 324: rill.admin.v1.AdminService.GetGithubPullRequest:input_type -> rill.admin.v1.GetGithubPullRequestRequest + 251, // 325: rill.admin.v1.AdminService.ConnectProjectToGithub:input_type -> rill.admin.v1.ConnectProjectToGithubRequest + 253, // 326: rill.admin.v1.AdminService.CreateManagedGitRepo:input_type -> rill.admin.v1.CreateManagedGitRepoRequest + 255, // 327: rill.admin.v1.AdminService.GetCloneCredentials:input_type -> rill.admin.v1.GetCloneCredentialsRequest + 257, // 328: rill.admin.v1.AdminService.CreateWhitelistedDomain:input_type -> rill.admin.v1.CreateWhitelistedDomainRequest + 259, // 329: rill.admin.v1.AdminService.RemoveWhitelistedDomain:input_type -> rill.admin.v1.RemoveWhitelistedDomainRequest + 261, // 330: rill.admin.v1.AdminService.ListWhitelistedDomains:input_type -> rill.admin.v1.ListWhitelistedDomainsRequest + 224, // 331: rill.admin.v1.AdminService.SearchUsers:input_type -> rill.admin.v1.SearchUsersRequest + 53, // 332: rill.admin.v1.AdminService.SearchProjectUsers:input_type -> rill.admin.v1.SearchProjectUsersRequest + 123, // 333: rill.admin.v1.AdminService.ListSuperusers:input_type -> rill.admin.v1.ListSuperusersRequest + 55, // 334: rill.admin.v1.AdminService.GetDeploymentCredentials:input_type -> rill.admin.v1.GetDeploymentCredentialsRequest + 57, // 335: rill.admin.v1.AdminService.GetIFrame:input_type -> rill.admin.v1.GetIFrameRequest + 125, // 336: rill.admin.v1.AdminService.SetSuperuser:input_type -> rill.admin.v1.SetSuperuserRequest + 127, // 337: rill.admin.v1.AdminService.SudoGetResource:input_type -> rill.admin.v1.SudoGetResourceRequest + 139, // 338: rill.admin.v1.AdminService.SudoUpdateUserQuotas:input_type -> rill.admin.v1.SudoUpdateUserQuotasRequest + 129, // 339: rill.admin.v1.AdminService.SudoUpdateOrganizationQuotas:input_type -> rill.admin.v1.SudoUpdateOrganizationQuotasRequest + 131, // 340: rill.admin.v1.AdminService.SudoUpdateOrganizationBillingCustomer:input_type -> rill.admin.v1.SudoUpdateOrganizationBillingCustomerRequest + 133, // 341: rill.admin.v1.AdminService.SudoGrantTrialCredits:input_type -> rill.admin.v1.SudoGrantTrialCreditsRequest + 135, // 342: rill.admin.v1.AdminService.SudoReportUsage:input_type -> rill.admin.v1.SudoReportUsageRequest + 137, // 343: rill.admin.v1.AdminService.SudoUpdateOrganizationCustomDomain:input_type -> rill.admin.v1.SudoUpdateOrganizationCustomDomainRequest + 141, // 344: rill.admin.v1.AdminService.SudoUpdateAnnotations:input_type -> rill.admin.v1.SudoUpdateAnnotationsRequest + 143, // 345: rill.admin.v1.AdminService.SudoIssueRuntimeManagerToken:input_type -> rill.admin.v1.SudoIssueRuntimeManagerTokenRequest + 145, // 346: rill.admin.v1.AdminService.SudoDeleteOrganizationBillingIssue:input_type -> rill.admin.v1.SudoDeleteOrganizationBillingIssueRequest + 147, // 347: rill.admin.v1.AdminService.SudoTriggerBillingRepair:input_type -> rill.admin.v1.SudoTriggerBillingRepairRequest + 263, // 348: rill.admin.v1.AdminService.CreateProjectWhitelistedDomain:input_type -> rill.admin.v1.CreateProjectWhitelistedDomainRequest + 265, // 349: rill.admin.v1.AdminService.RemoveProjectWhitelistedDomain:input_type -> rill.admin.v1.RemoveProjectWhitelistedDomainRequest + 267, // 350: rill.admin.v1.AdminService.ListProjectWhitelistedDomains:input_type -> rill.admin.v1.ListProjectWhitelistedDomainsRequest + 59, // 351: rill.admin.v1.AdminService.ListServices:input_type -> rill.admin.v1.ListServicesRequest + 61, // 352: rill.admin.v1.AdminService.ListProjectMemberServices:input_type -> rill.admin.v1.ListProjectMemberServicesRequest + 63, // 353: rill.admin.v1.AdminService.CreateService:input_type -> rill.admin.v1.CreateServiceRequest + 65, // 354: rill.admin.v1.AdminService.GetService:input_type -> rill.admin.v1.GetServiceRequest + 67, // 355: rill.admin.v1.AdminService.UpdateService:input_type -> rill.admin.v1.UpdateServiceRequest + 69, // 356: rill.admin.v1.AdminService.SetOrganizationMemberServiceRole:input_type -> rill.admin.v1.SetOrganizationMemberServiceRoleRequest + 71, // 357: rill.admin.v1.AdminService.RemoveOrganizationMemberService:input_type -> rill.admin.v1.RemoveOrganizationMemberServiceRequest + 75, // 358: rill.admin.v1.AdminService.SetProjectMemberServiceRole:input_type -> rill.admin.v1.SetProjectMemberServiceRoleRequest + 73, // 359: rill.admin.v1.AdminService.RemoveProjectMemberService:input_type -> rill.admin.v1.RemoveProjectMemberServiceRequest + 77, // 360: rill.admin.v1.AdminService.DeleteService:input_type -> rill.admin.v1.DeleteServiceRequest + 230, // 361: rill.admin.v1.AdminService.ListServiceAuthTokens:input_type -> rill.admin.v1.ListServiceAuthTokensRequest + 228, // 362: rill.admin.v1.AdminService.IssueServiceAuthToken:input_type -> rill.admin.v1.IssueServiceAuthTokenRequest + 226, // 363: rill.admin.v1.AdminService.RevokeServiceAuthToken:input_type -> rill.admin.v1.RevokeServiceAuthTokenRequest + 232, // 364: rill.admin.v1.AdminService.IssueMagicAuthToken:input_type -> rill.admin.v1.IssueMagicAuthTokenRequest + 235, // 365: rill.admin.v1.AdminService.ListMagicAuthTokens:input_type -> rill.admin.v1.ListMagicAuthTokensRequest + 237, // 366: rill.admin.v1.AdminService.GetCurrentMagicAuthToken:input_type -> rill.admin.v1.GetCurrentMagicAuthTokenRequest + 239, // 367: rill.admin.v1.AdminService.RevokeMagicAuthToken:input_type -> rill.admin.v1.RevokeMagicAuthTokenRequest + 192, // 368: rill.admin.v1.AdminService.UpdateUserPreferences:input_type -> rill.admin.v1.UpdateUserPreferencesRequest + 214, // 369: rill.admin.v1.AdminService.ListBookmarks:input_type -> rill.admin.v1.ListBookmarksRequest + 216, // 370: rill.admin.v1.AdminService.GetBookmark:input_type -> rill.admin.v1.GetBookmarkRequest + 218, // 371: rill.admin.v1.AdminService.CreateBookmark:input_type -> rill.admin.v1.CreateBookmarkRequest + 220, // 372: rill.admin.v1.AdminService.UpdateBookmark:input_type -> rill.admin.v1.UpdateBookmarkRequest + 222, // 373: rill.admin.v1.AdminService.RemoveBookmark:input_type -> rill.admin.v1.RemoveBookmarkRequest + 269, // 374: rill.admin.v1.AdminService.GetRepoMeta:input_type -> rill.admin.v1.GetRepoMetaRequest + 271, // 375: rill.admin.v1.AdminService.PullVirtualRepo:input_type -> rill.admin.v1.PullVirtualRepoRequest + 273, // 376: rill.admin.v1.AdminService.GetVirtualFile:input_type -> rill.admin.v1.GetVirtualFileRequest + 275, // 377: rill.admin.v1.AdminService.DeleteVirtualFile:input_type -> rill.admin.v1.DeleteVirtualFileRequest + 277, // 378: rill.admin.v1.AdminService.GetReportMeta:input_type -> rill.admin.v1.GetReportMetaRequest + 279, // 379: rill.admin.v1.AdminService.GetAlertMeta:input_type -> rill.admin.v1.GetAlertMetaRequest + 281, // 380: rill.admin.v1.AdminService.CreateReport:input_type -> rill.admin.v1.CreateReportRequest + 283, // 381: rill.admin.v1.AdminService.EditReport:input_type -> rill.admin.v1.EditReportRequest + 285, // 382: rill.admin.v1.AdminService.UnsubscribeReport:input_type -> rill.admin.v1.UnsubscribeReportRequest + 287, // 383: rill.admin.v1.AdminService.DeleteReport:input_type -> rill.admin.v1.DeleteReportRequest + 289, // 384: rill.admin.v1.AdminService.TriggerReport:input_type -> rill.admin.v1.TriggerReportRequest + 291, // 385: rill.admin.v1.AdminService.GenerateReportYAML:input_type -> rill.admin.v1.GenerateReportYAMLRequest + 293, // 386: rill.admin.v1.AdminService.CreateAlert:input_type -> rill.admin.v1.CreateAlertRequest + 295, // 387: rill.admin.v1.AdminService.EditAlert:input_type -> rill.admin.v1.EditAlertRequest + 297, // 388: rill.admin.v1.AdminService.UnsubscribeAlert:input_type -> rill.admin.v1.UnsubscribeAlertRequest + 299, // 389: rill.admin.v1.AdminService.DeleteAlert:input_type -> rill.admin.v1.DeleteAlertRequest + 301, // 390: rill.admin.v1.AdminService.GenerateAlertYAML:input_type -> rill.admin.v1.GenerateAlertYAMLRequest + 303, // 391: rill.admin.v1.AdminService.GetAlertYAML:input_type -> rill.admin.v1.GetAlertYAMLRequest + 306, // 392: rill.admin.v1.AdminService.CreatePersonalVirtualFile:input_type -> rill.admin.v1.CreatePersonalVirtualFileRequest + 308, // 393: rill.admin.v1.AdminService.EditPersonalVirtualFile:input_type -> rill.admin.v1.EditPersonalVirtualFileRequest + 310, // 394: rill.admin.v1.AdminService.DeletePersonalVirtualFile:input_type -> rill.admin.v1.DeletePersonalVirtualFileRequest + 312, // 395: rill.admin.v1.AdminService.CopyPersonalVirtualFile:input_type -> rill.admin.v1.CopyPersonalVirtualFileRequest + 314, // 396: rill.admin.v1.AdminService.GetPersonalVirtualFile:input_type -> rill.admin.v1.GetPersonalVirtualFileRequest + 316, // 397: rill.admin.v1.AdminService.ListPersonalVirtualFiles:input_type -> rill.admin.v1.ListPersonalVirtualFilesRequest + 318, // 398: rill.admin.v1.AdminService.GetBillingSubscription:input_type -> rill.admin.v1.GetBillingSubscriptionRequest + 320, // 399: rill.admin.v1.AdminService.UpdateBillingSubscription:input_type -> rill.admin.v1.UpdateBillingSubscriptionRequest + 322, // 400: rill.admin.v1.AdminService.CancelBillingSubscription:input_type -> rill.admin.v1.CancelBillingSubscriptionRequest + 324, // 401: rill.admin.v1.AdminService.RenewBillingSubscription:input_type -> rill.admin.v1.RenewBillingSubscriptionRequest + 326, // 402: rill.admin.v1.AdminService.GetPaymentsPortalURL:input_type -> rill.admin.v1.GetPaymentsPortalURLRequest + 328, // 403: rill.admin.v1.AdminService.GetBillingCreditBalance:input_type -> rill.admin.v1.GetBillingCreditBalanceRequest + 330, // 404: rill.admin.v1.AdminService.ListPublicBillingPlans:input_type -> rill.admin.v1.ListPublicBillingPlansRequest + 332, // 405: rill.admin.v1.AdminService.GetBillingProjectCredentials:input_type -> rill.admin.v1.GetBillingProjectCredentialsRequest + 336, // 406: rill.admin.v1.AdminService.RequestProjectAccess:input_type -> rill.admin.v1.RequestProjectAccessRequest + 338, // 407: rill.admin.v1.AdminService.GetProjectAccessRequest:input_type -> rill.admin.v1.GetProjectAccessRequestRequest + 340, // 408: rill.admin.v1.AdminService.ApproveProjectAccess:input_type -> rill.admin.v1.ApproveProjectAccessRequest + 342, // 409: rill.admin.v1.AdminService.DenyProjectAccess:input_type -> rill.admin.v1.DenyProjectAccessRequest + 344, // 410: rill.admin.v1.AdminService.ListOrganizationBillingIssues:input_type -> rill.admin.v1.ListOrganizationBillingIssuesRequest + 9, // 411: rill.admin.v1.AdminService.Ping:output_type -> rill.admin.v1.PingResponse + 11, // 412: rill.admin.v1.AdminService.ListOrganizations:output_type -> rill.admin.v1.ListOrganizationsResponse + 13, // 413: rill.admin.v1.AdminService.GetOrganization:output_type -> rill.admin.v1.GetOrganizationResponse + 15, // 414: rill.admin.v1.AdminService.GetOrganizationNameForDomain:output_type -> rill.admin.v1.GetOrganizationNameForDomainResponse + 17, // 415: rill.admin.v1.AdminService.CreateOrganization:output_type -> rill.admin.v1.CreateOrganizationResponse + 19, // 416: rill.admin.v1.AdminService.DeleteOrganization:output_type -> rill.admin.v1.DeleteOrganizationResponse + 21, // 417: rill.admin.v1.AdminService.UpdateOrganization:output_type -> rill.admin.v1.UpdateOrganizationResponse + 35, // 418: rill.admin.v1.AdminService.ListProjectsForOrganization:output_type -> rill.admin.v1.ListProjectsForOrganizationResponse + 37, // 419: rill.admin.v1.AdminService.ListProjectsForOrganizationAndUser:output_type -> rill.admin.v1.ListProjectsForOrganizationAndUserResponse + 39, // 420: rill.admin.v1.AdminService.ListProjectsForFingerprint:output_type -> rill.admin.v1.ListProjectsForFingerprintResponse + 41, // 421: rill.admin.v1.AdminService.GetProject:output_type -> rill.admin.v1.GetProjectResponse + 43, // 422: rill.admin.v1.AdminService.ListProjectsForUserByName:output_type -> rill.admin.v1.ListProjectsForUserByNameResponse + 45, // 423: rill.admin.v1.AdminService.GetProjectByID:output_type -> rill.admin.v1.GetProjectByIDResponse + 47, // 424: rill.admin.v1.AdminService.SearchProjectNames:output_type -> rill.admin.v1.SearchProjectNamesResponse + 80, // 425: rill.admin.v1.AdminService.CreateProject:output_type -> rill.admin.v1.CreateProjectResponse + 82, // 426: rill.admin.v1.AdminService.DeleteProject:output_type -> rill.admin.v1.DeleteProjectResponse + 84, // 427: rill.admin.v1.AdminService.UpdateProject:output_type -> rill.admin.v1.UpdateProjectResponse + 49, // 428: rill.admin.v1.AdminService.GetProjectVariables:output_type -> rill.admin.v1.GetProjectVariablesResponse + 52, // 429: rill.admin.v1.AdminService.UpdateProjectVariables:output_type -> rill.admin.v1.UpdateProjectVariablesResponse + 86, // 430: rill.admin.v1.AdminService.CreateAsset:output_type -> rill.admin.v1.CreateAssetResponse + 88, // 431: rill.admin.v1.AdminService.RedeployProject:output_type -> rill.admin.v1.RedeployProjectResponse + 90, // 432: rill.admin.v1.AdminService.HibernateProject:output_type -> rill.admin.v1.HibernateProjectResponse + 24, // 433: rill.admin.v1.AdminService.ListDeployments:output_type -> rill.admin.v1.ListDeploymentsResponse + 26, // 434: rill.admin.v1.AdminService.CreateDeployment:output_type -> rill.admin.v1.CreateDeploymentResponse + 28, // 435: rill.admin.v1.AdminService.GetDeployment:output_type -> rill.admin.v1.GetDeploymentResponse + 30, // 436: rill.admin.v1.AdminService.StartDeployment:output_type -> rill.admin.v1.StartDeploymentResponse + 32, // 437: rill.admin.v1.AdminService.StopDeployment:output_type -> rill.admin.v1.StopDeploymentResponse + 34, // 438: rill.admin.v1.AdminService.DeleteDeployment:output_type -> rill.admin.v1.DeleteDeploymentResponse + 92, // 439: rill.admin.v1.AdminService.TriggerReconcile:output_type -> rill.admin.v1.TriggerReconcileResponse + 94, // 440: rill.admin.v1.AdminService.TriggerRefreshSources:output_type -> rill.admin.v1.TriggerRefreshSourcesResponse + 96, // 441: rill.admin.v1.AdminService.TriggerRedeploy:output_type -> rill.admin.v1.TriggerRedeployResponse + 98, // 442: rill.admin.v1.AdminService.Provision:output_type -> rill.admin.v1.ProvisionResponse + 100, // 443: rill.admin.v1.AdminService.GetDeploymentConfig:output_type -> rill.admin.v1.GetDeploymentConfigResponse + 102, // 444: rill.admin.v1.AdminService.ListRoles:output_type -> rill.admin.v1.ListRolesResponse + 104, // 445: rill.admin.v1.AdminService.ListOrganizationMemberUsers:output_type -> rill.admin.v1.ListOrganizationMemberUsersResponse + 106, // 446: rill.admin.v1.AdminService.ListOrganizationInvites:output_type -> rill.admin.v1.ListOrganizationInvitesResponse + 108, // 447: rill.admin.v1.AdminService.AddOrganizationMemberUser:output_type -> rill.admin.v1.AddOrganizationMemberUserResponse + 110, // 448: rill.admin.v1.AdminService.RemoveOrganizationMemberUser:output_type -> rill.admin.v1.RemoveOrganizationMemberUserResponse + 112, // 449: rill.admin.v1.AdminService.LeaveOrganization:output_type -> rill.admin.v1.LeaveOrganizationResponse + 114, // 450: rill.admin.v1.AdminService.SetOrganizationMemberUserRole:output_type -> rill.admin.v1.SetOrganizationMemberUserRoleResponse + 116, // 451: rill.admin.v1.AdminService.GetOrganizationMemberUser:output_type -> rill.admin.v1.GetOrganizationMemberUserResponse + 120, // 452: rill.admin.v1.AdminService.ListUsergroupsForProjectAndUser:output_type -> rill.admin.v1.ListUsergroupsForProjectAndUserResponse + 122, // 453: rill.admin.v1.AdminService.UpdateOrganizationMemberUserAttributes:output_type -> rill.admin.v1.UpdateOrganizationMemberUserAttributesResponse + 150, // 454: rill.admin.v1.AdminService.ListProjectMemberUsers:output_type -> rill.admin.v1.ListProjectMemberUsersResponse + 152, // 455: rill.admin.v1.AdminService.ListProjectInvites:output_type -> rill.admin.v1.ListProjectInvitesResponse + 154, // 456: rill.admin.v1.AdminService.AddProjectMemberUser:output_type -> rill.admin.v1.AddProjectMemberUserResponse + 156, // 457: rill.admin.v1.AdminService.RemoveProjectMemberUser:output_type -> rill.admin.v1.RemoveProjectMemberUserResponse + 158, // 458: rill.admin.v1.AdminService.SetProjectMemberUserRole:output_type -> rill.admin.v1.SetProjectMemberUserRoleResponse + 118, // 459: rill.admin.v1.AdminService.GetProjectMemberUser:output_type -> rill.admin.v1.GetProjectMemberUserResponse + 160, // 460: rill.admin.v1.AdminService.ListUsergroupsForOrganizationAndUser:output_type -> rill.admin.v1.ListUsergroupsForOrganizationAndUserResponse + 162, // 461: rill.admin.v1.AdminService.CreateUsergroup:output_type -> rill.admin.v1.CreateUsergroupResponse + 164, // 462: rill.admin.v1.AdminService.GetUsergroup:output_type -> rill.admin.v1.GetUsergroupResponse + 166, // 463: rill.admin.v1.AdminService.UpdateUsergroup:output_type -> rill.admin.v1.UpdateUsergroupResponse + 168, // 464: rill.admin.v1.AdminService.ListOrganizationMemberUsergroups:output_type -> rill.admin.v1.ListOrganizationMemberUsergroupsResponse + 170, // 465: rill.admin.v1.AdminService.ListProjectMemberUsergroups:output_type -> rill.admin.v1.ListProjectMemberUsergroupsResponse + 172, // 466: rill.admin.v1.AdminService.DeleteUsergroup:output_type -> rill.admin.v1.DeleteUsergroupResponse + 174, // 467: rill.admin.v1.AdminService.AddOrganizationMemberUsergroup:output_type -> rill.admin.v1.AddOrganizationMemberUsergroupResponse + 176, // 468: rill.admin.v1.AdminService.SetOrganizationMemberUsergroupRole:output_type -> rill.admin.v1.SetOrganizationMemberUsergroupRoleResponse + 178, // 469: rill.admin.v1.AdminService.RemoveOrganizationMemberUsergroup:output_type -> rill.admin.v1.RemoveOrganizationMemberUsergroupResponse + 180, // 470: rill.admin.v1.AdminService.AddProjectMemberUsergroup:output_type -> rill.admin.v1.AddProjectMemberUsergroupResponse + 182, // 471: rill.admin.v1.AdminService.SetProjectMemberUsergroupRole:output_type -> rill.admin.v1.SetProjectMemberUsergroupRoleResponse + 184, // 472: rill.admin.v1.AdminService.RemoveProjectMemberUsergroup:output_type -> rill.admin.v1.RemoveProjectMemberUsergroupResponse + 186, // 473: rill.admin.v1.AdminService.AddUsergroupMemberUser:output_type -> rill.admin.v1.AddUsergroupMemberUserResponse + 188, // 474: rill.admin.v1.AdminService.ListUsergroupMemberUsers:output_type -> rill.admin.v1.ListUsergroupMemberUsersResponse + 190, // 475: rill.admin.v1.AdminService.RemoveUsergroupMemberUser:output_type -> rill.admin.v1.RemoveUsergroupMemberUserResponse + 195, // 476: rill.admin.v1.AdminService.GetUser:output_type -> rill.admin.v1.GetUserResponse + 197, // 477: rill.admin.v1.AdminService.GetCurrentUser:output_type -> rill.admin.v1.GetCurrentUserResponse + 199, // 478: rill.admin.v1.AdminService.DeleteUser:output_type -> rill.admin.v1.DeleteUserResponse + 201, // 479: rill.admin.v1.AdminService.ListUserAuthTokens:output_type -> rill.admin.v1.ListUserAuthTokensResponse + 203, // 480: rill.admin.v1.AdminService.IssueUserAuthToken:output_type -> rill.admin.v1.IssueUserAuthTokenResponse + 205, // 481: rill.admin.v1.AdminService.RevokeUserAuthToken:output_type -> rill.admin.v1.RevokeUserAuthTokenResponse + 207, // 482: rill.admin.v1.AdminService.RevokeAllUserAuthTokens:output_type -> rill.admin.v1.RevokeAllUserAuthTokensResponse + 209, // 483: rill.admin.v1.AdminService.RevokeRepresentativeAuthTokens:output_type -> rill.admin.v1.RevokeRepresentativeAuthTokensResponse + 211, // 484: rill.admin.v1.AdminService.IssueRepresentativeAuthToken:output_type -> rill.admin.v1.IssueRepresentativeAuthTokenResponse + 213, // 485: rill.admin.v1.AdminService.RevokeCurrentAuthToken:output_type -> rill.admin.v1.RevokeCurrentAuthTokenResponse + 242, // 486: rill.admin.v1.AdminService.GetGithubRepoStatus:output_type -> rill.admin.v1.GetGithubRepoStatusResponse + 244, // 487: rill.admin.v1.AdminService.GetGithubUserStatus:output_type -> rill.admin.v1.GetGithubUserStatusResponse + 246, // 488: rill.admin.v1.AdminService.ListGithubUserRepos:output_type -> rill.admin.v1.ListGithubUserReposResponse + 248, // 489: rill.admin.v1.AdminService.CreateGithubPullRequest:output_type -> rill.admin.v1.CreateGithubPullRequestResponse + 250, // 490: rill.admin.v1.AdminService.GetGithubPullRequest:output_type -> rill.admin.v1.GetGithubPullRequestResponse + 252, // 491: rill.admin.v1.AdminService.ConnectProjectToGithub:output_type -> rill.admin.v1.ConnectProjectToGithubResponse + 254, // 492: rill.admin.v1.AdminService.CreateManagedGitRepo:output_type -> rill.admin.v1.CreateManagedGitRepoResponse + 256, // 493: rill.admin.v1.AdminService.GetCloneCredentials:output_type -> rill.admin.v1.GetCloneCredentialsResponse + 258, // 494: rill.admin.v1.AdminService.CreateWhitelistedDomain:output_type -> rill.admin.v1.CreateWhitelistedDomainResponse + 260, // 495: rill.admin.v1.AdminService.RemoveWhitelistedDomain:output_type -> rill.admin.v1.RemoveWhitelistedDomainResponse + 262, // 496: rill.admin.v1.AdminService.ListWhitelistedDomains:output_type -> rill.admin.v1.ListWhitelistedDomainsResponse + 225, // 497: rill.admin.v1.AdminService.SearchUsers:output_type -> rill.admin.v1.SearchUsersResponse + 54, // 498: rill.admin.v1.AdminService.SearchProjectUsers:output_type -> rill.admin.v1.SearchProjectUsersResponse + 124, // 499: rill.admin.v1.AdminService.ListSuperusers:output_type -> rill.admin.v1.ListSuperusersResponse + 56, // 500: rill.admin.v1.AdminService.GetDeploymentCredentials:output_type -> rill.admin.v1.GetDeploymentCredentialsResponse + 58, // 501: rill.admin.v1.AdminService.GetIFrame:output_type -> rill.admin.v1.GetIFrameResponse + 126, // 502: rill.admin.v1.AdminService.SetSuperuser:output_type -> rill.admin.v1.SetSuperuserResponse + 128, // 503: rill.admin.v1.AdminService.SudoGetResource:output_type -> rill.admin.v1.SudoGetResourceResponse + 140, // 504: rill.admin.v1.AdminService.SudoUpdateUserQuotas:output_type -> rill.admin.v1.SudoUpdateUserQuotasResponse + 130, // 505: rill.admin.v1.AdminService.SudoUpdateOrganizationQuotas:output_type -> rill.admin.v1.SudoUpdateOrganizationQuotasResponse + 132, // 506: rill.admin.v1.AdminService.SudoUpdateOrganizationBillingCustomer:output_type -> rill.admin.v1.SudoUpdateOrganizationBillingCustomerResponse + 134, // 507: rill.admin.v1.AdminService.SudoGrantTrialCredits:output_type -> rill.admin.v1.SudoGrantTrialCreditsResponse + 136, // 508: rill.admin.v1.AdminService.SudoReportUsage:output_type -> rill.admin.v1.SudoReportUsageResponse + 138, // 509: rill.admin.v1.AdminService.SudoUpdateOrganizationCustomDomain:output_type -> rill.admin.v1.SudoUpdateOrganizationCustomDomainResponse + 142, // 510: rill.admin.v1.AdminService.SudoUpdateAnnotations:output_type -> rill.admin.v1.SudoUpdateAnnotationsResponse + 144, // 511: rill.admin.v1.AdminService.SudoIssueRuntimeManagerToken:output_type -> rill.admin.v1.SudoIssueRuntimeManagerTokenResponse + 146, // 512: rill.admin.v1.AdminService.SudoDeleteOrganizationBillingIssue:output_type -> rill.admin.v1.SudoDeleteOrganizationBillingIssueResponse + 148, // 513: rill.admin.v1.AdminService.SudoTriggerBillingRepair:output_type -> rill.admin.v1.SudoTriggerBillingRepairResponse + 264, // 514: rill.admin.v1.AdminService.CreateProjectWhitelistedDomain:output_type -> rill.admin.v1.CreateProjectWhitelistedDomainResponse + 266, // 515: rill.admin.v1.AdminService.RemoveProjectWhitelistedDomain:output_type -> rill.admin.v1.RemoveProjectWhitelistedDomainResponse + 268, // 516: rill.admin.v1.AdminService.ListProjectWhitelistedDomains:output_type -> rill.admin.v1.ListProjectWhitelistedDomainsResponse + 60, // 517: rill.admin.v1.AdminService.ListServices:output_type -> rill.admin.v1.ListServicesResponse + 62, // 518: rill.admin.v1.AdminService.ListProjectMemberServices:output_type -> rill.admin.v1.ListProjectMemberServicesResponse + 64, // 519: rill.admin.v1.AdminService.CreateService:output_type -> rill.admin.v1.CreateServiceResponse + 66, // 520: rill.admin.v1.AdminService.GetService:output_type -> rill.admin.v1.GetServiceResponse + 68, // 521: rill.admin.v1.AdminService.UpdateService:output_type -> rill.admin.v1.UpdateServiceResponse + 70, // 522: rill.admin.v1.AdminService.SetOrganizationMemberServiceRole:output_type -> rill.admin.v1.SetOrganizationMemberServiceRoleResponse + 72, // 523: rill.admin.v1.AdminService.RemoveOrganizationMemberService:output_type -> rill.admin.v1.RemoveOrganizationMemberServiceResponse + 76, // 524: rill.admin.v1.AdminService.SetProjectMemberServiceRole:output_type -> rill.admin.v1.SetProjectMemberServiceRoleResponse + 74, // 525: rill.admin.v1.AdminService.RemoveProjectMemberService:output_type -> rill.admin.v1.RemoveProjectMemberServiceResponse + 78, // 526: rill.admin.v1.AdminService.DeleteService:output_type -> rill.admin.v1.DeleteServiceResponse + 231, // 527: rill.admin.v1.AdminService.ListServiceAuthTokens:output_type -> rill.admin.v1.ListServiceAuthTokensResponse + 229, // 528: rill.admin.v1.AdminService.IssueServiceAuthToken:output_type -> rill.admin.v1.IssueServiceAuthTokenResponse + 227, // 529: rill.admin.v1.AdminService.RevokeServiceAuthToken:output_type -> rill.admin.v1.RevokeServiceAuthTokenResponse + 234, // 530: rill.admin.v1.AdminService.IssueMagicAuthToken:output_type -> rill.admin.v1.IssueMagicAuthTokenResponse + 236, // 531: rill.admin.v1.AdminService.ListMagicAuthTokens:output_type -> rill.admin.v1.ListMagicAuthTokensResponse + 238, // 532: rill.admin.v1.AdminService.GetCurrentMagicAuthToken:output_type -> rill.admin.v1.GetCurrentMagicAuthTokenResponse + 240, // 533: rill.admin.v1.AdminService.RevokeMagicAuthToken:output_type -> rill.admin.v1.RevokeMagicAuthTokenResponse + 193, // 534: rill.admin.v1.AdminService.UpdateUserPreferences:output_type -> rill.admin.v1.UpdateUserPreferencesResponse + 215, // 535: rill.admin.v1.AdminService.ListBookmarks:output_type -> rill.admin.v1.ListBookmarksResponse + 217, // 536: rill.admin.v1.AdminService.GetBookmark:output_type -> rill.admin.v1.GetBookmarkResponse + 219, // 537: rill.admin.v1.AdminService.CreateBookmark:output_type -> rill.admin.v1.CreateBookmarkResponse + 221, // 538: rill.admin.v1.AdminService.UpdateBookmark:output_type -> rill.admin.v1.UpdateBookmarkResponse + 223, // 539: rill.admin.v1.AdminService.RemoveBookmark:output_type -> rill.admin.v1.RemoveBookmarkResponse + 270, // 540: rill.admin.v1.AdminService.GetRepoMeta:output_type -> rill.admin.v1.GetRepoMetaResponse + 272, // 541: rill.admin.v1.AdminService.PullVirtualRepo:output_type -> rill.admin.v1.PullVirtualRepoResponse + 274, // 542: rill.admin.v1.AdminService.GetVirtualFile:output_type -> rill.admin.v1.GetVirtualFileResponse + 276, // 543: rill.admin.v1.AdminService.DeleteVirtualFile:output_type -> rill.admin.v1.DeleteVirtualFileResponse + 278, // 544: rill.admin.v1.AdminService.GetReportMeta:output_type -> rill.admin.v1.GetReportMetaResponse + 280, // 545: rill.admin.v1.AdminService.GetAlertMeta:output_type -> rill.admin.v1.GetAlertMetaResponse + 282, // 546: rill.admin.v1.AdminService.CreateReport:output_type -> rill.admin.v1.CreateReportResponse + 284, // 547: rill.admin.v1.AdminService.EditReport:output_type -> rill.admin.v1.EditReportResponse + 286, // 548: rill.admin.v1.AdminService.UnsubscribeReport:output_type -> rill.admin.v1.UnsubscribeReportResponse + 288, // 549: rill.admin.v1.AdminService.DeleteReport:output_type -> rill.admin.v1.DeleteReportResponse + 290, // 550: rill.admin.v1.AdminService.TriggerReport:output_type -> rill.admin.v1.TriggerReportResponse + 292, // 551: rill.admin.v1.AdminService.GenerateReportYAML:output_type -> rill.admin.v1.GenerateReportYAMLResponse + 294, // 552: rill.admin.v1.AdminService.CreateAlert:output_type -> rill.admin.v1.CreateAlertResponse + 296, // 553: rill.admin.v1.AdminService.EditAlert:output_type -> rill.admin.v1.EditAlertResponse + 298, // 554: rill.admin.v1.AdminService.UnsubscribeAlert:output_type -> rill.admin.v1.UnsubscribeAlertResponse + 300, // 555: rill.admin.v1.AdminService.DeleteAlert:output_type -> rill.admin.v1.DeleteAlertResponse + 302, // 556: rill.admin.v1.AdminService.GenerateAlertYAML:output_type -> rill.admin.v1.GenerateAlertYAMLResponse + 304, // 557: rill.admin.v1.AdminService.GetAlertYAML:output_type -> rill.admin.v1.GetAlertYAMLResponse + 307, // 558: rill.admin.v1.AdminService.CreatePersonalVirtualFile:output_type -> rill.admin.v1.CreatePersonalVirtualFileResponse + 309, // 559: rill.admin.v1.AdminService.EditPersonalVirtualFile:output_type -> rill.admin.v1.EditPersonalVirtualFileResponse + 311, // 560: rill.admin.v1.AdminService.DeletePersonalVirtualFile:output_type -> rill.admin.v1.DeletePersonalVirtualFileResponse + 313, // 561: rill.admin.v1.AdminService.CopyPersonalVirtualFile:output_type -> rill.admin.v1.CopyPersonalVirtualFileResponse + 315, // 562: rill.admin.v1.AdminService.GetPersonalVirtualFile:output_type -> rill.admin.v1.GetPersonalVirtualFileResponse + 317, // 563: rill.admin.v1.AdminService.ListPersonalVirtualFiles:output_type -> rill.admin.v1.ListPersonalVirtualFilesResponse + 319, // 564: rill.admin.v1.AdminService.GetBillingSubscription:output_type -> rill.admin.v1.GetBillingSubscriptionResponse + 321, // 565: rill.admin.v1.AdminService.UpdateBillingSubscription:output_type -> rill.admin.v1.UpdateBillingSubscriptionResponse + 323, // 566: rill.admin.v1.AdminService.CancelBillingSubscription:output_type -> rill.admin.v1.CancelBillingSubscriptionResponse + 325, // 567: rill.admin.v1.AdminService.RenewBillingSubscription:output_type -> rill.admin.v1.RenewBillingSubscriptionResponse + 327, // 568: rill.admin.v1.AdminService.GetPaymentsPortalURL:output_type -> rill.admin.v1.GetPaymentsPortalURLResponse + 329, // 569: rill.admin.v1.AdminService.GetBillingCreditBalance:output_type -> rill.admin.v1.GetBillingCreditBalanceResponse + 331, // 570: rill.admin.v1.AdminService.ListPublicBillingPlans:output_type -> rill.admin.v1.ListPublicBillingPlansResponse + 333, // 571: rill.admin.v1.AdminService.GetBillingProjectCredentials:output_type -> rill.admin.v1.GetBillingProjectCredentialsResponse + 337, // 572: rill.admin.v1.AdminService.RequestProjectAccess:output_type -> rill.admin.v1.RequestProjectAccessResponse + 339, // 573: rill.admin.v1.AdminService.GetProjectAccessRequest:output_type -> rill.admin.v1.GetProjectAccessRequestResponse + 341, // 574: rill.admin.v1.AdminService.ApproveProjectAccess:output_type -> rill.admin.v1.ApproveProjectAccessResponse + 343, // 575: rill.admin.v1.AdminService.DenyProjectAccess:output_type -> rill.admin.v1.DenyProjectAccessResponse + 345, // 576: rill.admin.v1.AdminService.ListOrganizationBillingIssues:output_type -> rill.admin.v1.ListOrganizationBillingIssuesResponse + 411, // [411:577] is the sub-list for method output_type + 245, // [245:411] is the sub-list for method input_type + 245, // [245:245] is the sub-list for extension type_name + 245, // [245:245] is the sub-list for extension extendee + 0, // [0:245] is the sub-list for field type_name } func init() { file_rill_admin_v1_api_proto_init() } @@ -33740,8 +34911,164 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[263].Exporter = func(v any, i int) any { - switch v := v.(*PullVirtualRepoRequest); i { + file_rill_admin_v1_api_proto_msgTypes[263].Exporter = func(v any, i int) any { + switch v := v.(*PullVirtualRepoRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[264].Exporter = func(v any, i int) any { + switch v := v.(*PullVirtualRepoResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[265].Exporter = func(v any, i int) any { + switch v := v.(*GetVirtualFileRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[266].Exporter = func(v any, i int) any { + switch v := v.(*GetVirtualFileResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[267].Exporter = func(v any, i int) any { + switch v := v.(*DeleteVirtualFileRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[268].Exporter = func(v any, i int) any { + switch v := v.(*DeleteVirtualFileResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[269].Exporter = func(v any, i int) any { + switch v := v.(*GetReportMetaRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[270].Exporter = func(v any, i int) any { + switch v := v.(*GetReportMetaResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[271].Exporter = func(v any, i int) any { + switch v := v.(*GetAlertMetaRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[272].Exporter = func(v any, i int) any { + switch v := v.(*GetAlertMetaResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[273].Exporter = func(v any, i int) any { + switch v := v.(*CreateReportRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[274].Exporter = func(v any, i int) any { + switch v := v.(*CreateReportResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[275].Exporter = func(v any, i int) any { + switch v := v.(*EditReportRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[276].Exporter = func(v any, i int) any { + switch v := v.(*EditReportResponse); i { case 0: return &v.state case 1: @@ -33752,8 +35079,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[264].Exporter = func(v any, i int) any { - switch v := v.(*PullVirtualRepoResponse); i { + file_rill_admin_v1_api_proto_msgTypes[277].Exporter = func(v any, i int) any { + switch v := v.(*UnsubscribeReportRequest); i { case 0: return &v.state case 1: @@ -33764,8 +35091,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[265].Exporter = func(v any, i int) any { - switch v := v.(*GetVirtualFileRequest); i { + file_rill_admin_v1_api_proto_msgTypes[278].Exporter = func(v any, i int) any { + switch v := v.(*UnsubscribeReportResponse); i { case 0: return &v.state case 1: @@ -33776,8 +35103,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[266].Exporter = func(v any, i int) any { - switch v := v.(*GetVirtualFileResponse); i { + file_rill_admin_v1_api_proto_msgTypes[279].Exporter = func(v any, i int) any { + switch v := v.(*DeleteReportRequest); i { case 0: return &v.state case 1: @@ -33788,8 +35115,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[267].Exporter = func(v any, i int) any { - switch v := v.(*DeleteVirtualFileRequest); i { + file_rill_admin_v1_api_proto_msgTypes[280].Exporter = func(v any, i int) any { + switch v := v.(*DeleteReportResponse); i { case 0: return &v.state case 1: @@ -33800,8 +35127,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[268].Exporter = func(v any, i int) any { - switch v := v.(*DeleteVirtualFileResponse); i { + file_rill_admin_v1_api_proto_msgTypes[281].Exporter = func(v any, i int) any { + switch v := v.(*TriggerReportRequest); i { case 0: return &v.state case 1: @@ -33812,8 +35139,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[269].Exporter = func(v any, i int) any { - switch v := v.(*GetReportMetaRequest); i { + file_rill_admin_v1_api_proto_msgTypes[282].Exporter = func(v any, i int) any { + switch v := v.(*TriggerReportResponse); i { case 0: return &v.state case 1: @@ -33824,8 +35151,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[270].Exporter = func(v any, i int) any { - switch v := v.(*GetReportMetaResponse); i { + file_rill_admin_v1_api_proto_msgTypes[283].Exporter = func(v any, i int) any { + switch v := v.(*GenerateReportYAMLRequest); i { case 0: return &v.state case 1: @@ -33836,8 +35163,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[271].Exporter = func(v any, i int) any { - switch v := v.(*GetAlertMetaRequest); i { + file_rill_admin_v1_api_proto_msgTypes[284].Exporter = func(v any, i int) any { + switch v := v.(*GenerateReportYAMLResponse); i { case 0: return &v.state case 1: @@ -33848,8 +35175,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[272].Exporter = func(v any, i int) any { - switch v := v.(*GetAlertMetaResponse); i { + file_rill_admin_v1_api_proto_msgTypes[285].Exporter = func(v any, i int) any { + switch v := v.(*CreateAlertRequest); i { case 0: return &v.state case 1: @@ -33860,8 +35187,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[273].Exporter = func(v any, i int) any { - switch v := v.(*CreateReportRequest); i { + file_rill_admin_v1_api_proto_msgTypes[286].Exporter = func(v any, i int) any { + switch v := v.(*CreateAlertResponse); i { case 0: return &v.state case 1: @@ -33872,8 +35199,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[274].Exporter = func(v any, i int) any { - switch v := v.(*CreateReportResponse); i { + file_rill_admin_v1_api_proto_msgTypes[287].Exporter = func(v any, i int) any { + switch v := v.(*EditAlertRequest); i { case 0: return &v.state case 1: @@ -33884,8 +35211,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[275].Exporter = func(v any, i int) any { - switch v := v.(*EditReportRequest); i { + file_rill_admin_v1_api_proto_msgTypes[288].Exporter = func(v any, i int) any { + switch v := v.(*EditAlertResponse); i { case 0: return &v.state case 1: @@ -33896,8 +35223,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[276].Exporter = func(v any, i int) any { - switch v := v.(*EditReportResponse); i { + file_rill_admin_v1_api_proto_msgTypes[289].Exporter = func(v any, i int) any { + switch v := v.(*UnsubscribeAlertRequest); i { case 0: return &v.state case 1: @@ -33908,8 +35235,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[277].Exporter = func(v any, i int) any { - switch v := v.(*UnsubscribeReportRequest); i { + file_rill_admin_v1_api_proto_msgTypes[290].Exporter = func(v any, i int) any { + switch v := v.(*UnsubscribeAlertResponse); i { case 0: return &v.state case 1: @@ -33920,8 +35247,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[278].Exporter = func(v any, i int) any { - switch v := v.(*UnsubscribeReportResponse); i { + file_rill_admin_v1_api_proto_msgTypes[291].Exporter = func(v any, i int) any { + switch v := v.(*DeleteAlertRequest); i { case 0: return &v.state case 1: @@ -33932,8 +35259,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[279].Exporter = func(v any, i int) any { - switch v := v.(*DeleteReportRequest); i { + file_rill_admin_v1_api_proto_msgTypes[292].Exporter = func(v any, i int) any { + switch v := v.(*DeleteAlertResponse); i { case 0: return &v.state case 1: @@ -33944,8 +35271,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[280].Exporter = func(v any, i int) any { - switch v := v.(*DeleteReportResponse); i { + file_rill_admin_v1_api_proto_msgTypes[293].Exporter = func(v any, i int) any { + switch v := v.(*GenerateAlertYAMLRequest); i { case 0: return &v.state case 1: @@ -33956,8 +35283,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[281].Exporter = func(v any, i int) any { - switch v := v.(*TriggerReportRequest); i { + file_rill_admin_v1_api_proto_msgTypes[294].Exporter = func(v any, i int) any { + switch v := v.(*GenerateAlertYAMLResponse); i { case 0: return &v.state case 1: @@ -33968,8 +35295,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[282].Exporter = func(v any, i int) any { - switch v := v.(*TriggerReportResponse); i { + file_rill_admin_v1_api_proto_msgTypes[295].Exporter = func(v any, i int) any { + switch v := v.(*GetAlertYAMLRequest); i { case 0: return &v.state case 1: @@ -33980,8 +35307,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[283].Exporter = func(v any, i int) any { - switch v := v.(*GenerateReportYAMLRequest); i { + file_rill_admin_v1_api_proto_msgTypes[296].Exporter = func(v any, i int) any { + switch v := v.(*GetAlertYAMLResponse); i { case 0: return &v.state case 1: @@ -33992,8 +35319,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[284].Exporter = func(v any, i int) any { - switch v := v.(*GenerateReportYAMLResponse); i { + file_rill_admin_v1_api_proto_msgTypes[297].Exporter = func(v any, i int) any { + switch v := v.(*PersonalVirtualFileSummary); i { case 0: return &v.state case 1: @@ -34004,8 +35331,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[285].Exporter = func(v any, i int) any { - switch v := v.(*CreateAlertRequest); i { + file_rill_admin_v1_api_proto_msgTypes[298].Exporter = func(v any, i int) any { + switch v := v.(*CreatePersonalVirtualFileRequest); i { case 0: return &v.state case 1: @@ -34016,8 +35343,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[286].Exporter = func(v any, i int) any { - switch v := v.(*CreateAlertResponse); i { + file_rill_admin_v1_api_proto_msgTypes[299].Exporter = func(v any, i int) any { + switch v := v.(*CreatePersonalVirtualFileResponse); i { case 0: return &v.state case 1: @@ -34028,8 +35355,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[287].Exporter = func(v any, i int) any { - switch v := v.(*EditAlertRequest); i { + file_rill_admin_v1_api_proto_msgTypes[300].Exporter = func(v any, i int) any { + switch v := v.(*EditPersonalVirtualFileRequest); i { case 0: return &v.state case 1: @@ -34040,8 +35367,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[288].Exporter = func(v any, i int) any { - switch v := v.(*EditAlertResponse); i { + file_rill_admin_v1_api_proto_msgTypes[301].Exporter = func(v any, i int) any { + switch v := v.(*EditPersonalVirtualFileResponse); i { case 0: return &v.state case 1: @@ -34052,8 +35379,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[289].Exporter = func(v any, i int) any { - switch v := v.(*UnsubscribeAlertRequest); i { + file_rill_admin_v1_api_proto_msgTypes[302].Exporter = func(v any, i int) any { + switch v := v.(*DeletePersonalVirtualFileRequest); i { case 0: return &v.state case 1: @@ -34064,8 +35391,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[290].Exporter = func(v any, i int) any { - switch v := v.(*UnsubscribeAlertResponse); i { + file_rill_admin_v1_api_proto_msgTypes[303].Exporter = func(v any, i int) any { + switch v := v.(*DeletePersonalVirtualFileResponse); i { case 0: return &v.state case 1: @@ -34076,8 +35403,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[291].Exporter = func(v any, i int) any { - switch v := v.(*DeleteAlertRequest); i { + file_rill_admin_v1_api_proto_msgTypes[304].Exporter = func(v any, i int) any { + switch v := v.(*CopyPersonalVirtualFileRequest); i { case 0: return &v.state case 1: @@ -34088,8 +35415,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[292].Exporter = func(v any, i int) any { - switch v := v.(*DeleteAlertResponse); i { + file_rill_admin_v1_api_proto_msgTypes[305].Exporter = func(v any, i int) any { + switch v := v.(*CopyPersonalVirtualFileResponse); i { case 0: return &v.state case 1: @@ -34100,8 +35427,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[293].Exporter = func(v any, i int) any { - switch v := v.(*GenerateAlertYAMLRequest); i { + file_rill_admin_v1_api_proto_msgTypes[306].Exporter = func(v any, i int) any { + switch v := v.(*GetPersonalVirtualFileRequest); i { case 0: return &v.state case 1: @@ -34112,8 +35439,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[294].Exporter = func(v any, i int) any { - switch v := v.(*GenerateAlertYAMLResponse); i { + file_rill_admin_v1_api_proto_msgTypes[307].Exporter = func(v any, i int) any { + switch v := v.(*GetPersonalVirtualFileResponse); i { case 0: return &v.state case 1: @@ -34124,8 +35451,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[295].Exporter = func(v any, i int) any { - switch v := v.(*GetAlertYAMLRequest); i { + file_rill_admin_v1_api_proto_msgTypes[308].Exporter = func(v any, i int) any { + switch v := v.(*ListPersonalVirtualFilesRequest); i { case 0: return &v.state case 1: @@ -34136,8 +35463,8 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[296].Exporter = func(v any, i int) any { - switch v := v.(*GetAlertYAMLResponse); i { + file_rill_admin_v1_api_proto_msgTypes[309].Exporter = func(v any, i int) any { + switch v := v.(*ListPersonalVirtualFilesResponse); i { case 0: return &v.state case 1: @@ -34148,7 +35475,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[297].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[310].Exporter = func(v any, i int) any { switch v := v.(*GetBillingSubscriptionRequest); i { case 0: return &v.state @@ -34160,7 +35487,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[298].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[311].Exporter = func(v any, i int) any { switch v := v.(*GetBillingSubscriptionResponse); i { case 0: return &v.state @@ -34172,7 +35499,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[299].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[312].Exporter = func(v any, i int) any { switch v := v.(*UpdateBillingSubscriptionRequest); i { case 0: return &v.state @@ -34184,7 +35511,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[300].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[313].Exporter = func(v any, i int) any { switch v := v.(*UpdateBillingSubscriptionResponse); i { case 0: return &v.state @@ -34196,7 +35523,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[301].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[314].Exporter = func(v any, i int) any { switch v := v.(*CancelBillingSubscriptionRequest); i { case 0: return &v.state @@ -34208,7 +35535,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[302].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[315].Exporter = func(v any, i int) any { switch v := v.(*CancelBillingSubscriptionResponse); i { case 0: return &v.state @@ -34220,7 +35547,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[303].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[316].Exporter = func(v any, i int) any { switch v := v.(*RenewBillingSubscriptionRequest); i { case 0: return &v.state @@ -34232,7 +35559,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[304].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[317].Exporter = func(v any, i int) any { switch v := v.(*RenewBillingSubscriptionResponse); i { case 0: return &v.state @@ -34244,7 +35571,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[305].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[318].Exporter = func(v any, i int) any { switch v := v.(*GetPaymentsPortalURLRequest); i { case 0: return &v.state @@ -34256,7 +35583,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[306].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[319].Exporter = func(v any, i int) any { switch v := v.(*GetPaymentsPortalURLResponse); i { case 0: return &v.state @@ -34268,7 +35595,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[307].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[320].Exporter = func(v any, i int) any { switch v := v.(*GetBillingCreditBalanceRequest); i { case 0: return &v.state @@ -34280,7 +35607,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[308].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[321].Exporter = func(v any, i int) any { switch v := v.(*GetBillingCreditBalanceResponse); i { case 0: return &v.state @@ -34292,7 +35619,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[309].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[322].Exporter = func(v any, i int) any { switch v := v.(*ListPublicBillingPlansRequest); i { case 0: return &v.state @@ -34304,7 +35631,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[310].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[323].Exporter = func(v any, i int) any { switch v := v.(*ListPublicBillingPlansResponse); i { case 0: return &v.state @@ -34316,7 +35643,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[311].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[324].Exporter = func(v any, i int) any { switch v := v.(*GetBillingProjectCredentialsRequest); i { case 0: return &v.state @@ -34328,7 +35655,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[312].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[325].Exporter = func(v any, i int) any { switch v := v.(*GetBillingProjectCredentialsResponse); i { case 0: return &v.state @@ -34340,7 +35667,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[313].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[326].Exporter = func(v any, i int) any { switch v := v.(*TelemetryRequest); i { case 0: return &v.state @@ -34352,7 +35679,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[314].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[327].Exporter = func(v any, i int) any { switch v := v.(*TelemetryResponse); i { case 0: return &v.state @@ -34364,7 +35691,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[315].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[328].Exporter = func(v any, i int) any { switch v := v.(*RequestProjectAccessRequest); i { case 0: return &v.state @@ -34376,7 +35703,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[316].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[329].Exporter = func(v any, i int) any { switch v := v.(*RequestProjectAccessResponse); i { case 0: return &v.state @@ -34388,7 +35715,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[317].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[330].Exporter = func(v any, i int) any { switch v := v.(*GetProjectAccessRequestRequest); i { case 0: return &v.state @@ -34400,7 +35727,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[318].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[331].Exporter = func(v any, i int) any { switch v := v.(*GetProjectAccessRequestResponse); i { case 0: return &v.state @@ -34412,7 +35739,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[319].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[332].Exporter = func(v any, i int) any { switch v := v.(*ApproveProjectAccessRequest); i { case 0: return &v.state @@ -34424,7 +35751,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[320].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[333].Exporter = func(v any, i int) any { switch v := v.(*ApproveProjectAccessResponse); i { case 0: return &v.state @@ -34436,7 +35763,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[321].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[334].Exporter = func(v any, i int) any { switch v := v.(*DenyProjectAccessRequest); i { case 0: return &v.state @@ -34448,7 +35775,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[322].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[335].Exporter = func(v any, i int) any { switch v := v.(*DenyProjectAccessResponse); i { case 0: return &v.state @@ -34460,7 +35787,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[323].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[336].Exporter = func(v any, i int) any { switch v := v.(*ListOrganizationBillingIssuesRequest); i { case 0: return &v.state @@ -34472,7 +35799,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[324].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[337].Exporter = func(v any, i int) any { switch v := v.(*ListOrganizationBillingIssuesResponse); i { case 0: return &v.state @@ -34484,7 +35811,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[325].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[338].Exporter = func(v any, i int) any { switch v := v.(*User); i { case 0: return &v.state @@ -34496,7 +35823,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[326].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[339].Exporter = func(v any, i int) any { switch v := v.(*Service); i { case 0: return &v.state @@ -34508,7 +35835,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[327].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[340].Exporter = func(v any, i int) any { switch v := v.(*OrganizationMemberService); i { case 0: return &v.state @@ -34520,7 +35847,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[328].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[341].Exporter = func(v any, i int) any { switch v := v.(*ProjectMemberService); i { case 0: return &v.state @@ -34532,7 +35859,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[329].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[342].Exporter = func(v any, i int) any { switch v := v.(*Organization); i { case 0: return &v.state @@ -34544,7 +35871,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[330].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[343].Exporter = func(v any, i int) any { switch v := v.(*Subscription); i { case 0: return &v.state @@ -34556,7 +35883,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[331].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[344].Exporter = func(v any, i int) any { switch v := v.(*UserQuotas); i { case 0: return &v.state @@ -34568,7 +35895,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[332].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[345].Exporter = func(v any, i int) any { switch v := v.(*OrganizationQuotas); i { case 0: return &v.state @@ -34580,7 +35907,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[333].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[346].Exporter = func(v any, i int) any { switch v := v.(*Project); i { case 0: return &v.state @@ -34592,7 +35919,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[334].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[347].Exporter = func(v any, i int) any { switch v := v.(*Deployment); i { case 0: return &v.state @@ -34604,7 +35931,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[335].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[348].Exporter = func(v any, i int) any { switch v := v.(*ProvisionerResource); i { case 0: return &v.state @@ -34616,7 +35943,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[336].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[349].Exporter = func(v any, i int) any { switch v := v.(*OrganizationPermissions); i { case 0: return &v.state @@ -34628,7 +35955,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[337].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[350].Exporter = func(v any, i int) any { switch v := v.(*ProjectPermissions); i { case 0: return &v.state @@ -34640,7 +35967,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[338].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[351].Exporter = func(v any, i int) any { switch v := v.(*OrganizationRole); i { case 0: return &v.state @@ -34652,7 +35979,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[339].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[352].Exporter = func(v any, i int) any { switch v := v.(*ProjectRole); i { case 0: return &v.state @@ -34664,7 +35991,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[340].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[353].Exporter = func(v any, i int) any { switch v := v.(*OrganizationMemberUser); i { case 0: return &v.state @@ -34676,7 +36003,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[341].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[354].Exporter = func(v any, i int) any { switch v := v.(*ProjectMemberUser); i { case 0: return &v.state @@ -34688,7 +36015,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[342].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[355].Exporter = func(v any, i int) any { switch v := v.(*UsergroupMemberUser); i { case 0: return &v.state @@ -34700,7 +36027,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[343].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[356].Exporter = func(v any, i int) any { switch v := v.(*OrganizationInvite); i { case 0: return &v.state @@ -34712,7 +36039,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[344].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[357].Exporter = func(v any, i int) any { switch v := v.(*ProjectInvite); i { case 0: return &v.state @@ -34724,7 +36051,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[345].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[358].Exporter = func(v any, i int) any { switch v := v.(*WhitelistedDomain); i { case 0: return &v.state @@ -34736,7 +36063,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[346].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[359].Exporter = func(v any, i int) any { switch v := v.(*Bookmark); i { case 0: return &v.state @@ -34748,7 +36075,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[347].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[360].Exporter = func(v any, i int) any { switch v := v.(*ServiceToken); i { case 0: return &v.state @@ -34760,7 +36087,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[348].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[361].Exporter = func(v any, i int) any { switch v := v.(*UserAuthToken); i { case 0: return &v.state @@ -34772,7 +36099,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[349].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[362].Exporter = func(v any, i int) any { switch v := v.(*MagicAuthToken); i { case 0: return &v.state @@ -34784,7 +36111,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[350].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[363].Exporter = func(v any, i int) any { switch v := v.(*VirtualFile); i { case 0: return &v.state @@ -34796,7 +36123,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[351].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[364].Exporter = func(v any, i int) any { switch v := v.(*ReportOptions); i { case 0: return &v.state @@ -34808,7 +36135,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[352].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[365].Exporter = func(v any, i int) any { switch v := v.(*AlertOptions); i { case 0: return &v.state @@ -34820,7 +36147,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[353].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[366].Exporter = func(v any, i int) any { switch v := v.(*BillingPlan); i { case 0: return &v.state @@ -34832,7 +36159,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[354].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[367].Exporter = func(v any, i int) any { switch v := v.(*Quotas); i { case 0: return &v.state @@ -34844,7 +36171,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[355].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[368].Exporter = func(v any, i int) any { switch v := v.(*Usergroup); i { case 0: return &v.state @@ -34856,7 +36183,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[356].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[369].Exporter = func(v any, i int) any { switch v := v.(*MemberUsergroup); i { case 0: return &v.state @@ -34868,7 +36195,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[357].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[370].Exporter = func(v any, i int) any { switch v := v.(*BillingIssue); i { case 0: return &v.state @@ -34880,7 +36207,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[358].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[371].Exporter = func(v any, i int) any { switch v := v.(*BillingIssueMetadata); i { case 0: return &v.state @@ -34892,7 +36219,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[359].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[372].Exporter = func(v any, i int) any { switch v := v.(*BillingIssueMetadataOnTrial); i { case 0: return &v.state @@ -34904,7 +36231,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[360].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[373].Exporter = func(v any, i int) any { switch v := v.(*BillingIssueMetadataTrialEnded); i { case 0: return &v.state @@ -34916,7 +36243,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[361].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[374].Exporter = func(v any, i int) any { switch v := v.(*BillingIssueMetadataNoPaymentMethod); i { case 0: return &v.state @@ -34928,7 +36255,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[362].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[375].Exporter = func(v any, i int) any { switch v := v.(*BillingIssueMetadataNoBillableAddress); i { case 0: return &v.state @@ -34940,7 +36267,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[363].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[376].Exporter = func(v any, i int) any { switch v := v.(*BillingIssueMetadataPaymentFailed); i { case 0: return &v.state @@ -34952,7 +36279,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[364].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[377].Exporter = func(v any, i int) any { switch v := v.(*BillingIssueMetadataPaymentFailedMeta); i { case 0: return &v.state @@ -34964,7 +36291,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[365].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[378].Exporter = func(v any, i int) any { switch v := v.(*BillingIssueMetadataSubscriptionCancelled); i { case 0: return &v.state @@ -34976,7 +36303,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[366].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[379].Exporter = func(v any, i int) any { switch v := v.(*BillingIssueMetadataNeverSubscribed); i { case 0: return &v.state @@ -34988,7 +36315,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[367].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[380].Exporter = func(v any, i int) any { switch v := v.(*BillingIssueMetadataOnCreditTrial); i { case 0: return &v.state @@ -35000,7 +36327,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[368].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[381].Exporter = func(v any, i int) any { switch v := v.(*BillingIssueMetadataTrialCreditsDepleted); i { case 0: return &v.state @@ -35012,7 +36339,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[381].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[394].Exporter = func(v any, i int) any { switch v := v.(*ListGithubUserReposResponse_Repo); i { case 0: return &v.state @@ -35024,7 +36351,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[382].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[395].Exporter = func(v any, i int) any { switch v := v.(*GetReportMetaResponse_DeliveryMeta); i { case 0: return &v.state @@ -35036,7 +36363,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[385].Exporter = func(v any, i int) any { + file_rill_admin_v1_api_proto_msgTypes[398].Exporter = func(v any, i int) any { switch v := v.(*GetAlertMetaResponse_URLs); i { case 0: return &v.state @@ -35096,8 +36423,8 @@ func file_rill_admin_v1_api_proto_init() { (*GetAlertMetaRequest_QueryForUserId)(nil), (*GetAlertMetaRequest_QueryForUserEmail)(nil), } - file_rill_admin_v1_api_proto_msgTypes[329].OneofWrappers = []any{} - file_rill_admin_v1_api_proto_msgTypes[358].OneofWrappers = []any{ + file_rill_admin_v1_api_proto_msgTypes[342].OneofWrappers = []any{} + file_rill_admin_v1_api_proto_msgTypes[371].OneofWrappers = []any{ (*BillingIssueMetadata_OnTrial)(nil), (*BillingIssueMetadata_TrialEnded)(nil), (*BillingIssueMetadata_NoPaymentMethod)(nil), @@ -35113,8 +36440,8 @@ func file_rill_admin_v1_api_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_rill_admin_v1_api_proto_rawDesc, - NumEnums: 6, - NumMessages: 389, + NumEnums: 8, + NumMessages: 402, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/gen/rill/admin/v1/api.pb.gw.go b/proto/gen/rill/admin/v1/api.pb.gw.go index b7e36443de03..541bc049ed12 100644 --- a/proto/gen/rill/admin/v1/api.pb.gw.go +++ b/proto/gen/rill/admin/v1/api.pb.gw.go @@ -9527,6 +9527,618 @@ func local_request_AdminService_GetAlertYAML_0(ctx context.Context, marshaler ru } +func request_AdminService_CreatePersonalVirtualFile_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq CreatePersonalVirtualFileRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["org"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + } + + protoReq.Org, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + } + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + msg, err := client.CreatePersonalVirtualFile(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AdminService_CreatePersonalVirtualFile_0(ctx context.Context, marshaler runtime.Marshaler, server AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq CreatePersonalVirtualFileRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["org"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + } + + protoReq.Org, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + } + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + msg, err := server.CreatePersonalVirtualFile(ctx, &protoReq) + return msg, metadata, err + +} + +func request_AdminService_EditPersonalVirtualFile_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq EditPersonalVirtualFileRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["org"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + } + + protoReq.Org, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + } + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + val, ok = pathParams["type"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "type") + } + + e, err = runtime.Enum(val, PersonalVirtualFileType_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "type", err) + } + + protoReq.Type = PersonalVirtualFileType(e) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := client.EditPersonalVirtualFile(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AdminService_EditPersonalVirtualFile_0(ctx context.Context, marshaler runtime.Marshaler, server AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq EditPersonalVirtualFileRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["org"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + } + + protoReq.Org, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + } + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + val, ok = pathParams["type"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "type") + } + + e, err = runtime.Enum(val, PersonalVirtualFileType_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "type", err) + } + + protoReq.Type = PersonalVirtualFileType(e) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := server.EditPersonalVirtualFile(ctx, &protoReq) + return msg, metadata, err + +} + +func request_AdminService_DeletePersonalVirtualFile_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeletePersonalVirtualFileRequest + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["org"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + } + + protoReq.Org, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + } + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + val, ok = pathParams["type"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "type") + } + + e, err = runtime.Enum(val, PersonalVirtualFileType_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "type", err) + } + + protoReq.Type = PersonalVirtualFileType(e) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := client.DeletePersonalVirtualFile(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AdminService_DeletePersonalVirtualFile_0(ctx context.Context, marshaler runtime.Marshaler, server AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeletePersonalVirtualFileRequest + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["org"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + } + + protoReq.Org, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + } + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + val, ok = pathParams["type"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "type") + } + + e, err = runtime.Enum(val, PersonalVirtualFileType_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "type", err) + } + + protoReq.Type = PersonalVirtualFileType(e) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := server.DeletePersonalVirtualFile(ctx, &protoReq) + return msg, metadata, err + +} + +func request_AdminService_CopyPersonalVirtualFile_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq CopyPersonalVirtualFileRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["org"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + } + + protoReq.Org, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + } + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + msg, err := client.CopyPersonalVirtualFile(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AdminService_CopyPersonalVirtualFile_0(ctx context.Context, marshaler runtime.Marshaler, server AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq CopyPersonalVirtualFileRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["org"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + } + + protoReq.Org, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + } + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + msg, err := server.CopyPersonalVirtualFile(ctx, &protoReq) + return msg, metadata, err + +} + +func request_AdminService_GetPersonalVirtualFile_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetPersonalVirtualFileRequest + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["org"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + } + + protoReq.Org, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + } + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + val, ok = pathParams["type"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "type") + } + + e, err = runtime.Enum(val, PersonalVirtualFileType_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "type", err) + } + + protoReq.Type = PersonalVirtualFileType(e) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := client.GetPersonalVirtualFile(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AdminService_GetPersonalVirtualFile_0(ctx context.Context, marshaler runtime.Marshaler, server AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetPersonalVirtualFileRequest + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["org"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + } + + protoReq.Org, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + } + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + val, ok = pathParams["type"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "type") + } + + e, err = runtime.Enum(val, PersonalVirtualFileType_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "type", err) + } + + protoReq.Type = PersonalVirtualFileType(e) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := server.GetPersonalVirtualFile(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_AdminService_ListPersonalVirtualFiles_0 = &utilities.DoubleArray{Encoding: map[string]int{"org": 0, "project": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}} +) + +func request_AdminService_ListPersonalVirtualFiles_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListPersonalVirtualFilesRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["org"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + } + + protoReq.Org, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + } + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListPersonalVirtualFiles_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListPersonalVirtualFiles(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AdminService_ListPersonalVirtualFiles_0(ctx context.Context, marshaler runtime.Marshaler, server AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListPersonalVirtualFilesRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["org"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "org") + } + + protoReq.Org, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "org", err) + } + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListPersonalVirtualFiles_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListPersonalVirtualFiles(ctx, &protoReq) + return msg, metadata, err + +} + var ( filter_AdminService_GetBillingSubscription_0 = &utilities.DoubleArray{Encoding: map[string]int{"org": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) @@ -13975,6 +14587,156 @@ func RegisterAdminServiceHandlerServer(ctx context.Context, mux *runtime.ServeMu }) + mux.Handle("POST", pattern_AdminService_CreatePersonalVirtualFile_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.admin.v1.AdminService/CreatePersonalVirtualFile", runtime.WithHTTPPathPattern("/v1/orgs/{org}/projects/{project}/personal-virtual-files")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_CreatePersonalVirtualFile_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_CreatePersonalVirtualFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("PUT", pattern_AdminService_EditPersonalVirtualFile_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.admin.v1.AdminService/EditPersonalVirtualFile", runtime.WithHTTPPathPattern("/v1/orgs/{org}/projects/{project}/personal-virtual-files/{type}/{name}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_EditPersonalVirtualFile_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_EditPersonalVirtualFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("DELETE", pattern_AdminService_DeletePersonalVirtualFile_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.admin.v1.AdminService/DeletePersonalVirtualFile", runtime.WithHTTPPathPattern("/v1/orgs/{org}/projects/{project}/personal-virtual-files/{type}/{name}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_DeletePersonalVirtualFile_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_DeletePersonalVirtualFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_AdminService_CopyPersonalVirtualFile_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.admin.v1.AdminService/CopyPersonalVirtualFile", runtime.WithHTTPPathPattern("/v1/orgs/{org}/projects/{project}/personal-virtual-files/-/copy")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_CopyPersonalVirtualFile_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_CopyPersonalVirtualFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AdminService_GetPersonalVirtualFile_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.admin.v1.AdminService/GetPersonalVirtualFile", runtime.WithHTTPPathPattern("/v1/orgs/{org}/projects/{project}/personal-virtual-files/{type}/{name}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_GetPersonalVirtualFile_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_GetPersonalVirtualFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AdminService_ListPersonalVirtualFiles_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.admin.v1.AdminService/ListPersonalVirtualFiles", runtime.WithHTTPPathPattern("/v1/orgs/{org}/projects/{project}/personal-virtual-files")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_ListPersonalVirtualFiles_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_ListPersonalVirtualFiles_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_AdminService_GetBillingSubscription_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -17575,6 +18337,138 @@ func RegisterAdminServiceHandlerClient(ctx context.Context, mux *runtime.ServeMu }) + mux.Handle("POST", pattern_AdminService_CreatePersonalVirtualFile_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.admin.v1.AdminService/CreatePersonalVirtualFile", runtime.WithHTTPPathPattern("/v1/orgs/{org}/projects/{project}/personal-virtual-files")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AdminService_CreatePersonalVirtualFile_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_CreatePersonalVirtualFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("PUT", pattern_AdminService_EditPersonalVirtualFile_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.admin.v1.AdminService/EditPersonalVirtualFile", runtime.WithHTTPPathPattern("/v1/orgs/{org}/projects/{project}/personal-virtual-files/{type}/{name}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AdminService_EditPersonalVirtualFile_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_EditPersonalVirtualFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("DELETE", pattern_AdminService_DeletePersonalVirtualFile_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.admin.v1.AdminService/DeletePersonalVirtualFile", runtime.WithHTTPPathPattern("/v1/orgs/{org}/projects/{project}/personal-virtual-files/{type}/{name}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AdminService_DeletePersonalVirtualFile_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_DeletePersonalVirtualFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_AdminService_CopyPersonalVirtualFile_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.admin.v1.AdminService/CopyPersonalVirtualFile", runtime.WithHTTPPathPattern("/v1/orgs/{org}/projects/{project}/personal-virtual-files/-/copy")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AdminService_CopyPersonalVirtualFile_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_CopyPersonalVirtualFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AdminService_GetPersonalVirtualFile_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.admin.v1.AdminService/GetPersonalVirtualFile", runtime.WithHTTPPathPattern("/v1/orgs/{org}/projects/{project}/personal-virtual-files/{type}/{name}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AdminService_GetPersonalVirtualFile_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_GetPersonalVirtualFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AdminService_ListPersonalVirtualFiles_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.admin.v1.AdminService/ListPersonalVirtualFiles", runtime.WithHTTPPathPattern("/v1/orgs/{org}/projects/{project}/personal-virtual-files")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AdminService_ListPersonalVirtualFiles_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_ListPersonalVirtualFiles_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_AdminService_GetBillingSubscription_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -18159,6 +19053,18 @@ var ( pattern_AdminService_GetAlertYAML_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7}, []string{"v1", "orgs", "org", "projects", "project", "alerts", "name", "yaml"}, "")) + pattern_AdminService_CreatePersonalVirtualFile_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"v1", "orgs", "org", "projects", "project", "personal-virtual-files"}, "")) + + pattern_AdminService_EditPersonalVirtualFile_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"v1", "orgs", "org", "projects", "project", "personal-virtual-files", "type", "name"}, "")) + + pattern_AdminService_DeletePersonalVirtualFile_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"v1", "orgs", "org", "projects", "project", "personal-virtual-files", "type", "name"}, "")) + + pattern_AdminService_CopyPersonalVirtualFile_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6, 2, 7}, []string{"v1", "orgs", "org", "projects", "project", "personal-virtual-files", "-", "copy"}, "")) + + pattern_AdminService_GetPersonalVirtualFile_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7}, []string{"v1", "orgs", "org", "projects", "project", "personal-virtual-files", "type", "name"}, "")) + + pattern_AdminService_ListPersonalVirtualFiles_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"v1", "orgs", "org", "projects", "project", "personal-virtual-files"}, "")) + pattern_AdminService_GetBillingSubscription_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v1", "orgs", "org", "billing", "subscriptions"}, "")) pattern_AdminService_UpdateBillingSubscription_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v1", "orgs", "org", "billing", "subscriptions"}, "")) @@ -18481,6 +19387,18 @@ var ( forward_AdminService_GetAlertYAML_0 = runtime.ForwardResponseMessage + forward_AdminService_CreatePersonalVirtualFile_0 = runtime.ForwardResponseMessage + + forward_AdminService_EditPersonalVirtualFile_0 = runtime.ForwardResponseMessage + + forward_AdminService_DeletePersonalVirtualFile_0 = runtime.ForwardResponseMessage + + forward_AdminService_CopyPersonalVirtualFile_0 = runtime.ForwardResponseMessage + + forward_AdminService_GetPersonalVirtualFile_0 = runtime.ForwardResponseMessage + + forward_AdminService_ListPersonalVirtualFiles_0 = runtime.ForwardResponseMessage + forward_AdminService_GetBillingSubscription_0 = runtime.ForwardResponseMessage forward_AdminService_UpdateBillingSubscription_0 = runtime.ForwardResponseMessage diff --git a/proto/gen/rill/admin/v1/api.pb.validate.go b/proto/gen/rill/admin/v1/api.pb.validate.go index 4726be2279b5..7812619b9b8f 100644 --- a/proto/gen/rill/admin/v1/api.pb.validate.go +++ b/proto/gen/rill/admin/v1/api.pb.validate.go @@ -38823,6 +38823,1711 @@ var _ interface { ErrorName() string } = GetAlertYAMLResponseValidationError{} +// Validate checks the field values on PersonalVirtualFileSummary with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *PersonalVirtualFileSummary) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on PersonalVirtualFileSummary with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// PersonalVirtualFileSummaryMultiError, or nil if none found. +func (m *PersonalVirtualFileSummary) ValidateAll() error { + return m.validate(true) +} + +func (m *PersonalVirtualFileSummary) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Name + + // no validation rules for DisplayName + + // no validation rules for Type + + if all { + switch v := interface{}(m.GetUpdatedOn()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, PersonalVirtualFileSummaryValidationError{ + field: "UpdatedOn", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, PersonalVirtualFileSummaryValidationError{ + field: "UpdatedOn", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUpdatedOn()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return PersonalVirtualFileSummaryValidationError{ + field: "UpdatedOn", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return PersonalVirtualFileSummaryMultiError(errors) + } + + return nil +} + +// PersonalVirtualFileSummaryMultiError is an error wrapping multiple +// validation errors returned by PersonalVirtualFileSummary.ValidateAll() if +// the designated constraints aren't met. +type PersonalVirtualFileSummaryMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m PersonalVirtualFileSummaryMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m PersonalVirtualFileSummaryMultiError) AllErrors() []error { return m } + +// PersonalVirtualFileSummaryValidationError is the validation error returned +// by PersonalVirtualFileSummary.Validate if the designated constraints aren't met. +type PersonalVirtualFileSummaryValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e PersonalVirtualFileSummaryValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e PersonalVirtualFileSummaryValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e PersonalVirtualFileSummaryValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e PersonalVirtualFileSummaryValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e PersonalVirtualFileSummaryValidationError) ErrorName() string { + return "PersonalVirtualFileSummaryValidationError" +} + +// Error satisfies the builtin error interface +func (e PersonalVirtualFileSummaryValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sPersonalVirtualFileSummary.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = PersonalVirtualFileSummaryValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = PersonalVirtualFileSummaryValidationError{} + +// Validate checks the field values on CreatePersonalVirtualFileRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the first error encountered is returned, or nil if there are +// no violations. +func (m *CreatePersonalVirtualFileRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreatePersonalVirtualFileRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// CreatePersonalVirtualFileRequestMultiError, or nil if none found. +func (m *CreatePersonalVirtualFileRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreatePersonalVirtualFileRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Org + + // no validation rules for Project + + if _, ok := _CreatePersonalVirtualFileRequest_Type_NotInLookup[m.GetType()]; ok { + err := CreatePersonalVirtualFileRequestValidationError{ + field: "Type", + reason: "value must not be in list [PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED]", + } + if !all { + return err + } + errors = append(errors, err) + } + + if _, ok := PersonalVirtualFileType_name[int32(m.GetType())]; !ok { + err := CreatePersonalVirtualFileRequestValidationError{ + field: "Type", + reason: "value must be one of the defined enum values", + } + if !all { + return err + } + errors = append(errors, err) + } + + if utf8.RuneCountInString(m.GetDisplayName()) < 1 { + err := CreatePersonalVirtualFileRequestValidationError{ + field: "DisplayName", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + // no validation rules for Yaml + + if len(errors) > 0 { + return CreatePersonalVirtualFileRequestMultiError(errors) + } + + return nil +} + +// CreatePersonalVirtualFileRequestMultiError is an error wrapping multiple +// validation errors returned by +// CreatePersonalVirtualFileRequest.ValidateAll() if the designated +// constraints aren't met. +type CreatePersonalVirtualFileRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreatePersonalVirtualFileRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreatePersonalVirtualFileRequestMultiError) AllErrors() []error { return m } + +// CreatePersonalVirtualFileRequestValidationError is the validation error +// returned by CreatePersonalVirtualFileRequest.Validate if the designated +// constraints aren't met. +type CreatePersonalVirtualFileRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CreatePersonalVirtualFileRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CreatePersonalVirtualFileRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CreatePersonalVirtualFileRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CreatePersonalVirtualFileRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CreatePersonalVirtualFileRequestValidationError) ErrorName() string { + return "CreatePersonalVirtualFileRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e CreatePersonalVirtualFileRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCreatePersonalVirtualFileRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CreatePersonalVirtualFileRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CreatePersonalVirtualFileRequestValidationError{} + +var _CreatePersonalVirtualFileRequest_Type_NotInLookup = map[PersonalVirtualFileType]struct{}{ + 0: {}, +} + +// Validate checks the field values on CreatePersonalVirtualFileResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the first error encountered is returned, or nil if there are +// no violations. +func (m *CreatePersonalVirtualFileResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreatePersonalVirtualFileResponse +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// CreatePersonalVirtualFileResponseMultiError, or nil if none found. +func (m *CreatePersonalVirtualFileResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreatePersonalVirtualFileResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Name + + if len(errors) > 0 { + return CreatePersonalVirtualFileResponseMultiError(errors) + } + + return nil +} + +// CreatePersonalVirtualFileResponseMultiError is an error wrapping multiple +// validation errors returned by +// CreatePersonalVirtualFileResponse.ValidateAll() if the designated +// constraints aren't met. +type CreatePersonalVirtualFileResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreatePersonalVirtualFileResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreatePersonalVirtualFileResponseMultiError) AllErrors() []error { return m } + +// CreatePersonalVirtualFileResponseValidationError is the validation error +// returned by CreatePersonalVirtualFileResponse.Validate if the designated +// constraints aren't met. +type CreatePersonalVirtualFileResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CreatePersonalVirtualFileResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CreatePersonalVirtualFileResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CreatePersonalVirtualFileResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CreatePersonalVirtualFileResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CreatePersonalVirtualFileResponseValidationError) ErrorName() string { + return "CreatePersonalVirtualFileResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e CreatePersonalVirtualFileResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCreatePersonalVirtualFileResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CreatePersonalVirtualFileResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CreatePersonalVirtualFileResponseValidationError{} + +// Validate checks the field values on EditPersonalVirtualFileRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *EditPersonalVirtualFileRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on EditPersonalVirtualFileRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// EditPersonalVirtualFileRequestMultiError, or nil if none found. +func (m *EditPersonalVirtualFileRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *EditPersonalVirtualFileRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Org + + // no validation rules for Project + + if _, ok := _EditPersonalVirtualFileRequest_Type_NotInLookup[m.GetType()]; ok { + err := EditPersonalVirtualFileRequestValidationError{ + field: "Type", + reason: "value must not be in list [PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED]", + } + if !all { + return err + } + errors = append(errors, err) + } + + if _, ok := PersonalVirtualFileType_name[int32(m.GetType())]; !ok { + err := EditPersonalVirtualFileRequestValidationError{ + field: "Type", + reason: "value must be one of the defined enum values", + } + if !all { + return err + } + errors = append(errors, err) + } + + // no validation rules for Name + + if utf8.RuneCountInString(m.GetYaml()) < 1 { + err := EditPersonalVirtualFileRequestValidationError{ + field: "Yaml", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return EditPersonalVirtualFileRequestMultiError(errors) + } + + return nil +} + +// EditPersonalVirtualFileRequestMultiError is an error wrapping multiple +// validation errors returned by EditPersonalVirtualFileRequest.ValidateAll() +// if the designated constraints aren't met. +type EditPersonalVirtualFileRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m EditPersonalVirtualFileRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m EditPersonalVirtualFileRequestMultiError) AllErrors() []error { return m } + +// EditPersonalVirtualFileRequestValidationError is the validation error +// returned by EditPersonalVirtualFileRequest.Validate if the designated +// constraints aren't met. +type EditPersonalVirtualFileRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e EditPersonalVirtualFileRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e EditPersonalVirtualFileRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e EditPersonalVirtualFileRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e EditPersonalVirtualFileRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e EditPersonalVirtualFileRequestValidationError) ErrorName() string { + return "EditPersonalVirtualFileRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e EditPersonalVirtualFileRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sEditPersonalVirtualFileRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = EditPersonalVirtualFileRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = EditPersonalVirtualFileRequestValidationError{} + +var _EditPersonalVirtualFileRequest_Type_NotInLookup = map[PersonalVirtualFileType]struct{}{ + 0: {}, +} + +// Validate checks the field values on EditPersonalVirtualFileResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *EditPersonalVirtualFileResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on EditPersonalVirtualFileResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// EditPersonalVirtualFileResponseMultiError, or nil if none found. +func (m *EditPersonalVirtualFileResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *EditPersonalVirtualFileResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if len(errors) > 0 { + return EditPersonalVirtualFileResponseMultiError(errors) + } + + return nil +} + +// EditPersonalVirtualFileResponseMultiError is an error wrapping multiple +// validation errors returned by EditPersonalVirtualFileResponse.ValidateAll() +// if the designated constraints aren't met. +type EditPersonalVirtualFileResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m EditPersonalVirtualFileResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m EditPersonalVirtualFileResponseMultiError) AllErrors() []error { return m } + +// EditPersonalVirtualFileResponseValidationError is the validation error +// returned by EditPersonalVirtualFileResponse.Validate if the designated +// constraints aren't met. +type EditPersonalVirtualFileResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e EditPersonalVirtualFileResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e EditPersonalVirtualFileResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e EditPersonalVirtualFileResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e EditPersonalVirtualFileResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e EditPersonalVirtualFileResponseValidationError) ErrorName() string { + return "EditPersonalVirtualFileResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e EditPersonalVirtualFileResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sEditPersonalVirtualFileResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = EditPersonalVirtualFileResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = EditPersonalVirtualFileResponseValidationError{} + +// Validate checks the field values on DeletePersonalVirtualFileRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the first error encountered is returned, or nil if there are +// no violations. +func (m *DeletePersonalVirtualFileRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeletePersonalVirtualFileRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// DeletePersonalVirtualFileRequestMultiError, or nil if none found. +func (m *DeletePersonalVirtualFileRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeletePersonalVirtualFileRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Org + + // no validation rules for Project + + if _, ok := _DeletePersonalVirtualFileRequest_Type_NotInLookup[m.GetType()]; ok { + err := DeletePersonalVirtualFileRequestValidationError{ + field: "Type", + reason: "value must not be in list [PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED]", + } + if !all { + return err + } + errors = append(errors, err) + } + + if _, ok := PersonalVirtualFileType_name[int32(m.GetType())]; !ok { + err := DeletePersonalVirtualFileRequestValidationError{ + field: "Type", + reason: "value must be one of the defined enum values", + } + if !all { + return err + } + errors = append(errors, err) + } + + // no validation rules for Name + + if len(errors) > 0 { + return DeletePersonalVirtualFileRequestMultiError(errors) + } + + return nil +} + +// DeletePersonalVirtualFileRequestMultiError is an error wrapping multiple +// validation errors returned by +// DeletePersonalVirtualFileRequest.ValidateAll() if the designated +// constraints aren't met. +type DeletePersonalVirtualFileRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeletePersonalVirtualFileRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeletePersonalVirtualFileRequestMultiError) AllErrors() []error { return m } + +// DeletePersonalVirtualFileRequestValidationError is the validation error +// returned by DeletePersonalVirtualFileRequest.Validate if the designated +// constraints aren't met. +type DeletePersonalVirtualFileRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DeletePersonalVirtualFileRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DeletePersonalVirtualFileRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DeletePersonalVirtualFileRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DeletePersonalVirtualFileRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DeletePersonalVirtualFileRequestValidationError) ErrorName() string { + return "DeletePersonalVirtualFileRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e DeletePersonalVirtualFileRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDeletePersonalVirtualFileRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DeletePersonalVirtualFileRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DeletePersonalVirtualFileRequestValidationError{} + +var _DeletePersonalVirtualFileRequest_Type_NotInLookup = map[PersonalVirtualFileType]struct{}{ + 0: {}, +} + +// Validate checks the field values on DeletePersonalVirtualFileResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the first error encountered is returned, or nil if there are +// no violations. +func (m *DeletePersonalVirtualFileResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeletePersonalVirtualFileResponse +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// DeletePersonalVirtualFileResponseMultiError, or nil if none found. +func (m *DeletePersonalVirtualFileResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeletePersonalVirtualFileResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if len(errors) > 0 { + return DeletePersonalVirtualFileResponseMultiError(errors) + } + + return nil +} + +// DeletePersonalVirtualFileResponseMultiError is an error wrapping multiple +// validation errors returned by +// DeletePersonalVirtualFileResponse.ValidateAll() if the designated +// constraints aren't met. +type DeletePersonalVirtualFileResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeletePersonalVirtualFileResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeletePersonalVirtualFileResponseMultiError) AllErrors() []error { return m } + +// DeletePersonalVirtualFileResponseValidationError is the validation error +// returned by DeletePersonalVirtualFileResponse.Validate if the designated +// constraints aren't met. +type DeletePersonalVirtualFileResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DeletePersonalVirtualFileResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DeletePersonalVirtualFileResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DeletePersonalVirtualFileResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DeletePersonalVirtualFileResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DeletePersonalVirtualFileResponseValidationError) ErrorName() string { + return "DeletePersonalVirtualFileResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e DeletePersonalVirtualFileResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDeletePersonalVirtualFileResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DeletePersonalVirtualFileResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DeletePersonalVirtualFileResponseValidationError{} + +// Validate checks the field values on CopyPersonalVirtualFileRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *CopyPersonalVirtualFileRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CopyPersonalVirtualFileRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// CopyPersonalVirtualFileRequestMultiError, or nil if none found. +func (m *CopyPersonalVirtualFileRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CopyPersonalVirtualFileRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Org + + // no validation rules for Project + + if _, ok := _CopyPersonalVirtualFileRequest_Type_NotInLookup[m.GetType()]; ok { + err := CopyPersonalVirtualFileRequestValidationError{ + field: "Type", + reason: "value must not be in list [PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED]", + } + if !all { + return err + } + errors = append(errors, err) + } + + if _, ok := PersonalVirtualFileType_name[int32(m.GetType())]; !ok { + err := CopyPersonalVirtualFileRequestValidationError{ + field: "Type", + reason: "value must be one of the defined enum values", + } + if !all { + return err + } + errors = append(errors, err) + } + + if _, ok := _CopyPersonalVirtualFileRequest_SourceKind_NotInLookup[m.GetSourceKind()]; ok { + err := CopyPersonalVirtualFileRequestValidationError{ + field: "SourceKind", + reason: "value must not be in list [PERSONAL_VIRTUAL_FILE_SOURCE_KIND_UNSPECIFIED]", + } + if !all { + return err + } + errors = append(errors, err) + } + + if _, ok := PersonalVirtualFileSourceKind_name[int32(m.GetSourceKind())]; !ok { + err := CopyPersonalVirtualFileRequestValidationError{ + field: "SourceKind", + reason: "value must be one of the defined enum values", + } + if !all { + return err + } + errors = append(errors, err) + } + + if utf8.RuneCountInString(m.GetSourceName()) < 1 { + err := CopyPersonalVirtualFileRequestValidationError{ + field: "SourceName", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + // no validation rules for DisplayName + + if len(errors) > 0 { + return CopyPersonalVirtualFileRequestMultiError(errors) + } + + return nil +} + +// CopyPersonalVirtualFileRequestMultiError is an error wrapping multiple +// validation errors returned by CopyPersonalVirtualFileRequest.ValidateAll() +// if the designated constraints aren't met. +type CopyPersonalVirtualFileRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CopyPersonalVirtualFileRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CopyPersonalVirtualFileRequestMultiError) AllErrors() []error { return m } + +// CopyPersonalVirtualFileRequestValidationError is the validation error +// returned by CopyPersonalVirtualFileRequest.Validate if the designated +// constraints aren't met. +type CopyPersonalVirtualFileRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CopyPersonalVirtualFileRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CopyPersonalVirtualFileRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CopyPersonalVirtualFileRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CopyPersonalVirtualFileRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CopyPersonalVirtualFileRequestValidationError) ErrorName() string { + return "CopyPersonalVirtualFileRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e CopyPersonalVirtualFileRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCopyPersonalVirtualFileRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CopyPersonalVirtualFileRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CopyPersonalVirtualFileRequestValidationError{} + +var _CopyPersonalVirtualFileRequest_Type_NotInLookup = map[PersonalVirtualFileType]struct{}{ + 0: {}, +} + +var _CopyPersonalVirtualFileRequest_SourceKind_NotInLookup = map[PersonalVirtualFileSourceKind]struct{}{ + 0: {}, +} + +// Validate checks the field values on CopyPersonalVirtualFileResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *CopyPersonalVirtualFileResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CopyPersonalVirtualFileResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// CopyPersonalVirtualFileResponseMultiError, or nil if none found. +func (m *CopyPersonalVirtualFileResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CopyPersonalVirtualFileResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Name + + if len(errors) > 0 { + return CopyPersonalVirtualFileResponseMultiError(errors) + } + + return nil +} + +// CopyPersonalVirtualFileResponseMultiError is an error wrapping multiple +// validation errors returned by CopyPersonalVirtualFileResponse.ValidateAll() +// if the designated constraints aren't met. +type CopyPersonalVirtualFileResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CopyPersonalVirtualFileResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CopyPersonalVirtualFileResponseMultiError) AllErrors() []error { return m } + +// CopyPersonalVirtualFileResponseValidationError is the validation error +// returned by CopyPersonalVirtualFileResponse.Validate if the designated +// constraints aren't met. +type CopyPersonalVirtualFileResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CopyPersonalVirtualFileResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CopyPersonalVirtualFileResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CopyPersonalVirtualFileResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CopyPersonalVirtualFileResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CopyPersonalVirtualFileResponseValidationError) ErrorName() string { + return "CopyPersonalVirtualFileResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e CopyPersonalVirtualFileResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCopyPersonalVirtualFileResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CopyPersonalVirtualFileResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CopyPersonalVirtualFileResponseValidationError{} + +// Validate checks the field values on GetPersonalVirtualFileRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *GetPersonalVirtualFileRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetPersonalVirtualFileRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetPersonalVirtualFileRequestMultiError, or nil if none found. +func (m *GetPersonalVirtualFileRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetPersonalVirtualFileRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Org + + // no validation rules for Project + + if _, ok := _GetPersonalVirtualFileRequest_Type_NotInLookup[m.GetType()]; ok { + err := GetPersonalVirtualFileRequestValidationError{ + field: "Type", + reason: "value must not be in list [PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED]", + } + if !all { + return err + } + errors = append(errors, err) + } + + if _, ok := PersonalVirtualFileType_name[int32(m.GetType())]; !ok { + err := GetPersonalVirtualFileRequestValidationError{ + field: "Type", + reason: "value must be one of the defined enum values", + } + if !all { + return err + } + errors = append(errors, err) + } + + // no validation rules for Name + + if len(errors) > 0 { + return GetPersonalVirtualFileRequestMultiError(errors) + } + + return nil +} + +// GetPersonalVirtualFileRequestMultiError is an error wrapping multiple +// validation errors returned by GetPersonalVirtualFileRequest.ValidateAll() +// if the designated constraints aren't met. +type GetPersonalVirtualFileRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetPersonalVirtualFileRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetPersonalVirtualFileRequestMultiError) AllErrors() []error { return m } + +// GetPersonalVirtualFileRequestValidationError is the validation error +// returned by GetPersonalVirtualFileRequest.Validate if the designated +// constraints aren't met. +type GetPersonalVirtualFileRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e GetPersonalVirtualFileRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e GetPersonalVirtualFileRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e GetPersonalVirtualFileRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e GetPersonalVirtualFileRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e GetPersonalVirtualFileRequestValidationError) ErrorName() string { + return "GetPersonalVirtualFileRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e GetPersonalVirtualFileRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sGetPersonalVirtualFileRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = GetPersonalVirtualFileRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = GetPersonalVirtualFileRequestValidationError{} + +var _GetPersonalVirtualFileRequest_Type_NotInLookup = map[PersonalVirtualFileType]struct{}{ + 0: {}, +} + +// Validate checks the field values on GetPersonalVirtualFileResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *GetPersonalVirtualFileResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetPersonalVirtualFileResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetPersonalVirtualFileResponseMultiError, or nil if none found. +func (m *GetPersonalVirtualFileResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetPersonalVirtualFileResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Name + + // no validation rules for DisplayName + + // no validation rules for Yaml + + if all { + switch v := interface{}(m.GetUpdatedOn()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetPersonalVirtualFileResponseValidationError{ + field: "UpdatedOn", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetPersonalVirtualFileResponseValidationError{ + field: "UpdatedOn", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUpdatedOn()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetPersonalVirtualFileResponseValidationError{ + field: "UpdatedOn", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return GetPersonalVirtualFileResponseMultiError(errors) + } + + return nil +} + +// GetPersonalVirtualFileResponseMultiError is an error wrapping multiple +// validation errors returned by GetPersonalVirtualFileResponse.ValidateAll() +// if the designated constraints aren't met. +type GetPersonalVirtualFileResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetPersonalVirtualFileResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetPersonalVirtualFileResponseMultiError) AllErrors() []error { return m } + +// GetPersonalVirtualFileResponseValidationError is the validation error +// returned by GetPersonalVirtualFileResponse.Validate if the designated +// constraints aren't met. +type GetPersonalVirtualFileResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e GetPersonalVirtualFileResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e GetPersonalVirtualFileResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e GetPersonalVirtualFileResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e GetPersonalVirtualFileResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e GetPersonalVirtualFileResponseValidationError) ErrorName() string { + return "GetPersonalVirtualFileResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e GetPersonalVirtualFileResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sGetPersonalVirtualFileResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = GetPersonalVirtualFileResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = GetPersonalVirtualFileResponseValidationError{} + +// Validate checks the field values on ListPersonalVirtualFilesRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *ListPersonalVirtualFilesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListPersonalVirtualFilesRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListPersonalVirtualFilesRequestMultiError, or nil if none found. +func (m *ListPersonalVirtualFilesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListPersonalVirtualFilesRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Org + + // no validation rules for Project + + if _, ok := _ListPersonalVirtualFilesRequest_Type_NotInLookup[m.GetType()]; ok { + err := ListPersonalVirtualFilesRequestValidationError{ + field: "Type", + reason: "value must not be in list [PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED]", + } + if !all { + return err + } + errors = append(errors, err) + } + + if _, ok := PersonalVirtualFileType_name[int32(m.GetType())]; !ok { + err := ListPersonalVirtualFilesRequestValidationError{ + field: "Type", + reason: "value must be one of the defined enum values", + } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ListPersonalVirtualFilesRequestMultiError(errors) + } + + return nil +} + +// ListPersonalVirtualFilesRequestMultiError is an error wrapping multiple +// validation errors returned by ListPersonalVirtualFilesRequest.ValidateAll() +// if the designated constraints aren't met. +type ListPersonalVirtualFilesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListPersonalVirtualFilesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListPersonalVirtualFilesRequestMultiError) AllErrors() []error { return m } + +// ListPersonalVirtualFilesRequestValidationError is the validation error +// returned by ListPersonalVirtualFilesRequest.Validate if the designated +// constraints aren't met. +type ListPersonalVirtualFilesRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListPersonalVirtualFilesRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListPersonalVirtualFilesRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListPersonalVirtualFilesRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListPersonalVirtualFilesRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListPersonalVirtualFilesRequestValidationError) ErrorName() string { + return "ListPersonalVirtualFilesRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e ListPersonalVirtualFilesRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListPersonalVirtualFilesRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListPersonalVirtualFilesRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListPersonalVirtualFilesRequestValidationError{} + +var _ListPersonalVirtualFilesRequest_Type_NotInLookup = map[PersonalVirtualFileType]struct{}{ + 0: {}, +} + +// Validate checks the field values on ListPersonalVirtualFilesResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the first error encountered is returned, or nil if there are +// no violations. +func (m *ListPersonalVirtualFilesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListPersonalVirtualFilesResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListPersonalVirtualFilesResponseMultiError, or nil if none found. +func (m *ListPersonalVirtualFilesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListPersonalVirtualFilesResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetFiles() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListPersonalVirtualFilesResponseValidationError{ + field: fmt.Sprintf("Files[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListPersonalVirtualFilesResponseValidationError{ + field: fmt.Sprintf("Files[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListPersonalVirtualFilesResponseValidationError{ + field: fmt.Sprintf("Files[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return ListPersonalVirtualFilesResponseMultiError(errors) + } + + return nil +} + +// ListPersonalVirtualFilesResponseMultiError is an error wrapping multiple +// validation errors returned by +// ListPersonalVirtualFilesResponse.ValidateAll() if the designated +// constraints aren't met. +type ListPersonalVirtualFilesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListPersonalVirtualFilesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListPersonalVirtualFilesResponseMultiError) AllErrors() []error { return m } + +// ListPersonalVirtualFilesResponseValidationError is the validation error +// returned by ListPersonalVirtualFilesResponse.Validate if the designated +// constraints aren't met. +type ListPersonalVirtualFilesResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListPersonalVirtualFilesResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListPersonalVirtualFilesResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListPersonalVirtualFilesResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListPersonalVirtualFilesResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListPersonalVirtualFilesResponseValidationError) ErrorName() string { + return "ListPersonalVirtualFilesResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e ListPersonalVirtualFilesResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListPersonalVirtualFilesResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListPersonalVirtualFilesResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListPersonalVirtualFilesResponseValidationError{} + // Validate checks the field values on GetBillingSubscriptionRequest with the // rules defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. @@ -44413,6 +46118,8 @@ func (m *ProjectPermissions) validate(all bool) error { // no validation rules for ManageBookmarks + // no validation rules for CreatePersonalCanvases + if len(errors) > 0 { return ProjectPermissionsMultiError(errors) } diff --git a/proto/gen/rill/admin/v1/api_grpc.pb.go b/proto/gen/rill/admin/v1/api_grpc.pb.go index 498bc5e37b3e..c0026954ebe9 100644 --- a/proto/gen/rill/admin/v1/api_grpc.pb.go +++ b/proto/gen/rill/admin/v1/api_grpc.pb.go @@ -166,6 +166,12 @@ const ( AdminService_DeleteAlert_FullMethodName = "/rill.admin.v1.AdminService/DeleteAlert" AdminService_GenerateAlertYAML_FullMethodName = "/rill.admin.v1.AdminService/GenerateAlertYAML" AdminService_GetAlertYAML_FullMethodName = "/rill.admin.v1.AdminService/GetAlertYAML" + AdminService_CreatePersonalVirtualFile_FullMethodName = "/rill.admin.v1.AdminService/CreatePersonalVirtualFile" + AdminService_EditPersonalVirtualFile_FullMethodName = "/rill.admin.v1.AdminService/EditPersonalVirtualFile" + AdminService_DeletePersonalVirtualFile_FullMethodName = "/rill.admin.v1.AdminService/DeletePersonalVirtualFile" + AdminService_CopyPersonalVirtualFile_FullMethodName = "/rill.admin.v1.AdminService/CopyPersonalVirtualFile" + AdminService_GetPersonalVirtualFile_FullMethodName = "/rill.admin.v1.AdminService/GetPersonalVirtualFile" + AdminService_ListPersonalVirtualFiles_FullMethodName = "/rill.admin.v1.AdminService/ListPersonalVirtualFiles" AdminService_GetBillingSubscription_FullMethodName = "/rill.admin.v1.AdminService/GetBillingSubscription" AdminService_UpdateBillingSubscription_FullMethodName = "/rill.admin.v1.AdminService/UpdateBillingSubscription" AdminService_CancelBillingSubscription_FullMethodName = "/rill.admin.v1.AdminService/CancelBillingSubscription" @@ -502,6 +508,18 @@ type AdminServiceClient interface { GenerateAlertYAML(ctx context.Context, in *GenerateAlertYAMLRequest, opts ...grpc.CallOption) (*GenerateAlertYAMLResponse, error) // GenerateAlertYAML generates YAML for an alert to be copied into a project's Git repository GetAlertYAML(ctx context.Context, in *GetAlertYAMLRequest, opts ...grpc.CallOption) (*GetAlertYAMLResponse, error) + // CreatePersonalVirtualFile creates a personal (owner-only) resource as a virtual file in the project. + CreatePersonalVirtualFile(ctx context.Context, in *CreatePersonalVirtualFileRequest, opts ...grpc.CallOption) (*CreatePersonalVirtualFileResponse, error) + // EditPersonalVirtualFile updates the YAML body of a personal virtual file the caller owns. + EditPersonalVirtualFile(ctx context.Context, in *EditPersonalVirtualFileRequest, opts ...grpc.CallOption) (*EditPersonalVirtualFileResponse, error) + // DeletePersonalVirtualFile deletes a personal virtual file the caller owns. + DeletePersonalVirtualFile(ctx context.Context, in *DeletePersonalVirtualFileRequest, opts ...grpc.CallOption) (*DeletePersonalVirtualFileResponse, error) + // CopyPersonalVirtualFile clones a shared resource (or one of the caller's own personal items) into a new personal virtual file. + CopyPersonalVirtualFile(ctx context.Context, in *CopyPersonalVirtualFileRequest, opts ...grpc.CallOption) (*CopyPersonalVirtualFileResponse, error) + // GetPersonalVirtualFile returns the YAML body and metadata for a personal virtual file the caller owns. + GetPersonalVirtualFile(ctx context.Context, in *GetPersonalVirtualFileRequest, opts ...grpc.CallOption) (*GetPersonalVirtualFileResponse, error) + // ListPersonalVirtualFiles lists the calling user's personal virtual files for the given type. + ListPersonalVirtualFiles(ctx context.Context, in *ListPersonalVirtualFilesRequest, opts ...grpc.CallOption) (*ListPersonalVirtualFilesResponse, error) // GetBillingSubscription lists the subscription for the organization GetBillingSubscription(ctx context.Context, in *GetBillingSubscriptionRequest, opts ...grpc.CallOption) (*GetBillingSubscriptionResponse, error) // UpdateBillingSubscription updates the billing plan for the organization @@ -2004,6 +2022,66 @@ func (c *adminServiceClient) GetAlertYAML(ctx context.Context, in *GetAlertYAMLR return out, nil } +func (c *adminServiceClient) CreatePersonalVirtualFile(ctx context.Context, in *CreatePersonalVirtualFileRequest, opts ...grpc.CallOption) (*CreatePersonalVirtualFileResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CreatePersonalVirtualFileResponse) + err := c.cc.Invoke(ctx, AdminService_CreatePersonalVirtualFile_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminServiceClient) EditPersonalVirtualFile(ctx context.Context, in *EditPersonalVirtualFileRequest, opts ...grpc.CallOption) (*EditPersonalVirtualFileResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(EditPersonalVirtualFileResponse) + err := c.cc.Invoke(ctx, AdminService_EditPersonalVirtualFile_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminServiceClient) DeletePersonalVirtualFile(ctx context.Context, in *DeletePersonalVirtualFileRequest, opts ...grpc.CallOption) (*DeletePersonalVirtualFileResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(DeletePersonalVirtualFileResponse) + err := c.cc.Invoke(ctx, AdminService_DeletePersonalVirtualFile_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminServiceClient) CopyPersonalVirtualFile(ctx context.Context, in *CopyPersonalVirtualFileRequest, opts ...grpc.CallOption) (*CopyPersonalVirtualFileResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CopyPersonalVirtualFileResponse) + err := c.cc.Invoke(ctx, AdminService_CopyPersonalVirtualFile_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminServiceClient) GetPersonalVirtualFile(ctx context.Context, in *GetPersonalVirtualFileRequest, opts ...grpc.CallOption) (*GetPersonalVirtualFileResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetPersonalVirtualFileResponse) + err := c.cc.Invoke(ctx, AdminService_GetPersonalVirtualFile_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminServiceClient) ListPersonalVirtualFiles(ctx context.Context, in *ListPersonalVirtualFilesRequest, opts ...grpc.CallOption) (*ListPersonalVirtualFilesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListPersonalVirtualFilesResponse) + err := c.cc.Invoke(ctx, AdminService_ListPersonalVirtualFiles_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *adminServiceClient) GetBillingSubscription(ctx context.Context, in *GetBillingSubscriptionRequest, opts ...grpc.CallOption) (*GetBillingSubscriptionResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetBillingSubscriptionResponse) @@ -2455,6 +2533,18 @@ type AdminServiceServer interface { GenerateAlertYAML(context.Context, *GenerateAlertYAMLRequest) (*GenerateAlertYAMLResponse, error) // GenerateAlertYAML generates YAML for an alert to be copied into a project's Git repository GetAlertYAML(context.Context, *GetAlertYAMLRequest) (*GetAlertYAMLResponse, error) + // CreatePersonalVirtualFile creates a personal (owner-only) resource as a virtual file in the project. + CreatePersonalVirtualFile(context.Context, *CreatePersonalVirtualFileRequest) (*CreatePersonalVirtualFileResponse, error) + // EditPersonalVirtualFile updates the YAML body of a personal virtual file the caller owns. + EditPersonalVirtualFile(context.Context, *EditPersonalVirtualFileRequest) (*EditPersonalVirtualFileResponse, error) + // DeletePersonalVirtualFile deletes a personal virtual file the caller owns. + DeletePersonalVirtualFile(context.Context, *DeletePersonalVirtualFileRequest) (*DeletePersonalVirtualFileResponse, error) + // CopyPersonalVirtualFile clones a shared resource (or one of the caller's own personal items) into a new personal virtual file. + CopyPersonalVirtualFile(context.Context, *CopyPersonalVirtualFileRequest) (*CopyPersonalVirtualFileResponse, error) + // GetPersonalVirtualFile returns the YAML body and metadata for a personal virtual file the caller owns. + GetPersonalVirtualFile(context.Context, *GetPersonalVirtualFileRequest) (*GetPersonalVirtualFileResponse, error) + // ListPersonalVirtualFiles lists the calling user's personal virtual files for the given type. + ListPersonalVirtualFiles(context.Context, *ListPersonalVirtualFilesRequest) (*ListPersonalVirtualFilesResponse, error) // GetBillingSubscription lists the subscription for the organization GetBillingSubscription(context.Context, *GetBillingSubscriptionRequest) (*GetBillingSubscriptionResponse, error) // UpdateBillingSubscription updates the billing plan for the organization @@ -2928,6 +3018,24 @@ func (UnimplementedAdminServiceServer) GenerateAlertYAML(context.Context, *Gener func (UnimplementedAdminServiceServer) GetAlertYAML(context.Context, *GetAlertYAMLRequest) (*GetAlertYAMLResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetAlertYAML not implemented") } +func (UnimplementedAdminServiceServer) CreatePersonalVirtualFile(context.Context, *CreatePersonalVirtualFileRequest) (*CreatePersonalVirtualFileResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreatePersonalVirtualFile not implemented") +} +func (UnimplementedAdminServiceServer) EditPersonalVirtualFile(context.Context, *EditPersonalVirtualFileRequest) (*EditPersonalVirtualFileResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method EditPersonalVirtualFile not implemented") +} +func (UnimplementedAdminServiceServer) DeletePersonalVirtualFile(context.Context, *DeletePersonalVirtualFileRequest) (*DeletePersonalVirtualFileResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeletePersonalVirtualFile not implemented") +} +func (UnimplementedAdminServiceServer) CopyPersonalVirtualFile(context.Context, *CopyPersonalVirtualFileRequest) (*CopyPersonalVirtualFileResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CopyPersonalVirtualFile not implemented") +} +func (UnimplementedAdminServiceServer) GetPersonalVirtualFile(context.Context, *GetPersonalVirtualFileRequest) (*GetPersonalVirtualFileResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetPersonalVirtualFile not implemented") +} +func (UnimplementedAdminServiceServer) ListPersonalVirtualFiles(context.Context, *ListPersonalVirtualFilesRequest) (*ListPersonalVirtualFilesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListPersonalVirtualFiles not implemented") +} func (UnimplementedAdminServiceServer) GetBillingSubscription(context.Context, *GetBillingSubscriptionRequest) (*GetBillingSubscriptionResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetBillingSubscription not implemented") } @@ -5634,6 +5742,114 @@ func _AdminService_GetAlertYAML_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _AdminService_CreatePersonalVirtualFile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreatePersonalVirtualFileRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServiceServer).CreatePersonalVirtualFile(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminService_CreatePersonalVirtualFile_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServiceServer).CreatePersonalVirtualFile(ctx, req.(*CreatePersonalVirtualFileRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminService_EditPersonalVirtualFile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EditPersonalVirtualFileRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServiceServer).EditPersonalVirtualFile(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminService_EditPersonalVirtualFile_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServiceServer).EditPersonalVirtualFile(ctx, req.(*EditPersonalVirtualFileRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminService_DeletePersonalVirtualFile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeletePersonalVirtualFileRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServiceServer).DeletePersonalVirtualFile(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminService_DeletePersonalVirtualFile_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServiceServer).DeletePersonalVirtualFile(ctx, req.(*DeletePersonalVirtualFileRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminService_CopyPersonalVirtualFile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CopyPersonalVirtualFileRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServiceServer).CopyPersonalVirtualFile(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminService_CopyPersonalVirtualFile_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServiceServer).CopyPersonalVirtualFile(ctx, req.(*CopyPersonalVirtualFileRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminService_GetPersonalVirtualFile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPersonalVirtualFileRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServiceServer).GetPersonalVirtualFile(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminService_GetPersonalVirtualFile_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServiceServer).GetPersonalVirtualFile(ctx, req.(*GetPersonalVirtualFileRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminService_ListPersonalVirtualFiles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListPersonalVirtualFilesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServiceServer).ListPersonalVirtualFiles(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminService_ListPersonalVirtualFiles_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServiceServer).ListPersonalVirtualFiles(ctx, req.(*ListPersonalVirtualFilesRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _AdminService_GetBillingSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetBillingSubscriptionRequest) if err := dec(in); err != nil { @@ -6463,6 +6679,30 @@ var AdminService_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetAlertYAML", Handler: _AdminService_GetAlertYAML_Handler, }, + { + MethodName: "CreatePersonalVirtualFile", + Handler: _AdminService_CreatePersonalVirtualFile_Handler, + }, + { + MethodName: "EditPersonalVirtualFile", + Handler: _AdminService_EditPersonalVirtualFile_Handler, + }, + { + MethodName: "DeletePersonalVirtualFile", + Handler: _AdminService_DeletePersonalVirtualFile_Handler, + }, + { + MethodName: "CopyPersonalVirtualFile", + Handler: _AdminService_CopyPersonalVirtualFile_Handler, + }, + { + MethodName: "GetPersonalVirtualFile", + Handler: _AdminService_GetPersonalVirtualFile_Handler, + }, + { + MethodName: "ListPersonalVirtualFiles", + Handler: _AdminService_ListPersonalVirtualFiles_Handler, + }, { MethodName: "GetBillingSubscription", Handler: _AdminService_GetBillingSubscription_Handler, diff --git a/proto/gen/rill/admin/v1/openapi.yaml b/proto/gen/rill/admin/v1/openapi.yaml index 29c97d963871..3423dcdf8028 100644 --- a/proto/gen/rill/admin/v1/openapi.yaml +++ b/proto/gen/rill/admin/v1/openapi.yaml @@ -433,6 +433,11 @@ components: $ref: '#/components/schemas/v1ToolResult' title: Content block within a message type: object + v1CopyPersonalVirtualFileResponse: + properties: + name: + type: string + type: object v1CreateAlertResponse: properties: name: @@ -511,6 +516,11 @@ components: organization: $ref: '#/components/schemas/v1Organization' type: object + v1CreatePersonalVirtualFileResponse: + properties: + name: + type: string + type: object v1CreateProjectResponse: properties: project: @@ -544,6 +554,8 @@ components: type: object v1DeleteOrganizationResponse: type: object + v1DeletePersonalVirtualFileResponse: + type: object v1DeleteProjectResponse: properties: id: @@ -611,6 +623,8 @@ components: type: string v1EditAlertResponse: type: object + v1EditPersonalVirtualFileResponse: + type: object v1EditReportResponse: type: object v1ExportFormat: @@ -862,6 +876,18 @@ components: url: type: string type: object + v1GetPersonalVirtualFileResponse: + properties: + displayName: + type: string + name: + type: string + updatedOn: + format: date-time + type: string + yaml: + type: string + type: object v1GetProjectAccessRequestResponse: properties: email: @@ -1100,6 +1126,13 @@ components: $ref: '#/components/schemas/v1Organization' type: array type: object + v1ListPersonalVirtualFilesResponse: + properties: + files: + items: + $ref: '#/components/schemas/v1PersonalVirtualFileSummary' + type: array + type: object v1ListProjectInvitesResponse: properties: invites: @@ -1490,6 +1523,37 @@ components: permissions: $ref: '#/components/schemas/v1OrganizationPermissions' type: object + v1PersonalVirtualFileSourceKind: + default: PERSONAL_VIRTUAL_FILE_SOURCE_KIND_UNSPECIFIED + description: |- + PersonalVirtualFileSourceKind enumerates the kinds of source resources that CopyPersonalVirtualFile can clone from. + + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_SHARED: Clone from a shared resource in the project (e.g. a shared canvas dashboard). + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_PERSONAL: Clone from one of the caller's own personal virtual files. + enum: + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_UNSPECIFIED + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_SHARED + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_PERSONAL + type: string + v1PersonalVirtualFileSummary: + properties: + displayName: + type: string + name: + type: string + type: + $ref: '#/components/schemas/v1PersonalVirtualFileType' + updatedOn: + format: date-time + type: string + type: object + v1PersonalVirtualFileType: + default: PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED + description: PersonalVirtualFileType enumerates the resource kinds that can be stored as a personal virtual file. + enum: + - PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED + - PERSONAL_VIRTUAL_FILE_TYPE_CANVAS + type: string v1PingResponse: properties: time: @@ -1644,6 +1708,8 @@ components: type: boolean createMagicAuthTokens: type: boolean + createPersonalCanvases: + type: boolean createReports: type: boolean manageAlerts: @@ -4855,6 +4921,260 @@ paths: $ref: '#/components/schemas/rpcStatus' description: An unexpected error response. summary: ListUsergroupsForProjectAndUser returns the user groups for a user within a project + /v1/orgs/{org}/projects/{project}/personal-virtual-files: + get: + operationId: AdminService_ListPersonalVirtualFiles + parameters: + - in: path + name: org + required: true + schema: + type: string + - in: path + name: project + required: true + schema: + type: string + - in: query + name: type + schema: + default: PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED + enum: + - PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED + - PERSONAL_VIRTUAL_FILE_TYPE_CANVAS + type: string + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/v1ListPersonalVirtualFilesResponse' + description: A successful response. + default: + content: + application/json: + schema: + $ref: '#/components/schemas/rpcStatus' + description: An unexpected error response. + summary: ListPersonalVirtualFiles lists the calling user's personal virtual files for the given type. + post: + operationId: AdminService_CreatePersonalVirtualFile + parameters: + - in: path + name: org + required: true + schema: + type: string + - in: path + name: project + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + properties: + displayName: + type: string + type: + $ref: '#/components/schemas/v1PersonalVirtualFileType' + yaml: + description: 'Optional: initial YAML body. If empty, the server generates a blank template for the given type.' + type: string + type: object + required: true + x-originalParamName: body + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/v1CreatePersonalVirtualFileResponse' + description: A successful response. + default: + content: + application/json: + schema: + $ref: '#/components/schemas/rpcStatus' + description: An unexpected error response. + summary: CreatePersonalVirtualFile creates a personal (owner-only) resource as a virtual file in the project. + /v1/orgs/{org}/projects/{project}/personal-virtual-files/-/copy: + post: + operationId: AdminService_CopyPersonalVirtualFile + parameters: + - in: path + name: org + required: true + schema: + type: string + - in: path + name: project + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + properties: + displayName: + description: 'Optional: override the display name. If empty, "Copy of " is used.' + type: string + sourceKind: + $ref: '#/components/schemas/v1PersonalVirtualFileSourceKind' + sourceName: + type: string + type: + $ref: '#/components/schemas/v1PersonalVirtualFileType' + type: object + required: true + x-originalParamName: body + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/v1CopyPersonalVirtualFileResponse' + description: A successful response. + default: + content: + application/json: + schema: + $ref: '#/components/schemas/rpcStatus' + description: An unexpected error response. + summary: CopyPersonalVirtualFile clones a shared resource (or one of the caller's own personal items) into a new personal virtual file. + /v1/orgs/{org}/projects/{project}/personal-virtual-files/{type}/{name}: + delete: + operationId: AdminService_DeletePersonalVirtualFile + parameters: + - in: path + name: org + required: true + schema: + type: string + - in: path + name: project + required: true + schema: + type: string + - in: path + name: type + required: true + schema: + enum: + - PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED + - PERSONAL_VIRTUAL_FILE_TYPE_CANVAS + type: string + - in: path + name: name + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/v1DeletePersonalVirtualFileResponse' + description: A successful response. + default: + content: + application/json: + schema: + $ref: '#/components/schemas/rpcStatus' + description: An unexpected error response. + summary: DeletePersonalVirtualFile deletes a personal virtual file the caller owns. + get: + operationId: AdminService_GetPersonalVirtualFile + parameters: + - in: path + name: org + required: true + schema: + type: string + - in: path + name: project + required: true + schema: + type: string + - in: path + name: type + required: true + schema: + enum: + - PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED + - PERSONAL_VIRTUAL_FILE_TYPE_CANVAS + type: string + - in: path + name: name + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/v1GetPersonalVirtualFileResponse' + description: A successful response. + default: + content: + application/json: + schema: + $ref: '#/components/schemas/rpcStatus' + description: An unexpected error response. + summary: GetPersonalVirtualFile returns the YAML body and metadata for a personal virtual file the caller owns. + put: + operationId: AdminService_EditPersonalVirtualFile + parameters: + - in: path + name: org + required: true + schema: + type: string + - in: path + name: project + required: true + schema: + type: string + - in: path + name: type + required: true + schema: + enum: + - PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED + - PERSONAL_VIRTUAL_FILE_TYPE_CANVAS + type: string + - in: path + name: name + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + properties: + yaml: + type: string + type: object + required: true + x-originalParamName: body + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/v1EditPersonalVirtualFileResponse' + description: A successful response. + default: + content: + application/json: + schema: + $ref: '#/components/schemas/rpcStatus' + description: An unexpected error response. + summary: EditPersonalVirtualFile updates the YAML body of a personal virtual file the caller owns. /v1/orgs/{org}/projects/{project}/redeploy: post: operationId: AdminService_RedeployProject diff --git a/proto/gen/rill/admin/v1/public.openapi.yaml b/proto/gen/rill/admin/v1/public.openapi.yaml index 5b12ebc984ba..20ff3b79efd7 100644 --- a/proto/gen/rill/admin/v1/public.openapi.yaml +++ b/proto/gen/rill/admin/v1/public.openapi.yaml @@ -433,6 +433,11 @@ components: $ref: '#/components/schemas/v1ToolResult' title: Content block within a message type: object + v1CopyPersonalVirtualFileResponse: + properties: + name: + type: string + type: object v1CreateAlertResponse: properties: name: @@ -511,6 +516,11 @@ components: organization: $ref: '#/components/schemas/v1Organization' type: object + v1CreatePersonalVirtualFileResponse: + properties: + name: + type: string + type: object v1CreateProjectResponse: properties: project: @@ -544,6 +554,8 @@ components: type: object v1DeleteOrganizationResponse: type: object + v1DeletePersonalVirtualFileResponse: + type: object v1DeleteProjectResponse: properties: id: @@ -611,6 +623,8 @@ components: type: string v1EditAlertResponse: type: object + v1EditPersonalVirtualFileResponse: + type: object v1EditReportResponse: type: object v1ExportFormat: @@ -862,6 +876,18 @@ components: url: type: string type: object + v1GetPersonalVirtualFileResponse: + properties: + displayName: + type: string + name: + type: string + updatedOn: + format: date-time + type: string + yaml: + type: string + type: object v1GetProjectAccessRequestResponse: properties: email: @@ -1100,6 +1126,13 @@ components: $ref: '#/components/schemas/v1Organization' type: array type: object + v1ListPersonalVirtualFilesResponse: + properties: + files: + items: + $ref: '#/components/schemas/v1PersonalVirtualFileSummary' + type: array + type: object v1ListProjectInvitesResponse: properties: invites: @@ -1490,6 +1523,37 @@ components: permissions: $ref: '#/components/schemas/v1OrganizationPermissions' type: object + v1PersonalVirtualFileSourceKind: + default: PERSONAL_VIRTUAL_FILE_SOURCE_KIND_UNSPECIFIED + description: |- + PersonalVirtualFileSourceKind enumerates the kinds of source resources that CopyPersonalVirtualFile can clone from. + + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_SHARED: Clone from a shared resource in the project (e.g. a shared canvas dashboard). + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_PERSONAL: Clone from one of the caller's own personal virtual files. + enum: + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_UNSPECIFIED + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_SHARED + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_PERSONAL + type: string + v1PersonalVirtualFileSummary: + properties: + displayName: + type: string + name: + type: string + type: + $ref: '#/components/schemas/v1PersonalVirtualFileType' + updatedOn: + format: date-time + type: string + type: object + v1PersonalVirtualFileType: + default: PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED + description: PersonalVirtualFileType enumerates the resource kinds that can be stored as a personal virtual file. + enum: + - PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED + - PERSONAL_VIRTUAL_FILE_TYPE_CANVAS + type: string v1PingResponse: properties: time: @@ -1644,6 +1708,8 @@ components: type: boolean createMagicAuthTokens: type: boolean + createPersonalCanvases: + type: boolean createReports: type: boolean manageAlerts: @@ -3279,6 +3345,9 @@ paths: summary: SetProjectMemberUserRole sets the role for the member x-visibility: public /v1/orgs/{org}/projects/{project}/members/{email}/usergroups: {} + /v1/orgs/{org}/projects/{project}/personal-virtual-files: {} + /v1/orgs/{org}/projects/{project}/personal-virtual-files/-/copy: {} + /v1/orgs/{org}/projects/{project}/personal-virtual-files/{type}/{name}: {} /v1/orgs/{org}/projects/{project}/redeploy: {} /v1/orgs/{org}/projects/{project}/reports: {} /v1/orgs/{org}/projects/{project}/reports/-/yaml: {} diff --git a/proto/gen/rill/runtime/v1/resources.pb.go b/proto/gen/rill/runtime/v1/resources.pb.go index bb34ab6c326c..36453cc3e7f8 100644 --- a/proto/gen/rill/runtime/v1/resources.pb.go +++ b/proto/gen/rill/runtime/v1/resources.pb.go @@ -5657,6 +5657,8 @@ type CanvasSpec struct { SecurityRules []*SecurityRule `protobuf:"bytes,6,rep,name=security_rules,json=securityRules,proto3" json:"security_rules,omitempty"` // Array of dimension or measure names PinnedFilters []string `protobuf:"bytes,16,rep,name=pinned_filters,json=pinnedFilters,proto3" json:"pinned_filters,omitempty"` + // Annotations are arbitrary key-value pairs that can be used to attach metadata to the canvas (e.g. used to mark personal canvases created by the admin server). + Annotations map[string]string `protobuf:"bytes,19,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *CanvasSpec) Reset() { @@ -5803,6 +5805,13 @@ func (x *CanvasSpec) GetPinnedFilters() []string { return nil } +func (x *CanvasSpec) GetAnnotations() map[string]string { + if x != nil { + return x.Annotations + } + return nil +} + type CanvasState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -8973,7 +8982,7 @@ var file_rill_runtime_v1_resources_proto_rawDesc = []byte{ 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x22, 0xcf, 0x05, 0x0a, 0x0a, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, + 0x22, 0xdf, 0x06, 0x0a, 0x0a, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, @@ -9018,7 +9027,16 @@ var file_rill_runtime_v1_resources_proto_rawDesc = []byte{ 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x0b, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x53, 0x74, 0x61, + 0x72, 0x73, 0x12, 0x4e, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, + 0x53, 0x70, 0x65, 0x63, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x91, 0x01, 0x0a, 0x0b, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x53, @@ -9269,7 +9287,7 @@ func file_rill_runtime_v1_resources_proto_rawDescGZIP() []byte { } var file_rill_runtime_v1_resources_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_rill_runtime_v1_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 84) +var file_rill_runtime_v1_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 85) var file_rill_runtime_v1_resources_proto_goTypes = []any{ (ReconcileStatus)(0), // 0: rill.runtime.v1.ReconcileStatus (ModelChangeMode)(0), // 1: rill.runtime.v1.ModelChangeMode @@ -9362,16 +9380,17 @@ var file_rill_runtime_v1_resources_proto_goTypes = []any{ nil, // 88: rill.runtime.v1.ReportSpec.AnnotationsEntry nil, // 89: rill.runtime.v1.AlertSpec.AnnotationsEntry nil, // 90: rill.runtime.v1.ThemeColors.VariablesEntry - nil, // 91: rill.runtime.v1.CanvasPreset.FilterExprEntry - (*timestamppb.Timestamp)(nil), // 92: google.protobuf.Timestamp - (*structpb.Struct)(nil), // 93: google.protobuf.Struct - (*StructType)(nil), // 94: rill.runtime.v1.StructType - (TimeGrain)(0), // 95: rill.runtime.v1.TimeGrain - (*Expression)(nil), // 96: rill.runtime.v1.Expression - (ExportFormat)(0), // 97: rill.runtime.v1.ExportFormat - (*Color)(nil), // 98: rill.runtime.v1.Color - (*structpb.Value)(nil), // 99: google.protobuf.Value - (*Type)(nil), // 100: rill.runtime.v1.Type + nil, // 91: rill.runtime.v1.CanvasSpec.AnnotationsEntry + nil, // 92: rill.runtime.v1.CanvasPreset.FilterExprEntry + (*timestamppb.Timestamp)(nil), // 93: google.protobuf.Timestamp + (*structpb.Struct)(nil), // 94: google.protobuf.Struct + (*StructType)(nil), // 95: rill.runtime.v1.StructType + (TimeGrain)(0), // 96: rill.runtime.v1.TimeGrain + (*Expression)(nil), // 97: rill.runtime.v1.Expression + (ExportFormat)(0), // 98: rill.runtime.v1.ExportFormat + (*Color)(nil), // 99: rill.runtime.v1.Color + (*structpb.Value)(nil), // 100: google.protobuf.Value + (*Type)(nil), // 101: rill.runtime.v1.Type } var file_rill_runtime_v1_resources_proto_depIdxs = []int32{ 9, // 0: rill.runtime.v1.Resource.meta:type_name -> rill.runtime.v1.ResourceMeta @@ -9392,40 +9411,40 @@ var file_rill_runtime_v1_resources_proto_depIdxs = []int32{ 10, // 15: rill.runtime.v1.ResourceMeta.name:type_name -> rill.runtime.v1.ResourceName 10, // 16: rill.runtime.v1.ResourceMeta.refs:type_name -> rill.runtime.v1.ResourceName 10, // 17: rill.runtime.v1.ResourceMeta.owner:type_name -> rill.runtime.v1.ResourceName - 92, // 18: rill.runtime.v1.ResourceMeta.created_on:type_name -> google.protobuf.Timestamp - 92, // 19: rill.runtime.v1.ResourceMeta.spec_updated_on:type_name -> google.protobuf.Timestamp - 92, // 20: rill.runtime.v1.ResourceMeta.state_updated_on:type_name -> google.protobuf.Timestamp - 92, // 21: rill.runtime.v1.ResourceMeta.deleted_on:type_name -> google.protobuf.Timestamp + 93, // 18: rill.runtime.v1.ResourceMeta.created_on:type_name -> google.protobuf.Timestamp + 93, // 19: rill.runtime.v1.ResourceMeta.spec_updated_on:type_name -> google.protobuf.Timestamp + 93, // 20: rill.runtime.v1.ResourceMeta.state_updated_on:type_name -> google.protobuf.Timestamp + 93, // 21: rill.runtime.v1.ResourceMeta.deleted_on:type_name -> google.protobuf.Timestamp 0, // 22: rill.runtime.v1.ResourceMeta.reconcile_status:type_name -> rill.runtime.v1.ReconcileStatus - 92, // 23: rill.runtime.v1.ResourceMeta.reconcile_on:type_name -> google.protobuf.Timestamp + 93, // 23: rill.runtime.v1.ResourceMeta.reconcile_on:type_name -> google.protobuf.Timestamp 10, // 24: rill.runtime.v1.ResourceMeta.renamed_from:type_name -> rill.runtime.v1.ResourceName 12, // 25: rill.runtime.v1.ProjectParser.spec:type_name -> rill.runtime.v1.ProjectParserSpec 13, // 26: rill.runtime.v1.ProjectParser.state:type_name -> rill.runtime.v1.ProjectParserState 73, // 27: rill.runtime.v1.ProjectParserState.parse_errors:type_name -> rill.runtime.v1.ParseError - 92, // 28: rill.runtime.v1.ProjectParserState.current_commit_on:type_name -> google.protobuf.Timestamp + 93, // 28: rill.runtime.v1.ProjectParserState.current_commit_on:type_name -> google.protobuf.Timestamp 15, // 29: rill.runtime.v1.Source.spec:type_name -> rill.runtime.v1.SourceSpec 16, // 30: rill.runtime.v1.Source.state:type_name -> rill.runtime.v1.SourceState - 93, // 31: rill.runtime.v1.SourceSpec.properties:type_name -> google.protobuf.Struct + 94, // 31: rill.runtime.v1.SourceSpec.properties:type_name -> google.protobuf.Struct 72, // 32: rill.runtime.v1.SourceSpec.refresh_schedule:type_name -> rill.runtime.v1.Schedule - 92, // 33: rill.runtime.v1.SourceState.refreshed_on:type_name -> google.protobuf.Timestamp + 93, // 33: rill.runtime.v1.SourceState.refreshed_on:type_name -> google.protobuf.Timestamp 18, // 34: rill.runtime.v1.Model.spec:type_name -> rill.runtime.v1.ModelSpec 19, // 35: rill.runtime.v1.Model.state:type_name -> rill.runtime.v1.ModelState 72, // 36: rill.runtime.v1.ModelSpec.refresh_schedule:type_name -> rill.runtime.v1.Schedule - 93, // 37: rill.runtime.v1.ModelSpec.incremental_state_resolver_properties:type_name -> google.protobuf.Struct - 93, // 38: rill.runtime.v1.ModelSpec.partitions_resolver_properties:type_name -> google.protobuf.Struct - 93, // 39: rill.runtime.v1.ModelSpec.input_properties:type_name -> google.protobuf.Struct - 93, // 40: rill.runtime.v1.ModelSpec.stage_properties:type_name -> google.protobuf.Struct - 93, // 41: rill.runtime.v1.ModelSpec.output_properties:type_name -> google.protobuf.Struct + 94, // 37: rill.runtime.v1.ModelSpec.incremental_state_resolver_properties:type_name -> google.protobuf.Struct + 94, // 38: rill.runtime.v1.ModelSpec.partitions_resolver_properties:type_name -> google.protobuf.Struct + 94, // 39: rill.runtime.v1.ModelSpec.input_properties:type_name -> google.protobuf.Struct + 94, // 40: rill.runtime.v1.ModelSpec.stage_properties:type_name -> google.protobuf.Struct + 94, // 41: rill.runtime.v1.ModelSpec.output_properties:type_name -> google.protobuf.Struct 1, // 42: rill.runtime.v1.ModelSpec.change_mode:type_name -> rill.runtime.v1.ModelChangeMode 20, // 43: rill.runtime.v1.ModelSpec.tests:type_name -> rill.runtime.v1.ModelTest - 93, // 44: rill.runtime.v1.ModelState.result_properties:type_name -> google.protobuf.Struct - 92, // 45: rill.runtime.v1.ModelState.refreshed_on:type_name -> google.protobuf.Timestamp - 93, // 46: rill.runtime.v1.ModelState.incremental_state:type_name -> google.protobuf.Struct - 94, // 47: rill.runtime.v1.ModelState.incremental_state_schema:type_name -> rill.runtime.v1.StructType - 93, // 48: rill.runtime.v1.ModelTest.resolver_properties:type_name -> google.protobuf.Struct + 94, // 44: rill.runtime.v1.ModelState.result_properties:type_name -> google.protobuf.Struct + 93, // 45: rill.runtime.v1.ModelState.refreshed_on:type_name -> google.protobuf.Timestamp + 94, // 46: rill.runtime.v1.ModelState.incremental_state:type_name -> google.protobuf.Struct + 95, // 47: rill.runtime.v1.ModelState.incremental_state_schema:type_name -> rill.runtime.v1.StructType + 94, // 48: rill.runtime.v1.ModelTest.resolver_properties:type_name -> google.protobuf.Struct 22, // 49: rill.runtime.v1.MetricsView.spec:type_name -> rill.runtime.v1.MetricsViewSpec 28, // 50: rill.runtime.v1.MetricsView.state:type_name -> rill.runtime.v1.MetricsViewState - 95, // 51: rill.runtime.v1.MetricsViewSpec.smallest_time_grain:type_name -> rill.runtime.v1.TimeGrain + 96, // 51: rill.runtime.v1.MetricsViewSpec.smallest_time_grain:type_name -> rill.runtime.v1.TimeGrain 81, // 52: rill.runtime.v1.MetricsViewSpec.dimensions:type_name -> rill.runtime.v1.MetricsViewSpec.Dimension 84, // 53: rill.runtime.v1.MetricsViewSpec.measures:type_name -> rill.runtime.v1.MetricsViewSpec.Measure 35, // 54: rill.runtime.v1.MetricsViewSpec.parent_dimensions:type_name -> rill.runtime.v1.FieldSelector @@ -9441,10 +9460,10 @@ var file_rill_runtime_v1_resources_proto_depIdxs = []int32{ 10, // 64: rill.runtime.v1.SecurityRuleAccess.condition_resources:type_name -> rill.runtime.v1.ResourceName 10, // 65: rill.runtime.v1.SecurityRuleFieldAccess.condition_resources:type_name -> rill.runtime.v1.ResourceName 10, // 66: rill.runtime.v1.SecurityRuleRowFilter.condition_resources:type_name -> rill.runtime.v1.ResourceName - 96, // 67: rill.runtime.v1.SecurityRuleRowFilter.expression:type_name -> rill.runtime.v1.Expression + 97, // 67: rill.runtime.v1.SecurityRuleRowFilter.expression:type_name -> rill.runtime.v1.Expression 10, // 68: rill.runtime.v1.SecurityRuleTransitiveAccess.resource:type_name -> rill.runtime.v1.ResourceName 22, // 69: rill.runtime.v1.MetricsViewState.valid_spec:type_name -> rill.runtime.v1.MetricsViewSpec - 92, // 70: rill.runtime.v1.MetricsViewState.data_refreshed_on:type_name -> google.protobuf.Timestamp + 93, // 70: rill.runtime.v1.MetricsViewState.data_refreshed_on:type_name -> google.protobuf.Timestamp 30, // 71: rill.runtime.v1.Explore.spec:type_name -> rill.runtime.v1.ExploreSpec 31, // 72: rill.runtime.v1.Explore.state:type_name -> rill.runtime.v1.ExploreState 35, // 73: rill.runtime.v1.ExploreSpec.dimensions_selector:type_name -> rill.runtime.v1.FieldSelector @@ -9454,11 +9473,11 @@ var file_rill_runtime_v1_resources_proto_depIdxs = []int32{ 34, // 77: rill.runtime.v1.ExploreSpec.default_preset:type_name -> rill.runtime.v1.ExplorePreset 23, // 78: rill.runtime.v1.ExploreSpec.security_rules:type_name -> rill.runtime.v1.SecurityRule 30, // 79: rill.runtime.v1.ExploreState.valid_spec:type_name -> rill.runtime.v1.ExploreSpec - 92, // 80: rill.runtime.v1.ExploreState.data_refreshed_on:type_name -> google.protobuf.Timestamp + 93, // 80: rill.runtime.v1.ExploreState.data_refreshed_on:type_name -> google.protobuf.Timestamp 33, // 81: rill.runtime.v1.ExploreTimeRange.comparison_time_ranges:type_name -> rill.runtime.v1.ExploreComparisonTimeRange 35, // 82: rill.runtime.v1.ExplorePreset.dimensions_selector:type_name -> rill.runtime.v1.FieldSelector 35, // 83: rill.runtime.v1.ExplorePreset.measures_selector:type_name -> rill.runtime.v1.FieldSelector - 96, // 84: rill.runtime.v1.ExplorePreset.where:type_name -> rill.runtime.v1.Expression + 97, // 84: rill.runtime.v1.ExplorePreset.where:type_name -> rill.runtime.v1.Expression 2, // 85: rill.runtime.v1.ExplorePreset.comparison_mode:type_name -> rill.runtime.v1.ExploreComparisonMode 3, // 86: rill.runtime.v1.ExplorePreset.view:type_name -> rill.runtime.v1.ExploreWebView 4, // 87: rill.runtime.v1.ExplorePreset.explore_sort_type:type_name -> rill.runtime.v1.ExploreSortType @@ -9468,53 +9487,53 @@ var file_rill_runtime_v1_resources_proto_depIdxs = []int32{ 41, // 91: rill.runtime.v1.Report.spec:type_name -> rill.runtime.v1.ReportSpec 42, // 92: rill.runtime.v1.Report.state:type_name -> rill.runtime.v1.ReportState 72, // 93: rill.runtime.v1.ReportSpec.refresh_schedule:type_name -> rill.runtime.v1.Schedule - 93, // 94: rill.runtime.v1.ReportSpec.resolver_properties:type_name -> google.protobuf.Struct - 97, // 95: rill.runtime.v1.ReportSpec.export_format:type_name -> rill.runtime.v1.ExportFormat + 94, // 94: rill.runtime.v1.ReportSpec.resolver_properties:type_name -> google.protobuf.Struct + 98, // 95: rill.runtime.v1.ReportSpec.export_format:type_name -> rill.runtime.v1.ExportFormat 46, // 96: rill.runtime.v1.ReportSpec.notifiers:type_name -> rill.runtime.v1.Notifier 88, // 97: rill.runtime.v1.ReportSpec.annotations:type_name -> rill.runtime.v1.ReportSpec.AnnotationsEntry - 92, // 98: rill.runtime.v1.ReportState.next_run_on:type_name -> google.protobuf.Timestamp + 93, // 98: rill.runtime.v1.ReportState.next_run_on:type_name -> google.protobuf.Timestamp 43, // 99: rill.runtime.v1.ReportState.current_execution:type_name -> rill.runtime.v1.ReportExecution 43, // 100: rill.runtime.v1.ReportState.execution_history:type_name -> rill.runtime.v1.ReportExecution - 92, // 101: rill.runtime.v1.ReportExecution.report_time:type_name -> google.protobuf.Timestamp - 92, // 102: rill.runtime.v1.ReportExecution.started_on:type_name -> google.protobuf.Timestamp - 92, // 103: rill.runtime.v1.ReportExecution.finished_on:type_name -> google.protobuf.Timestamp + 93, // 101: rill.runtime.v1.ReportExecution.report_time:type_name -> google.protobuf.Timestamp + 93, // 102: rill.runtime.v1.ReportExecution.started_on:type_name -> google.protobuf.Timestamp + 93, // 103: rill.runtime.v1.ReportExecution.finished_on:type_name -> google.protobuf.Timestamp 45, // 104: rill.runtime.v1.Alert.spec:type_name -> rill.runtime.v1.AlertSpec 47, // 105: rill.runtime.v1.Alert.state:type_name -> rill.runtime.v1.AlertState 72, // 106: rill.runtime.v1.AlertSpec.refresh_schedule:type_name -> rill.runtime.v1.Schedule - 93, // 107: rill.runtime.v1.AlertSpec.resolver_properties:type_name -> google.protobuf.Struct - 93, // 108: rill.runtime.v1.AlertSpec.query_for_attributes:type_name -> google.protobuf.Struct + 94, // 107: rill.runtime.v1.AlertSpec.resolver_properties:type_name -> google.protobuf.Struct + 94, // 108: rill.runtime.v1.AlertSpec.query_for_attributes:type_name -> google.protobuf.Struct 46, // 109: rill.runtime.v1.AlertSpec.notifiers:type_name -> rill.runtime.v1.Notifier 89, // 110: rill.runtime.v1.AlertSpec.annotations:type_name -> rill.runtime.v1.AlertSpec.AnnotationsEntry - 93, // 111: rill.runtime.v1.Notifier.properties:type_name -> google.protobuf.Struct - 92, // 112: rill.runtime.v1.AlertState.next_run_on:type_name -> google.protobuf.Timestamp + 94, // 111: rill.runtime.v1.Notifier.properties:type_name -> google.protobuf.Struct + 93, // 112: rill.runtime.v1.AlertState.next_run_on:type_name -> google.protobuf.Timestamp 48, // 113: rill.runtime.v1.AlertState.current_execution:type_name -> rill.runtime.v1.AlertExecution 48, // 114: rill.runtime.v1.AlertState.execution_history:type_name -> rill.runtime.v1.AlertExecution 49, // 115: rill.runtime.v1.AlertExecution.result:type_name -> rill.runtime.v1.AssertionResult - 92, // 116: rill.runtime.v1.AlertExecution.execution_time:type_name -> google.protobuf.Timestamp - 92, // 117: rill.runtime.v1.AlertExecution.started_on:type_name -> google.protobuf.Timestamp - 92, // 118: rill.runtime.v1.AlertExecution.finished_on:type_name -> google.protobuf.Timestamp - 92, // 119: rill.runtime.v1.AlertExecution.suppressed_since:type_name -> google.protobuf.Timestamp + 93, // 116: rill.runtime.v1.AlertExecution.execution_time:type_name -> google.protobuf.Timestamp + 93, // 117: rill.runtime.v1.AlertExecution.started_on:type_name -> google.protobuf.Timestamp + 93, // 118: rill.runtime.v1.AlertExecution.finished_on:type_name -> google.protobuf.Timestamp + 93, // 119: rill.runtime.v1.AlertExecution.suppressed_since:type_name -> google.protobuf.Timestamp 5, // 120: rill.runtime.v1.AssertionResult.status:type_name -> rill.runtime.v1.AssertionStatus - 93, // 121: rill.runtime.v1.AssertionResult.fail_row:type_name -> google.protobuf.Struct + 94, // 121: rill.runtime.v1.AssertionResult.fail_row:type_name -> google.protobuf.Struct 51, // 122: rill.runtime.v1.RefreshTrigger.spec:type_name -> rill.runtime.v1.RefreshTriggerSpec 52, // 123: rill.runtime.v1.RefreshTrigger.state:type_name -> rill.runtime.v1.RefreshTriggerState 10, // 124: rill.runtime.v1.RefreshTriggerSpec.resources:type_name -> rill.runtime.v1.ResourceName 53, // 125: rill.runtime.v1.RefreshTriggerSpec.models:type_name -> rill.runtime.v1.RefreshModelTrigger 55, // 126: rill.runtime.v1.Theme.spec:type_name -> rill.runtime.v1.ThemeSpec 56, // 127: rill.runtime.v1.Theme.state:type_name -> rill.runtime.v1.ThemeState - 98, // 128: rill.runtime.v1.ThemeSpec.primary_color:type_name -> rill.runtime.v1.Color - 98, // 129: rill.runtime.v1.ThemeSpec.secondary_color:type_name -> rill.runtime.v1.Color + 99, // 128: rill.runtime.v1.ThemeSpec.primary_color:type_name -> rill.runtime.v1.Color + 99, // 129: rill.runtime.v1.ThemeSpec.secondary_color:type_name -> rill.runtime.v1.Color 57, // 130: rill.runtime.v1.ThemeSpec.light:type_name -> rill.runtime.v1.ThemeColors 57, // 131: rill.runtime.v1.ThemeSpec.dark:type_name -> rill.runtime.v1.ThemeColors 90, // 132: rill.runtime.v1.ThemeColors.variables:type_name -> rill.runtime.v1.ThemeColors.VariablesEntry 59, // 133: rill.runtime.v1.Component.spec:type_name -> rill.runtime.v1.ComponentSpec 60, // 134: rill.runtime.v1.Component.state:type_name -> rill.runtime.v1.ComponentState - 93, // 135: rill.runtime.v1.ComponentSpec.renderer_properties:type_name -> google.protobuf.Struct + 94, // 135: rill.runtime.v1.ComponentSpec.renderer_properties:type_name -> google.protobuf.Struct 61, // 136: rill.runtime.v1.ComponentSpec.input:type_name -> rill.runtime.v1.ComponentVariable 61, // 137: rill.runtime.v1.ComponentSpec.output:type_name -> rill.runtime.v1.ComponentVariable 59, // 138: rill.runtime.v1.ComponentState.valid_spec:type_name -> rill.runtime.v1.ComponentSpec - 92, // 139: rill.runtime.v1.ComponentState.data_refreshed_on:type_name -> google.protobuf.Timestamp - 99, // 140: rill.runtime.v1.ComponentVariable.default_value:type_name -> google.protobuf.Value + 93, // 139: rill.runtime.v1.ComponentState.data_refreshed_on:type_name -> google.protobuf.Timestamp + 100, // 140: rill.runtime.v1.ComponentVariable.default_value:type_name -> google.protobuf.Value 63, // 141: rill.runtime.v1.Canvas.spec:type_name -> rill.runtime.v1.CanvasSpec 64, // 142: rill.runtime.v1.Canvas.state:type_name -> rill.runtime.v1.CanvasState 55, // 143: rill.runtime.v1.CanvasSpec.embedded_theme:type_name -> rill.runtime.v1.ThemeSpec @@ -9523,42 +9542,43 @@ var file_rill_runtime_v1_resources_proto_depIdxs = []int32{ 61, // 146: rill.runtime.v1.CanvasSpec.variables:type_name -> rill.runtime.v1.ComponentVariable 65, // 147: rill.runtime.v1.CanvasSpec.rows:type_name -> rill.runtime.v1.CanvasRow 23, // 148: rill.runtime.v1.CanvasSpec.security_rules:type_name -> rill.runtime.v1.SecurityRule - 63, // 149: rill.runtime.v1.CanvasState.valid_spec:type_name -> rill.runtime.v1.CanvasSpec - 92, // 150: rill.runtime.v1.CanvasState.data_refreshed_on:type_name -> google.protobuf.Timestamp - 66, // 151: rill.runtime.v1.CanvasRow.items:type_name -> rill.runtime.v1.CanvasItem - 2, // 152: rill.runtime.v1.CanvasPreset.comparison_mode:type_name -> rill.runtime.v1.ExploreComparisonMode - 91, // 153: rill.runtime.v1.CanvasPreset.filter_expr:type_name -> rill.runtime.v1.CanvasPreset.FilterExprEntry - 96, // 154: rill.runtime.v1.DefaultMetricsSQLFilter.expression:type_name -> rill.runtime.v1.Expression - 70, // 155: rill.runtime.v1.API.spec:type_name -> rill.runtime.v1.APISpec - 71, // 156: rill.runtime.v1.API.state:type_name -> rill.runtime.v1.APIState - 93, // 157: rill.runtime.v1.APISpec.resolver_properties:type_name -> google.protobuf.Struct - 23, // 158: rill.runtime.v1.APISpec.security_rules:type_name -> rill.runtime.v1.SecurityRule - 77, // 159: rill.runtime.v1.ParseError.start_location:type_name -> rill.runtime.v1.CharLocation - 79, // 160: rill.runtime.v1.ConnectorV2.spec:type_name -> rill.runtime.v1.ConnectorSpec - 80, // 161: rill.runtime.v1.ConnectorV2.state:type_name -> rill.runtime.v1.ConnectorState - 93, // 162: rill.runtime.v1.ConnectorSpec.properties:type_name -> google.protobuf.Struct - 93, // 163: rill.runtime.v1.ConnectorSpec.provision_args:type_name -> google.protobuf.Struct - 6, // 164: rill.runtime.v1.MetricsViewSpec.Dimension.type:type_name -> rill.runtime.v1.MetricsViewSpec.DimensionType - 95, // 165: rill.runtime.v1.MetricsViewSpec.Dimension.smallest_time_grain:type_name -> rill.runtime.v1.TimeGrain - 100, // 166: rill.runtime.v1.MetricsViewSpec.Dimension.data_type:type_name -> rill.runtime.v1.Type - 95, // 167: rill.runtime.v1.MetricsViewSpec.DimensionSelector.time_grain:type_name -> rill.runtime.v1.TimeGrain - 82, // 168: rill.runtime.v1.MetricsViewSpec.MeasureWindow.order_by:type_name -> rill.runtime.v1.MetricsViewSpec.DimensionSelector - 7, // 169: rill.runtime.v1.MetricsViewSpec.Measure.type:type_name -> rill.runtime.v1.MetricsViewSpec.MeasureType - 83, // 170: rill.runtime.v1.MetricsViewSpec.Measure.window:type_name -> rill.runtime.v1.MetricsViewSpec.MeasureWindow - 82, // 171: rill.runtime.v1.MetricsViewSpec.Measure.per_dimensions:type_name -> rill.runtime.v1.MetricsViewSpec.DimensionSelector - 82, // 172: rill.runtime.v1.MetricsViewSpec.Measure.required_dimensions:type_name -> rill.runtime.v1.MetricsViewSpec.DimensionSelector - 93, // 173: rill.runtime.v1.MetricsViewSpec.Measure.format_d3_locale:type_name -> google.protobuf.Struct - 100, // 174: rill.runtime.v1.MetricsViewSpec.Measure.data_type:type_name -> rill.runtime.v1.Type - 35, // 175: rill.runtime.v1.MetricsViewSpec.Annotation.measures_selector:type_name -> rill.runtime.v1.FieldSelector - 95, // 176: rill.runtime.v1.MetricsViewSpec.Rollup.time_grain:type_name -> rill.runtime.v1.TimeGrain - 35, // 177: rill.runtime.v1.MetricsViewSpec.Rollup.dimensions_selector:type_name -> rill.runtime.v1.FieldSelector - 35, // 178: rill.runtime.v1.MetricsViewSpec.Rollup.measures_selector:type_name -> rill.runtime.v1.FieldSelector - 68, // 179: rill.runtime.v1.CanvasPreset.FilterExprEntry.value:type_name -> rill.runtime.v1.DefaultMetricsSQLFilter - 180, // [180:180] is the sub-list for method output_type - 180, // [180:180] is the sub-list for method input_type - 180, // [180:180] is the sub-list for extension type_name - 180, // [180:180] is the sub-list for extension extendee - 0, // [0:180] is the sub-list for field type_name + 91, // 149: rill.runtime.v1.CanvasSpec.annotations:type_name -> rill.runtime.v1.CanvasSpec.AnnotationsEntry + 63, // 150: rill.runtime.v1.CanvasState.valid_spec:type_name -> rill.runtime.v1.CanvasSpec + 93, // 151: rill.runtime.v1.CanvasState.data_refreshed_on:type_name -> google.protobuf.Timestamp + 66, // 152: rill.runtime.v1.CanvasRow.items:type_name -> rill.runtime.v1.CanvasItem + 2, // 153: rill.runtime.v1.CanvasPreset.comparison_mode:type_name -> rill.runtime.v1.ExploreComparisonMode + 92, // 154: rill.runtime.v1.CanvasPreset.filter_expr:type_name -> rill.runtime.v1.CanvasPreset.FilterExprEntry + 97, // 155: rill.runtime.v1.DefaultMetricsSQLFilter.expression:type_name -> rill.runtime.v1.Expression + 70, // 156: rill.runtime.v1.API.spec:type_name -> rill.runtime.v1.APISpec + 71, // 157: rill.runtime.v1.API.state:type_name -> rill.runtime.v1.APIState + 94, // 158: rill.runtime.v1.APISpec.resolver_properties:type_name -> google.protobuf.Struct + 23, // 159: rill.runtime.v1.APISpec.security_rules:type_name -> rill.runtime.v1.SecurityRule + 77, // 160: rill.runtime.v1.ParseError.start_location:type_name -> rill.runtime.v1.CharLocation + 79, // 161: rill.runtime.v1.ConnectorV2.spec:type_name -> rill.runtime.v1.ConnectorSpec + 80, // 162: rill.runtime.v1.ConnectorV2.state:type_name -> rill.runtime.v1.ConnectorState + 94, // 163: rill.runtime.v1.ConnectorSpec.properties:type_name -> google.protobuf.Struct + 94, // 164: rill.runtime.v1.ConnectorSpec.provision_args:type_name -> google.protobuf.Struct + 6, // 165: rill.runtime.v1.MetricsViewSpec.Dimension.type:type_name -> rill.runtime.v1.MetricsViewSpec.DimensionType + 96, // 166: rill.runtime.v1.MetricsViewSpec.Dimension.smallest_time_grain:type_name -> rill.runtime.v1.TimeGrain + 101, // 167: rill.runtime.v1.MetricsViewSpec.Dimension.data_type:type_name -> rill.runtime.v1.Type + 96, // 168: rill.runtime.v1.MetricsViewSpec.DimensionSelector.time_grain:type_name -> rill.runtime.v1.TimeGrain + 82, // 169: rill.runtime.v1.MetricsViewSpec.MeasureWindow.order_by:type_name -> rill.runtime.v1.MetricsViewSpec.DimensionSelector + 7, // 170: rill.runtime.v1.MetricsViewSpec.Measure.type:type_name -> rill.runtime.v1.MetricsViewSpec.MeasureType + 83, // 171: rill.runtime.v1.MetricsViewSpec.Measure.window:type_name -> rill.runtime.v1.MetricsViewSpec.MeasureWindow + 82, // 172: rill.runtime.v1.MetricsViewSpec.Measure.per_dimensions:type_name -> rill.runtime.v1.MetricsViewSpec.DimensionSelector + 82, // 173: rill.runtime.v1.MetricsViewSpec.Measure.required_dimensions:type_name -> rill.runtime.v1.MetricsViewSpec.DimensionSelector + 94, // 174: rill.runtime.v1.MetricsViewSpec.Measure.format_d3_locale:type_name -> google.protobuf.Struct + 101, // 175: rill.runtime.v1.MetricsViewSpec.Measure.data_type:type_name -> rill.runtime.v1.Type + 35, // 176: rill.runtime.v1.MetricsViewSpec.Annotation.measures_selector:type_name -> rill.runtime.v1.FieldSelector + 96, // 177: rill.runtime.v1.MetricsViewSpec.Rollup.time_grain:type_name -> rill.runtime.v1.TimeGrain + 35, // 178: rill.runtime.v1.MetricsViewSpec.Rollup.dimensions_selector:type_name -> rill.runtime.v1.FieldSelector + 35, // 179: rill.runtime.v1.MetricsViewSpec.Rollup.measures_selector:type_name -> rill.runtime.v1.FieldSelector + 68, // 180: rill.runtime.v1.CanvasPreset.FilterExprEntry.value:type_name -> rill.runtime.v1.DefaultMetricsSQLFilter + 181, // [181:181] is the sub-list for method output_type + 181, // [181:181] is the sub-list for method input_type + 181, // [181:181] is the sub-list for extension type_name + 181, // [181:181] is the sub-list for extension extendee + 0, // [0:181] is the sub-list for field type_name } func init() { file_rill_runtime_v1_resources_proto_init() } @@ -10568,7 +10588,7 @@ func file_rill_runtime_v1_resources_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_rill_runtime_v1_resources_proto_rawDesc, NumEnums: 8, - NumMessages: 84, + NumMessages: 85, NumExtensions: 0, NumServices: 0, }, diff --git a/proto/gen/rill/runtime/v1/resources.pb.validate.go b/proto/gen/rill/runtime/v1/resources.pb.validate.go index 0ca6fee8c2d3..c8dccb8399fb 100644 --- a/proto/gen/rill/runtime/v1/resources.pb.validate.go +++ b/proto/gen/rill/runtime/v1/resources.pb.validate.go @@ -10412,6 +10412,8 @@ func (m *CanvasSpec) validate(all bool) error { } + // no validation rules for Annotations + if len(errors) > 0 { return CanvasSpecMultiError(errors) } diff --git a/proto/gen/rill/runtime/v1/runtime.swagger.yaml b/proto/gen/rill/runtime/v1/runtime.swagger.yaml index 76eb573d644c..429ef19664dd 100644 --- a/proto/gen/rill/runtime/v1/runtime.swagger.yaml +++ b/proto/gen/rill/runtime/v1/runtime.swagger.yaml @@ -4441,6 +4441,11 @@ definitions: items: type: string title: Array of dimension or measure names + annotations: + type: object + additionalProperties: + type: string + description: Annotations are arbitrary key-value pairs that can be used to attach metadata to the canvas (e.g. used to mark personal canvases created by the admin server). v1CanvasState: type: object properties: diff --git a/proto/rill/admin/v1/api.proto b/proto/rill/admin/v1/api.proto index 2d337971b901..18fc8a4e280a 100644 --- a/proto/rill/admin/v1/api.proto +++ b/proto/rill/admin/v1/api.proto @@ -1255,6 +1255,45 @@ service AdminService { }; } + // CreatePersonalVirtualFile creates a personal (owner-only) resource as a virtual file in the project. + rpc CreatePersonalVirtualFile(CreatePersonalVirtualFileRequest) returns (CreatePersonalVirtualFileResponse) { + option (google.api.http) = { + post: "/v1/orgs/{org}/projects/{project}/personal-virtual-files", + body: "*" + }; + } + + // EditPersonalVirtualFile updates the YAML body of a personal virtual file the caller owns. + rpc EditPersonalVirtualFile(EditPersonalVirtualFileRequest) returns (EditPersonalVirtualFileResponse) { + option (google.api.http) = { + put: "/v1/orgs/{org}/projects/{project}/personal-virtual-files/{type}/{name}", + body: "*" + }; + } + + // DeletePersonalVirtualFile deletes a personal virtual file the caller owns. + rpc DeletePersonalVirtualFile(DeletePersonalVirtualFileRequest) returns (DeletePersonalVirtualFileResponse) { + option (google.api.http) = {delete: "/v1/orgs/{org}/projects/{project}/personal-virtual-files/{type}/{name}"}; + } + + // CopyPersonalVirtualFile clones a shared resource (or one of the caller's own personal items) into a new personal virtual file. + rpc CopyPersonalVirtualFile(CopyPersonalVirtualFileRequest) returns (CopyPersonalVirtualFileResponse) { + option (google.api.http) = { + post: "/v1/orgs/{org}/projects/{project}/personal-virtual-files/-/copy", + body: "*" + }; + } + + // GetPersonalVirtualFile returns the YAML body and metadata for a personal virtual file the caller owns. + rpc GetPersonalVirtualFile(GetPersonalVirtualFileRequest) returns (GetPersonalVirtualFileResponse) { + option (google.api.http) = {get: "/v1/orgs/{org}/projects/{project}/personal-virtual-files/{type}/{name}"}; + } + + // ListPersonalVirtualFiles lists the calling user's personal virtual files for the given type. + rpc ListPersonalVirtualFiles(ListPersonalVirtualFilesRequest) returns (ListPersonalVirtualFilesResponse) { + option (google.api.http) = {get: "/v1/orgs/{org}/projects/{project}/personal-virtual-files"}; + } + // GetBillingSubscription lists the subscription for the organization rpc GetBillingSubscription(GetBillingSubscriptionRequest) returns (GetBillingSubscriptionResponse) { option (google.api.http) = {get: "/v1/orgs/{org}/billing/subscriptions"}; @@ -3122,6 +3161,98 @@ message GetAlertYAMLResponse { string yaml = 1; } +// PersonalVirtualFileType enumerates the resource kinds that can be stored as a personal virtual file. +enum PersonalVirtualFileType { + PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED = 0; + PERSONAL_VIRTUAL_FILE_TYPE_CANVAS = 1; +} + +// PersonalVirtualFileSourceKind enumerates the kinds of source resources that CopyPersonalVirtualFile can clone from. +enum PersonalVirtualFileSourceKind { + PERSONAL_VIRTUAL_FILE_SOURCE_KIND_UNSPECIFIED = 0; + // Clone from a shared resource in the project (e.g. a shared canvas dashboard). + PERSONAL_VIRTUAL_FILE_SOURCE_KIND_SHARED = 1; + // Clone from one of the caller's own personal virtual files. + PERSONAL_VIRTUAL_FILE_SOURCE_KIND_PERSONAL = 2; +} + +message PersonalVirtualFileSummary { + string name = 1; + string display_name = 2; + PersonalVirtualFileType type = 3; + google.protobuf.Timestamp updated_on = 4; +} + +message CreatePersonalVirtualFileRequest { + string org = 1; + string project = 2; + PersonalVirtualFileType type = 3 [(validate.rules).enum = {defined_only: true, not_in: [0]}]; + string display_name = 4 [(validate.rules).string.min_len = 1]; + // Optional: initial YAML body. If empty, the server generates a blank template for the given type. + string yaml = 5; +} + +message CreatePersonalVirtualFileResponse { + string name = 1; +} + +message EditPersonalVirtualFileRequest { + string org = 1; + string project = 2; + PersonalVirtualFileType type = 3 [(validate.rules).enum = {defined_only: true, not_in: [0]}]; + string name = 4; + string yaml = 5 [(validate.rules).string.min_len = 1]; +} + +message EditPersonalVirtualFileResponse {} + +message DeletePersonalVirtualFileRequest { + string org = 1; + string project = 2; + PersonalVirtualFileType type = 3 [(validate.rules).enum = {defined_only: true, not_in: [0]}]; + string name = 4; +} + +message DeletePersonalVirtualFileResponse {} + +message CopyPersonalVirtualFileRequest { + string org = 1; + string project = 2; + PersonalVirtualFileType type = 3 [(validate.rules).enum = {defined_only: true, not_in: [0]}]; + PersonalVirtualFileSourceKind source_kind = 4 [(validate.rules).enum = {defined_only: true, not_in: [0]}]; + string source_name = 5 [(validate.rules).string.min_len = 1]; + // Optional: override the display name. If empty, "Copy of " is used. + string display_name = 6; +} + +message CopyPersonalVirtualFileResponse { + string name = 1; +} + +message GetPersonalVirtualFileRequest { + string org = 1; + string project = 2; + PersonalVirtualFileType type = 3 [(validate.rules).enum = {defined_only: true, not_in: [0]}]; + string name = 4; +} + +message GetPersonalVirtualFileResponse { + string name = 1; + string display_name = 2; + string yaml = 3; + google.protobuf.Timestamp updated_on = 4; +} + +message ListPersonalVirtualFilesRequest { + string org = 1; + string project = 2; + PersonalVirtualFileType type = 3 [(validate.rules).enum = {defined_only: true, not_in: [0]}]; +} + +message ListPersonalVirtualFilesResponse { + repeated PersonalVirtualFileSummary files = 1; +} + message GetBillingSubscriptionRequest { string org = 1 [(validate.rules).string.min_len = 1]; bool superuser_force_access = 2; @@ -3444,6 +3575,7 @@ message ProjectPermissions { bool manage_alerts = 14; bool create_bookmarks = 17; bool manage_bookmarks = 18; + bool create_personal_canvases = 23; } message OrganizationRole { diff --git a/proto/rill/runtime/v1/resources.proto b/proto/rill/runtime/v1/resources.proto index 652341bc442a..9e2f7bcf08ae 100644 --- a/proto/rill/runtime/v1/resources.proto +++ b/proto/rill/runtime/v1/resources.proto @@ -872,6 +872,8 @@ message CanvasSpec { repeated SecurityRule security_rules = 6; // Array of dimension or measure names repeated string pinned_filters = 16; + // Annotations are arbitrary key-value pairs that can be used to attach metadata to the canvas (e.g. used to mark personal canvases created by the admin server). + map annotations = 19; } message CanvasState { diff --git a/runtime/ai/ai.go b/runtime/ai/ai.go index 00c27a5b4250..4a6a79a75f04 100644 --- a/runtime/ai/ai.go +++ b/runtime/ai/ai.go @@ -76,6 +76,8 @@ func NewRunner(rt *runtime.Runtime, activity *activity.Client) *Runner { RegisterTool(r, &ListBuckets{Runtime: rt}) RegisterTool(r, &ListBucketObjects{Runtime: rt}) + RegisterTool(r, &CreatePersonalCanvas{Runtime: rt}) + RegisterTool(r, &Navigate{}) return r diff --git a/runtime/ai/personal_canvas.go b/runtime/ai/personal_canvas.go new file mode 100644 index 000000000000..fa40db676da4 --- /dev/null +++ b/runtime/ai/personal_canvas.go @@ -0,0 +1,193 @@ +package ai + +import ( + "context" + "fmt" + "path" + "regexp" + "strings" + "time" + + "github.com/google/uuid" + "github.com/modelcontextprotocol/go-sdk/mcp" + "github.com/rilldata/rill/runtime" + "gopkg.in/yaml.v3" +) + +// CreatePersonalCanvasName is the MCP tool identifier surfaced to the model. +const CreatePersonalCanvasName = "create_personal_canvas" + +// CreatePersonalCanvas is an AI tool that creates a personal canvas dashboard for the current user. +// The canvas is stored under "personal/canvases/{user_id}/{slug}.yaml" with owner-only access. +// +// In Rill Developer the runtime writes directly to the project repo. In Rill Cloud the runtime is +// not directly editable by viewers; for cloud, callers use the dedicated admin RPC +// (CreatePersonalVirtualFile) and the in-app dialog rather than this tool. +type CreatePersonalCanvas struct { + Runtime *runtime.Runtime +} + +var _ Tool[*CreatePersonalCanvasArgs, *CreatePersonalCanvasResult] = (*CreatePersonalCanvas)(nil) + +type CreatePersonalCanvasArgs struct { + DisplayName string `json:"display_name" jsonschema:"Human-readable display name for the canvas."` + YAML string `json:"yaml,omitempty" jsonschema:"Optional canvas YAML body. If omitted, a blank canvas is created. The 'type: canvas' field is required."` +} + +type CreatePersonalCanvasResult struct { + Name string `json:"name" jsonschema:"The generated canvas resource name."` + DisplayName string `json:"display_name" jsonschema:"The display name of the created canvas."` + Path string `json:"path" jsonschema:"The virtual file path the canvas was written to."` +} + +func (t *CreatePersonalCanvas) Spec() *mcp.Tool { + return &mcp.Tool{ + Name: CreatePersonalCanvasName, + Title: "Create personal canvas", + Description: "Creates a personal canvas dashboard that is only visible to the calling user. The canvas is stored as a virtual file scoped to the user's identity. Use this when the user asks the assistant to build or generate a personal/private dashboard for themselves.", + Annotations: &mcp.ToolAnnotations{ + DestructiveHint: boolPtr(false), + IdempotentHint: false, + OpenWorldHint: boolPtr(false), + ReadOnlyHint: false, + }, + Meta: map[string]any{ + "openai/toolInvocation/invoking": "Creating personal canvas...", + "openai/toolInvocation/invoked": "Created personal canvas", + }, + } +} + +func (t *CreatePersonalCanvas) CheckAccess(ctx context.Context) (bool, error) { + s := GetSession(ctx) + if !s.Claims().Can(runtime.UseAI) { + return false, nil + } + + // The tool writes a YAML file to the project, which requires EditRepo today. + // In Rill Developer the local user has EditRepo; in Rill Cloud viewers do not, and cloud + // creation routes through the admin RPC + UI instead. + if !s.Claims().Can(runtime.EditRepo) { + return false, nil + } + + // Must have a user identity to attribute ownership. + if userID, _ := s.Claims().UserAttributes["id"].(string); userID == "" && !s.Claims().SkipChecks { + return false, nil + } + + ff, err := t.Runtime.FeatureFlags(ctx, s.InstanceID(), s.Claims()) + if err != nil { + return false, err + } + return ff["personal_canvases"], nil +} + +func (t *CreatePersonalCanvas) Handler(ctx context.Context, args *CreatePersonalCanvasArgs) (*CreatePersonalCanvasResult, error) { + s := GetSession(ctx) + + displayName := strings.TrimSpace(args.DisplayName) + if displayName == "" { + return nil, fmt.Errorf("display_name is required") + } + + ownerID, _ := s.Claims().UserAttributes["id"].(string) + if ownerID == "" { + ownerID = "local" // Rill Developer fallback + } + + var body []byte + var err error + if args.YAML != "" { + body, err = sanitizePersonalCanvasYAML([]byte(args.YAML), displayName, ownerID) + if err != nil { + return nil, fmt.Errorf("invalid YAML: %w", err) + } + } else { + body, err = blankPersonalCanvasYAML(displayName, ownerID) + if err != nil { + return nil, fmt.Errorf("failed to build blank canvas: %w", err) + } + } + + name := randomPersonalCanvasName(displayName) + filePath := personalCanvasPath(ownerID, name) + + err = t.Runtime.PutFile(ctx, s.InstanceID(), filePath, strings.NewReader(string(body)), true, true) + if err != nil { + return nil, fmt.Errorf("failed to write personal canvas: %w", err) + } + + return &CreatePersonalCanvasResult{ + Name: name, + DisplayName: displayName, + Path: filePath, + }, nil +} + +// sanitizePersonalCanvasYAML decodes the agent-provided YAML, enforces type=canvas, sets the +// display name, and injects owner-only annotations. +func sanitizePersonalCanvasYAML(data []byte, displayName, ownerID string) ([]byte, error) { + var doc map[string]any + if err := yaml.Unmarshal(data, &doc); err != nil { + return nil, err + } + if doc == nil { + doc = map[string]any{} + } + + docType, _ := doc["type"].(string) + if docType != "" && docType != "canvas" { + return nil, fmt.Errorf("type must be canvas, got %q", docType) + } + doc["type"] = "canvas" + + if displayName != "" { + doc["display_name"] = displayName + } + + annotations, _ := doc["annotations"].(map[string]any) + if annotations == nil { + annotations = map[string]any{} + } + annotations["admin_owner_user_id"] = ownerID + annotations["admin_managed"] = true + annotations["admin_nonce"] = time.Now().Format(time.RFC3339Nano) + doc["annotations"] = annotations + + return yaml.Marshal(doc) +} + +// blankPersonalCanvasYAML returns a minimal canvas YAML for a new personal canvas. +func blankPersonalCanvasYAML(displayName, ownerID string) ([]byte, error) { + doc := map[string]any{ + "type": "canvas", + "display_name": displayName, + "annotations": map[string]any{ + "admin_owner_user_id": ownerID, + "admin_managed": true, + "admin_nonce": time.Now().Format(time.RFC3339Nano), + }, + "rows": []any{}, + } + return yaml.Marshal(doc) +} + +func personalCanvasPath(ownerID, name string) string { + return "/" + path.Join("personal", "canvases", ownerID, name+".yaml") +} + +var personalCanvasDashCharsRegexp = regexp.MustCompile(`[ _]+`) + +var personalCanvasExcludeCharsRegexp = regexp.MustCompile(`[^a-zA-Z0-9-]+`) + +func randomPersonalCanvasName(displayName string) string { + name := personalCanvasDashCharsRegexp.ReplaceAllString(displayName, "-") + name = personalCanvasExcludeCharsRegexp.ReplaceAllString(name, "") + name = strings.ToLower(name) + name = strings.Trim(name, "-") + if name == "" { + return uuid.New().String() + } + return name + "-" + uuid.New().String()[0:8] +} diff --git a/runtime/feature_flags.go b/runtime/feature_flags.go index ae9f148f9567..d1e6f19631e3 100644 --- a/runtime/feature_flags.go +++ b/runtime/feature_flags.go @@ -64,6 +64,8 @@ var defaultFeatureFlags = map[string]string{ "cloud_editing": "true", // Controls visibility of the custom chart option in canvas dashboards "custom_charts": "false", + // Controls visibility of the personal canvas feature (per-user owner-only canvases stored as virtual files) + "personal_canvases": "false", } // ResolveFeatureFlags resolves feature flags for the given instance and the provided user attributes. diff --git a/runtime/parser/parse_canvas.go b/runtime/parser/parse_canvas.go index 7630a049dfec..376e506287d6 100644 --- a/runtime/parser/parse_canvas.go +++ b/runtime/parser/parse_canvas.go @@ -48,7 +48,8 @@ type CanvasYAML struct { InlineComponent map[string]yaml.Node `yaml:",inline"` // Any other properties are considered an inline component definition } `yaml:"items"` } - Security *SecurityPolicyYAML `yaml:"security"` + Security *SecurityPolicyYAML `yaml:"security"` + Annotations map[string]string `yaml:"annotations"` } func (p *Parser) parseCanvas(node *Node) error { @@ -288,6 +289,7 @@ func (p *Parser) parseCanvas(node *Node) error { r.CanvasSpec.Rows = rows r.CanvasSpec.SecurityRules = rules r.CanvasSpec.PinnedFilters = tmp.Filters.Pinned + r.CanvasSpec.Annotations = tmp.Annotations // Track inline components for _, def := range inlineComponentDefs { diff --git a/runtime/security.go b/runtime/security.go index 6e26712f91f7..aa8dadf84e39 100644 --- a/runtime/security.go +++ b/runtime/security.go @@ -8,6 +8,7 @@ import ( "errors" "fmt" "slices" + "strconv" "strings" "sync" @@ -364,13 +365,20 @@ func (p *securityEngine) resolveRules(claims *SecurityClaims, rules []*runtimev1 // Everyone can access a component. case ResourceKindComponent: rules = append(rules, allowAccessRule) - // Determine access using the canvas' security rules. If there are none, then everyone can access it. + // Determine access using the canvas' security rules. If there are none, then everyone can access it, + // unless the canvas is admin-managed (e.g. a personal canvas) in which case only the owner and admins can access it. case ResourceKindCanvas: spec := r.GetCanvas().State.ValidSpec if spec == nil { spec = r.GetCanvas().Spec // Not ideal, but better than giving access to the full resource } - if len(spec.SecurityRules) == 0 { + if isAdminManagedAnnotations(spec.Annotations) { + // Personal / admin-managed canvas: only owner and admins can access. No default-allow fallthrough. + rule := p.builtInCanvasSecurityRule(r.Meta.Name, spec, claims) + if rule != nil { + rules = append([]*runtimev1.SecurityRule{rule}, rules...) + } + } else if len(spec.SecurityRules) == 0 { rules = append(rules, allowAccessRule) } else { rules = append(rules, spec.SecurityRules...) @@ -569,6 +577,52 @@ func (p *securityEngine) builtInReportSecurityRule(reportRes *runtimev1.Resource } } +// isAdminManagedAnnotations returns true if the resource annotations indicate it is admin-managed +// (i.e. created by the admin server via the personal virtual file APIs). +func isAdminManagedAnnotations(annotations map[string]string) bool { + if annotations == nil { + return false + } + v, _ := strconv.ParseBool(annotations["admin_managed"]) + return v +} + +// builtInCanvasSecurityRule returns a built-in security rule to apply to an admin-managed canvas. +// Returns nil if the caller is not an admin and not the owner, so the caller of resolveRules treats it as a deny. +func (p *securityEngine) builtInCanvasSecurityRule(canvasRes *runtimev1.ResourceName, spec *runtimev1.CanvasSpec, claims *SecurityClaims) *runtimev1.SecurityRule { + // Allow if the user is an admin + if claims.Admin() { + return &runtimev1.SecurityRule{ + Rule: &runtimev1.SecurityRule_Access{ + Access: &runtimev1.SecurityRuleAccess{ + Allow: true, + ConditionResources: []*runtimev1.ResourceName{canvasRes}, + }, + }, + } + } + + // Extract the calling user id + var userID string + if len(claims.UserAttributes) != 0 { + userID, _ = claims.UserAttributes["id"].(string) + } + + // Allow if the calling user is the owner + if spec.Annotations != nil && userID != "" && userID == spec.Annotations["admin_owner_user_id"] { + return &runtimev1.SecurityRule{ + Rule: &runtimev1.SecurityRule_Access{ + Access: &runtimev1.SecurityRuleAccess{ + Allow: true, + ConditionResources: []*runtimev1.ResourceName{canvasRes}, + }, + }, + } + } + + return nil +} + // applySecurityRuleAccess applies an access rule to the resolved security. func (p *securityEngine) applySecurityRuleAccess(res *ResolvedSecurity, r *runtimev1.Resource, rule *runtimev1.SecurityRuleAccess, td parser.TemplateData) error { // If already explicitly denied, do nothing (explicit denies take precedence over explicit allows) diff --git a/web-admin/src/client/gen/default/default.ts b/web-admin/src/client/gen/default/default.ts index 97ff57a85f1f..9cc7749ca9c4 100644 --- a/web-admin/src/client/gen/default/default.ts +++ b/web-admin/src/client/gen/default/default.ts @@ -30,11 +30,13 @@ import type { AdminServiceAddProjectMemberUserBody, AdminServiceCancelBillingSubscriptionParams, AdminServiceConnectProjectToGithubBody, + AdminServiceCopyPersonalVirtualFileBody, AdminServiceCreateAlertBodyBody, AdminServiceCreateAssetBody, AdminServiceCreateDeploymentBody, AdminServiceCreateGithubPullRequestBody, AdminServiceCreateManagedGitRepoBody, + AdminServiceCreatePersonalVirtualFileBody, AdminServiceCreateProjectBody, AdminServiceCreateProjectWhitelistedDomainBodyBody, AdminServiceCreateReportBodyBody, @@ -42,6 +44,7 @@ import type { AdminServiceCreateUsergroupBody, AdminServiceDeleteUserParams, AdminServiceDeleteVirtualFileParams, + AdminServiceEditPersonalVirtualFileBody, AdminServiceGetAlertMetaBody, AdminServiceGetBillingCreditBalanceParams, AdminServiceGetBillingSubscriptionParams, @@ -69,6 +72,7 @@ import type { AdminServiceListOrganizationMemberUsergroupsParams, AdminServiceListOrganizationMemberUsersParams, AdminServiceListOrganizationsParams, + AdminServiceListPersonalVirtualFilesParams, AdminServiceListProjectInvitesParams, AdminServiceListProjectMemberUsergroupsParams, AdminServiceListProjectMemberUsersParams, @@ -112,6 +116,7 @@ import type { V1CompleteRequest, V1CompleteResponse, V1ConnectProjectToGithubResponse, + V1CopyPersonalVirtualFileResponse, V1CreateAlertResponse, V1CreateAssetResponse, V1CreateBookmarkRequest, @@ -121,6 +126,7 @@ import type { V1CreateManagedGitRepoResponse, V1CreateOrganizationRequest, V1CreateOrganizationResponse, + V1CreatePersonalVirtualFileResponse, V1CreateProjectResponse, V1CreateProjectWhitelistedDomainResponse, V1CreateReportResponse, @@ -130,6 +136,7 @@ import type { V1DeleteAlertResponse, V1DeleteDeploymentResponse, V1DeleteOrganizationResponse, + V1DeletePersonalVirtualFileResponse, V1DeleteProjectResponse, V1DeleteReportResponse, V1DeleteServiceResponse, @@ -138,6 +145,7 @@ import type { V1DeleteVirtualFileResponse, V1DenyProjectAccessResponse, V1EditAlertResponse, + V1EditPersonalVirtualFileResponse, V1EditReportResponse, V1GenerateAlertYAMLResponse, V1GenerateReportYAMLResponse, @@ -162,6 +170,7 @@ import type { V1GetOrganizationNameForDomainResponse, V1GetOrganizationResponse, V1GetPaymentsPortalURLResponse, + V1GetPersonalVirtualFileResponse, V1GetProjectAccessRequestResponse, V1GetProjectByIDResponse, V1GetProjectMemberUserResponse, @@ -189,6 +198,7 @@ import type { V1ListOrganizationMemberUsergroupsResponse, V1ListOrganizationMemberUsersResponse, V1ListOrganizationsResponse, + V1ListPersonalVirtualFilesResponse, V1ListProjectInvitesResponse, V1ListProjectMemberServicesResponse, V1ListProjectMemberUsergroupsResponse, @@ -7038,6 +7048,716 @@ export function createAdminServiceListUsergroupsForProjectAndUser< return query; } +/** + * @summary ListPersonalVirtualFiles lists the calling user's personal virtual files for the given type. + */ +export const adminServiceListPersonalVirtualFiles = ( + org: string, + project: string, + params?: AdminServiceListPersonalVirtualFilesParams, + signal?: AbortSignal, +) => { + return httpClient({ + url: `/v1/orgs/${org}/projects/${project}/personal-virtual-files`, + method: "GET", + params, + signal, + }); +}; + +export const getAdminServiceListPersonalVirtualFilesQueryKey = ( + org?: string, + project?: string, + params?: AdminServiceListPersonalVirtualFilesParams, +) => { + return [ + `/v1/orgs/${org}/projects/${project}/personal-virtual-files`, + ...(params ? [params] : []), + ] as const; +}; + +export const getAdminServiceListPersonalVirtualFilesQueryOptions = < + TData = Awaited>, + TError = RpcStatus, +>( + org: string, + project: string, + params?: AdminServiceListPersonalVirtualFilesParams, + options?: { + query?: Partial< + CreateQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? + getAdminServiceListPersonalVirtualFilesQueryKey(org, project, params); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => + adminServiceListPersonalVirtualFiles(org, project, params, signal); + + return { + queryKey, + queryFn, + enabled: !!(org && project), + ...queryOptions, + } as CreateQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type AdminServiceListPersonalVirtualFilesQueryResult = NonNullable< + Awaited> +>; +export type AdminServiceListPersonalVirtualFilesQueryError = RpcStatus; + +/** + * @summary ListPersonalVirtualFiles lists the calling user's personal virtual files for the given type. + */ + +export function createAdminServiceListPersonalVirtualFiles< + TData = Awaited>, + TError = RpcStatus, +>( + org: string, + project: string, + params?: AdminServiceListPersonalVirtualFilesParams, + options?: { + query?: Partial< + CreateQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): CreateQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getAdminServiceListPersonalVirtualFilesQueryOptions( + org, + project, + params, + options, + ); + + const query = createQuery(queryOptions, queryClient) as CreateQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + query.queryKey = queryOptions.queryKey; + + return query; +} + +/** + * @summary CreatePersonalVirtualFile creates a personal (owner-only) resource as a virtual file in the project. + */ +export const adminServiceCreatePersonalVirtualFile = ( + org: string, + project: string, + adminServiceCreatePersonalVirtualFileBody: AdminServiceCreatePersonalVirtualFileBody, + signal?: AbortSignal, +) => { + return httpClient({ + url: `/v1/orgs/${org}/projects/${project}/personal-virtual-files`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: adminServiceCreatePersonalVirtualFileBody, + signal, + }); +}; + +export const getAdminServiceCreatePersonalVirtualFileMutationOptions = < + TError = RpcStatus, + TContext = unknown, +>(options?: { + mutation?: CreateMutationOptions< + Awaited>, + TError, + { + org: string; + project: string; + data: AdminServiceCreatePersonalVirtualFileBody; + }, + TContext + >; +}): CreateMutationOptions< + Awaited>, + TError, + { + org: string; + project: string; + data: AdminServiceCreatePersonalVirtualFileBody; + }, + TContext +> => { + const mutationKey = ["adminServiceCreatePersonalVirtualFile"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { + org: string; + project: string; + data: AdminServiceCreatePersonalVirtualFileBody; + } + > = (props) => { + const { org, project, data } = props ?? {}; + + return adminServiceCreatePersonalVirtualFile(org, project, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type AdminServiceCreatePersonalVirtualFileMutationResult = NonNullable< + Awaited> +>; +export type AdminServiceCreatePersonalVirtualFileMutationBody = + AdminServiceCreatePersonalVirtualFileBody; +export type AdminServiceCreatePersonalVirtualFileMutationError = RpcStatus; + +/** + * @summary CreatePersonalVirtualFile creates a personal (owner-only) resource as a virtual file in the project. + */ +export const createAdminServiceCreatePersonalVirtualFile = < + TError = RpcStatus, + TContext = unknown, +>( + options?: { + mutation?: CreateMutationOptions< + Awaited>, + TError, + { + org: string; + project: string; + data: AdminServiceCreatePersonalVirtualFileBody; + }, + TContext + >; + }, + queryClient?: QueryClient, +): CreateMutationResult< + Awaited>, + TError, + { + org: string; + project: string; + data: AdminServiceCreatePersonalVirtualFileBody; + }, + TContext +> => { + const mutationOptions = + getAdminServiceCreatePersonalVirtualFileMutationOptions(options); + + return createMutation(mutationOptions, queryClient); +}; +/** + * @summary CopyPersonalVirtualFile clones a shared resource (or one of the caller's own personal items) into a new personal virtual file. + */ +export const adminServiceCopyPersonalVirtualFile = ( + org: string, + project: string, + adminServiceCopyPersonalVirtualFileBody: AdminServiceCopyPersonalVirtualFileBody, + signal?: AbortSignal, +) => { + return httpClient({ + url: `/v1/orgs/${org}/projects/${project}/personal-virtual-files/-/copy`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: adminServiceCopyPersonalVirtualFileBody, + signal, + }); +}; + +export const getAdminServiceCopyPersonalVirtualFileMutationOptions = < + TError = RpcStatus, + TContext = unknown, +>(options?: { + mutation?: CreateMutationOptions< + Awaited>, + TError, + { + org: string; + project: string; + data: AdminServiceCopyPersonalVirtualFileBody; + }, + TContext + >; +}): CreateMutationOptions< + Awaited>, + TError, + { + org: string; + project: string; + data: AdminServiceCopyPersonalVirtualFileBody; + }, + TContext +> => { + const mutationKey = ["adminServiceCopyPersonalVirtualFile"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { + org: string; + project: string; + data: AdminServiceCopyPersonalVirtualFileBody; + } + > = (props) => { + const { org, project, data } = props ?? {}; + + return adminServiceCopyPersonalVirtualFile(org, project, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type AdminServiceCopyPersonalVirtualFileMutationResult = NonNullable< + Awaited> +>; +export type AdminServiceCopyPersonalVirtualFileMutationBody = + AdminServiceCopyPersonalVirtualFileBody; +export type AdminServiceCopyPersonalVirtualFileMutationError = RpcStatus; + +/** + * @summary CopyPersonalVirtualFile clones a shared resource (or one of the caller's own personal items) into a new personal virtual file. + */ +export const createAdminServiceCopyPersonalVirtualFile = < + TError = RpcStatus, + TContext = unknown, +>( + options?: { + mutation?: CreateMutationOptions< + Awaited>, + TError, + { + org: string; + project: string; + data: AdminServiceCopyPersonalVirtualFileBody; + }, + TContext + >; + }, + queryClient?: QueryClient, +): CreateMutationResult< + Awaited>, + TError, + { + org: string; + project: string; + data: AdminServiceCopyPersonalVirtualFileBody; + }, + TContext +> => { + const mutationOptions = + getAdminServiceCopyPersonalVirtualFileMutationOptions(options); + + return createMutation(mutationOptions, queryClient); +}; +/** + * @summary GetPersonalVirtualFile returns the YAML body and metadata for a personal virtual file the caller owns. + */ +export const adminServiceGetPersonalVirtualFile = ( + org: string, + project: string, + type: + | "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" + | "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS", + name: string, + signal?: AbortSignal, +) => { + return httpClient({ + url: `/v1/orgs/${org}/projects/${project}/personal-virtual-files/${type}/${name}`, + method: "GET", + signal, + }); +}; + +export const getAdminServiceGetPersonalVirtualFileQueryKey = ( + org?: string, + project?: string, + type?: + | "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" + | "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS", + name?: string, +) => { + return [ + `/v1/orgs/${org}/projects/${project}/personal-virtual-files/${type}/${name}`, + ] as const; +}; + +export const getAdminServiceGetPersonalVirtualFileQueryOptions = < + TData = Awaited>, + TError = RpcStatus, +>( + org: string, + project: string, + type: + | "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" + | "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS", + name: string, + options?: { + query?: Partial< + CreateQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? + getAdminServiceGetPersonalVirtualFileQueryKey(org, project, type, name); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => + adminServiceGetPersonalVirtualFile(org, project, type, name, signal); + + return { + queryKey, + queryFn, + enabled: !!(org && project && type && name), + ...queryOptions, + } as CreateQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type AdminServiceGetPersonalVirtualFileQueryResult = NonNullable< + Awaited> +>; +export type AdminServiceGetPersonalVirtualFileQueryError = RpcStatus; + +/** + * @summary GetPersonalVirtualFile returns the YAML body and metadata for a personal virtual file the caller owns. + */ + +export function createAdminServiceGetPersonalVirtualFile< + TData = Awaited>, + TError = RpcStatus, +>( + org: string, + project: string, + type: + | "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" + | "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS", + name: string, + options?: { + query?: Partial< + CreateQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): CreateQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getAdminServiceGetPersonalVirtualFileQueryOptions( + org, + project, + type, + name, + options, + ); + + const query = createQuery(queryOptions, queryClient) as CreateQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + query.queryKey = queryOptions.queryKey; + + return query; +} + +/** + * @summary DeletePersonalVirtualFile deletes a personal virtual file the caller owns. + */ +export const adminServiceDeletePersonalVirtualFile = ( + org: string, + project: string, + type: + | "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" + | "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS", + name: string, +) => { + return httpClient({ + url: `/v1/orgs/${org}/projects/${project}/personal-virtual-files/${type}/${name}`, + method: "DELETE", + }); +}; + +export const getAdminServiceDeletePersonalVirtualFileMutationOptions = < + TError = RpcStatus, + TContext = unknown, +>(options?: { + mutation?: CreateMutationOptions< + Awaited>, + TError, + { + org: string; + project: string; + type: + | "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" + | "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS"; + name: string; + }, + TContext + >; +}): CreateMutationOptions< + Awaited>, + TError, + { + org: string; + project: string; + type: + | "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" + | "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS"; + name: string; + }, + TContext +> => { + const mutationKey = ["adminServiceDeletePersonalVirtualFile"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { + org: string; + project: string; + type: + | "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" + | "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS"; + name: string; + } + > = (props) => { + const { org, project, type, name } = props ?? {}; + + return adminServiceDeletePersonalVirtualFile(org, project, type, name); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type AdminServiceDeletePersonalVirtualFileMutationResult = NonNullable< + Awaited> +>; + +export type AdminServiceDeletePersonalVirtualFileMutationError = RpcStatus; + +/** + * @summary DeletePersonalVirtualFile deletes a personal virtual file the caller owns. + */ +export const createAdminServiceDeletePersonalVirtualFile = < + TError = RpcStatus, + TContext = unknown, +>( + options?: { + mutation?: CreateMutationOptions< + Awaited>, + TError, + { + org: string; + project: string; + type: + | "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" + | "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS"; + name: string; + }, + TContext + >; + }, + queryClient?: QueryClient, +): CreateMutationResult< + Awaited>, + TError, + { + org: string; + project: string; + type: + | "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" + | "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS"; + name: string; + }, + TContext +> => { + const mutationOptions = + getAdminServiceDeletePersonalVirtualFileMutationOptions(options); + + return createMutation(mutationOptions, queryClient); +}; +/** + * @summary EditPersonalVirtualFile updates the YAML body of a personal virtual file the caller owns. + */ +export const adminServiceEditPersonalVirtualFile = ( + org: string, + project: string, + type: + | "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" + | "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS", + name: string, + adminServiceEditPersonalVirtualFileBody: AdminServiceEditPersonalVirtualFileBody, +) => { + return httpClient({ + url: `/v1/orgs/${org}/projects/${project}/personal-virtual-files/${type}/${name}`, + method: "PUT", + headers: { "Content-Type": "application/json" }, + data: adminServiceEditPersonalVirtualFileBody, + }); +}; + +export const getAdminServiceEditPersonalVirtualFileMutationOptions = < + TError = RpcStatus, + TContext = unknown, +>(options?: { + mutation?: CreateMutationOptions< + Awaited>, + TError, + { + org: string; + project: string; + type: + | "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" + | "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS"; + name: string; + data: AdminServiceEditPersonalVirtualFileBody; + }, + TContext + >; +}): CreateMutationOptions< + Awaited>, + TError, + { + org: string; + project: string; + type: + | "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" + | "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS"; + name: string; + data: AdminServiceEditPersonalVirtualFileBody; + }, + TContext +> => { + const mutationKey = ["adminServiceEditPersonalVirtualFile"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { + org: string; + project: string; + type: + | "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" + | "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS"; + name: string; + data: AdminServiceEditPersonalVirtualFileBody; + } + > = (props) => { + const { org, project, type, name, data } = props ?? {}; + + return adminServiceEditPersonalVirtualFile(org, project, type, name, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type AdminServiceEditPersonalVirtualFileMutationResult = NonNullable< + Awaited> +>; +export type AdminServiceEditPersonalVirtualFileMutationBody = + AdminServiceEditPersonalVirtualFileBody; +export type AdminServiceEditPersonalVirtualFileMutationError = RpcStatus; + +/** + * @summary EditPersonalVirtualFile updates the YAML body of a personal virtual file the caller owns. + */ +export const createAdminServiceEditPersonalVirtualFile = < + TError = RpcStatus, + TContext = unknown, +>( + options?: { + mutation?: CreateMutationOptions< + Awaited>, + TError, + { + org: string; + project: string; + type: + | "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" + | "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS"; + name: string; + data: AdminServiceEditPersonalVirtualFileBody; + }, + TContext + >; + }, + queryClient?: QueryClient, +): CreateMutationResult< + Awaited>, + TError, + { + org: string; + project: string; + type: + | "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" + | "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS"; + name: string; + data: AdminServiceEditPersonalVirtualFileBody; + }, + TContext +> => { + const mutationOptions = + getAdminServiceEditPersonalVirtualFileMutationOptions(options); + + return createMutation(mutationOptions, queryClient); +}; /** * @summary RedeployProject creates a new production deployment for a project. If the project currently has another production deployment, the old deployment will be deprovisioned. diff --git a/web-admin/src/client/gen/index.schemas.ts b/web-admin/src/client/gen/index.schemas.ts index 51ccbac91c80..96723f0bbbcd 100644 --- a/web-admin/src/client/gen/index.schemas.ts +++ b/web-admin/src/client/gen/index.schemas.ts @@ -328,6 +328,10 @@ export interface V1ContentBlock { toolResult?: V1ToolResult; } +export interface V1CopyPersonalVirtualFileResponse { + name?: string; +} + export interface V1CreateAlertResponse { name?: string; } @@ -381,6 +385,10 @@ export interface V1CreateOrganizationResponse { organization?: V1Organization; } +export interface V1CreatePersonalVirtualFileResponse { + name?: string; +} + export interface V1CreateProjectResponse { project?: V1Project; } @@ -417,6 +425,10 @@ export interface V1DeleteOrganizationResponse { [key: string]: unknown; } +export interface V1DeletePersonalVirtualFileResponse { + [key: string]: unknown; +} + export interface V1DeleteProjectResponse { id?: string; } @@ -481,6 +493,10 @@ export interface V1EditAlertResponse { [key: string]: unknown; } +export interface V1EditPersonalVirtualFileResponse { + [key: string]: unknown; +} + export interface V1EditReportResponse { [key: string]: unknown; } @@ -679,6 +695,13 @@ export interface V1GetPaymentsPortalURLResponse { url?: string; } +export interface V1GetPersonalVirtualFileResponse { + name?: string; + displayName?: string; + yaml?: string; + updatedOn?: string; +} + export interface V1GetProjectAccessRequestResponse { email?: string; } @@ -849,6 +872,10 @@ export interface V1ListOrganizationsResponse { nextPageToken?: string; } +export interface V1ListPersonalVirtualFilesResponse { + files?: V1PersonalVirtualFileSummary[]; +} + export interface V1ListProjectInvitesResponse { invites?: V1ProjectInvite[]; nextPageToken?: string; @@ -1070,6 +1097,45 @@ export interface V1OrganizationRole { permissions?: V1OrganizationPermissions; } +/** + * PersonalVirtualFileSourceKind enumerates the kinds of source resources that CopyPersonalVirtualFile can clone from. + + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_SHARED: Clone from a shared resource in the project (e.g. a shared canvas dashboard). + - PERSONAL_VIRTUAL_FILE_SOURCE_KIND_PERSONAL: Clone from one of the caller's own personal virtual files. + */ +export type V1PersonalVirtualFileSourceKind = + (typeof V1PersonalVirtualFileSourceKind)[keyof typeof V1PersonalVirtualFileSourceKind]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const V1PersonalVirtualFileSourceKind = { + PERSONAL_VIRTUAL_FILE_SOURCE_KIND_UNSPECIFIED: + "PERSONAL_VIRTUAL_FILE_SOURCE_KIND_UNSPECIFIED", + PERSONAL_VIRTUAL_FILE_SOURCE_KIND_SHARED: + "PERSONAL_VIRTUAL_FILE_SOURCE_KIND_SHARED", + PERSONAL_VIRTUAL_FILE_SOURCE_KIND_PERSONAL: + "PERSONAL_VIRTUAL_FILE_SOURCE_KIND_PERSONAL", +} as const; + +export interface V1PersonalVirtualFileSummary { + name?: string; + displayName?: string; + type?: V1PersonalVirtualFileType; + updatedOn?: string; +} + +/** + * PersonalVirtualFileType enumerates the resource kinds that can be stored as a personal virtual file. + */ +export type V1PersonalVirtualFileType = + (typeof V1PersonalVirtualFileType)[keyof typeof V1PersonalVirtualFileType]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const V1PersonalVirtualFileType = { + PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED: + "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED", + PERSONAL_VIRTUAL_FILE_TYPE_CANVAS: "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS", +} as const; + export interface V1PingResponse { version?: string; time?: string; @@ -1168,6 +1234,7 @@ export interface V1ProjectPermissions { manageAlerts?: boolean; createBookmarks?: boolean; manageBookmarks?: boolean; + createPersonalCanvases?: boolean; } export interface V1ProjectRole { @@ -2111,6 +2178,39 @@ export type AdminServiceAddProjectMemberUserBody = { resources?: V1ResourceName[]; }; +export type AdminServiceListPersonalVirtualFilesParams = { + type?: AdminServiceListPersonalVirtualFilesType; +}; + +export type AdminServiceListPersonalVirtualFilesType = + (typeof AdminServiceListPersonalVirtualFilesType)[keyof typeof AdminServiceListPersonalVirtualFilesType]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const AdminServiceListPersonalVirtualFilesType = { + PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED: + "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED", + PERSONAL_VIRTUAL_FILE_TYPE_CANVAS: "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS", +} as const; + +export type AdminServiceCreatePersonalVirtualFileBody = { + type?: V1PersonalVirtualFileType; + displayName?: string; + /** Optional: initial YAML body. If empty, the server generates a blank template for the given type. */ + yaml?: string; +}; + +export type AdminServiceCopyPersonalVirtualFileBody = { + type?: V1PersonalVirtualFileType; + sourceKind?: V1PersonalVirtualFileSourceKind; + sourceName?: string; + /** Optional: override the display name. If empty, "Copy of " is used. */ + displayName?: string; +}; + +export type AdminServiceEditPersonalVirtualFileBody = { + yaml?: string; +}; + export type AdminServiceRedeployProjectParams = { superuserForceAccess?: boolean; }; diff --git a/web-admin/src/features/personal-canvases/CreatePersonalCanvasDialog.svelte b/web-admin/src/features/personal-canvases/CreatePersonalCanvasDialog.svelte new file mode 100644 index 000000000000..c7ba53632f58 --- /dev/null +++ b/web-admin/src/features/personal-canvases/CreatePersonalCanvasDialog.svelte @@ -0,0 +1,133 @@ + + + + + + Create personal canvas + + Personal canvases are only visible to you. They live alongside the + project but never sync to git. + + + +
+ + +
+ Start from + + + {#if mode === "copy"} + + {/if} +
+ + {#if error} +

{error}

+ {/if} +
+ + + + + +
+
diff --git a/web-admin/src/features/personal-canvases/PersonalCanvasWorkspace.svelte b/web-admin/src/features/personal-canvases/PersonalCanvasWorkspace.svelte new file mode 100644 index 000000000000..72daf63d29d7 --- /dev/null +++ b/web-admin/src/features/personal-canvases/PersonalCanvasWorkspace.svelte @@ -0,0 +1,229 @@ + + +{#key canvasName} + + + + {#snippet cta()} +
+ {#if ready} + + {/if} + + +
+ {/snippet} +
+ + +
+
+ + {#if selectedView === "code"} + + {:else if selectedView === "viz"} + + + + {/if} + +
+ +
+
+ + + {#if ready} + + {/if} + +
+
+{/key} diff --git a/web-admin/src/features/personal-canvases/PersonalCanvasesList.svelte b/web-admin/src/features/personal-canvases/PersonalCanvasesList.svelte new file mode 100644 index 000000000000..af8038e1b065 --- /dev/null +++ b/web-admin/src/features/personal-canvases/PersonalCanvasesList.svelte @@ -0,0 +1,71 @@ + + +
+
+
+ +

My canvases

+ Only visible to you +
+ +
+ + {#if $query.isLoading} +

Loading...

+ {:else if items.length === 0} +
+

You don't have any personal canvases yet.

+

Create one to explore the project's data your way.

+
+ {:else} + + {/if} +
+ + diff --git a/web-admin/src/features/personal-canvases/VirtualFilePersistence.ts b/web-admin/src/features/personal-canvases/VirtualFilePersistence.ts new file mode 100644 index 000000000000..18e587b6af5b --- /dev/null +++ b/web-admin/src/features/personal-canvases/VirtualFilePersistence.ts @@ -0,0 +1,98 @@ +import { + adminServiceEditPersonalVirtualFile, + adminServiceGetPersonalVirtualFile, +} from "@rilldata/web-admin/client"; +import { FileArtifact } from "@rilldata/web-common/features/entity-management/file-artifact"; +import { ResourceKind } from "@rilldata/web-common/features/entity-management/resource-selectors"; +import type { RuntimeClient } from "@rilldata/web-common/runtime-client/v2"; + +export type PersonalVirtualFileType = "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS"; + +export interface VirtualFilePersistenceOptions { + org: string; + project: string; + type: PersonalVirtualFileType; + /** + * Personal virtual file resource name (the URL-safe slug used by the admin API). + */ + name: string; + /** + * Display name. Used by the editor host to decorate the UI; not required for save. + */ + displayName?: string; +} + +/** + * VirtualFilePersistence reuses FileArtifact for store + lifecycle plumbing, but redirects + * the read and write transports to the admin server's personal virtual file RPCs. + * + * The "path" parameter exists only as a cache key inside FileArtifact. We synthesize a + * stable virtual key from (org, project, type, name) so multiple personal canvases coexist + * without colliding in the query cache. + */ +export class VirtualFilePersistence extends FileArtifact { + private readonly org: string; + private readonly project: string; + private readonly type: PersonalVirtualFileType; + private readonly canvasName: string; + readonly displayName: string | undefined; + + constructor(client: RuntimeClient, opts: VirtualFilePersistenceOptions) { + // Use a virtual path that won't collide with any real project file path. + const virtualPath = `__personal__/${opts.org}/${opts.project}/${opts.type}/${opts.name}.yaml`; + super(client, virtualPath); + this.org = opts.org; + this.project = opts.project; + this.type = opts.type; + this.canvasName = opts.name; + this.displayName = opts.displayName; + + // Bind the runtime resource upfront so getResource()/getParseError() can subscribe to + // the live canvas resource without waiting for inference from the YAML body. + const kind = personalVirtualFileTypeToResourceKind(opts.type); + if (kind) { + this.resourceName.set({ kind, name: opts.name }); + this.inferredResourceKind.set(kind); + } + } + + // Read canonical YAML from the admin server instead of the runtime file repo. + protected async fetchBlob(_invalidate: boolean): Promise { + try { + const response = await adminServiceGetPersonalVirtualFile( + this.org, + this.project, + this.type, + this.canvasName, + ); + return response.yaml ?? ""; + } catch (e) { + console.error("VirtualFilePersistence.fetchBlob failed", e); + return undefined; + } + } + + // Persist edits via the admin EditPersonalVirtualFile RPC. The runtime continues to + // surface the resulting catalog resource for rendering once the admin server triggers + // reconcile. + protected async putBlob(blob: string): Promise { + await adminServiceEditPersonalVirtualFile( + this.org, + this.project, + this.type, + this.canvasName, + { yaml: blob }, + ); + } +} + +function personalVirtualFileTypeToResourceKind( + type: PersonalVirtualFileType, +): ResourceKind | null { + switch (type) { + case "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS": + return ResourceKind.Canvas; + default: + return null; + } +} diff --git a/web-admin/src/features/personal-canvases/selectors.ts b/web-admin/src/features/personal-canvases/selectors.ts new file mode 100644 index 000000000000..86c3f5aeef4d --- /dev/null +++ b/web-admin/src/features/personal-canvases/selectors.ts @@ -0,0 +1,33 @@ +import { + V1PersonalVirtualFileType, + createAdminServiceListPersonalVirtualFiles, + type V1PersonalVirtualFileSummary, +} from "@rilldata/web-admin/client"; +import type { CreateQueryResult } from "@tanstack/svelte-query"; + +export interface PersonalCanvasListResult { + files: V1PersonalVirtualFileSummary[]; +} + +/** + * usePersonalCanvases lists the calling user's personal canvases for a project. + * Returns an empty list when the project has not enabled the feature or the user has no canvases. + */ +export function usePersonalCanvases( + org: string, + project: string, +): CreateQueryResult { + return createAdminServiceListPersonalVirtualFiles( + org, + project, + { + type: V1PersonalVirtualFileType.PERSONAL_VIRTUAL_FILE_TYPE_CANVAS, + }, + { + query: { + enabled: !!org && !!project, + select: (data) => ({ files: data.files ?? [] }), + }, + }, + ); +} diff --git a/web-admin/src/routes/[organization]/[project]/+page.svelte b/web-admin/src/routes/[organization]/[project]/+page.svelte index 14fb72ceb2db..462ea0681ad0 100644 --- a/web-admin/src/routes/[organization]/[project]/+page.svelte +++ b/web-admin/src/routes/[organization]/[project]/+page.svelte @@ -2,13 +2,15 @@ import { page } from "$app/stores"; import ContentContainer from "@rilldata/web-common/components/layout/ContentContainer.svelte"; import DashboardsTable from "@rilldata/web-admin/features/dashboards/listing/DashboardsTable.svelte"; + import { useDashboards } from "@rilldata/web-admin/features/dashboards/listing/selectors"; + import PersonalCanvasesList from "@rilldata/web-admin/features/personal-canvases/PersonalCanvasesList.svelte"; import InlineChat from "@rilldata/web-common/features/chat/layouts/inline/InlineChat.svelte"; import DelayedContent from "@rilldata/web-common/features/entity-management/DelayedContent.svelte"; import { featureFlags } from "@rilldata/web-common/features/feature-flags"; import { createRuntimeServiceGetInstance } from "@rilldata/web-common/runtime-client"; import { useRuntimeClient } from "@rilldata/web-common/runtime-client/v2"; - const { chat } = featureFlags; + const { chat, personalCanvases } = featureFlags; const runtimeClient = useRuntimeClient(); @@ -22,6 +24,15 @@ $instanceQuery.data?.instance?.projectDisplayName || project; $: isLoadingDisplayName = $instanceQuery.isLoading; $: isErrorDisplayName = $instanceQuery.isError; + + // Source list for the "copy from existing" picker in the personal canvas create dialog. + $: dashboardsQuery = useDashboards(runtimeClient); + $: copyableCanvases = ($dashboardsQuery.data ?? []) + .filter((r) => !!r.canvas) + .map((r) => ({ + name: r.meta?.name?.name ?? "", + displayName: r.canvas?.spec?.displayName ?? r.meta?.name?.name ?? "", + })); @@ -76,5 +87,9 @@

Dashboards

+ + {#if $personalCanvases} + + {/if} diff --git a/web-admin/src/routes/[organization]/[project]/-/my-canvases/[name]/+page.svelte b/web-admin/src/routes/[organization]/[project]/-/my-canvases/[name]/+page.svelte new file mode 100644 index 000000000000..32f7f84f5b6c --- /dev/null +++ b/web-admin/src/routes/[organization]/[project]/-/my-canvases/[name]/+page.svelte @@ -0,0 +1,81 @@ + + +{#if mode === "edit"} + {#if persistence} + + {/if} +{:else} +
+
+
+

{displayName}

+ + Personal — only you can see this + +
+ +
+ {#key `${runtimeClient.instanceId}::${canvasName}`} +
+ + + +
+ {/key} +
+{/if} diff --git a/web-admin/src/routes/[organization]/[project]/-/my-canvases/[name]/+page.ts b/web-admin/src/routes/[organization]/[project]/-/my-canvases/[name]/+page.ts new file mode 100644 index 000000000000..9aa69726ad15 --- /dev/null +++ b/web-admin/src/routes/[organization]/[project]/-/my-canvases/[name]/+page.ts @@ -0,0 +1,26 @@ +import { adminServiceGetPersonalVirtualFile } from "@rilldata/web-admin/client"; +import { error } from "@sveltejs/kit"; +import type { PageLoad } from "./$types"; + +export const load: PageLoad = async ({ params, url }) => { + const { organization, project, name } = params; + const mode = url.searchParams.get("mode") === "edit" ? "edit" : "view"; + + try { + const data = await adminServiceGetPersonalVirtualFile( + organization, + project, + "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS", + name, + ); + return { + canvasName: name, + displayName: data.displayName ?? name, + yaml: data.yaml ?? "", + mode, + }; + } catch (e) { + // Either the canvas does not exist or the caller is not the owner. Either way: 404. + throw error(404, "Personal canvas not found"); + } +}; diff --git a/web-common/src/features/entity-management/file-artifact.ts b/web-common/src/features/entity-management/file-artifact.ts index 66620b3e352b..6be567184baf 100644 --- a/web-common/src/features/entity-management/file-artifact.ts +++ b/web-common/src/features/entity-management/file-artifact.ts @@ -145,8 +145,12 @@ export class FileArtifact { this.client = client; } - fetchContent = async (invalidate = false) => { - if (!this.client) return; + // fetchBlob is the persistence hook called by fetchContent. Override in subclasses to read + // the canonical YAML from a different transport (e.g. admin RPC GetPersonalVirtualFile). + protected async fetchBlob( + invalidate: boolean, + ): Promise { + if (!this.client) return undefined; const instanceId = this.client.instanceId; const queryParams = { path: this.path, @@ -160,19 +164,22 @@ export class FileArtifact { > = ({ signal }) => runtimeServiceGetFile(this.client, queryParams, { signal }); - let fetchedContent: string | undefined = undefined; - try { const response = await queryClient.fetchQuery({ queryKey, queryFn, staleTime: Infinity, }); - - fetchedContent = response.blob; + return response.blob; } catch (e) { console.log("FETCH ERROR", e); + return undefined; } + } + + fetchContent = async (invalidate = false) => { + if (!this.client) return; + const fetchedContent = await this.fetchBlob(invalidate); const currentRemoteContent = get(this.remoteContent); const editorContent = get(this.editorContent); @@ -250,6 +257,15 @@ export class FileArtifact { await this.saveContent(get(this.editorContent) ?? ""); }; + // putBlob is the persistence hook called by saveContent. Override in subclasses to redirect + // writes to a different transport (e.g. admin RPCs for personal virtual files in Rill Cloud). + protected async putBlob(blob: string): Promise { + await runtimeServicePutFile(this.client, { + path: this.path, + blob, + }); + } + private saveContent = async (blob: string) => { if (!this.client) return; const instanceId = this.client.instanceId; @@ -267,10 +283,7 @@ export class FileArtifact { try { const fileSavePromise = this.saveState.initiateSave(); - await runtimeServicePutFile(this.client, { - path: this.path, - blob, - }); + await this.putBlob(blob); await fileSavePromise; } catch { diff --git a/web-common/src/features/feature-flags.ts b/web-common/src/features/feature-flags.ts index 02e4dcc2a83a..8172be786108 100644 --- a/web-common/src/features/feature-flags.ts +++ b/web-common/src/features/feature-flags.ts @@ -66,6 +66,7 @@ class FeatureFlags { stickyDashboardState = new FeatureFlag("user", false); cloudEditing = new FeatureFlag("user", false); customCharts = new FeatureFlag("user", false); + personalCanvases = new FeatureFlag("user", false); private flagsUnsub?: () => void; diff --git a/web-common/src/layout/workspace/WorkspaceHeader.svelte b/web-common/src/layout/workspace/WorkspaceHeader.svelte index ab6f9a6e8b73..43d4a5c4c340 100644 --- a/web-common/src/layout/workspace/WorkspaceHeader.svelte +++ b/web-common/src/layout/workspace/WorkspaceHeader.svelte @@ -24,6 +24,7 @@ editable = true, showInspectorToggle = true, showTableToggle = false, + showBreadcrumbs = true, hasUnsavedChanges, filePath, codeToggle = false, @@ -37,6 +38,9 @@ editable?: boolean; showInspectorToggle?: boolean; showTableToggle?: boolean; + // Breadcrumbs reflect the project file tree, which only makes sense in Rill Developer. + // Cloud hosts (e.g. personal canvas editor) should pass false. + showBreadcrumbs?: boolean; hasUnsavedChanges: boolean; filePath: string; codeToggle?: boolean; @@ -65,12 +69,14 @@
-
- -
+ {#if showBreadcrumbs} +
+ +
+ {/if}
diff --git a/web-common/src/proto/gen/rill/admin/v1/api_pb.ts b/web-common/src/proto/gen/rill/admin/v1/api_pb.ts index 80412195db46..cf583b89994b 100644 --- a/web-common/src/proto/gen/rill/admin/v1/api_pb.ts +++ b/web-common/src/proto/gen/rill/admin/v1/api_pb.ts @@ -34,6 +34,60 @@ proto3.util.setEnumType(GithubPermission, "rill.admin.v1.GithubPermission", [ { no: 2, name: "GITHUB_PERMISSION_WRITE" }, ]); +/** + * PersonalVirtualFileType enumerates the resource kinds that can be stored as a personal virtual file. + * + * @generated from enum rill.admin.v1.PersonalVirtualFileType + */ +export enum PersonalVirtualFileType { + /** + * @generated from enum value: PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: PERSONAL_VIRTUAL_FILE_TYPE_CANVAS = 1; + */ + CANVAS = 1, +} +// Retrieve enum metadata with: proto3.getEnumType(PersonalVirtualFileType) +proto3.util.setEnumType(PersonalVirtualFileType, "rill.admin.v1.PersonalVirtualFileType", [ + { no: 0, name: "PERSONAL_VIRTUAL_FILE_TYPE_UNSPECIFIED" }, + { no: 1, name: "PERSONAL_VIRTUAL_FILE_TYPE_CANVAS" }, +]); + +/** + * PersonalVirtualFileSourceKind enumerates the kinds of source resources that CopyPersonalVirtualFile can clone from. + * + * @generated from enum rill.admin.v1.PersonalVirtualFileSourceKind + */ +export enum PersonalVirtualFileSourceKind { + /** + * @generated from enum value: PERSONAL_VIRTUAL_FILE_SOURCE_KIND_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * Clone from a shared resource in the project (e.g. a shared canvas dashboard). + * + * @generated from enum value: PERSONAL_VIRTUAL_FILE_SOURCE_KIND_SHARED = 1; + */ + SHARED = 1, + + /** + * Clone from one of the caller's own personal virtual files. + * + * @generated from enum value: PERSONAL_VIRTUAL_FILE_SOURCE_KIND_PERSONAL = 2; + */ + PERSONAL = 2, +} +// Retrieve enum metadata with: proto3.getEnumType(PersonalVirtualFileSourceKind) +proto3.util.setEnumType(PersonalVirtualFileSourceKind, "rill.admin.v1.PersonalVirtualFileSourceKind", [ + { no: 0, name: "PERSONAL_VIRTUAL_FILE_SOURCE_KIND_UNSPECIFIED" }, + { no: 1, name: "PERSONAL_VIRTUAL_FILE_SOURCE_KIND_SHARED" }, + { no: 2, name: "PERSONAL_VIRTUAL_FILE_SOURCE_KIND_PERSONAL" }, +]); + /** * @generated from enum rill.admin.v1.DeploymentStatus */ @@ -14357,6 +14411,641 @@ export class GetAlertYAMLResponse extends Message { } } +/** + * @generated from message rill.admin.v1.PersonalVirtualFileSummary + */ +export class PersonalVirtualFileSummary extends Message { + /** + * @generated from field: string name = 1; + */ + name = ""; + + /** + * @generated from field: string display_name = 2; + */ + displayName = ""; + + /** + * @generated from field: rill.admin.v1.PersonalVirtualFileType type = 3; + */ + type = PersonalVirtualFileType.UNSPECIFIED; + + /** + * @generated from field: google.protobuf.Timestamp updated_on = 4; + */ + updatedOn?: Timestamp; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.PersonalVirtualFileSummary"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "display_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "type", kind: "enum", T: proto3.getEnumType(PersonalVirtualFileType) }, + { no: 4, name: "updated_on", kind: "message", T: Timestamp }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): PersonalVirtualFileSummary { + return new PersonalVirtualFileSummary().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): PersonalVirtualFileSummary { + return new PersonalVirtualFileSummary().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): PersonalVirtualFileSummary { + return new PersonalVirtualFileSummary().fromJsonString(jsonString, options); + } + + static equals(a: PersonalVirtualFileSummary | PlainMessage | undefined, b: PersonalVirtualFileSummary | PlainMessage | undefined): boolean { + return proto3.util.equals(PersonalVirtualFileSummary, a, b); + } +} + +/** + * @generated from message rill.admin.v1.CreatePersonalVirtualFileRequest + */ +export class CreatePersonalVirtualFileRequest extends Message { + /** + * @generated from field: string org = 1; + */ + org = ""; + + /** + * @generated from field: string project = 2; + */ + project = ""; + + /** + * @generated from field: rill.admin.v1.PersonalVirtualFileType type = 3; + */ + type = PersonalVirtualFileType.UNSPECIFIED; + + /** + * @generated from field: string display_name = 4; + */ + displayName = ""; + + /** + * Optional: initial YAML body. If empty, the server generates a blank template for the given type. + * + * @generated from field: string yaml = 5; + */ + yaml = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.CreatePersonalVirtualFileRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "org", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "project", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "type", kind: "enum", T: proto3.getEnumType(PersonalVirtualFileType) }, + { no: 4, name: "display_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "yaml", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): CreatePersonalVirtualFileRequest { + return new CreatePersonalVirtualFileRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): CreatePersonalVirtualFileRequest { + return new CreatePersonalVirtualFileRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): CreatePersonalVirtualFileRequest { + return new CreatePersonalVirtualFileRequest().fromJsonString(jsonString, options); + } + + static equals(a: CreatePersonalVirtualFileRequest | PlainMessage | undefined, b: CreatePersonalVirtualFileRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(CreatePersonalVirtualFileRequest, a, b); + } +} + +/** + * @generated from message rill.admin.v1.CreatePersonalVirtualFileResponse + */ +export class CreatePersonalVirtualFileResponse extends Message { + /** + * @generated from field: string name = 1; + */ + name = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.CreatePersonalVirtualFileResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): CreatePersonalVirtualFileResponse { + return new CreatePersonalVirtualFileResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): CreatePersonalVirtualFileResponse { + return new CreatePersonalVirtualFileResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): CreatePersonalVirtualFileResponse { + return new CreatePersonalVirtualFileResponse().fromJsonString(jsonString, options); + } + + static equals(a: CreatePersonalVirtualFileResponse | PlainMessage | undefined, b: CreatePersonalVirtualFileResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(CreatePersonalVirtualFileResponse, a, b); + } +} + +/** + * @generated from message rill.admin.v1.EditPersonalVirtualFileRequest + */ +export class EditPersonalVirtualFileRequest extends Message { + /** + * @generated from field: string org = 1; + */ + org = ""; + + /** + * @generated from field: string project = 2; + */ + project = ""; + + /** + * @generated from field: rill.admin.v1.PersonalVirtualFileType type = 3; + */ + type = PersonalVirtualFileType.UNSPECIFIED; + + /** + * @generated from field: string name = 4; + */ + name = ""; + + /** + * @generated from field: string yaml = 5; + */ + yaml = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.EditPersonalVirtualFileRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "org", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "project", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "type", kind: "enum", T: proto3.getEnumType(PersonalVirtualFileType) }, + { no: 4, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "yaml", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): EditPersonalVirtualFileRequest { + return new EditPersonalVirtualFileRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): EditPersonalVirtualFileRequest { + return new EditPersonalVirtualFileRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): EditPersonalVirtualFileRequest { + return new EditPersonalVirtualFileRequest().fromJsonString(jsonString, options); + } + + static equals(a: EditPersonalVirtualFileRequest | PlainMessage | undefined, b: EditPersonalVirtualFileRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(EditPersonalVirtualFileRequest, a, b); + } +} + +/** + * @generated from message rill.admin.v1.EditPersonalVirtualFileResponse + */ +export class EditPersonalVirtualFileResponse extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.EditPersonalVirtualFileResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): EditPersonalVirtualFileResponse { + return new EditPersonalVirtualFileResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): EditPersonalVirtualFileResponse { + return new EditPersonalVirtualFileResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): EditPersonalVirtualFileResponse { + return new EditPersonalVirtualFileResponse().fromJsonString(jsonString, options); + } + + static equals(a: EditPersonalVirtualFileResponse | PlainMessage | undefined, b: EditPersonalVirtualFileResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(EditPersonalVirtualFileResponse, a, b); + } +} + +/** + * @generated from message rill.admin.v1.DeletePersonalVirtualFileRequest + */ +export class DeletePersonalVirtualFileRequest extends Message { + /** + * @generated from field: string org = 1; + */ + org = ""; + + /** + * @generated from field: string project = 2; + */ + project = ""; + + /** + * @generated from field: rill.admin.v1.PersonalVirtualFileType type = 3; + */ + type = PersonalVirtualFileType.UNSPECIFIED; + + /** + * @generated from field: string name = 4; + */ + name = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.DeletePersonalVirtualFileRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "org", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "project", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "type", kind: "enum", T: proto3.getEnumType(PersonalVirtualFileType) }, + { no: 4, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DeletePersonalVirtualFileRequest { + return new DeletePersonalVirtualFileRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DeletePersonalVirtualFileRequest { + return new DeletePersonalVirtualFileRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DeletePersonalVirtualFileRequest { + return new DeletePersonalVirtualFileRequest().fromJsonString(jsonString, options); + } + + static equals(a: DeletePersonalVirtualFileRequest | PlainMessage | undefined, b: DeletePersonalVirtualFileRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(DeletePersonalVirtualFileRequest, a, b); + } +} + +/** + * @generated from message rill.admin.v1.DeletePersonalVirtualFileResponse + */ +export class DeletePersonalVirtualFileResponse extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.DeletePersonalVirtualFileResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DeletePersonalVirtualFileResponse { + return new DeletePersonalVirtualFileResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DeletePersonalVirtualFileResponse { + return new DeletePersonalVirtualFileResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DeletePersonalVirtualFileResponse { + return new DeletePersonalVirtualFileResponse().fromJsonString(jsonString, options); + } + + static equals(a: DeletePersonalVirtualFileResponse | PlainMessage | undefined, b: DeletePersonalVirtualFileResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(DeletePersonalVirtualFileResponse, a, b); + } +} + +/** + * @generated from message rill.admin.v1.CopyPersonalVirtualFileRequest + */ +export class CopyPersonalVirtualFileRequest extends Message { + /** + * @generated from field: string org = 1; + */ + org = ""; + + /** + * @generated from field: string project = 2; + */ + project = ""; + + /** + * @generated from field: rill.admin.v1.PersonalVirtualFileType type = 3; + */ + type = PersonalVirtualFileType.UNSPECIFIED; + + /** + * @generated from field: rill.admin.v1.PersonalVirtualFileSourceKind source_kind = 4; + */ + sourceKind = PersonalVirtualFileSourceKind.UNSPECIFIED; + + /** + * @generated from field: string source_name = 5; + */ + sourceName = ""; + + /** + * Optional: override the display name. If empty, "Copy of " is used. + * + * @generated from field: string display_name = 6; + */ + displayName = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.CopyPersonalVirtualFileRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "org", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "project", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "type", kind: "enum", T: proto3.getEnumType(PersonalVirtualFileType) }, + { no: 4, name: "source_kind", kind: "enum", T: proto3.getEnumType(PersonalVirtualFileSourceKind) }, + { no: 5, name: "source_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 6, name: "display_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): CopyPersonalVirtualFileRequest { + return new CopyPersonalVirtualFileRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): CopyPersonalVirtualFileRequest { + return new CopyPersonalVirtualFileRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): CopyPersonalVirtualFileRequest { + return new CopyPersonalVirtualFileRequest().fromJsonString(jsonString, options); + } + + static equals(a: CopyPersonalVirtualFileRequest | PlainMessage | undefined, b: CopyPersonalVirtualFileRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(CopyPersonalVirtualFileRequest, a, b); + } +} + +/** + * @generated from message rill.admin.v1.CopyPersonalVirtualFileResponse + */ +export class CopyPersonalVirtualFileResponse extends Message { + /** + * @generated from field: string name = 1; + */ + name = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.CopyPersonalVirtualFileResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): CopyPersonalVirtualFileResponse { + return new CopyPersonalVirtualFileResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): CopyPersonalVirtualFileResponse { + return new CopyPersonalVirtualFileResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): CopyPersonalVirtualFileResponse { + return new CopyPersonalVirtualFileResponse().fromJsonString(jsonString, options); + } + + static equals(a: CopyPersonalVirtualFileResponse | PlainMessage | undefined, b: CopyPersonalVirtualFileResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(CopyPersonalVirtualFileResponse, a, b); + } +} + +/** + * @generated from message rill.admin.v1.GetPersonalVirtualFileRequest + */ +export class GetPersonalVirtualFileRequest extends Message { + /** + * @generated from field: string org = 1; + */ + org = ""; + + /** + * @generated from field: string project = 2; + */ + project = ""; + + /** + * @generated from field: rill.admin.v1.PersonalVirtualFileType type = 3; + */ + type = PersonalVirtualFileType.UNSPECIFIED; + + /** + * @generated from field: string name = 4; + */ + name = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.GetPersonalVirtualFileRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "org", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "project", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "type", kind: "enum", T: proto3.getEnumType(PersonalVirtualFileType) }, + { no: 4, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetPersonalVirtualFileRequest { + return new GetPersonalVirtualFileRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetPersonalVirtualFileRequest { + return new GetPersonalVirtualFileRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetPersonalVirtualFileRequest { + return new GetPersonalVirtualFileRequest().fromJsonString(jsonString, options); + } + + static equals(a: GetPersonalVirtualFileRequest | PlainMessage | undefined, b: GetPersonalVirtualFileRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetPersonalVirtualFileRequest, a, b); + } +} + +/** + * @generated from message rill.admin.v1.GetPersonalVirtualFileResponse + */ +export class GetPersonalVirtualFileResponse extends Message { + /** + * @generated from field: string name = 1; + */ + name = ""; + + /** + * @generated from field: string display_name = 2; + */ + displayName = ""; + + /** + * @generated from field: string yaml = 3; + */ + yaml = ""; + + /** + * @generated from field: google.protobuf.Timestamp updated_on = 4; + */ + updatedOn?: Timestamp; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.GetPersonalVirtualFileResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "display_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "yaml", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "updated_on", kind: "message", T: Timestamp }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetPersonalVirtualFileResponse { + return new GetPersonalVirtualFileResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetPersonalVirtualFileResponse { + return new GetPersonalVirtualFileResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetPersonalVirtualFileResponse { + return new GetPersonalVirtualFileResponse().fromJsonString(jsonString, options); + } + + static equals(a: GetPersonalVirtualFileResponse | PlainMessage | undefined, b: GetPersonalVirtualFileResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(GetPersonalVirtualFileResponse, a, b); + } +} + +/** + * @generated from message rill.admin.v1.ListPersonalVirtualFilesRequest + */ +export class ListPersonalVirtualFilesRequest extends Message { + /** + * @generated from field: string org = 1; + */ + org = ""; + + /** + * @generated from field: string project = 2; + */ + project = ""; + + /** + * @generated from field: rill.admin.v1.PersonalVirtualFileType type = 3; + */ + type = PersonalVirtualFileType.UNSPECIFIED; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.ListPersonalVirtualFilesRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "org", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "project", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "type", kind: "enum", T: proto3.getEnumType(PersonalVirtualFileType) }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListPersonalVirtualFilesRequest { + return new ListPersonalVirtualFilesRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListPersonalVirtualFilesRequest { + return new ListPersonalVirtualFilesRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListPersonalVirtualFilesRequest { + return new ListPersonalVirtualFilesRequest().fromJsonString(jsonString, options); + } + + static equals(a: ListPersonalVirtualFilesRequest | PlainMessage | undefined, b: ListPersonalVirtualFilesRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(ListPersonalVirtualFilesRequest, a, b); + } +} + +/** + * @generated from message rill.admin.v1.ListPersonalVirtualFilesResponse + */ +export class ListPersonalVirtualFilesResponse extends Message { + /** + * @generated from field: repeated rill.admin.v1.PersonalVirtualFileSummary files = 1; + */ + files: PersonalVirtualFileSummary[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.ListPersonalVirtualFilesResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "files", kind: "message", T: PersonalVirtualFileSummary, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListPersonalVirtualFilesResponse { + return new ListPersonalVirtualFilesResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListPersonalVirtualFilesResponse { + return new ListPersonalVirtualFilesResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListPersonalVirtualFilesResponse { + return new ListPersonalVirtualFilesResponse().fromJsonString(jsonString, options); + } + + static equals(a: ListPersonalVirtualFilesResponse | PlainMessage | undefined, b: ListPersonalVirtualFilesResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(ListPersonalVirtualFilesResponse, a, b); + } +} + /** * @generated from message rill.admin.v1.GetBillingSubscriptionRequest */ @@ -16731,6 +17420,11 @@ export class ProjectPermissions extends Message { */ manageBookmarks = false; + /** + * @generated from field: bool create_personal_canvases = 23; + */ + createPersonalCanvases = false; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -16761,6 +17455,7 @@ export class ProjectPermissions extends Message { { no: 14, name: "manage_alerts", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, { no: 17, name: "create_bookmarks", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, { no: 18, name: "manage_bookmarks", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 23, name: "create_personal_canvases", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): ProjectPermissions { diff --git a/web-common/src/proto/gen/rill/runtime/v1/resources_pb.ts b/web-common/src/proto/gen/rill/runtime/v1/resources_pb.ts index 32e1bcf1edfa..9aaa83f7c9bb 100644 --- a/web-common/src/proto/gen/rill/runtime/v1/resources_pb.ts +++ b/web-common/src/proto/gen/rill/runtime/v1/resources_pb.ts @@ -5040,6 +5040,13 @@ export class CanvasSpec extends Message { */ pinnedFilters: string[] = []; + /** + * Annotations are arbitrary key-value pairs that can be used to attach metadata to the canvas (e.g. used to mark personal canvases created by the admin server). + * + * @generated from field: map annotations = 19; + */ + annotations: { [key: string]: string } = {}; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -5064,6 +5071,7 @@ export class CanvasSpec extends Message { { no: 18, name: "rows", kind: "message", T: CanvasRow, repeated: true }, { no: 6, name: "security_rules", kind: "message", T: SecurityRule, repeated: true }, { no: 16, name: "pinned_filters", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 19, name: "annotations", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): CanvasSpec {