From 1314355110add61db51182c397b7fcbc3e15965e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9E=D0=BB=D0=B5=D0=B3=20=D0=91=D0=BE=D1=80=D0=BE=D0=B4?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Sat, 10 Aug 2024 14:46:07 +0200 Subject: [PATCH] certmanager update --- Makefile.am | 41 +- Makefile.in | 41 +- cmd/certmanagerctl/main.go | 85 +- cmd/certmanagerd/.gitignore | 3 - internal/config/path.go | 8 +- internal/database/database.go | 34 +- internal/database/grant.go | 47 +- internal/descriptor/descriptor.go | 12 +- internal/logic/account.go | 58 +- internal/server/server.go | 15 +- pkg/cmctl/cmctl.pb.go | 1489 ++++++++++++++++++----------- pkg/cmctl/cmctl_grpc.pb.go | 74 ++ proto/cmctl.proto | 27 + 13 files changed, 1194 insertions(+), 740 deletions(-) delete mode 100644 cmd/certmanagerd/.gitignore diff --git a/Makefile.am b/Makefile.am index 4413678..01b9c16 100644 --- a/Makefile.am +++ b/Makefile.am @@ -16,49 +16,16 @@ certmanagerd$(EXEEXT): $(certmanagerd_SOURCES) $(EXTRA_certmanagerd_SOURCES) certmanagerctl_SOURCES = cmd/certmanagerctl/main.go \ - cmd/certmanagerctl/servicecli.go \ - cmd/certmanagerctl/issuercli.go + cmd/certmanagerctl/account.go \ + cmd/certmanagerctl/service.go \ + cmd/certmanagerctl/issuer.go \ + cmd/certmanagerctl/grant.go certmanagerctl$(EXEEXT): $(certmanagerctl_SOURCES) $(EXTRA_certmanagerd_SOURCES) env CGO_ENABLED=1 $(GO) build $(GOFLAGS) -o certmanagerctl$(EXEEXT) $(certmanagerctl_SOURCES) EXTRA_certmanagerd_SOURCES = \ - internal/config/config.go \ - internal/database/database.go \ - internal/database/issuer.go \ - internal/database/service.go \ - internal/descriptor/descriptor.go \ - internal/grpc/handler/certman.go \ - internal/grpc/handler/handler.go \ - internal/grpc/handler/status.go \ - internal/grpc/service/service.go \ - internal/logic/auth.go \ - internal/logic/issuer.go \ - internal/logic/logic.go \ - internal/logic/service.go \ - internal/logic/status.go \ - internal/server/server.go \ - internal/wrpc/handler/basauth.go \ - internal/wrpc/handler/handler.go \ - internal/wrpc/handler/status.go \ - internal/wrpc/service/service.go \ - pkg/aux509/x509cert.go \ - pkg/auxgin/corsmw.go \ - pkg/auxgin/logmw.go \ - pkg/auxgin/reqlog.go \ - pkg/auxgin/reslog.go \ - pkg/auxgrpc/error.go \ - pkg/auxhttp/genres.go \ - pkg/auxhttp/getbearer.go \ - pkg/auxhttp/parseauth.go \ - pkg/auxid/genid.go \ - pkg/client/auth.go \ - pkg/client/certman.go \ - pkg/client/control.go \ - pkg/cm509/x509.go \ - pkg/common/common.go \ - pkg/logger/logger.go \ pkg/cmctl/cmctl_grpc.pb.go \ pkg/cmctl/cmctl.pb.go diff --git a/Makefile.in b/Makefile.in index b645931..2b957b4 100644 --- a/Makefile.in +++ b/Makefile.in @@ -298,45 +298,12 @@ BUILD = $(shell date -u '+%Y-%m-%d-%H%M') GOFLAGS = -v -ldflags='-s -w -X helmet/certmanager/internal/config.buildVersion=$(BUILD)' certmanagerd_SOURCES = cmd/certmanagerd/main.go certmanagerctl_SOURCES = cmd/certmanagerctl/main.go \ - cmd/certmanagerctl/servicecli.go \ - cmd/certmanagerctl/issuercli.go + cmd/certmanagerctl/account.go \ + cmd/certmanagerctl/service.go \ + cmd/certmanagerctl/issuer.go \ + cmd/certmanagerctl/grant.go EXTRA_certmanagerd_SOURCES = \ - internal/config/config.go \ - internal/database/database.go \ - internal/database/issuer.go \ - internal/database/service.go \ - internal/descriptor/descriptor.go \ - internal/grpc/handler/certman.go \ - internal/grpc/handler/handler.go \ - internal/grpc/handler/status.go \ - internal/grpc/service/service.go \ - internal/logic/auth.go \ - internal/logic/issuer.go \ - internal/logic/logic.go \ - internal/logic/service.go \ - internal/logic/status.go \ - internal/server/server.go \ - internal/wrpc/handler/basauth.go \ - internal/wrpc/handler/handler.go \ - internal/wrpc/handler/status.go \ - internal/wrpc/service/service.go \ - pkg/aux509/x509cert.go \ - pkg/auxgin/corsmw.go \ - pkg/auxgin/logmw.go \ - pkg/auxgin/reqlog.go \ - pkg/auxgin/reslog.go \ - pkg/auxgrpc/error.go \ - pkg/auxhttp/genres.go \ - pkg/auxhttp/getbearer.go \ - pkg/auxhttp/parseauth.go \ - pkg/auxid/genid.go \ - pkg/client/auth.go \ - pkg/client/certman.go \ - pkg/client/control.go \ - pkg/cm509/x509.go \ - pkg/common/common.go \ - pkg/logger/logger.go \ pkg/cmctl/cmctl_grpc.pb.go \ pkg/cmctl/cmctl.pb.go diff --git a/cmd/certmanagerctl/main.go b/cmd/certmanagerctl/main.go index b8f59b9..b9b6036 100644 --- a/cmd/certmanagerctl/main.go +++ b/cmd/certmanagerctl/main.go @@ -1,5 +1,5 @@ /* - * Copyright 2022 Oleg Borodin + * Copyright 2024 Oleg Borodin */ package main @@ -15,7 +15,7 @@ import ( "time" "certmanager/pkg/client" - cmapi "certmanager/pkg/cmctl" + "certmanager/pkg/cmctl" "sigs.k8s.io/yaml" ) @@ -34,16 +34,20 @@ const ( unrevokeIssuerPairCmd = "unrevokeIssuerPair" listIssuerPairsCmd = "listIssuerPairs" getIssuerCertificateCmd = "getIssuerCertificate" - createServicePairCmd = "createServicePair" - revokeServicePairCmd = "revokeServicePair" - unrevokeServicePairCmd = "unrevokeServicePair" - listServicePairsCmd = "listServicePairs" - getServicePairCmd = "getServicePair" + + createServicePairCmd = "createServicePair" + revokeServicePairCmd = "revokeServicePair" + unrevokeServicePairCmd = "unrevokeServicePair" + listServicePairsCmd = "listServicePairs" + getServicePairCmd = "getServicePair" createAccountCmd = "createAccount" updateAccountCmd = "updateAccount" - deleteAccountCmd = "revokeAccount" + deleteAccountCmd = "deleteAccount" listAccountsCmd = "listAccounts" + + setGrantCmd = "setGrant" + deleteGrantCmd = "deleteGrant" ) func main() { @@ -60,7 +64,7 @@ type Util struct { subCmd string cmdTimeout int64 access client.Access - cont *cmapi.ControlClient + cont *cmctl.ControlClient caFilenamesList string certFilename string @@ -82,6 +86,7 @@ type Util struct { disable bool newUsername string newPassword string + operation string } func NewUtil() *Util { @@ -126,23 +131,27 @@ func (util *Util) GetOpt() error { fmt.Printf("Usage: %s [option] command [command option]\n", exeName) fmt.Printf("\n") fmt.Printf("Command list: help, %s\n", getStatusCmd) - fmt.Printf("Command list: %s, %s, %s, %s, %s, %s\n", + fmt.Printf("Command list: %s, %s, %s, %s, %s, %s,\n", createIssuerPairCmd, importIssuerPairCmd, revokeIssuerPairCmd, unrevokeIssuerPairCmd, listIssuerPairsCmd, getIssuerCertificateCmd) - fmt.Printf("Command list: %s, %s, %s, %s\n", + fmt.Printf(" %s, %s, %s, %s,\n", createServicePairCmd, revokeServicePairCmd, listServicePairsCmd, getServicePairCmd) - fmt.Printf("Command list: %s, %s, %s, %s\n", + fmt.Printf(" %s, %s, %s, %s,\n", createAccountCmd, deleteAccountCmd, listAccountsCmd, updateAccountCmd) + fmt.Printf(" %s, %s\n", + setGrantCmd, + deleteGrantCmd) + fmt.Printf("\n") fmt.Printf("Global options:\n") flag.PrintDefaults() @@ -415,8 +424,8 @@ func (util *Util) GetOpt() error { flagSet.StringVar(&util.username, "username", util.username, "user name") flagSet.Int64Var(&util.accountID, "accountId", util.accountID, "account ID") - flagSet.StringVar(&util.newUsername, "username", util.newUsername, "new user name") - flagSet.StringVar(&util.newPassword, "password", util.newPassword, "new user password") + flagSet.StringVar(&util.newUsername, "newUsername", util.newUsername, "new user name") + flagSet.StringVar(&util.newPassword, "newPassword", util.newPassword, "new user password") flagSet.BoolVar(&util.disable, "disable", util.disable, "disable account") flagSet.Usage = func() { @@ -430,6 +439,42 @@ func (util *Util) GetOpt() error { flagSet.Parse(subArgs) util.subCmd = subCmd + case setGrantCmd: + flagSet := flag.NewFlagSet(setGrantCmd, flag.ExitOnError) + + flagSet.StringVar(&util.username, "username", util.username, "user name") + flagSet.Int64Var(&util.accountID, "accountId", util.accountID, "account ID") + flagSet.StringVar(&util.operation, "operation", util.operation, "grant type") + + flagSet.Usage = func() { + fmt.Printf("\n") + fmt.Printf("Usage: %s [global options] %s [command options]\n", exeName, subCmd) + fmt.Printf("\n") + fmt.Printf("The command options: none\n") + flagSet.PrintDefaults() + fmt.Printf("\n") + } + flagSet.Parse(subArgs) + util.subCmd = subCmd + + case deleteGrantCmd: + flagSet := flag.NewFlagSet(deleteGrantCmd, flag.ExitOnError) + + flagSet.StringVar(&util.username, "username", util.username, "user name") + flagSet.Int64Var(&util.accountID, "accountId", util.accountID, "account ID") + flagSet.StringVar(&util.operation, "operation", util.operation, "grant type") + + flagSet.Usage = func() { + fmt.Printf("\n") + fmt.Printf("Usage: %s [global options] %s [command options]\n", exeName, subCmd) + fmt.Printf("\n") + fmt.Printf("The command options: none\n") + flagSet.PrintDefaults() + fmt.Printf("\n") + } + flagSet.Parse(subArgs) + util.subCmd = subCmd + default: help() return errors.New("Unknown command") @@ -470,6 +515,7 @@ func (util *Util) Exec() error { res, err = util.ListIssuerPairs(ctx) case getIssuerCertificateCmd: res, err = util.GetIssuerCertificate(ctx) + case createServicePairCmd: res, err = util.CreateServicePair(ctx) case revokeServicePairCmd: @@ -490,6 +536,11 @@ func (util *Util) Exec() error { case deleteAccountCmd: res, err = util.DeleteAccount(ctx) + case setGrantCmd: + res, err = util.SetGrant(ctx) + case deleteGrantCmd: + res, err = util.DeleteGrant(ctx) + default: err = errors.New("Unknown cli command") } @@ -507,14 +558,14 @@ func (util *Util) Exec() error { return err } -func (util *Util) GetStatus(ctx context.Context) (*cmapi.GetStatusResult, error) { +func (util *Util) GetStatus(ctx context.Context) (*cmctl.GetStatusResult, error) { var err error - res := &cmapi.GetStatusResult{} + res := &cmctl.GetStatusResult{} cont, err := client.NewClient(&util.access) if err != nil { return res, err } - params := &cmapi.GetStatusParams{} + params := &cmctl.GetStatusParams{} res, err = cont.GetStatus(ctx, params) if err != nil { return res, err diff --git a/cmd/certmanagerd/.gitignore b/cmd/certmanagerd/.gitignore deleted file mode 100644 index f51cc50..0000000 --- a/cmd/certmanagerd/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -~* -lbmanagerd* -main \ No newline at end of file diff --git a/internal/config/path.go b/internal/config/path.go index a96ee01..df56554 100644 --- a/internal/config/path.go +++ b/internal/config/path.go @@ -1,8 +1,8 @@ package config const ( - confdirPath = "/usr/local/etc/certmanager" - rundirPath = "/var/run/certmanager" - logdirPath = "/var/log/certmanager" - datadirPath = "/var/data/certmanager" + confdirPath = "/home/ziggi/Projects/certman/etc/certmanager" + rundirPath = "/home/ziggi/Projects/certman/tmp/run" + logdirPath = "/home/ziggi/Projects/certman/tmp/log" + datadirPath = "/home/ziggi/Projects/certman/tmp/data" ) diff --git a/internal/database/database.go b/internal/database/database.go index 8b93a75..a09b1ab 100644 --- a/internal/database/database.go +++ b/internal/database/database.go @@ -11,7 +11,7 @@ import ( ) const schema = ` - DROP TABLE IF EXISTS issuer; + --- DROP TABLE IF EXISTS issuer; CREATE TABLE IF NOT EXISTS issuer ( id INT NOT NULL, name TEXT NOT NULL, @@ -21,10 +21,12 @@ const schema = ` signer_name TEXT NOT NULL, revoked BOOL ); - CREATE INDEX IF NOT EXISTS issuer_index - ON issuer(id, name); + CREATE UNIQUE INDEX IF NOT EXISTS issuer_index01 + ON issuer(id); + CREATE UNIQUE INDEX IF NOT EXISTS issuer_index02 + ON issuer(name); - DROP TABLE IF EXISTS service; + --- DROP TABLE IF EXISTS service; CREATE TABLE IF NOT EXISTS service ( id INT NOT NULL, issuer_id INT NOT NULL, @@ -34,10 +36,12 @@ const schema = ` key TEXT NOT NULL, revoked BOOL ); - CREATE INDEX IF NOT EXISTS service_index - ON issuer(id, name); + CREATE UNIQUE INDEX IF NOT EXISTS service_index01 + ON service(id); + CREATE UNIQUE INDEX IF NOT EXISTS service_index02 + ON service(name); - DROP TABLE IF EXISTS account; + --- DROP TABLE IF EXISTS account; CREATE TABLE IF NOT EXISTS account ( id INT NOT NULL, username TEXT NOT NULL, @@ -46,14 +50,24 @@ const schema = ` updated_at TEXT NOT NULL, disabled BOOL ); + CREATE UNIQUE INDEX IF NOT EXISTS account_index01 + ON account(id); + CREATE UNIQUE INDEX IF NOT EXISTS account_index02 + ON account(username); - DROP TABLE IF EXISTS grant; + + --- DROP TABLE IF EXISTS grant; CREATE TABLE IF NOT EXISTS grant ( id INT NOT NULL, account_id INT NOT NULL, operation TEXT NOT NULL, - subject_id INT NOT NULL + created_at TEXT NOT NULL ); + CREATE INDEX IF NOT EXISTS grant_index01 + ON grant(account_id); + CREATE UNIQUE INDEX IF NOT EXISTS grant_index02 + ON grant(account_id, operation); + ` type Database struct { @@ -98,6 +112,8 @@ func (db *Database) CleanDatabase(ctx context.Context) error { request := ` DELETE FROM issuer; DELETE FROM service; + DELETE FROM user; + DELETE FROM grant; ` _, err = db.db.Exec(request) if err != nil { diff --git a/internal/database/grant.go b/internal/database/grant.go index 181f3f1..8199f53 100644 --- a/internal/database/grant.go +++ b/internal/database/grant.go @@ -8,19 +8,11 @@ import ( _ "github.com/mattn/go-sqlite3" ) -//type Grant struct { -//ID int64 `json:"id" yaml:"id" db:"id"` -//AccountID int64 `json:"accountID" yaml:"accountID" db:"account_id"` -//Operation string `json:"operation" yaml:"operation" db:"operation"` -//SubjectID int64 `json:"subjectID" yaml:"subjectID" db:"subjectID"` -//} - func (db *Database) InsertGrant(ctx context.Context, grant *descriptor.Grant) error { var err error - request := `INSERT INTO grant(id, account_id, operation, subject_id) + request := `INSERT INTO grant(id, account_id, operation, created_at) VALUES ($1, $2, $3, $4)` - _, err = db.db.Exec(request, grant.ID, grant.AccountID, grant.Operation, - grant.SubjectID) + _, err = db.db.Exec(request, grant.ID, grant.AccountID, grant.Operation, grant.CreatedAt) if err != nil { return err } @@ -29,7 +21,7 @@ func (db *Database) InsertGrant(ctx context.Context, grant *descriptor.Grant) er func (db *Database) ListGrantsByAccountID(ctx context.Context, accountID int64) ([]descriptor.Grant, error) { var err error - request := `SELECT * FROM grant WHERE ` + request := `SELECT * FROM grant WHERE account_id = $1` res := make([]descriptor.Grant, 0) err = db.db.Select(&res, request, accountID) if err != nil { @@ -38,40 +30,37 @@ func (db *Database) ListGrantsByAccountID(ctx context.Context, accountID int64) return res, err } -func (db *Database) GetGrant(ctx context.Context, accountID, subjectID int64) (bool, []*descriptor.Grant, error) { +func (db *Database) GetGrant(ctx context.Context, accountID int64, operation string) (bool, *descriptor.Grant, error) { var err error - var res []*descriptor.Grant - var exists bool - request := `SELECT id, operation, grant_id, subject_id FROM grant - WHERE account_id = $1 - AND subject_id = $1` - dbRes := make([]*descriptor.Grant, 0) - err = db.db.Select(&dbRes, request, accountID, subjectID) + res := &descriptor.Grant{} + request := `SELECT * FROM grant WHERE account_id = $1 AND operation = $2 LIMIT 1` + dbRes := make([]descriptor.Grant, 0) + err = db.db.Select(&dbRes, request, accountID, operation) if err != nil { - return exists, res, err + return false, res, err } if len(dbRes) == 0 { return false, res, err + } - exists = true - res = dbRes - return exists, res, err + res = &dbRes[0] + return true, res, err } -func (db *Database) DeleteGrantByAccountID(ctx context.Context, grantID int64) error { +func (db *Database) DeleteGrantByAccountID(ctx context.Context, grantID int64, operation string) error { var err error - request := `DELETE FROM grant WHERE grant_id = $1` - _, err = db.db.Exec(request, grantID) + request := `DELETE FROM grant WHERE account_id = $1 AND operation = $2` + _, err = db.db.Exec(request, grantID, operation) if err != nil { return err } return err } -func (db *Database) DeleteGrantsBySubjectID(ctx context.Context, subjectID int64) error { +func (db *Database) DeleteAllGrantsForAccountID(ctx context.Context, grantID int64) error { var err error - request := `DELETE FROM grant WHERE subject_id = $1` - _, err = db.db.Exec(request, subjectID) + request := `DELETE FROM grant WHERE account_id = $1` + _, err = db.db.Exec(request, grantID) if err != nil { return err } diff --git a/internal/descriptor/descriptor.go b/internal/descriptor/descriptor.go index aba246c..55b1604 100644 --- a/internal/descriptor/descriptor.go +++ b/internal/descriptor/descriptor.go @@ -1,13 +1,9 @@ package descriptor const ( - OperationAddGrant = "addGrant" - OperationDeleteGrant = "deleteGrant" - OperationCreateIssuerPair = "createIssuerPair" - OperationRevokeIssuerPair = "revokeIssuerPair" - OperationCreateServicePair = "createSericePair" - OperationRevokeServicePair = "revokeServicePair" - OperationGetServicePair = "getServicePair" + GrantModifyServices = "modifyServices" + GrantModifyUssuers = "modifyIssuers" + GrantModifyUsers = "modifyUsers" ) type Issuer struct { @@ -43,5 +39,5 @@ type Grant struct { ID int64 `json:"id" yaml:"id" db:"id"` AccountID int64 `json:"accountID" yaml:"accountID" db:"account_id"` Operation string `json:"operation" yaml:"operation" db:"operation"` - SubjectID int64 `json:"subjectID" yaml:"subjectID" db:"subject_id"` + CreatedAt string `json:"createdAt" yaml:"createdAt" db:"created_at"` } diff --git a/internal/logic/account.go b/internal/logic/account.go index 8b6a171..a56e3f0 100644 --- a/internal/logic/account.go +++ b/internal/logic/account.go @@ -10,33 +10,6 @@ import ( "certmanager/pkg/cmctl" ) -func (lg *Logic) SeedAccount(ctx context.Context) (int64, error) { - var err error - var userID int64 - - accountDescrs, err := lg.db.ListAccounts(ctx) - if err != nil { - return userID, err - } - if len(accountDescrs) == 0 { - now := time.Now().Format(time.RFC3339) - accountDescr := &descriptor.Account{ - ID: auxid.GenID(), - Username: "certman", - Password: "certman", - Disabled: false, - CreatedAt: now, - UpdatedAt: now, - } - err = lg.db.InsertAccount(ctx, accountDescr) - if err != nil { - return userID, err - } - userID = accountDescr.ID - } - return userID, err -} - func (lg *Logic) ValidateAcount(ctx context.Context, username, password string) (bool, int64, error) { var err error var userID int64 @@ -54,13 +27,22 @@ func (lg *Logic) ValidateAcount(ctx context.Context, username, password string) valid = true userID = accountDescr.ID return valid, userID, err - } func (lg *Logic) CreateAccount(ctx context.Context, userID int64, params *cmctl.CreateAccountParams) (*cmctl.CreateAccountResult, error) { var err error res := &cmctl.CreateAccountResult{} + if params.Username == "" { + err := fmt.Errorf("Empty username parameters") + return res, err + } + + if params.Password == "" { + err := fmt.Errorf("Empty password parameter") + return res, err + } + accountExists, _, err := lg.db.GetAccountByUsername(ctx, params.Username) if err != nil { return res, err @@ -152,6 +134,10 @@ func (lg *Logic) DeleteAccount(ctx context.Context, userID int64, params *cmctl. return res, err } + err = lg.db.DeleteAllGrantsForAccountID(ctx, accountDescr.ID) + if err != nil { + return res, err + } err = lg.db.DeleteAccountByID(ctx, accountDescr.ID) if err != nil { return res, err @@ -169,13 +155,25 @@ func (lg *Logic) ListAccounts(ctx context.Context, userID int64, params *cmctl.L return res, err } for _, accountDescr := range accountDescrs { - shortDescr := &cmctl.AccountShortDescr{ + accountShortDescr := &cmctl.AccountShortDescr{ Username: accountDescr.Username, Disabled: accountDescr.Disabled, CreatedAt: accountDescr.CreatedAt, UpdatedAt: accountDescr.UpdatedAt, + Grants: make([]*cmctl.GrantShortDescr, 0), + } + grantDescrs, err := lg.db.ListGrantsByAccountID(ctx, accountDescr.ID) + if err != nil { + return res, err + } + for _, grantDescrs := range grantDescrs { + grantShortDescrs := &cmctl.GrantShortDescr{ + Operation: grantDescrs.Operation, + CreatedAt: grantDescrs.CreatedAt, + } + accountShortDescr.Grants = append(accountShortDescr.Grants, grantShortDescrs) } - res.Accounts = append(res.Accounts, shortDescr) + res.Accounts = append(res.Accounts, accountShortDescr) } return res, err } diff --git a/internal/server/server.go b/internal/server/server.go index 488d83e..fc09ecd 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -93,12 +93,6 @@ func (srv *Server) Build() error { if err != nil { return err } - // Seed accounts - ctx, _ := context.WithTimeout(context.Background(), 1*time.Second) - _, err = srv.lg.SeedAccount(ctx) - if err != nil { - return err - } // Create whandler whandlerConfig := &whandler.HandlerConfig{ @@ -164,12 +158,19 @@ func (srv *Server) Run() error { } srv.log.Infof("Running server as user %s", currUser.Username) - // Show current user + // Initialize database err = srv.db.InitDatabase() if err != nil { return err } + // Seed accounts + ctx, _ := context.WithTimeout(context.Background(), 1*time.Second) + _, err = srv.lg.SeedAccount(ctx) + if err != nil { + return err + } + sigs := make(chan os.Signal, 1) gdone := make(chan error, 1) wdone := make(chan error, 1) diff --git a/pkg/cmctl/cmctl.pb.go b/pkg/cmctl/cmctl.pb.go index 8059b3e..793f0f1 100644 --- a/pkg/cmctl/cmctl.pb.go +++ b/pkg/cmctl/cmctl.pb.go @@ -20,6 +20,208 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type SetGrantParams struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + AccountID int64 `protobuf:"varint,2,opt,name=accountID,proto3" json:"accountID,omitempty"` + Operation string `protobuf:"bytes,3,opt,name=operation,proto3" json:"operation,omitempty"` +} + +func (x *SetGrantParams) Reset() { + *x = SetGrantParams{} + if protoimpl.UnsafeEnabled { + mi := &file_cmctl_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SetGrantParams) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetGrantParams) ProtoMessage() {} + +func (x *SetGrantParams) ProtoReflect() protoreflect.Message { + mi := &file_cmctl_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetGrantParams.ProtoReflect.Descriptor instead. +func (*SetGrantParams) Descriptor() ([]byte, []int) { + return file_cmctl_proto_rawDescGZIP(), []int{0} +} + +func (x *SetGrantParams) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *SetGrantParams) GetAccountID() int64 { + if x != nil { + return x.AccountID + } + return 0 +} + +func (x *SetGrantParams) GetOperation() string { + if x != nil { + return x.Operation + } + return "" +} + +type SetGrantResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *SetGrantResult) Reset() { + *x = SetGrantResult{} + if protoimpl.UnsafeEnabled { + mi := &file_cmctl_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SetGrantResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetGrantResult) ProtoMessage() {} + +func (x *SetGrantResult) ProtoReflect() protoreflect.Message { + mi := &file_cmctl_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetGrantResult.ProtoReflect.Descriptor instead. +func (*SetGrantResult) Descriptor() ([]byte, []int) { + return file_cmctl_proto_rawDescGZIP(), []int{1} +} + +type DeleteGrantParams struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + AccountID int64 `protobuf:"varint,2,opt,name=accountID,proto3" json:"accountID,omitempty"` + Operation string `protobuf:"bytes,3,opt,name=operation,proto3" json:"operation,omitempty"` +} + +func (x *DeleteGrantParams) Reset() { + *x = DeleteGrantParams{} + if protoimpl.UnsafeEnabled { + mi := &file_cmctl_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteGrantParams) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteGrantParams) ProtoMessage() {} + +func (x *DeleteGrantParams) ProtoReflect() protoreflect.Message { + mi := &file_cmctl_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteGrantParams.ProtoReflect.Descriptor instead. +func (*DeleteGrantParams) Descriptor() ([]byte, []int) { + return file_cmctl_proto_rawDescGZIP(), []int{2} +} + +func (x *DeleteGrantParams) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *DeleteGrantParams) GetAccountID() int64 { + if x != nil { + return x.AccountID + } + return 0 +} + +func (x *DeleteGrantParams) GetOperation() string { + if x != nil { + return x.Operation + } + return "" +} + +type DeleteGrantResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteGrantResult) Reset() { + *x = DeleteGrantResult{} + if protoimpl.UnsafeEnabled { + mi := &file_cmctl_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteGrantResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteGrantResult) ProtoMessage() {} + +func (x *DeleteGrantResult) ProtoReflect() protoreflect.Message { + mi := &file_cmctl_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteGrantResult.ProtoReflect.Descriptor instead. +func (*DeleteGrantResult) Descriptor() ([]byte, []int) { + return file_cmctl_proto_rawDescGZIP(), []int{3} +} + type CreateAccountParams struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -32,7 +234,7 @@ type CreateAccountParams struct { func (x *CreateAccountParams) Reset() { *x = CreateAccountParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[0] + mi := &file_cmctl_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -45,7 +247,7 @@ func (x *CreateAccountParams) String() string { func (*CreateAccountParams) ProtoMessage() {} func (x *CreateAccountParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[0] + mi := &file_cmctl_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58,7 +260,7 @@ func (x *CreateAccountParams) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAccountParams.ProtoReflect.Descriptor instead. func (*CreateAccountParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{0} + return file_cmctl_proto_rawDescGZIP(), []int{4} } func (x *CreateAccountParams) GetUsername() string { @@ -86,7 +288,7 @@ type CreateAccountResult struct { func (x *CreateAccountResult) Reset() { *x = CreateAccountResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[1] + mi := &file_cmctl_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -99,7 +301,7 @@ func (x *CreateAccountResult) String() string { func (*CreateAccountResult) ProtoMessage() {} func (x *CreateAccountResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[1] + mi := &file_cmctl_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -112,7 +314,7 @@ func (x *CreateAccountResult) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAccountResult.ProtoReflect.Descriptor instead. func (*CreateAccountResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{1} + return file_cmctl_proto_rawDescGZIP(), []int{5} } func (x *CreateAccountResult) GetAccountID() int64 { @@ -134,7 +336,7 @@ type DeleteAccountParams struct { func (x *DeleteAccountParams) Reset() { *x = DeleteAccountParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[2] + mi := &file_cmctl_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -147,7 +349,7 @@ func (x *DeleteAccountParams) String() string { func (*DeleteAccountParams) ProtoMessage() {} func (x *DeleteAccountParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[2] + mi := &file_cmctl_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -160,7 +362,7 @@ func (x *DeleteAccountParams) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAccountParams.ProtoReflect.Descriptor instead. func (*DeleteAccountParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{2} + return file_cmctl_proto_rawDescGZIP(), []int{6} } func (x *DeleteAccountParams) GetUsername() string { @@ -186,7 +388,7 @@ type DeleteAccountResult struct { func (x *DeleteAccountResult) Reset() { *x = DeleteAccountResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[3] + mi := &file_cmctl_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -199,7 +401,7 @@ func (x *DeleteAccountResult) String() string { func (*DeleteAccountResult) ProtoMessage() {} func (x *DeleteAccountResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[3] + mi := &file_cmctl_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -212,7 +414,7 @@ func (x *DeleteAccountResult) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAccountResult.ProtoReflect.Descriptor instead. func (*DeleteAccountResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{3} + return file_cmctl_proto_rawDescGZIP(), []int{7} } type UpdateAccountParams struct { @@ -230,7 +432,7 @@ type UpdateAccountParams struct { func (x *UpdateAccountParams) Reset() { *x = UpdateAccountParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[4] + mi := &file_cmctl_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -243,7 +445,7 @@ func (x *UpdateAccountParams) String() string { func (*UpdateAccountParams) ProtoMessage() {} func (x *UpdateAccountParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[4] + mi := &file_cmctl_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -256,7 +458,7 @@ func (x *UpdateAccountParams) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAccountParams.ProtoReflect.Descriptor instead. func (*UpdateAccountParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{4} + return file_cmctl_proto_rawDescGZIP(), []int{8} } func (x *UpdateAccountParams) GetUsername() string { @@ -303,7 +505,7 @@ type UpdateAccountResult struct { func (x *UpdateAccountResult) Reset() { *x = UpdateAccountResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[5] + mi := &file_cmctl_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -316,7 +518,7 @@ func (x *UpdateAccountResult) String() string { func (*UpdateAccountResult) ProtoMessage() {} func (x *UpdateAccountResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[5] + mi := &file_cmctl_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -329,7 +531,7 @@ func (x *UpdateAccountResult) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAccountResult.ProtoReflect.Descriptor instead. func (*UpdateAccountResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{5} + return file_cmctl_proto_rawDescGZIP(), []int{9} } type GetAccountParams struct { @@ -341,7 +543,7 @@ type GetAccountParams struct { func (x *GetAccountParams) Reset() { *x = GetAccountParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[6] + mi := &file_cmctl_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -354,7 +556,7 @@ func (x *GetAccountParams) String() string { func (*GetAccountParams) ProtoMessage() {} func (x *GetAccountParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[6] + mi := &file_cmctl_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -367,7 +569,7 @@ func (x *GetAccountParams) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAccountParams.ProtoReflect.Descriptor instead. func (*GetAccountParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{6} + return file_cmctl_proto_rawDescGZIP(), []int{10} } type GetAccountResult struct { @@ -379,7 +581,7 @@ type GetAccountResult struct { func (x *GetAccountResult) Reset() { *x = GetAccountResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[7] + mi := &file_cmctl_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -392,7 +594,7 @@ func (x *GetAccountResult) String() string { func (*GetAccountResult) ProtoMessage() {} func (x *GetAccountResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[7] + mi := &file_cmctl_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -405,7 +607,7 @@ func (x *GetAccountResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAccountResult.ProtoReflect.Descriptor instead. func (*GetAccountResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{7} + return file_cmctl_proto_rawDescGZIP(), []int{11} } type ListAccountsParams struct { @@ -417,7 +619,7 @@ type ListAccountsParams struct { func (x *ListAccountsParams) Reset() { *x = ListAccountsParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[8] + mi := &file_cmctl_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -430,7 +632,7 @@ func (x *ListAccountsParams) String() string { func (*ListAccountsParams) ProtoMessage() {} func (x *ListAccountsParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[8] + mi := &file_cmctl_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -443,7 +645,7 @@ func (x *ListAccountsParams) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAccountsParams.ProtoReflect.Descriptor instead. func (*ListAccountsParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{8} + return file_cmctl_proto_rawDescGZIP(), []int{12} } type ListAccountsResult struct { @@ -457,7 +659,7 @@ type ListAccountsResult struct { func (x *ListAccountsResult) Reset() { *x = ListAccountsResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[9] + mi := &file_cmctl_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -470,7 +672,7 @@ func (x *ListAccountsResult) String() string { func (*ListAccountsResult) ProtoMessage() {} func (x *ListAccountsResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[9] + mi := &file_cmctl_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -483,7 +685,7 @@ func (x *ListAccountsResult) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAccountsResult.ProtoReflect.Descriptor instead. func (*ListAccountsResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{9} + return file_cmctl_proto_rawDescGZIP(), []int{13} } func (x *ListAccountsResult) GetAccounts() []*AccountShortDescr { @@ -498,16 +700,17 @@ type AccountShortDescr struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` - Disabled bool `protobuf:"varint,2,opt,name=disabled,proto3" json:"disabled,omitempty"` - CreatedAt string `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` - UpdatedAt string `protobuf:"bytes,4,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + Disabled bool `protobuf:"varint,2,opt,name=disabled,proto3" json:"disabled,omitempty"` + CreatedAt string `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + UpdatedAt string `protobuf:"bytes,4,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` + Grants []*GrantShortDescr `protobuf:"bytes,5,rep,name=grants,proto3" json:"grants,omitempty"` } func (x *AccountShortDescr) Reset() { *x = AccountShortDescr{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[10] + mi := &file_cmctl_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -520,7 +723,7 @@ func (x *AccountShortDescr) String() string { func (*AccountShortDescr) ProtoMessage() {} func (x *AccountShortDescr) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[10] + mi := &file_cmctl_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -533,7 +736,7 @@ func (x *AccountShortDescr) ProtoReflect() protoreflect.Message { // Deprecated: Use AccountShortDescr.ProtoReflect.Descriptor instead. func (*AccountShortDescr) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{10} + return file_cmctl_proto_rawDescGZIP(), []int{14} } func (x *AccountShortDescr) GetUsername() string { @@ -564,6 +767,68 @@ func (x *AccountShortDescr) GetUpdatedAt() string { return "" } +func (x *AccountShortDescr) GetGrants() []*GrantShortDescr { + if x != nil { + return x.Grants + } + return nil +} + +type GrantShortDescr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Operation string `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"` + CreatedAt string `protobuf:"bytes,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` +} + +func (x *GrantShortDescr) Reset() { + *x = GrantShortDescr{} + if protoimpl.UnsafeEnabled { + mi := &file_cmctl_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GrantShortDescr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrantShortDescr) ProtoMessage() {} + +func (x *GrantShortDescr) ProtoReflect() protoreflect.Message { + mi := &file_cmctl_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrantShortDescr.ProtoReflect.Descriptor instead. +func (*GrantShortDescr) Descriptor() ([]byte, []int) { + return file_cmctl_proto_rawDescGZIP(), []int{15} +} + +func (x *GrantShortDescr) GetOperation() string { + if x != nil { + return x.Operation + } + return "" +} + +func (x *GrantShortDescr) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + type GetStatusParams struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -573,7 +838,7 @@ type GetStatusParams struct { func (x *GetStatusParams) Reset() { *x = GetStatusParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[11] + mi := &file_cmctl_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -586,7 +851,7 @@ func (x *GetStatusParams) String() string { func (*GetStatusParams) ProtoMessage() {} func (x *GetStatusParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[11] + mi := &file_cmctl_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -599,7 +864,7 @@ func (x *GetStatusParams) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStatusParams.ProtoReflect.Descriptor instead. func (*GetStatusParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{11} + return file_cmctl_proto_rawDescGZIP(), []int{16} } type GetStatusResult struct { @@ -613,7 +878,7 @@ type GetStatusResult struct { func (x *GetStatusResult) Reset() { *x = GetStatusResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[12] + mi := &file_cmctl_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -626,7 +891,7 @@ func (x *GetStatusResult) String() string { func (*GetStatusResult) ProtoMessage() {} func (x *GetStatusResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[12] + mi := &file_cmctl_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -639,7 +904,7 @@ func (x *GetStatusResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStatusResult.ProtoReflect.Descriptor instead. func (*GetStatusResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{12} + return file_cmctl_proto_rawDescGZIP(), []int{17} } func (x *GetStatusResult) GetMessage() string { @@ -665,7 +930,7 @@ type CreateIssuerPairParams struct { func (x *CreateIssuerPairParams) Reset() { *x = CreateIssuerPairParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[13] + mi := &file_cmctl_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -678,7 +943,7 @@ func (x *CreateIssuerPairParams) String() string { func (*CreateIssuerPairParams) ProtoMessage() {} func (x *CreateIssuerPairParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[13] + mi := &file_cmctl_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -691,7 +956,7 @@ func (x *CreateIssuerPairParams) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateIssuerPairParams.ProtoReflect.Descriptor instead. func (*CreateIssuerPairParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{13} + return file_cmctl_proto_rawDescGZIP(), []int{18} } func (x *CreateIssuerPairParams) GetIssuerCommonName() string { @@ -749,7 +1014,7 @@ type CreateIssuerPairResult struct { func (x *CreateIssuerPairResult) Reset() { *x = CreateIssuerPairResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[14] + mi := &file_cmctl_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -762,7 +1027,7 @@ func (x *CreateIssuerPairResult) String() string { func (*CreateIssuerPairResult) ProtoMessage() {} func (x *CreateIssuerPairResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[14] + mi := &file_cmctl_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -775,7 +1040,7 @@ func (x *CreateIssuerPairResult) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateIssuerPairResult.ProtoReflect.Descriptor instead. func (*CreateIssuerPairResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{14} + return file_cmctl_proto_rawDescGZIP(), []int{19} } func (x *CreateIssuerPairResult) GetIssuerID() int64 { @@ -811,7 +1076,7 @@ type GetIssuerCertificateParams struct { func (x *GetIssuerCertificateParams) Reset() { *x = GetIssuerCertificateParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[15] + mi := &file_cmctl_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -824,7 +1089,7 @@ func (x *GetIssuerCertificateParams) String() string { func (*GetIssuerCertificateParams) ProtoMessage() {} func (x *GetIssuerCertificateParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[15] + mi := &file_cmctl_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -837,7 +1102,7 @@ func (x *GetIssuerCertificateParams) ProtoReflect() protoreflect.Message { // Deprecated: Use GetIssuerCertificateParams.ProtoReflect.Descriptor instead. func (*GetIssuerCertificateParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{15} + return file_cmctl_proto_rawDescGZIP(), []int{20} } func (x *GetIssuerCertificateParams) GetIssuerID() int64 { @@ -872,7 +1137,7 @@ type GetIssuerCertificateResult struct { func (x *GetIssuerCertificateResult) Reset() { *x = GetIssuerCertificateResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[16] + mi := &file_cmctl_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -885,7 +1150,7 @@ func (x *GetIssuerCertificateResult) String() string { func (*GetIssuerCertificateResult) ProtoMessage() {} func (x *GetIssuerCertificateResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[16] + mi := &file_cmctl_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -898,7 +1163,7 @@ func (x *GetIssuerCertificateResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetIssuerCertificateResult.ProtoReflect.Descriptor instead. func (*GetIssuerCertificateResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{16} + return file_cmctl_proto_rawDescGZIP(), []int{21} } func (x *GetIssuerCertificateResult) GetIssuerID() int64 { @@ -970,7 +1235,7 @@ type ImportIssuerPairParams struct { func (x *ImportIssuerPairParams) Reset() { *x = ImportIssuerPairParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[17] + mi := &file_cmctl_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -983,7 +1248,7 @@ func (x *ImportIssuerPairParams) String() string { func (*ImportIssuerPairParams) ProtoMessage() {} func (x *ImportIssuerPairParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[17] + mi := &file_cmctl_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -996,7 +1261,7 @@ func (x *ImportIssuerPairParams) ProtoReflect() protoreflect.Message { // Deprecated: Use ImportIssuerPairParams.ProtoReflect.Descriptor instead. func (*ImportIssuerPairParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{17} + return file_cmctl_proto_rawDescGZIP(), []int{22} } func (x *ImportIssuerPairParams) GetCertificate() string { @@ -1032,7 +1297,7 @@ type ImportIssuerPairResult struct { func (x *ImportIssuerPairResult) Reset() { *x = ImportIssuerPairResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[18] + mi := &file_cmctl_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1045,7 +1310,7 @@ func (x *ImportIssuerPairResult) String() string { func (*ImportIssuerPairResult) ProtoMessage() {} func (x *ImportIssuerPairResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[18] + mi := &file_cmctl_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1058,7 +1323,7 @@ func (x *ImportIssuerPairResult) ProtoReflect() protoreflect.Message { // Deprecated: Use ImportIssuerPairResult.ProtoReflect.Descriptor instead. func (*ImportIssuerPairResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{18} + return file_cmctl_proto_rawDescGZIP(), []int{23} } func (x *ImportIssuerPairResult) GetIssuerID() int64 { @@ -1087,7 +1352,7 @@ type RevokeIssuerPairParams struct { func (x *RevokeIssuerPairParams) Reset() { *x = RevokeIssuerPairParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[19] + mi := &file_cmctl_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1100,7 +1365,7 @@ func (x *RevokeIssuerPairParams) String() string { func (*RevokeIssuerPairParams) ProtoMessage() {} func (x *RevokeIssuerPairParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[19] + mi := &file_cmctl_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1113,7 +1378,7 @@ func (x *RevokeIssuerPairParams) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeIssuerPairParams.ProtoReflect.Descriptor instead. func (*RevokeIssuerPairParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{19} + return file_cmctl_proto_rawDescGZIP(), []int{24} } func (x *RevokeIssuerPairParams) GetIssuerID() int64 { @@ -1139,7 +1404,7 @@ type RevokeIssuerPairResult struct { func (x *RevokeIssuerPairResult) Reset() { *x = RevokeIssuerPairResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[20] + mi := &file_cmctl_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1152,7 +1417,7 @@ func (x *RevokeIssuerPairResult) String() string { func (*RevokeIssuerPairResult) ProtoMessage() {} func (x *RevokeIssuerPairResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[20] + mi := &file_cmctl_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1165,7 +1430,7 @@ func (x *RevokeIssuerPairResult) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeIssuerPairResult.ProtoReflect.Descriptor instead. func (*RevokeIssuerPairResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{20} + return file_cmctl_proto_rawDescGZIP(), []int{25} } type UnrevokeIssuerPairParams struct { @@ -1180,7 +1445,7 @@ type UnrevokeIssuerPairParams struct { func (x *UnrevokeIssuerPairParams) Reset() { *x = UnrevokeIssuerPairParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[21] + mi := &file_cmctl_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1193,7 +1458,7 @@ func (x *UnrevokeIssuerPairParams) String() string { func (*UnrevokeIssuerPairParams) ProtoMessage() {} func (x *UnrevokeIssuerPairParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[21] + mi := &file_cmctl_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1206,7 +1471,7 @@ func (x *UnrevokeIssuerPairParams) ProtoReflect() protoreflect.Message { // Deprecated: Use UnrevokeIssuerPairParams.ProtoReflect.Descriptor instead. func (*UnrevokeIssuerPairParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{21} + return file_cmctl_proto_rawDescGZIP(), []int{26} } func (x *UnrevokeIssuerPairParams) GetIssuerID() int64 { @@ -1232,7 +1497,7 @@ type UnrevokeIssuerPairResult struct { func (x *UnrevokeIssuerPairResult) Reset() { *x = UnrevokeIssuerPairResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[22] + mi := &file_cmctl_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1245,7 +1510,7 @@ func (x *UnrevokeIssuerPairResult) String() string { func (*UnrevokeIssuerPairResult) ProtoMessage() {} func (x *UnrevokeIssuerPairResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[22] + mi := &file_cmctl_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1258,7 +1523,7 @@ func (x *UnrevokeIssuerPairResult) ProtoReflect() protoreflect.Message { // Deprecated: Use UnrevokeIssuerPairResult.ProtoReflect.Descriptor instead. func (*UnrevokeIssuerPairResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{22} + return file_cmctl_proto_rawDescGZIP(), []int{27} } type ListIssuerPairsParams struct { @@ -1270,7 +1535,7 @@ type ListIssuerPairsParams struct { func (x *ListIssuerPairsParams) Reset() { *x = ListIssuerPairsParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[23] + mi := &file_cmctl_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1283,7 +1548,7 @@ func (x *ListIssuerPairsParams) String() string { func (*ListIssuerPairsParams) ProtoMessage() {} func (x *ListIssuerPairsParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[23] + mi := &file_cmctl_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1296,7 +1561,7 @@ func (x *ListIssuerPairsParams) ProtoReflect() protoreflect.Message { // Deprecated: Use ListIssuerPairsParams.ProtoReflect.Descriptor instead. func (*ListIssuerPairsParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{23} + return file_cmctl_proto_rawDescGZIP(), []int{28} } type ListIssuerPairsResult struct { @@ -1310,7 +1575,7 @@ type ListIssuerPairsResult struct { func (x *ListIssuerPairsResult) Reset() { *x = ListIssuerPairsResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[24] + mi := &file_cmctl_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1323,7 +1588,7 @@ func (x *ListIssuerPairsResult) String() string { func (*ListIssuerPairsResult) ProtoMessage() {} func (x *ListIssuerPairsResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[24] + mi := &file_cmctl_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1336,7 +1601,7 @@ func (x *ListIssuerPairsResult) ProtoReflect() protoreflect.Message { // Deprecated: Use ListIssuerPairsResult.ProtoReflect.Descriptor instead. func (*ListIssuerPairsResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{24} + return file_cmctl_proto_rawDescGZIP(), []int{29} } func (x *ListIssuerPairsResult) GetIssuers() []*IssierShortDescriptor { @@ -1361,7 +1626,7 @@ type IssierShortDescriptor struct { func (x *IssierShortDescriptor) Reset() { *x = IssierShortDescriptor{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[25] + mi := &file_cmctl_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1374,7 +1639,7 @@ func (x *IssierShortDescriptor) String() string { func (*IssierShortDescriptor) ProtoMessage() {} func (x *IssierShortDescriptor) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[25] + mi := &file_cmctl_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1387,7 +1652,7 @@ func (x *IssierShortDescriptor) ProtoReflect() protoreflect.Message { // Deprecated: Use IssierShortDescriptor.ProtoReflect.Descriptor instead. func (*IssierShortDescriptor) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{25} + return file_cmctl_proto_rawDescGZIP(), []int{30} } func (x *IssierShortDescriptor) GetIssuerID() int64 { @@ -1440,7 +1705,7 @@ type CreateServicePairParams struct { func (x *CreateServicePairParams) Reset() { *x = CreateServicePairParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[26] + mi := &file_cmctl_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1453,7 +1718,7 @@ func (x *CreateServicePairParams) String() string { func (*CreateServicePairParams) ProtoMessage() {} func (x *CreateServicePairParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[26] + mi := &file_cmctl_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1466,7 +1731,7 @@ func (x *CreateServicePairParams) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateServicePairParams.ProtoReflect.Descriptor instead. func (*CreateServicePairParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{26} + return file_cmctl_proto_rawDescGZIP(), []int{31} } func (x *CreateServicePairParams) GetIssuerName() string { @@ -1521,7 +1786,7 @@ type CreateServicePairResult struct { func (x *CreateServicePairResult) Reset() { *x = CreateServicePairResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[27] + mi := &file_cmctl_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1534,7 +1799,7 @@ func (x *CreateServicePairResult) String() string { func (*CreateServicePairResult) ProtoMessage() {} func (x *CreateServicePairResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[27] + mi := &file_cmctl_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1547,7 +1812,7 @@ func (x *CreateServicePairResult) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateServicePairResult.ProtoReflect.Descriptor instead. func (*CreateServicePairResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{27} + return file_cmctl_proto_rawDescGZIP(), []int{32} } func (x *CreateServicePairResult) GetServiceID() int64 { @@ -1613,7 +1878,7 @@ type RevokeServicePairParams struct { func (x *RevokeServicePairParams) Reset() { *x = RevokeServicePairParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[28] + mi := &file_cmctl_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1626,7 +1891,7 @@ func (x *RevokeServicePairParams) String() string { func (*RevokeServicePairParams) ProtoMessage() {} func (x *RevokeServicePairParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[28] + mi := &file_cmctl_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1639,7 +1904,7 @@ func (x *RevokeServicePairParams) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeServicePairParams.ProtoReflect.Descriptor instead. func (*RevokeServicePairParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{28} + return file_cmctl_proto_rawDescGZIP(), []int{33} } func (x *RevokeServicePairParams) GetServiceID() int64 { @@ -1679,7 +1944,7 @@ type RevokeServicePairResult struct { func (x *RevokeServicePairResult) Reset() { *x = RevokeServicePairResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[29] + mi := &file_cmctl_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1692,7 +1957,7 @@ func (x *RevokeServicePairResult) String() string { func (*RevokeServicePairResult) ProtoMessage() {} func (x *RevokeServicePairResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[29] + mi := &file_cmctl_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1705,7 +1970,7 @@ func (x *RevokeServicePairResult) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeServicePairResult.ProtoReflect.Descriptor instead. func (*RevokeServicePairResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{29} + return file_cmctl_proto_rawDescGZIP(), []int{34} } type UnrevokeServicePairParams struct { @@ -1722,7 +1987,7 @@ type UnrevokeServicePairParams struct { func (x *UnrevokeServicePairParams) Reset() { *x = UnrevokeServicePairParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[30] + mi := &file_cmctl_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1735,7 +2000,7 @@ func (x *UnrevokeServicePairParams) String() string { func (*UnrevokeServicePairParams) ProtoMessage() {} func (x *UnrevokeServicePairParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[30] + mi := &file_cmctl_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1748,7 +2013,7 @@ func (x *UnrevokeServicePairParams) ProtoReflect() protoreflect.Message { // Deprecated: Use UnrevokeServicePairParams.ProtoReflect.Descriptor instead. func (*UnrevokeServicePairParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{30} + return file_cmctl_proto_rawDescGZIP(), []int{35} } func (x *UnrevokeServicePairParams) GetServiceID() int64 { @@ -1788,7 +2053,7 @@ type UnrevokeServicePairResult struct { func (x *UnrevokeServicePairResult) Reset() { *x = UnrevokeServicePairResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[31] + mi := &file_cmctl_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1801,7 +2066,7 @@ func (x *UnrevokeServicePairResult) String() string { func (*UnrevokeServicePairResult) ProtoMessage() {} func (x *UnrevokeServicePairResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[31] + mi := &file_cmctl_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1814,7 +2079,7 @@ func (x *UnrevokeServicePairResult) ProtoReflect() protoreflect.Message { // Deprecated: Use UnrevokeServicePairResult.ProtoReflect.Descriptor instead. func (*UnrevokeServicePairResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{31} + return file_cmctl_proto_rawDescGZIP(), []int{36} } type ServiceShortDescriptor struct { @@ -1832,7 +2097,7 @@ type ServiceShortDescriptor struct { func (x *ServiceShortDescriptor) Reset() { *x = ServiceShortDescriptor{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[32] + mi := &file_cmctl_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1845,7 +2110,7 @@ func (x *ServiceShortDescriptor) String() string { func (*ServiceShortDescriptor) ProtoMessage() {} func (x *ServiceShortDescriptor) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[32] + mi := &file_cmctl_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1858,7 +2123,7 @@ func (x *ServiceShortDescriptor) ProtoReflect() protoreflect.Message { // Deprecated: Use ServiceShortDescriptor.ProtoReflect.Descriptor instead. func (*ServiceShortDescriptor) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{32} + return file_cmctl_proto_rawDescGZIP(), []int{37} } func (x *ServiceShortDescriptor) GetServiceID() int64 { @@ -1905,7 +2170,7 @@ type ListServicePairsParams struct { func (x *ListServicePairsParams) Reset() { *x = ListServicePairsParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[33] + mi := &file_cmctl_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1918,7 +2183,7 @@ func (x *ListServicePairsParams) String() string { func (*ListServicePairsParams) ProtoMessage() {} func (x *ListServicePairsParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[33] + mi := &file_cmctl_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1931,7 +2196,7 @@ func (x *ListServicePairsParams) ProtoReflect() protoreflect.Message { // Deprecated: Use ListServicePairsParams.ProtoReflect.Descriptor instead. func (*ListServicePairsParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{33} + return file_cmctl_proto_rawDescGZIP(), []int{38} } type ListServicePairsResult struct { @@ -1945,7 +2210,7 @@ type ListServicePairsResult struct { func (x *ListServicePairsResult) Reset() { *x = ListServicePairsResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[34] + mi := &file_cmctl_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1958,7 +2223,7 @@ func (x *ListServicePairsResult) String() string { func (*ListServicePairsResult) ProtoMessage() {} func (x *ListServicePairsResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[34] + mi := &file_cmctl_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1971,7 +2236,7 @@ func (x *ListServicePairsResult) ProtoReflect() protoreflect.Message { // Deprecated: Use ListServicePairsResult.ProtoReflect.Descriptor instead. func (*ListServicePairsResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{34} + return file_cmctl_proto_rawDescGZIP(), []int{39} } func (x *ListServicePairsResult) GetServices() []*ServiceShortDescriptor { @@ -1993,7 +2258,7 @@ type GetServicePairParams struct { func (x *GetServicePairParams) Reset() { *x = GetServicePairParams{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[35] + mi := &file_cmctl_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2006,7 +2271,7 @@ func (x *GetServicePairParams) String() string { func (*GetServicePairParams) ProtoMessage() {} func (x *GetServicePairParams) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[35] + mi := &file_cmctl_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2019,7 +2284,7 @@ func (x *GetServicePairParams) ProtoReflect() protoreflect.Message { // Deprecated: Use GetServicePairParams.ProtoReflect.Descriptor instead. func (*GetServicePairParams) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{35} + return file_cmctl_proto_rawDescGZIP(), []int{40} } func (x *GetServicePairParams) GetServiceID() int64 { @@ -2054,7 +2319,7 @@ type GetServicePairResult struct { func (x *GetServicePairResult) Reset() { *x = GetServicePairResult{} if protoimpl.UnsafeEnabled { - mi := &file_cmctl_proto_msgTypes[36] + mi := &file_cmctl_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2067,7 +2332,7 @@ func (x *GetServicePairResult) String() string { func (*GetServicePairResult) ProtoMessage() {} func (x *GetServicePairResult) ProtoReflect() protoreflect.Message { - mi := &file_cmctl_proto_msgTypes[36] + mi := &file_cmctl_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2080,7 +2345,7 @@ func (x *GetServicePairResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetServicePairResult.ProtoReflect.Descriptor instead. func (*GetServicePairResult) Descriptor() ([]byte, []int) { - return file_cmctl_proto_rawDescGZIP(), []int{36} + return file_cmctl_proto_rawDescGZIP(), []int{41} } func (x *GetServicePairResult) GetName() string { @@ -2144,353 +2409,389 @@ var File_cmctl_proto protoreflect.FileDescriptor var file_cmctl_proto_rawDesc = []byte{ 0x0a, 0x0b, 0x63, 0x6d, 0x63, 0x74, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x22, 0x4d, 0x0a, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x22, 0x33, 0x0a, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x49, 0x44, 0x22, 0x4f, 0x0a, 0x13, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, - 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x22, 0x15, 0x0a, 0x13, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xaf, 0x01, - 0x0a, 0x13, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x12, - 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, - 0x15, 0x0a, 0x13, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x67, 0x65, 0x74, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x12, 0x0a, 0x10, 0x67, 0x65, - 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x14, - 0x0a, 0x12, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x22, 0x57, 0x0a, 0x12, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x41, 0x0a, 0x08, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, - 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, - 0x73, 0x63, 0x72, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x87, 0x01, - 0x0a, 0x11, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, - 0x73, 0x63, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x6c, 0x22, 0x68, 0x0a, 0x0e, 0x73, 0x65, 0x74, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x11, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x2b, 0x0a, 0x0f, 0x67, 0x65, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xde, 0x01, 0x0a, 0x16, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x73, - 0x73, 0x75, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, - 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, - 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, - 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x55, 0x6e, 0x74, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x55, 0x6e, 0x74, 0x69, 0x6c, 0x12, 0x18, - 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6b, 0x65, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x76, 0x0a, 0x16, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, - 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x22, 0x58, 0x0a, 0x1a, 0x67, 0x65, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, - 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, - 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x96, 0x02, 0x0a, 0x1a, 0x67, - 0x65, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x73, - 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x73, - 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, - 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, - 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, - 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x6f, 0x6b, - 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, - 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x73, + 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x1c, 0x0a, + 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x10, 0x0a, 0x0e, 0x73, + 0x65, 0x74, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x6b, 0x0a, + 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x13, 0x0a, 0x11, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, + 0x4d, 0x0a, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x33, + 0x0a, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x44, 0x22, 0x4f, 0x0a, 0x13, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x44, 0x22, 0x15, 0x0a, 0x13, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xaf, 0x01, 0x0a, 0x13, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, + 0x0b, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x15, 0x0a, + 0x13, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x67, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x12, 0x0a, 0x10, 0x67, 0x65, 0x74, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x14, 0x0a, 0x12, + 0x6c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x22, 0x57, 0x0a, 0x12, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x41, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x65, 0x72, + 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0xc4, 0x01, 0x0a, 0x11, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x67, 0x72, 0x61, 0x6e, 0x74, + 0x53, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x52, 0x06, 0x67, 0x72, 0x61, 0x6e, + 0x74, 0x73, 0x22, 0x4d, 0x0a, 0x0f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x53, 0x68, 0x6f, 0x72, 0x74, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x22, 0x11, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x22, 0x2b, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x22, 0xde, 0x01, 0x0a, 0x16, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x10, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, + 0x67, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x55, 0x6e, 0x74, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x55, 0x6e, 0x74, 0x69, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x53, + 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x53, 0x69, + 0x7a, 0x65, 0x22, 0x76, 0x0a, 0x16, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x58, 0x0a, 0x1a, 0x67, 0x65, + 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, + 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, + 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x96, 0x02, 0x0a, 0x1a, 0x67, 0x65, 0x74, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, + 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, + 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x22, 0x78, 0x0a, 0x16, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x20, 0x0a, - 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x63, 0x68, 0x61, - 0x69, 0x6e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x54, 0x0a, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x78, 0x0a, 0x16, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, - 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, + 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x63, + 0x68, 0x61, 0x69, 0x6e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x54, 0x0a, 0x16, 0x69, 0x6d, 0x70, 0x6f, 0x72, + 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, + 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x54, 0x0a, + 0x16, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, + 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, - 0x61, 0x6d, 0x65, 0x22, 0x54, 0x0a, 0x16, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, - 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x73, - 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, - 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x72, 0x65, 0x76, - 0x6f, 0x6b, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x56, 0x0a, 0x18, 0x75, 0x6e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x69, - 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x75, - 0x6e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, - 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x17, 0x0a, 0x15, 0x6c, 0x69, 0x73, 0x74, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x22, 0x5c, 0x0a, 0x15, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, - 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x69, 0x73, 0x73, - 0x75, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x65, 0x72, - 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x49, 0x73, 0x73, 0x69, 0x65, 0x72, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x73, 0x22, 0x9d, - 0x01, 0x0a, 0x15, 0x49, 0x73, 0x73, 0x69, 0x65, 0x72, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, - 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, - 0x65, 0x72, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, - 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, - 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x22, 0xc7, - 0x01, 0x0a, 0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, - 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, - 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, - 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x65, 0x74, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0xf7, 0x01, 0x0a, 0x17, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, - 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x11, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, - 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x22, 0x9b, 0x01, 0x0a, 0x17, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1c, + 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x56, 0x0a, + 0x18, 0x75, 0x6e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, + 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x73, + 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x73, + 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x75, 0x6e, 0x72, 0x65, 0x76, 0x6f, 0x6b, + 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0x17, 0x0a, 0x15, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, + 0x61, 0x69, 0x72, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x5c, 0x0a, 0x15, 0x6c, 0x69, + 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x49, 0x73, 0x73, 0x69, 0x65, 0x72, + 0x53, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, + 0x07, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x73, 0x22, 0x9d, 0x01, 0x0a, 0x15, 0x49, 0x73, 0x73, + 0x69, 0x65, 0x72, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, + 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x22, 0xc7, 0x01, 0x0a, 0x17, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, + 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, + 0x69, 0x6e, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x65, 0x73, 0x22, 0xf7, 0x01, 0x0a, 0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, - 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x22, 0x19, 0x0a, 0x17, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x19, - 0x75, 0x6e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, + 0x03, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, + 0x0a, 0x11, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x69, 0x73, 0x73, 0x75, 0x65, + 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x9b, 0x01, 0x0a, + 0x17, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, + 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x72, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x19, 0x75, 0x6e, 0x72, 0x65, 0x76, 0x6f, + 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x75, 0x6e, 0x72, 0x65, 0x76, 0x6f, 0x6b, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x22, 0xa0, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, + 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x1c, 0x0a, + 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x72, + 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, + 0x60, 0x0a, 0x16, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, + 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x65, + 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x22, 0x56, 0x0a, 0x14, 0x67, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, 0x73, - 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x75, - 0x6e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, - 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xa0, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, - 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, - 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, - 0x44, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x6c, - 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x60, 0x0a, 0x16, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x46, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, - 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0x56, 0x0a, 0x14, 0x67, 0x65, 0x74, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, - 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x20, 0x0a, - 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, - 0x92, 0x02, 0x0a, 0x14, 0x67, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, - 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, - 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, - 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, - 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x12, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x73, 0x32, 0xa1, 0x0e, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x12, 0x57, 0x0a, 0x09, 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x2e, - 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2e, 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x1a, 0x23, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x10, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x12, 0x2a, 0x2e, - 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, - 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x74, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x10, 0x69, 0x6d, 0x70, 0x6f, 0x72, - 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x12, 0x2a, 0x2e, 0x63, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x92, 0x02, 0x0a, 0x14, 0x67, 0x65, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, + 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x69, 0x73, 0x73, + 0x75, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2e, + 0x0a, 0x12, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x69, 0x73, 0x73, 0x75, + 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x32, 0xd6, + 0x0f, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x57, 0x0a, 0x09, 0x67, 0x65, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x67, 0x65, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x23, 0x2e, 0x63, + 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x12, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x1a, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, + 0x00, 0x12, 0x6c, 0x0a, 0x10, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x72, 0x50, 0x61, 0x69, 0x72, 0x12, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, + 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x1a, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, + 0x6c, 0x0a, 0x10, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, + 0x61, 0x69, 0x72, 0x12, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, + 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x72, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x72, 0x0a, + 0x12, 0x75, 0x6e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, + 0x61, 0x69, 0x72, 0x12, 0x2c, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x75, 0x6e, 0x72, 0x65, 0x76, 0x6f, 0x6b, + 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x1a, 0x2c, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x75, 0x6e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, + 0x00, 0x12, 0x69, 0x0a, 0x0f, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, + 0x61, 0x69, 0x72, 0x73, 0x12, 0x29, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x73, + 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, + 0x29, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, + 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x14, + 0x67, 0x65, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x67, 0x65, 0x74, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2e, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x67, 0x65, 0x74, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x2b, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, - 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x69, 0x6d, 0x70, - 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x10, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x12, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x74, + 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, + 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2b, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x11, 0x72, 0x65, 0x76, 0x6f, 0x6b, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x2b, 0x2e, 0x63, + 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, + 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2b, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x72, - 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x72, 0x65, 0x76, 0x6f, 0x6b, - 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x12, 0x75, 0x6e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x12, 0x2c, 0x2e, 0x63, 0x65, 0x72, 0x74, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x75, - 0x6e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, - 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2c, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x75, 0x6e, 0x72, - 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0f, 0x6c, 0x69, 0x73, 0x74, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x29, 0x2e, 0x63, 0x65, 0x72, - 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x6c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x73, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x29, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x22, 0x00, 0x12, 0x78, 0x0a, 0x14, 0x67, 0x65, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, - 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x65, 0x72, - 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x67, 0x65, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2e, 0x2e, 0x63, 0x65, 0x72, - 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x67, 0x65, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x11, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, - 0x72, 0x12, 0x2b, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2b, + 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x13, 0x75, 0x6e, 0x72, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, + 0x2d, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x75, 0x6e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2d, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x6f, 0x0a, - 0x11, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, - 0x69, 0x72, 0x12, 0x2b, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, - 0x2b, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x75, - 0x0a, 0x13, 0x75, 0x6e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x2d, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x75, 0x6e, 0x72, 0x65, 0x76, - 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2d, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x75, 0x6e, 0x72, 0x65, 0x76, 0x6f, - 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x10, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x74, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x6c, - 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x0e, 0x67, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x28, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x67, 0x65, 0x74, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, + 0x72, 0x6f, 0x6c, 0x2e, 0x75, 0x6e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, + 0x6c, 0x0a, 0x10, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, + 0x69, 0x72, 0x73, 0x12, 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, + 0x2a, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x66, 0x0a, + 0x0e, 0x67, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x28, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x67, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, - 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x0d, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x63, - 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x27, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, - 0x12, 0x63, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x27, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x27, 0x2e, 0x63, 0x65, 0x72, - 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, + 0x61, 0x69, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x28, 0x2e, 0x63, 0x65, 0x72, 0x74, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x67, + 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x75, 0x70, 0x64, 0x61, + 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x27, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0a, 0x67, 0x65, - 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x0d, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x63, 0x65, + 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x27, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, + 0x63, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x27, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x27, 0x2e, 0x63, 0x65, 0x72, 0x74, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0a, 0x67, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x67, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x24, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x67, 0x65, - 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x24, + 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, + 0x12, 0x60, 0x0a, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x12, 0x26, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x26, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x6c, 0x69, + 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x22, 0x00, 0x12, 0x54, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x22, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x67, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x6c, 0x69, 0x73, 0x74, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x26, + 0x72, 0x6f, 0x6c, 0x2e, 0x73, 0x65, 0x74, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x1a, 0x22, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x73, 0x65, 0x74, 0x47, 0x72, 0x61, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x25, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x25, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x42, 0x09, 0x5a, 0x07, 0x2e, 0x3b, 0x63, 0x6d, - 0x63, 0x74, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x42, 0x09, 0x5a, 0x07, 0x2e, 0x3b, 0x63, 0x6d, 0x63, + 0x74, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2505,89 +2806,99 @@ func file_cmctl_proto_rawDescGZIP() []byte { return file_cmctl_proto_rawDescData } -var file_cmctl_proto_msgTypes = make([]protoimpl.MessageInfo, 37) +var file_cmctl_proto_msgTypes = make([]protoimpl.MessageInfo, 42) var file_cmctl_proto_goTypes = []interface{}{ - (*CreateAccountParams)(nil), // 0: certmanagercontrol.createAccountParams - (*CreateAccountResult)(nil), // 1: certmanagercontrol.createAccountResult - (*DeleteAccountParams)(nil), // 2: certmanagercontrol.deleteAccountParams - (*DeleteAccountResult)(nil), // 3: certmanagercontrol.deleteAccountResult - (*UpdateAccountParams)(nil), // 4: certmanagercontrol.updateAccountParams - (*UpdateAccountResult)(nil), // 5: certmanagercontrol.updateAccountResult - (*GetAccountParams)(nil), // 6: certmanagercontrol.getAccountParams - (*GetAccountResult)(nil), // 7: certmanagercontrol.getAccountResult - (*ListAccountsParams)(nil), // 8: certmanagercontrol.listAccountsParams - (*ListAccountsResult)(nil), // 9: certmanagercontrol.listAccountsResult - (*AccountShortDescr)(nil), // 10: certmanagercontrol.accountShortDescr - (*GetStatusParams)(nil), // 11: certmanagercontrol.getStatusParams - (*GetStatusResult)(nil), // 12: certmanagercontrol.getStatusResult - (*CreateIssuerPairParams)(nil), // 13: certmanagercontrol.createIssuerPairParams - (*CreateIssuerPairResult)(nil), // 14: certmanagercontrol.createIssuerPairResult - (*GetIssuerCertificateParams)(nil), // 15: certmanagercontrol.getIssuerCertificateParams - (*GetIssuerCertificateResult)(nil), // 16: certmanagercontrol.getIssuerCertificateResult - (*ImportIssuerPairParams)(nil), // 17: certmanagercontrol.importIssuerPairParams - (*ImportIssuerPairResult)(nil), // 18: certmanagercontrol.importIssuerPairResult - (*RevokeIssuerPairParams)(nil), // 19: certmanagercontrol.revokeIssuerPairParams - (*RevokeIssuerPairResult)(nil), // 20: certmanagercontrol.revokeIssuerPairResult - (*UnrevokeIssuerPairParams)(nil), // 21: certmanagercontrol.unrevokeIssuerPairParams - (*UnrevokeIssuerPairResult)(nil), // 22: certmanagercontrol.unrevokeIssuerPairResult - (*ListIssuerPairsParams)(nil), // 23: certmanagercontrol.listIssuerPairsParams - (*ListIssuerPairsResult)(nil), // 24: certmanagercontrol.listIssuerPairsResult - (*IssierShortDescriptor)(nil), // 25: certmanagercontrol.IssierShortDescriptor - (*CreateServicePairParams)(nil), // 26: certmanagercontrol.createServicePairParams - (*CreateServicePairResult)(nil), // 27: certmanagercontrol.createServicePairResult - (*RevokeServicePairParams)(nil), // 28: certmanagercontrol.revokeServicePairParams - (*RevokeServicePairResult)(nil), // 29: certmanagercontrol.revokeServicePairResult - (*UnrevokeServicePairParams)(nil), // 30: certmanagercontrol.unrevokeServicePairParams - (*UnrevokeServicePairResult)(nil), // 31: certmanagercontrol.unrevokeServicePairResult - (*ServiceShortDescriptor)(nil), // 32: certmanagercontrol.ServiceShortDescriptor - (*ListServicePairsParams)(nil), // 33: certmanagercontrol.listServicePairsParams - (*ListServicePairsResult)(nil), // 34: certmanagercontrol.listServicePairsResult - (*GetServicePairParams)(nil), // 35: certmanagercontrol.getServicePairParams - (*GetServicePairResult)(nil), // 36: certmanagercontrol.getServicePairResult + (*SetGrantParams)(nil), // 0: certmanagercontrol.setGrantParams + (*SetGrantResult)(nil), // 1: certmanagercontrol.setGrantResult + (*DeleteGrantParams)(nil), // 2: certmanagercontrol.deleteGrantParams + (*DeleteGrantResult)(nil), // 3: certmanagercontrol.deleteGrantResult + (*CreateAccountParams)(nil), // 4: certmanagercontrol.createAccountParams + (*CreateAccountResult)(nil), // 5: certmanagercontrol.createAccountResult + (*DeleteAccountParams)(nil), // 6: certmanagercontrol.deleteAccountParams + (*DeleteAccountResult)(nil), // 7: certmanagercontrol.deleteAccountResult + (*UpdateAccountParams)(nil), // 8: certmanagercontrol.updateAccountParams + (*UpdateAccountResult)(nil), // 9: certmanagercontrol.updateAccountResult + (*GetAccountParams)(nil), // 10: certmanagercontrol.getAccountParams + (*GetAccountResult)(nil), // 11: certmanagercontrol.getAccountResult + (*ListAccountsParams)(nil), // 12: certmanagercontrol.listAccountsParams + (*ListAccountsResult)(nil), // 13: certmanagercontrol.listAccountsResult + (*AccountShortDescr)(nil), // 14: certmanagercontrol.accountShortDescr + (*GrantShortDescr)(nil), // 15: certmanagercontrol.grantShortDescr + (*GetStatusParams)(nil), // 16: certmanagercontrol.getStatusParams + (*GetStatusResult)(nil), // 17: certmanagercontrol.getStatusResult + (*CreateIssuerPairParams)(nil), // 18: certmanagercontrol.createIssuerPairParams + (*CreateIssuerPairResult)(nil), // 19: certmanagercontrol.createIssuerPairResult + (*GetIssuerCertificateParams)(nil), // 20: certmanagercontrol.getIssuerCertificateParams + (*GetIssuerCertificateResult)(nil), // 21: certmanagercontrol.getIssuerCertificateResult + (*ImportIssuerPairParams)(nil), // 22: certmanagercontrol.importIssuerPairParams + (*ImportIssuerPairResult)(nil), // 23: certmanagercontrol.importIssuerPairResult + (*RevokeIssuerPairParams)(nil), // 24: certmanagercontrol.revokeIssuerPairParams + (*RevokeIssuerPairResult)(nil), // 25: certmanagercontrol.revokeIssuerPairResult + (*UnrevokeIssuerPairParams)(nil), // 26: certmanagercontrol.unrevokeIssuerPairParams + (*UnrevokeIssuerPairResult)(nil), // 27: certmanagercontrol.unrevokeIssuerPairResult + (*ListIssuerPairsParams)(nil), // 28: certmanagercontrol.listIssuerPairsParams + (*ListIssuerPairsResult)(nil), // 29: certmanagercontrol.listIssuerPairsResult + (*IssierShortDescriptor)(nil), // 30: certmanagercontrol.IssierShortDescriptor + (*CreateServicePairParams)(nil), // 31: certmanagercontrol.createServicePairParams + (*CreateServicePairResult)(nil), // 32: certmanagercontrol.createServicePairResult + (*RevokeServicePairParams)(nil), // 33: certmanagercontrol.revokeServicePairParams + (*RevokeServicePairResult)(nil), // 34: certmanagercontrol.revokeServicePairResult + (*UnrevokeServicePairParams)(nil), // 35: certmanagercontrol.unrevokeServicePairParams + (*UnrevokeServicePairResult)(nil), // 36: certmanagercontrol.unrevokeServicePairResult + (*ServiceShortDescriptor)(nil), // 37: certmanagercontrol.ServiceShortDescriptor + (*ListServicePairsParams)(nil), // 38: certmanagercontrol.listServicePairsParams + (*ListServicePairsResult)(nil), // 39: certmanagercontrol.listServicePairsResult + (*GetServicePairParams)(nil), // 40: certmanagercontrol.getServicePairParams + (*GetServicePairResult)(nil), // 41: certmanagercontrol.getServicePairResult } var file_cmctl_proto_depIdxs = []int32{ - 10, // 0: certmanagercontrol.listAccountsResult.accounts:type_name -> certmanagercontrol.accountShortDescr - 25, // 1: certmanagercontrol.listIssuerPairsResult.issuers:type_name -> certmanagercontrol.IssierShortDescriptor - 32, // 2: certmanagercontrol.listServicePairsResult.services:type_name -> certmanagercontrol.ServiceShortDescriptor - 11, // 3: certmanagercontrol.Control.getStatus:input_type -> certmanagercontrol.getStatusParams - 13, // 4: certmanagercontrol.Control.createIssuerPair:input_type -> certmanagercontrol.createIssuerPairParams - 17, // 5: certmanagercontrol.Control.importIssuerPair:input_type -> certmanagercontrol.importIssuerPairParams - 19, // 6: certmanagercontrol.Control.revokeIssuerPair:input_type -> certmanagercontrol.revokeIssuerPairParams - 21, // 7: certmanagercontrol.Control.unrevokeIssuerPair:input_type -> certmanagercontrol.unrevokeIssuerPairParams - 23, // 8: certmanagercontrol.Control.listIssuerPairs:input_type -> certmanagercontrol.listIssuerPairsParams - 15, // 9: certmanagercontrol.Control.getIssuerCertificate:input_type -> certmanagercontrol.getIssuerCertificateParams - 26, // 10: certmanagercontrol.Control.createServicePair:input_type -> certmanagercontrol.createServicePairParams - 28, // 11: certmanagercontrol.Control.revokeServicePair:input_type -> certmanagercontrol.revokeServicePairParams - 30, // 12: certmanagercontrol.Control.unrevokeServicePair:input_type -> certmanagercontrol.unrevokeServicePairParams - 33, // 13: certmanagercontrol.Control.listServicePairs:input_type -> certmanagercontrol.listServicePairsParams - 35, // 14: certmanagercontrol.Control.getServicePair:input_type -> certmanagercontrol.getServicePairParams - 0, // 15: certmanagercontrol.Control.createAccount:input_type -> certmanagercontrol.createAccountParams - 2, // 16: certmanagercontrol.Control.deleteAccount:input_type -> certmanagercontrol.deleteAccountParams - 4, // 17: certmanagercontrol.Control.updateAccount:input_type -> certmanagercontrol.updateAccountParams - 6, // 18: certmanagercontrol.Control.getAccount:input_type -> certmanagercontrol.getAccountParams - 8, // 19: certmanagercontrol.Control.listAccounts:input_type -> certmanagercontrol.listAccountsParams - 12, // 20: certmanagercontrol.Control.getStatus:output_type -> certmanagercontrol.getStatusResult - 14, // 21: certmanagercontrol.Control.createIssuerPair:output_type -> certmanagercontrol.createIssuerPairResult - 18, // 22: certmanagercontrol.Control.importIssuerPair:output_type -> certmanagercontrol.importIssuerPairResult - 20, // 23: certmanagercontrol.Control.revokeIssuerPair:output_type -> certmanagercontrol.revokeIssuerPairResult - 22, // 24: certmanagercontrol.Control.unrevokeIssuerPair:output_type -> certmanagercontrol.unrevokeIssuerPairResult - 24, // 25: certmanagercontrol.Control.listIssuerPairs:output_type -> certmanagercontrol.listIssuerPairsResult - 16, // 26: certmanagercontrol.Control.getIssuerCertificate:output_type -> certmanagercontrol.getIssuerCertificateResult - 27, // 27: certmanagercontrol.Control.createServicePair:output_type -> certmanagercontrol.createServicePairResult - 29, // 28: certmanagercontrol.Control.revokeServicePair:output_type -> certmanagercontrol.revokeServicePairResult - 31, // 29: certmanagercontrol.Control.unrevokeServicePair:output_type -> certmanagercontrol.unrevokeServicePairResult - 34, // 30: certmanagercontrol.Control.listServicePairs:output_type -> certmanagercontrol.listServicePairsResult - 36, // 31: certmanagercontrol.Control.getServicePair:output_type -> certmanagercontrol.getServicePairResult - 1, // 32: certmanagercontrol.Control.createAccount:output_type -> certmanagercontrol.createAccountResult - 3, // 33: certmanagercontrol.Control.deleteAccount:output_type -> certmanagercontrol.deleteAccountResult - 5, // 34: certmanagercontrol.Control.updateAccount:output_type -> certmanagercontrol.updateAccountResult - 7, // 35: certmanagercontrol.Control.getAccount:output_type -> certmanagercontrol.getAccountResult - 9, // 36: certmanagercontrol.Control.listAccounts:output_type -> certmanagercontrol.listAccountsResult - 20, // [20:37] is the sub-list for method output_type - 3, // [3:20] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 14, // 0: certmanagercontrol.listAccountsResult.accounts:type_name -> certmanagercontrol.accountShortDescr + 15, // 1: certmanagercontrol.accountShortDescr.grants:type_name -> certmanagercontrol.grantShortDescr + 30, // 2: certmanagercontrol.listIssuerPairsResult.issuers:type_name -> certmanagercontrol.IssierShortDescriptor + 37, // 3: certmanagercontrol.listServicePairsResult.services:type_name -> certmanagercontrol.ServiceShortDescriptor + 16, // 4: certmanagercontrol.Control.getStatus:input_type -> certmanagercontrol.getStatusParams + 18, // 5: certmanagercontrol.Control.createIssuerPair:input_type -> certmanagercontrol.createIssuerPairParams + 22, // 6: certmanagercontrol.Control.importIssuerPair:input_type -> certmanagercontrol.importIssuerPairParams + 24, // 7: certmanagercontrol.Control.revokeIssuerPair:input_type -> certmanagercontrol.revokeIssuerPairParams + 26, // 8: certmanagercontrol.Control.unrevokeIssuerPair:input_type -> certmanagercontrol.unrevokeIssuerPairParams + 28, // 9: certmanagercontrol.Control.listIssuerPairs:input_type -> certmanagercontrol.listIssuerPairsParams + 20, // 10: certmanagercontrol.Control.getIssuerCertificate:input_type -> certmanagercontrol.getIssuerCertificateParams + 31, // 11: certmanagercontrol.Control.createServicePair:input_type -> certmanagercontrol.createServicePairParams + 33, // 12: certmanagercontrol.Control.revokeServicePair:input_type -> certmanagercontrol.revokeServicePairParams + 35, // 13: certmanagercontrol.Control.unrevokeServicePair:input_type -> certmanagercontrol.unrevokeServicePairParams + 38, // 14: certmanagercontrol.Control.listServicePairs:input_type -> certmanagercontrol.listServicePairsParams + 40, // 15: certmanagercontrol.Control.getServicePair:input_type -> certmanagercontrol.getServicePairParams + 4, // 16: certmanagercontrol.Control.createAccount:input_type -> certmanagercontrol.createAccountParams + 6, // 17: certmanagercontrol.Control.deleteAccount:input_type -> certmanagercontrol.deleteAccountParams + 8, // 18: certmanagercontrol.Control.updateAccount:input_type -> certmanagercontrol.updateAccountParams + 10, // 19: certmanagercontrol.Control.getAccount:input_type -> certmanagercontrol.getAccountParams + 12, // 20: certmanagercontrol.Control.listAccounts:input_type -> certmanagercontrol.listAccountsParams + 0, // 21: certmanagercontrol.Control.setGrant:input_type -> certmanagercontrol.setGrantParams + 2, // 22: certmanagercontrol.Control.deleteGrant:input_type -> certmanagercontrol.deleteGrantParams + 17, // 23: certmanagercontrol.Control.getStatus:output_type -> certmanagercontrol.getStatusResult + 19, // 24: certmanagercontrol.Control.createIssuerPair:output_type -> certmanagercontrol.createIssuerPairResult + 23, // 25: certmanagercontrol.Control.importIssuerPair:output_type -> certmanagercontrol.importIssuerPairResult + 25, // 26: certmanagercontrol.Control.revokeIssuerPair:output_type -> certmanagercontrol.revokeIssuerPairResult + 27, // 27: certmanagercontrol.Control.unrevokeIssuerPair:output_type -> certmanagercontrol.unrevokeIssuerPairResult + 29, // 28: certmanagercontrol.Control.listIssuerPairs:output_type -> certmanagercontrol.listIssuerPairsResult + 21, // 29: certmanagercontrol.Control.getIssuerCertificate:output_type -> certmanagercontrol.getIssuerCertificateResult + 32, // 30: certmanagercontrol.Control.createServicePair:output_type -> certmanagercontrol.createServicePairResult + 34, // 31: certmanagercontrol.Control.revokeServicePair:output_type -> certmanagercontrol.revokeServicePairResult + 36, // 32: certmanagercontrol.Control.unrevokeServicePair:output_type -> certmanagercontrol.unrevokeServicePairResult + 39, // 33: certmanagercontrol.Control.listServicePairs:output_type -> certmanagercontrol.listServicePairsResult + 41, // 34: certmanagercontrol.Control.getServicePair:output_type -> certmanagercontrol.getServicePairResult + 5, // 35: certmanagercontrol.Control.createAccount:output_type -> certmanagercontrol.createAccountResult + 7, // 36: certmanagercontrol.Control.deleteAccount:output_type -> certmanagercontrol.deleteAccountResult + 9, // 37: certmanagercontrol.Control.updateAccount:output_type -> certmanagercontrol.updateAccountResult + 11, // 38: certmanagercontrol.Control.getAccount:output_type -> certmanagercontrol.getAccountResult + 13, // 39: certmanagercontrol.Control.listAccounts:output_type -> certmanagercontrol.listAccountsResult + 1, // 40: certmanagercontrol.Control.setGrant:output_type -> certmanagercontrol.setGrantResult + 3, // 41: certmanagercontrol.Control.deleteGrant:output_type -> certmanagercontrol.deleteGrantResult + 23, // [23:42] is the sub-list for method output_type + 4, // [4:23] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_cmctl_proto_init() } @@ -2597,7 +2908,7 @@ func file_cmctl_proto_init() { } if !protoimpl.UnsafeEnabled { file_cmctl_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateAccountParams); i { + switch v := v.(*SetGrantParams); i { case 0: return &v.state case 1: @@ -2609,7 +2920,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateAccountResult); i { + switch v := v.(*SetGrantResult); i { case 0: return &v.state case 1: @@ -2621,7 +2932,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteAccountParams); i { + switch v := v.(*DeleteGrantParams); i { case 0: return &v.state case 1: @@ -2633,7 +2944,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteAccountResult); i { + switch v := v.(*DeleteGrantResult); i { case 0: return &v.state case 1: @@ -2645,7 +2956,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAccountParams); i { + switch v := v.(*CreateAccountParams); i { case 0: return &v.state case 1: @@ -2657,7 +2968,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAccountResult); i { + switch v := v.(*CreateAccountResult); i { case 0: return &v.state case 1: @@ -2669,7 +2980,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAccountParams); i { + switch v := v.(*DeleteAccountParams); i { case 0: return &v.state case 1: @@ -2681,7 +2992,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAccountResult); i { + switch v := v.(*DeleteAccountResult); i { case 0: return &v.state case 1: @@ -2693,7 +3004,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAccountsParams); i { + switch v := v.(*UpdateAccountParams); i { case 0: return &v.state case 1: @@ -2705,7 +3016,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAccountsResult); i { + switch v := v.(*UpdateAccountResult); i { case 0: return &v.state case 1: @@ -2717,7 +3028,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountShortDescr); i { + switch v := v.(*GetAccountParams); i { case 0: return &v.state case 1: @@ -2729,7 +3040,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetStatusParams); i { + switch v := v.(*GetAccountResult); i { case 0: return &v.state case 1: @@ -2741,7 +3052,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetStatusResult); i { + switch v := v.(*ListAccountsParams); i { case 0: return &v.state case 1: @@ -2753,7 +3064,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateIssuerPairParams); i { + switch v := v.(*ListAccountsResult); i { case 0: return &v.state case 1: @@ -2765,7 +3076,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateIssuerPairResult); i { + switch v := v.(*AccountShortDescr); i { case 0: return &v.state case 1: @@ -2777,7 +3088,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetIssuerCertificateParams); i { + switch v := v.(*GrantShortDescr); i { case 0: return &v.state case 1: @@ -2789,7 +3100,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetIssuerCertificateResult); i { + switch v := v.(*GetStatusParams); i { case 0: return &v.state case 1: @@ -2801,7 +3112,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ImportIssuerPairParams); i { + switch v := v.(*GetStatusResult); i { case 0: return &v.state case 1: @@ -2813,7 +3124,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ImportIssuerPairResult); i { + switch v := v.(*CreateIssuerPairParams); i { case 0: return &v.state case 1: @@ -2825,7 +3136,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevokeIssuerPairParams); i { + switch v := v.(*CreateIssuerPairResult); i { case 0: return &v.state case 1: @@ -2837,7 +3148,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevokeIssuerPairResult); i { + switch v := v.(*GetIssuerCertificateParams); i { case 0: return &v.state case 1: @@ -2849,7 +3160,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnrevokeIssuerPairParams); i { + switch v := v.(*GetIssuerCertificateResult); i { case 0: return &v.state case 1: @@ -2861,7 +3172,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnrevokeIssuerPairResult); i { + switch v := v.(*ImportIssuerPairParams); i { case 0: return &v.state case 1: @@ -2873,7 +3184,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListIssuerPairsParams); i { + switch v := v.(*ImportIssuerPairResult); i { case 0: return &v.state case 1: @@ -2885,7 +3196,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListIssuerPairsResult); i { + switch v := v.(*RevokeIssuerPairParams); i { case 0: return &v.state case 1: @@ -2897,7 +3208,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IssierShortDescriptor); i { + switch v := v.(*RevokeIssuerPairResult); i { case 0: return &v.state case 1: @@ -2909,7 +3220,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateServicePairParams); i { + switch v := v.(*UnrevokeIssuerPairParams); i { case 0: return &v.state case 1: @@ -2921,7 +3232,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateServicePairResult); i { + switch v := v.(*UnrevokeIssuerPairResult); i { case 0: return &v.state case 1: @@ -2933,7 +3244,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevokeServicePairParams); i { + switch v := v.(*ListIssuerPairsParams); i { case 0: return &v.state case 1: @@ -2945,7 +3256,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevokeServicePairResult); i { + switch v := v.(*ListIssuerPairsResult); i { case 0: return &v.state case 1: @@ -2957,7 +3268,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnrevokeServicePairParams); i { + switch v := v.(*IssierShortDescriptor); i { case 0: return &v.state case 1: @@ -2969,7 +3280,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnrevokeServicePairResult); i { + switch v := v.(*CreateServicePairParams); i { case 0: return &v.state case 1: @@ -2981,7 +3292,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServiceShortDescriptor); i { + switch v := v.(*CreateServicePairResult); i { case 0: return &v.state case 1: @@ -2993,7 +3304,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListServicePairsParams); i { + switch v := v.(*RevokeServicePairParams); i { case 0: return &v.state case 1: @@ -3005,7 +3316,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListServicePairsResult); i { + switch v := v.(*RevokeServicePairResult); i { case 0: return &v.state case 1: @@ -3017,7 +3328,7 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetServicePairParams); i { + switch v := v.(*UnrevokeServicePairParams); i { case 0: return &v.state case 1: @@ -3029,6 +3340,66 @@ func file_cmctl_proto_init() { } } file_cmctl_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnrevokeServicePairResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmctl_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ServiceShortDescriptor); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmctl_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListServicePairsParams); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmctl_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListServicePairsResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmctl_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetServicePairParams); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmctl_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetServicePairResult); i { case 0: return &v.state @@ -3047,7 +3418,7 @@ func file_cmctl_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cmctl_proto_rawDesc, NumEnums: 0, - NumMessages: 37, + NumMessages: 42, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/cmctl/cmctl_grpc.pb.go b/pkg/cmctl/cmctl_grpc.pb.go index df795af..67c8a43 100644 --- a/pkg/cmctl/cmctl_grpc.pb.go +++ b/pkg/cmctl/cmctl_grpc.pb.go @@ -36,6 +36,8 @@ const ( Control_UpdateAccount_FullMethodName = "/certmanagercontrol.Control/updateAccount" Control_GetAccount_FullMethodName = "/certmanagercontrol.Control/getAccount" Control_ListAccounts_FullMethodName = "/certmanagercontrol.Control/listAccounts" + Control_SetGrant_FullMethodName = "/certmanagercontrol.Control/setGrant" + Control_DeleteGrant_FullMethodName = "/certmanagercontrol.Control/deleteGrant" ) // ControlClient is the client API for Control service. @@ -59,6 +61,8 @@ type ControlClient interface { UpdateAccount(ctx context.Context, in *UpdateAccountParams, opts ...grpc.CallOption) (*UpdateAccountResult, error) GetAccount(ctx context.Context, in *GetAccountParams, opts ...grpc.CallOption) (*GetAccountResult, error) ListAccounts(ctx context.Context, in *ListAccountsParams, opts ...grpc.CallOption) (*ListAccountsResult, error) + SetGrant(ctx context.Context, in *SetGrantParams, opts ...grpc.CallOption) (*SetGrantResult, error) + DeleteGrant(ctx context.Context, in *DeleteGrantParams, opts ...grpc.CallOption) (*DeleteGrantResult, error) } type controlClient struct { @@ -222,6 +226,24 @@ func (c *controlClient) ListAccounts(ctx context.Context, in *ListAccountsParams return out, nil } +func (c *controlClient) SetGrant(ctx context.Context, in *SetGrantParams, opts ...grpc.CallOption) (*SetGrantResult, error) { + out := new(SetGrantResult) + err := c.cc.Invoke(ctx, Control_SetGrant_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *controlClient) DeleteGrant(ctx context.Context, in *DeleteGrantParams, opts ...grpc.CallOption) (*DeleteGrantResult, error) { + out := new(DeleteGrantResult) + err := c.cc.Invoke(ctx, Control_DeleteGrant_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ControlServer is the server API for Control service. // All implementations must embed UnimplementedControlServer // for forward compatibility @@ -243,6 +265,8 @@ type ControlServer interface { UpdateAccount(context.Context, *UpdateAccountParams) (*UpdateAccountResult, error) GetAccount(context.Context, *GetAccountParams) (*GetAccountResult, error) ListAccounts(context.Context, *ListAccountsParams) (*ListAccountsResult, error) + SetGrant(context.Context, *SetGrantParams) (*SetGrantResult, error) + DeleteGrant(context.Context, *DeleteGrantParams) (*DeleteGrantResult, error) mustEmbedUnimplementedControlServer() } @@ -301,6 +325,12 @@ func (UnimplementedControlServer) GetAccount(context.Context, *GetAccountParams) func (UnimplementedControlServer) ListAccounts(context.Context, *ListAccountsParams) (*ListAccountsResult, error) { return nil, status.Errorf(codes.Unimplemented, "method ListAccounts not implemented") } +func (UnimplementedControlServer) SetGrant(context.Context, *SetGrantParams) (*SetGrantResult, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetGrant not implemented") +} +func (UnimplementedControlServer) DeleteGrant(context.Context, *DeleteGrantParams) (*DeleteGrantResult, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteGrant not implemented") +} func (UnimplementedControlServer) mustEmbedUnimplementedControlServer() {} // UnsafeControlServer may be embedded to opt out of forward compatibility for this service. @@ -620,6 +650,42 @@ func _Control_ListAccounts_Handler(srv interface{}, ctx context.Context, dec fun return interceptor(ctx, in, info, handler) } +func _Control_SetGrant_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetGrantParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ControlServer).SetGrant(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Control_SetGrant_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ControlServer).SetGrant(ctx, req.(*SetGrantParams)) + } + return interceptor(ctx, in, info, handler) +} + +func _Control_DeleteGrant_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteGrantParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ControlServer).DeleteGrant(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Control_DeleteGrant_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ControlServer).DeleteGrant(ctx, req.(*DeleteGrantParams)) + } + return interceptor(ctx, in, info, handler) +} + // Control_ServiceDesc is the grpc.ServiceDesc for Control service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -695,6 +761,14 @@ var Control_ServiceDesc = grpc.ServiceDesc{ MethodName: "listAccounts", Handler: _Control_ListAccounts_Handler, }, + { + MethodName: "setGrant", + Handler: _Control_SetGrant_Handler, + }, + { + MethodName: "deleteGrant", + Handler: _Control_DeleteGrant_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "cmctl.proto", diff --git a/proto/cmctl.proto b/proto/cmctl.proto index 5a0bfb5..2d141c4 100644 --- a/proto/cmctl.proto +++ b/proto/cmctl.proto @@ -26,7 +26,26 @@ service Control { rpc getAccount(getAccountParams) returns (getAccountResult) {}; rpc listAccounts(listAccountsParams) returns (listAccountsResult) {}; + rpc setGrant(setGrantParams) returns (setGrantResult) {}; + rpc deleteGrant(deleteGrantParams) returns (deleteGrantResult) {}; + +} + +message setGrantParams { + string username = 1; + int64 accountID = 2; + string operation = 3; +} +message setGrantResult { + int64 grantID = 1; +} + +message deleteGrantParams { + string username = 1; + int64 accountID = 2; + string operation = 3; } +message deleteGrantResult {} message createAccountParams { @@ -65,8 +84,16 @@ message accountShortDescr { bool disabled = 2; string createdAt = 3; string updatedAt = 4; + repeated grantShortDescr grants = 5; } +message grantShortDescr { + string operation = 1; + string createdAt = 2; +} + + + message getStatusParams {} message getStatusResult { string message = 1;