diff --git a/commands/cmderrors/cmderrors.go b/commands/cmderrors/cmderrors.go index 38eef33bcc1..2043206694d 100644 --- a/commands/cmderrors/cmderrors.go +++ b/commands/cmderrors/cmderrors.go @@ -31,6 +31,9 @@ func composeErrorMsg(msg string, cause error) string { if cause == nil { return msg } + if msg == "" { + return cause.Error() + } return fmt.Sprintf("%v: %v", msg, cause) } @@ -212,6 +215,20 @@ func (e *UnknownProfileError) GRPCStatus() *status.Status { return status.New(codes.NotFound, e.Error()) } +// DuplicateProfileError is returned when the profile is a duplicate of an already existing one +type DuplicateProfileError struct { + Profile string +} + +func (e *DuplicateProfileError) Error() string { + return i18n.Tr("Profile '%s' already exists", e.Profile) +} + +// GRPCStatus converts the error into a *status.Status +func (e *DuplicateProfileError) GRPCStatus() *status.Status { + return status.New(codes.AlreadyExists, e.Error()) +} + // InvalidProfileError is returned when the profile has errors type InvalidProfileError struct { Cause error @@ -456,7 +473,7 @@ func (e *PlatformLoadingError) Unwrap() error { return e.Cause } -// LibraryNotFoundError is returned when a platform is not found +// LibraryNotFoundError is returned when a library is not found type LibraryNotFoundError struct { Library string Cause error @@ -904,3 +921,15 @@ func (e *InstanceNeedsReinitialization) GRPCStatus() *status.Status { WithDetails(&rpc.InstanceNeedsReinitializationError{}) return st } + +// MissingProfileError is returned when the Profile is mandatory and not specified +type MissingProfileError struct{} + +func (e *MissingProfileError) Error() string { + return i18n.Tr("Missing Profile name") +} + +// GRPCStatus converts the error into a *status.Status +func (e *MissingProfileError) GRPCStatus() *status.Status { + return status.New(codes.InvalidArgument, e.Error()) +} diff --git a/commands/service_library_install.go b/commands/service_library_install.go index 3fe2641282a..154704354c9 100644 --- a/commands/service_library_install.go +++ b/commands/service_library_install.go @@ -67,12 +67,17 @@ func (s *arduinoCoreServerImpl) LibraryInstall(req *rpc.LibraryInstallRequest, s return err } - toInstall := map[string]*rpc.LibraryDependencyStatus{} + toInstall := map[string]*librariesindex.Release{} if req.GetNoDeps() { - toInstall[req.GetName()] = &rpc.LibraryDependencyStatus{ - Name: req.GetName(), - VersionRequired: req.GetVersion(), + version, err := parseVersion(req.GetVersion()) + if err != nil { + return err + } + libRelease, err := li.FindRelease(req.GetName(), version) + if err != nil { + return err } + toInstall[libRelease.GetName()] = libRelease } else { // Obtain the library explorer from the instance lme, releaseLme, err := instances.GetLibraryManagerExplorer(req.GetInstance()) @@ -80,18 +85,18 @@ func (s *arduinoCoreServerImpl) LibraryInstall(req *rpc.LibraryInstallRequest, s return err } - res, err := libraryResolveDependencies(lme, li, req.GetName(), req.GetVersion(), req.GetNoOverwrite()) + deps, err := libraryResolveDependencies(lme, li, req.GetName(), req.GetVersion(), req.GetNoOverwrite()) releaseLme() if err != nil { return err } - for _, dep := range res.GetDependencies() { + for _, dep := range deps { if existingDep, has := toInstall[dep.GetName()]; has { - if existingDep.GetVersionRequired() != dep.GetVersionRequired() { + if !existingDep.GetVersion().Equal(dep.GetVersion()) { err := errors.New( i18n.Tr("two different versions of the library %[1]s are required: %[2]s and %[3]s", - dep.GetName(), dep.GetVersionRequired(), existingDep.GetVersionRequired())) + dep.GetName(), dep.GetVersion(), existingDep.GetVersion())) return &cmderrors.LibraryDependenciesResolutionFailedError{Cause: err} } } @@ -118,16 +123,7 @@ func (s *arduinoCoreServerImpl) LibraryInstall(req *rpc.LibraryInstallRequest, s // Find the libReleasesToInstall to install libReleasesToInstall := map[*librariesindex.Release]*librariesmanager.LibraryInstallPlan{} installLocation := libraries.FromRPCLibraryInstallLocation(req.GetInstallLocation()) - for _, lib := range toInstall { - version, err := parseVersion(lib.GetVersionRequired()) - if err != nil { - return err - } - libRelease, err := li.FindRelease(lib.GetName(), version) - if err != nil { - return err - } - + for _, libRelease := range toInstall { installTask, err := lmi.InstallPrerequisiteCheck(libRelease.Library.Name, libRelease.Version, installLocation) if err != nil { return err diff --git a/commands/service_library_resolve_deps.go b/commands/service_library_resolve_deps.go index 83cc7f1f737..56b97c3b850 100644 --- a/commands/service_library_resolve_deps.go +++ b/commands/service_library_resolve_deps.go @@ -43,11 +43,43 @@ func (s *arduinoCoreServerImpl) LibraryResolveDependencies(ctx context.Context, return nil, err } - return libraryResolveDependencies(lme, li, req.GetName(), req.GetVersion(), req.GetDoNotUpdateInstalledLibraries()) + deps, err := libraryResolveDependencies(lme, li, req.GetName(), req.GetVersion(), req.GetDoNotUpdateInstalledLibraries()) + if err != nil { + return nil, err + } + + // Extract all installed libraries + installedLibs := map[string]*libraries.Library{} + for _, lib := range listLibraries(lme, li, false, false) { + installedLibs[lib.Library.Name] = lib.Library + } + + res := []*rpc.LibraryDependencyStatus{} + for _, dep := range deps { + // ...and add information on currently installed versions of the libraries + var installed *semver.Version + required := dep.GetVersion() + if installedLib, has := installedLibs[dep.GetName()]; has { + installed = installedLib.Version + if installed != nil && required != nil && installed.Equal(required) { + // avoid situations like installed=0.53 and required=0.53.0 + required = installed + } + } + res = append(res, &rpc.LibraryDependencyStatus{ + Name: dep.GetName(), + VersionRequired: required.String(), + VersionInstalled: installed.String(), + }) + } + sort.Slice(res, func(i, j int) bool { + return res[i].GetName() < res[j].GetName() + }) + return &rpc.LibraryResolveDependenciesResponse{Dependencies: res}, nil } func libraryResolveDependencies(lme *librariesmanager.Explorer, li *librariesindex.Index, - reqName, reqVersion string, noOverwrite bool) (*rpc.LibraryResolveDependenciesResponse, error) { + reqName, reqVersion string, noOverwrite bool) ([]*librariesindex.Release, error) { version, err := parseVersion(reqVersion) if err != nil { return nil, err @@ -59,12 +91,6 @@ func libraryResolveDependencies(lme *librariesmanager.Explorer, li *librariesind return nil, err } - // Extract all installed libraries - installedLibs := map[string]*libraries.Library{} - for _, lib := range listLibraries(lme, li, false, false) { - installedLibs[lib.Library.Name] = lib.Library - } - // Resolve all dependencies... var overrides []*librariesindex.Release if noOverwrite { @@ -92,26 +118,5 @@ func libraryResolveDependencies(lme *librariesmanager.Explorer, li *librariesind return nil, &cmderrors.LibraryDependenciesResolutionFailedError{} } - res := []*rpc.LibraryDependencyStatus{} - for _, dep := range deps { - // ...and add information on currently installed versions of the libraries - var installed *semver.Version - required := dep.GetVersion() - if installedLib, has := installedLibs[dep.GetName()]; has { - installed = installedLib.Version - if installed != nil && required != nil && installed.Equal(required) { - // avoid situations like installed=0.53 and required=0.53.0 - required = installed - } - } - res = append(res, &rpc.LibraryDependencyStatus{ - Name: dep.GetName(), - VersionRequired: required.String(), - VersionInstalled: installed.String(), - }) - } - sort.Slice(res, func(i, j int) bool { - return res[i].GetName() < res[j].GetName() - }) - return &rpc.LibraryResolveDependenciesResponse{Dependencies: res}, nil + return deps, nil } diff --git a/commands/service_profile_dump.go b/commands/service_profile_dump.go new file mode 100644 index 00000000000..d52a14f7e1d --- /dev/null +++ b/commands/service_profile_dump.go @@ -0,0 +1,47 @@ +// This file is part of arduino-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package commands + +import ( + "context" + "encoding/json" + "fmt" + + "github.com/arduino/arduino-cli/commands/cmderrors" + "github.com/arduino/arduino-cli/internal/arduino/sketch" + rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" + "github.com/arduino/go-paths-helper" +) + +// ProfileDump dumps the content of the project file. +func (s *arduinoCoreServerImpl) ProfileDump(ctx context.Context, req *rpc.ProfileDumpRequest) (*rpc.ProfileDumpResponse, error) { + sk, err := sketch.New(paths.New(req.GetSketchPath())) + if err != nil { + return nil, err + } + switch req.GetDumpFormat() { + case "yaml": + return &rpc.ProfileDumpResponse{EncodedProfile: sk.Project.AsYaml()}, nil + case "", "json": + data, err := json.MarshalIndent(sk.Project, "", " ") + if err != nil { + return nil, fmt.Errorf("error marshalling settings: %v", err) + } + return &rpc.ProfileDumpResponse{EncodedProfile: string(data)}, nil + default: + return nil, &cmderrors.InvalidArgumentError{Message: fmt.Sprintf("unsupported format: %s", req.GetDumpFormat())} + } +} diff --git a/commands/service_profile_init.go b/commands/service_profile_init.go new file mode 100644 index 00000000000..d698ba0ad87 --- /dev/null +++ b/commands/service_profile_init.go @@ -0,0 +1,105 @@ +// This file is part of arduino-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package commands + +import ( + "context" + "errors" + "fmt" + + "github.com/arduino/arduino-cli/commands/cmderrors" + "github.com/arduino/arduino-cli/commands/internal/instances" + "github.com/arduino/arduino-cli/internal/arduino/sketch" + "github.com/arduino/arduino-cli/internal/i18n" + "github.com/arduino/arduino-cli/pkg/fqbn" + rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" + "github.com/arduino/go-paths-helper" +) + +// InitProfile creates a new project file if it does not exist. If a profile name with the associated FQBN is specified, +// it is added to the project. +func (s *arduinoCoreServerImpl) InitProfile(ctx context.Context, req *rpc.InitProfileRequest) (*rpc.InitProfileResponse, error) { + // Returns an error if the main file is missing from the sketch so there is no need to check if the path exists + sk, err := sketch.New(paths.New(req.GetSketchPath())) + if err != nil { + return nil, err + } + projectFilePath := sk.GetProjectPath() + + if !projectFilePath.Exist() { + err := projectFilePath.WriteFile([]byte("profiles: {}\n")) + if err != nil { + return nil, err + } + } + + if req.GetProfileName() != "" { + if req.GetFqbn() == "" { + return nil, &cmderrors.MissingFQBNError{} + } + fqbn, err := fqbn.Parse(req.GetFqbn()) + if err != nil { + return nil, &cmderrors.InvalidFQBNError{Cause: err} + } + + // Check that the profile name is unique + if profile, _ := sk.GetProfile(req.ProfileName); profile != nil { + return nil, &cmderrors.DuplicateProfileError{Profile: req.ProfileName} + } + + pme, release, err := instances.GetPackageManagerExplorer(req.GetInstance()) + if err != nil { + return nil, err + } + defer release() + if pme.Dirty() { + return nil, &cmderrors.InstanceNeedsReinitialization{} + } + + // Automatically detect the target platform if it is installed on the user's machine + _, targetPlatform, _, _, _, err := pme.ResolveFQBN(fqbn) + if err != nil { + if targetPlatform == nil { + return nil, &cmderrors.PlatformNotFoundError{ + Platform: fmt.Sprintf("%s:%s", fqbn.Vendor, fqbn.Architecture), + Cause: errors.New(i18n.Tr("platform not installed")), + } + } + return nil, &cmderrors.InvalidFQBNError{Cause: err} + } + + newProfile := &sketch.Profile{Name: req.GetProfileName(), FQBN: req.GetFqbn()} + // TODO: what to do with the PlatformIndexURL? + newProfile.Platforms = append(newProfile.Platforms, &sketch.ProfilePlatformReference{ + Packager: targetPlatform.Platform.Package.Name, + Architecture: targetPlatform.Platform.Architecture, + Version: targetPlatform.Version, + }) + + sk.Project.Profiles = append(sk.Project.Profiles, newProfile) + // Set the profile as the default one if it's the only one + if req.DefaultProfile || len(sk.Project.Profiles) == 1 { + sk.Project.DefaultProfile = newProfile.Name + } + + err = projectFilePath.WriteFile([]byte(sk.Project.AsYaml())) + if err != nil { + return nil, err + } + } + + return &rpc.InitProfileResponse{ProjectFilePath: projectFilePath.String()}, nil +} diff --git a/commands/service_profile_lib_add.go b/commands/service_profile_lib_add.go new file mode 100644 index 00000000000..d5da2487fd2 --- /dev/null +++ b/commands/service_profile_lib_add.go @@ -0,0 +1,135 @@ +// This file is part of arduino-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package commands + +import ( + "context" + + "github.com/arduino/arduino-cli/commands/cmderrors" + "github.com/arduino/arduino-cli/commands/internal/instances" + "github.com/arduino/arduino-cli/internal/arduino/libraries/librariesindex" + "github.com/arduino/arduino-cli/internal/arduino/sketch" + rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" + paths "github.com/arduino/go-paths-helper" + "go.bug.st/f" +) + +// ProfileLibAdd adds a library to the specified profile or to the default profile. +func (s *arduinoCoreServerImpl) ProfileLibAdd(ctx context.Context, req *rpc.ProfileLibAddRequest) (*rpc.ProfileLibAddResponse, error) { + // Returns an error if the main file is missing from the sketch so there is no need to check if the path exists + sk, err := sketch.New(paths.New(req.GetSketchPath())) + if err != nil { + return nil, err + } + projectFilePath := sk.GetProjectPath() + + // If no profile is specified, try to use the default one + profileName := sk.Project.DefaultProfile + if req.GetProfileName() != "" { + profileName = req.GetProfileName() + } + if profileName == "" { + return nil, &cmderrors.MissingProfileError{} + } + + profile, err := sk.GetProfile(profileName) + if err != nil { + return nil, err + } + + var addedLibs []*sketch.ProfileLibraryReference + var skippedLibs []*sketch.ProfileLibraryReference + if reqLocalLib := req.GetLibrary().GetLocalLibrary(); reqLocalLib != nil { + // Add a local library + path := paths.New(reqLocalLib.GetPath()) + if path == nil { + return nil, &cmderrors.InvalidArgumentError{Message: "invalid library path"} + } + addedLib := &sketch.ProfileLibraryReference{InstallDir: path} + profile.Libraries = append(profile.Libraries, addedLib) + addedLibs = append(addedLibs, addedLib) + } else if reqIndexLib := req.GetLibrary().GetIndexLibrary(); reqIndexLib != nil { + // Obtain the library index from the manager + li, err := instances.GetLibrariesIndex(req.GetInstance()) + if err != nil { + return nil, err + } + version, err := parseVersion(reqIndexLib.GetVersion()) + if err != nil { + return nil, err + } + libRelease, err := li.FindRelease(reqIndexLib.GetName(), version) + if err != nil { + return nil, err + } + + add := func(libReleaseToAdd *librariesindex.Release) { + libRefToAdd := &sketch.ProfileLibraryReference{ + Library: libReleaseToAdd.GetName(), + Version: libReleaseToAdd.GetVersion(), + } + existingLibRef, _ := profile.GetLibrary(libReleaseToAdd.GetName()) + if existingLibRef == nil { + profile.Libraries = append(profile.Libraries, libRefToAdd) + addedLibs = append(addedLibs, libRefToAdd) + return + } + // If the same version of the library has been already added to the profile, skip it + if existingLibRef.Version.Equal(libReleaseToAdd.GetVersion()) { + skippedLibs = append(skippedLibs, libRefToAdd) + return + } + // If the library has been already added to the profile, just update the version + if req.GetNoOverwrite() { + skippedLibs = append(skippedLibs, libRefToAdd) + return + } + existingLibRef.Version = libReleaseToAdd.GetVersion() + addedLibs = append(addedLibs, existingLibRef) + } + + if req.GetAddDependencies() { + lme, release, err := instances.GetLibraryManagerExplorer(req.GetInstance()) + if err != nil { + return nil, err + } + libWithDeps, err := libraryResolveDependencies(lme, li, libRelease.GetName(), libRelease.GetVersion().String(), false) + // deps contains the main library as well, so we skip it when adding dependencies + release() + if err != nil { + return nil, err + } + for _, lib := range libWithDeps { + add(lib) + } + } else { + add(libRelease) + } + } else { + return nil, &cmderrors.InvalidArgumentError{Message: "library must be specified"} + } + + err = projectFilePath.WriteFile([]byte(sk.Project.AsYaml())) + if err != nil { + return nil, err + } + + return &rpc.ProfileLibAddResponse{ + AddedLibraries: f.Map(addedLibs, (*sketch.ProfileLibraryReference).ToRpc), + SkippedLibraries: f.Map(skippedLibs, (*sketch.ProfileLibraryReference).ToRpc), + ProfileName: profileName, + }, nil +} diff --git a/commands/service_profile_lib_list.go b/commands/service_profile_lib_list.go new file mode 100644 index 00000000000..5bc995975b4 --- /dev/null +++ b/commands/service_profile_lib_list.go @@ -0,0 +1,53 @@ +// This file is part of arduino-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package commands + +import ( + "context" + + "github.com/arduino/arduino-cli/commands/cmderrors" + "github.com/arduino/arduino-cli/internal/arduino/sketch" + rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" + paths "github.com/arduino/go-paths-helper" + "go.bug.st/f" +) + +// ProfileLibList lists the libraries in the build profile. +func (s *arduinoCoreServerImpl) ProfileLibList(ctx context.Context, req *rpc.ProfileLibListRequest) (*rpc.ProfileLibListResponse, error) { + sk, err := sketch.New(paths.New(req.GetSketchPath())) + if err != nil { + return nil, err + } + + // If no profile is specified, try to use the default one + profileName := sk.Project.DefaultProfile + if req.GetProfileName() != "" { + profileName = req.GetProfileName() + } + if profileName == "" { + return nil, &cmderrors.MissingProfileError{} + } + + profile, err := sk.GetProfile(profileName) + if err != nil { + return nil, &cmderrors.UnknownProfileError{Profile: profileName} + } + + return &rpc.ProfileLibListResponse{ + Libraries: f.Map(profile.Libraries, (*sketch.ProfileLibraryReference).ToRpc), + ProfileName: profileName, + }, nil +} diff --git a/commands/service_profile_lib_remove.go b/commands/service_profile_lib_remove.go new file mode 100644 index 00000000000..c93ed883274 --- /dev/null +++ b/commands/service_profile_lib_remove.go @@ -0,0 +1,65 @@ +// This file is part of arduino-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package commands + +import ( + "context" + + "github.com/arduino/arduino-cli/commands/cmderrors" + "github.com/arduino/arduino-cli/internal/arduino/sketch" + rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" + paths "github.com/arduino/go-paths-helper" +) + +// ProfileLibRemove removes a library from the specified profile or from the default profile. +func (s *arduinoCoreServerImpl) ProfileLibRemove(ctx context.Context, req *rpc.ProfileLibRemoveRequest) (*rpc.ProfileLibRemoveResponse, error) { + // Returns an error if the main file is missing from the sketch so there is no need to check if the path exists + sk, err := sketch.New(paths.New(req.GetSketchPath())) + if err != nil { + return nil, err + } + projectFilePath := sk.GetProjectPath() + + // If no profile is specified, try to use the default one + profileName := sk.Project.DefaultProfile + if req.GetProfileName() != "" { + profileName = req.GetProfileName() + } + if profileName == "" { + return nil, &cmderrors.MissingProfileError{} + } + + profile, err := sk.GetProfile(profileName) + if err != nil { + return nil, err + } + + libToRemove, err := sketch.FromRpcProfileLibraryReference(req.GetLibrary()) + if err != nil { + return nil, &cmderrors.InvalidArgumentError{Message: "invalid library reference", Cause: err} + } + removedLib, err := profile.RemoveLibrary(libToRemove) + if err != nil { + return nil, &cmderrors.InvalidArgumentError{Cause: err} + } + + err = projectFilePath.WriteFile([]byte(sk.Project.AsYaml())) + if err != nil { + return nil, err + } + + return &rpc.ProfileLibRemoveResponse{Library: removedLib.ToRpc(), ProfileName: profileName}, nil +} diff --git a/commands/service_profile_set_default.go b/commands/service_profile_set_default.go new file mode 100644 index 00000000000..aa262b26693 --- /dev/null +++ b/commands/service_profile_set_default.go @@ -0,0 +1,51 @@ +// This file is part of arduino-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package commands + +import ( + "context" + + "github.com/arduino/arduino-cli/commands/cmderrors" + "github.com/arduino/arduino-cli/internal/arduino/sketch" + rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" + paths "github.com/arduino/go-paths-helper" +) + +// ProfileSetDefault sets an existing profile as the default profile. +func (s *arduinoCoreServerImpl) ProfileSetDefault(ctx context.Context, req *rpc.ProfileSetDefaultRequest) (*rpc.ProfileSetDefaultResponse, error) { + if req.GetProfileName() == "" { + return nil, &cmderrors.MissingProfileError{} + } + + // Returns an error if the main file is missing from the sketch so there is no need to check if the path exists + sk, err := sketch.New(paths.New(req.GetSketchPath())) + if err != nil { + return nil, err + } + projectFilePath := sk.GetProjectPath() + + if _, err := sk.GetProfile(req.GetProfileName()); err != nil { + return nil, err + } + + sk.Project.DefaultProfile = req.GetProfileName() + err = projectFilePath.WriteFile([]byte(sk.Project.AsYaml())) + if err != nil { + return nil, err + } + + return &rpc.ProfileSetDefaultResponse{}, nil +} diff --git a/internal/arduino/sketch/profiles.go b/internal/arduino/sketch/profiles.go index 8592d4294f7..1a2ebf9b4f6 100644 --- a/internal/arduino/sketch/profiles.go +++ b/internal/arduino/sketch/profiles.go @@ -22,8 +22,10 @@ import ( "fmt" "net/url" "regexp" + "slices" "strings" + "github.com/arduino/arduino-cli/commands/cmderrors" "github.com/arduino/arduino-cli/internal/arduino/utils" "github.com/arduino/arduino-cli/internal/i18n" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" @@ -125,6 +127,25 @@ func (p *Profile) RequireSystemInstalledPlatform() bool { return p.Platforms[0].RequireSystemInstalledPlatform() } +func (p *Profile) GetLibrary(libraryName string) (*ProfileLibraryReference, error) { + for _, l := range p.Libraries { + if l.Library == libraryName { + return l, nil + } + } + return nil, &cmderrors.LibraryNotFoundError{Library: libraryName} +} + +func (p *Profile) RemoveLibrary(library *ProfileLibraryReference) (*ProfileLibraryReference, error) { + for i, l := range p.Libraries { + if l.Match(library) { + p.Libraries = slices.Delete(p.Libraries, i, i+1) + return l, nil + } + } + return nil, &cmderrors.LibraryNotFoundError{Library: library.String()} +} + // ToRpc converts this Profile to an rpc.SketchProfile func (p *Profile) ToRpc() *rpc.SketchProfile { var portConfig *rpc.MonitorPortConfiguration @@ -180,6 +201,9 @@ type ProfileRequiredPlatforms []*ProfilePlatformReference // AsYaml outputs the required platforms as Yaml func (p *ProfileRequiredPlatforms) AsYaml() string { + if len(*p) == 0 { + return " platforms: []\n" + } res := " platforms:\n" for _, platform := range *p { res += platform.AsYaml() @@ -371,9 +395,74 @@ func (l *ProfileLibraryReference) String() string { if l.InstallDir != nil { return fmt.Sprintf("%s@dir:%s", l.Library, l.InstallDir) } + if l.Version == nil { + return l.Library + } return fmt.Sprintf("%s@%s", l.Library, l.Version) } +// Match checks if this library reference matches another one. +// If one reference has the version not set, it matches any version of the other reference. +func (l *ProfileLibraryReference) Match(other *ProfileLibraryReference) bool { + if l.InstallDir != nil { + return other.InstallDir != nil && l.InstallDir.EqualsTo(other.InstallDir) + } + if other.InstallDir != nil { + return false + } + if l.Library != other.Library { + return false + } + if l.Version == nil || other.Version == nil { + return true + } + return l.Version.Equal(other.Version) +} + +// ToRpc converts this ProfileLibraryReference to an rpc.ProfileLibraryReference +func (l *ProfileLibraryReference) ToRpc() *rpc.ProfileLibraryReference { + if l.InstallDir != nil { + return &rpc.ProfileLibraryReference{ + Library: &rpc.ProfileLibraryReference_LocalLibrary_{ + LocalLibrary: &rpc.ProfileLibraryReference_LocalLibrary{ + Path: l.InstallDir.String(), + }, + }, + } + } + return &rpc.ProfileLibraryReference{ + Library: &rpc.ProfileLibraryReference_IndexLibrary_{ + IndexLibrary: &rpc.ProfileLibraryReference_IndexLibrary{ + Name: l.Library, + Version: l.Version.String(), + }, + }, + } +} + +// FromRpcProfileLibraryReference converts an rpc.ProfileLibraryReference to a ProfileLibraryReference +func FromRpcProfileLibraryReference(l *rpc.ProfileLibraryReference) (*ProfileLibraryReference, error) { + if localLib := l.GetLocalLibrary(); localLib != nil { + path := paths.New(localLib.GetPath()) + if path == nil { + return nil, &cmderrors.InvalidArgumentError{Message: "invalid library path"} + } + return &ProfileLibraryReference{InstallDir: path}, nil + } + if indexLib := l.GetIndexLibrary(); indexLib != nil { + var version *semver.Version + if indexLib.GetVersion() != "" { + v, err := semver.Parse(indexLib.GetVersion()) + if err != nil { + return nil, &cmderrors.InvalidVersionError{Cause: err} + } + version = v + } + return &ProfileLibraryReference{Library: indexLib.GetName(), Version: version}, nil + } + return nil, &cmderrors.InvalidArgumentError{Message: "library not specified"} +} + // InternalUniqueIdentifier returns the unique identifier for this object func (l *ProfileLibraryReference) InternalUniqueIdentifier() string { f.Assert(l.InstallDir == nil, diff --git a/internal/cli/cli.go b/internal/cli/cli.go index eb5c381abf5..11744ca5bc5 100644 --- a/internal/cli/cli.go +++ b/internal/cli/cli.go @@ -36,6 +36,7 @@ import ( "github.com/arduino/arduino-cli/internal/cli/lib" "github.com/arduino/arduino-cli/internal/cli/monitor" "github.com/arduino/arduino-cli/internal/cli/outdated" + "github.com/arduino/arduino-cli/internal/cli/profile" "github.com/arduino/arduino-cli/internal/cli/sketch" "github.com/arduino/arduino-cli/internal/cli/update" "github.com/arduino/arduino-cli/internal/cli/updater" @@ -162,6 +163,7 @@ func NewCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command { cmd.AddCommand(burnbootloader.NewCommand(srv)) cmd.AddCommand(version.NewCommand(srv)) cmd.AddCommand(feedback.NewCommand()) + cmd.AddCommand(profile.NewCommand(srv)) cmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, i18n.Tr("Print the logs on the standard output.")) cmd.Flag("verbose").Hidden = true diff --git a/internal/cli/feedback/result/rpc.go b/internal/cli/feedback/result/rpc.go index e27b77c9235..4bf042d544c 100644 --- a/internal/cli/feedback/result/rpc.go +++ b/internal/cli/feedback/result/rpc.go @@ -1125,3 +1125,25 @@ func NewIndexUpdateReport_Status(r rpc.IndexUpdateReport_Status) IndexUpdateRepo return IndexUpdateReport_StatusUnspecified } } + +type ProfileLibraryReference_LocalLibraryResult struct { + Path string `json:"path,omitempty"` +} + +func NewProfileLibraryReference_LocalLibraryResult(resp *rpc.ProfileLibraryReference_LocalLibrary) *ProfileLibraryReference_LocalLibraryResult { + return &ProfileLibraryReference_LocalLibraryResult{ + Path: resp.GetPath(), + } +} + +type ProfileLibraryReference_IndexLibraryResult struct { + Name string `json:"name,omitempty"` + Version string `json:"version,omitempty"` +} + +func NewProfileLibraryReference_IndexLibraryResult(resp *rpc.ProfileLibraryReference_IndexLibrary) *ProfileLibraryReference_IndexLibraryResult { + return &ProfileLibraryReference_IndexLibraryResult{ + Name: resp.GetName(), + Version: resp.GetVersion(), + } +} diff --git a/internal/cli/feedback/result/rpc_test.go b/internal/cli/feedback/result/rpc_test.go index f0158912c7f..1ccafb7945a 100644 --- a/internal/cli/feedback/result/rpc_test.go +++ b/internal/cli/feedback/result/rpc_test.go @@ -233,6 +233,14 @@ func TestAllFieldAreMapped(t *testing.T) { indexUpdateReportRpc := &rpc.IndexUpdateReport{} indexUpdateReportResult := result.NewIndexUpdateReportResult(indexUpdateReportRpc) mustContainsAllPropertyOfRpcStruct(t, indexUpdateReportRpc, indexUpdateReportResult) + + profileLibraryReference_IndexLibraryRpc := &rpc.ProfileLibraryReference_IndexLibrary{} + profileLibraryReference_IndexLibraryResult := result.NewProfileLibraryReference_IndexLibraryResult(profileLibraryReference_IndexLibraryRpc) + mustContainsAllPropertyOfRpcStruct(t, profileLibraryReference_IndexLibraryRpc, profileLibraryReference_IndexLibraryResult) + + profileLibraryReference_LocalLibraryRpc := &rpc.ProfileLibraryReference_LocalLibrary{} + profileLibraryReference_LocalLibraryResult := result.NewProfileLibraryReference_LocalLibraryResult(profileLibraryReference_LocalLibraryRpc) + mustContainsAllPropertyOfRpcStruct(t, profileLibraryReference_LocalLibraryRpc, profileLibraryReference_LocalLibraryResult) } func TestEnumsMapsEveryRpcCounterpart(t *testing.T) { diff --git a/internal/cli/profile/dump.go b/internal/cli/profile/dump.go new file mode 100644 index 00000000000..7ba5d784060 --- /dev/null +++ b/internal/cli/profile/dump.go @@ -0,0 +1,93 @@ +// This file is part of arduino-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package profile + +import ( + "context" + "os" + + "github.com/arduino/arduino-cli/internal/cli/arguments" + "github.com/arduino/arduino-cli/internal/cli/feedback" + "github.com/arduino/arduino-cli/internal/i18n" + rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" + "github.com/spf13/cobra" +) + +func initDumpCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command { + dumpCommand := &cobra.Command{ + Use: "dump", + Short: i18n.Tr("Print the sketch project file."), + Long: i18n.Tr("Print the data from the sketch project file."), + Example: "" + + " " + os.Args[0] + " profile dump\n", + Args: cobra.MaximumNArgs(1), + Run: func(cmd *cobra.Command, args []string) { + runDumpCommand(cmd.Context(), args, srv) + }, + } + + return dumpCommand +} + +func runDumpCommand(ctx context.Context, args []string, srv rpc.ArduinoCoreServiceServer) { + path := "" + if len(args) > 0 { + path = args[0] + } + + sketchPath := arguments.InitSketchPath(path) + res := &rawResult{} + switch feedback.GetFormat() { + case feedback.JSON, feedback.MinifiedJSON: + resp, err := srv.ProfileDump(ctx, &rpc.ProfileDumpRequest{SketchPath: sketchPath.String(), DumpFormat: "json"}) + if err != nil { + feedback.Fatal(i18n.Tr("Error dumping the profile: %v", err), feedback.ErrBadArgument) + } + res.rawJSON = []byte(resp.GetEncodedProfile()) + case feedback.Text: + resp, err := srv.ProfileDump(ctx, &rpc.ProfileDumpRequest{SketchPath: sketchPath.String(), DumpFormat: "yaml"}) + if err != nil { + feedback.Fatal(i18n.Tr("Error dumping the profile: %v", err), feedback.ErrBadArgument) + } + res.rawYAML = []byte(resp.GetEncodedProfile()) + default: + feedback.Fatal(i18n.Tr("Unsupported format: %s", feedback.GetFormat()), feedback.ErrBadArgument) + } + feedback.PrintResult(dumpResult{Config: res}) +} + +type rawResult struct { + rawJSON []byte + rawYAML []byte +} + +func (r *rawResult) MarshalJSON() ([]byte, error) { + // it is already encoded in rawJSON field + return r.rawJSON, nil +} + +type dumpResult struct { + Config *rawResult `json:"project"` +} + +func (dr dumpResult) Data() interface{} { + return dr +} + +func (dr dumpResult) String() string { + // In case of text output do not wrap the output in outer JSON or YAML structure + return string(dr.Config.rawYAML) +} diff --git a/internal/cli/profile/init.go b/internal/cli/profile/init.go new file mode 100644 index 00000000000..75524aa40b1 --- /dev/null +++ b/internal/cli/profile/init.go @@ -0,0 +1,78 @@ +// This file is part of arduino-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package profile + +import ( + "context" + "os" + + "github.com/arduino/arduino-cli/internal/cli/arguments" + "github.com/arduino/arduino-cli/internal/cli/feedback" + "github.com/arduino/arduino-cli/internal/cli/instance" + "github.com/arduino/arduino-cli/internal/i18n" + rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" + "github.com/spf13/cobra" +) + +func initInitCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command { + var defaultProfile bool + initCommand := &cobra.Command{ + Use: "init", + Short: i18n.Tr("Create or update the sketch project file."), + Long: i18n.Tr("Create or update the sketch project file."), + Example: "" + + " # " + i18n.Tr("Creates or updates the sketch project file in the current directory.") + "\n" + + " " + os.Args[0] + " profile init\n" + + " " + os.Args[0] + " profile init --profile uno_profile -b arduino:avr:uno", + Args: cobra.MaximumNArgs(1), + Run: func(cmd *cobra.Command, args []string) { + runInitCommand(cmd.Context(), args, srv, defaultProfile) + }, + } + fqbnArg.AddToCommand(initCommand, srv) + profileArg.AddToCommand(initCommand, srv) + initCommand.Flags().BoolVar(&defaultProfile, "default", false, i18n.Tr("Set the profile as the default one.")) + return initCommand +} + +func runInitCommand(ctx context.Context, args []string, srv rpc.ArduinoCoreServiceServer, defaultProfile bool) { + path := "" + if len(args) > 0 { + path = args[0] + } + + sketchPath := arguments.InitSketchPath(path) + + inst := instance.CreateAndInit(ctx, srv) + + resp, err := srv.InitProfile(ctx, &rpc.InitProfileRequest{Instance: inst, SketchPath: sketchPath.String(), ProfileName: profileArg.Get(), Fqbn: fqbnArg.String(), DefaultProfile: defaultProfile}) + if err != nil { + feedback.Fatal(i18n.Tr("Error initializing the project file: %v", err), feedback.ErrGeneric) + } + feedback.PrintResult(profileResult{ProjectFilePath: resp.GetProjectFilePath()}) +} + +type profileResult struct { + ProjectFilePath string `json:"project_path"` +} + +func (ir profileResult) Data() interface{} { + return ir +} + +func (ir profileResult) String() string { + return i18n.Tr("Project file created in: %s", ir.ProjectFilePath) +} diff --git a/internal/cli/profile/lib.go b/internal/cli/profile/lib.go new file mode 100644 index 00000000000..a09cdbd3391 --- /dev/null +++ b/internal/cli/profile/lib.go @@ -0,0 +1,217 @@ +// This file is part of arduino-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package profile + +import ( + "context" + "fmt" + "os" + + "github.com/arduino/arduino-cli/internal/cli/arguments" + "github.com/arduino/arduino-cli/internal/cli/feedback" + "github.com/arduino/arduino-cli/internal/cli/feedback/result" + "github.com/arduino/arduino-cli/internal/cli/instance" + "github.com/arduino/arduino-cli/internal/cli/lib" + "github.com/arduino/arduino-cli/internal/i18n" + rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" + "github.com/spf13/cobra" + "go.bug.st/f" +) + +func initLibCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command { + libCommand := &cobra.Command{ + Use: "lib", + Short: i18n.Tr("Commands related to build profile libraries."), + Long: i18n.Tr("Commands related to the library dependencies of build profiles."), + Example: "" + + " " + os.Args[0] + " profile lib add AudioZero -m my_profile\n" + + " " + os.Args[0] + " profile lib remove Arduino_JSON --profile my_profile\n", + } + + libCommand.AddCommand(initLibAddCommand(srv)) + libCommand.AddCommand(initLibRemoveCommand(srv)) + + return libCommand +} + +func initLibAddCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command { + var destDir string + var noDeps bool + var noOverwrite bool + addCommand := &cobra.Command{ + Use: fmt.Sprintf("add %s[@%s]...", i18n.Tr("LIBRARY"), i18n.Tr("VERSION_NUMBER")), + Short: i18n.Tr("Adds a library to the profile."), + Long: i18n.Tr("Adds a library to the profile."), + Example: "" + + " " + os.Args[0] + " profile lib add AudioZero -m my_profile\n" + + " " + os.Args[0] + " profile lib add Arduino_JSON@0.2.0 --profile my_profile\n", + Args: cobra.MinimumNArgs(1), + Run: func(cmd *cobra.Command, args []string) { + runLibAddCommand(cmd.Context(), args, srv, destDir, noDeps, noOverwrite) + }, + ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + return arguments.GetInstallableLibs(cmd.Context(), srv), cobra.ShellCompDirectiveDefault + }, + } + + addCommand.Flags().StringVar(&destDir, "dest-dir", "", i18n.Tr("Location of the sketch project file.")) + addCommand.Flags().BoolVar(&noDeps, "no-deps", false, i18n.Tr("Do not add dependencies.")) + addCommand.Flags().BoolVar(&noOverwrite, "no-overwrite", false, i18n.Tr("Do not overwrite already added libraries.")) + + profileArg.AddToCommand(addCommand, srv) + + return addCommand +} + +func runLibAddCommand(ctx context.Context, args []string, srv rpc.ArduinoCoreServiceServer, destDir string, noAddDeps, noOverwrite bool) { + sketchPath := arguments.InitSketchPath(destDir) + + instance := instance.CreateAndInit(ctx, srv) + libRefs, err := lib.ParseLibraryReferenceArgsAndAdjustCase(ctx, srv, instance, args) + if err != nil { + feedback.Fatal(i18n.Tr("Arguments error: %v", err), feedback.ErrBadArgument) + } + addDeps := !noAddDeps + for _, lib := range libRefs { + resp, err := srv.ProfileLibAdd(ctx, &rpc.ProfileLibAddRequest{ + Instance: instance, + SketchPath: sketchPath.String(), + ProfileName: profileArg.Get(), + Library: &rpc.ProfileLibraryReference{ + Library: &rpc.ProfileLibraryReference_IndexLibrary_{ + IndexLibrary: &rpc.ProfileLibraryReference_IndexLibrary{ + Name: lib.Name, + Version: lib.Version, + }, + }, + }, + AddDependencies: &addDeps, + NoOverwrite: &noOverwrite, + }) + if err != nil { + feedback.Fatal(i18n.Tr("Error adding %s to the profile %s: %v", lib.Name, profileArg.Get(), err), feedback.ErrGeneric) + } + added := f.Map(resp.GetAddedLibraries(), func(l *rpc.ProfileLibraryReference) *result.ProfileLibraryReference_IndexLibraryResult { + return result.NewProfileLibraryReference_IndexLibraryResult(l.GetIndexLibrary()) + }) + skipped := f.Map(resp.GetSkippedLibraries(), func(l *rpc.ProfileLibraryReference) *result.ProfileLibraryReference_IndexLibraryResult { + return result.NewProfileLibraryReference_IndexLibraryResult(l.GetIndexLibrary()) + }) + feedback.PrintResult(libAddResult{ + AddedLibraries: added, + SkippedLibraries: skipped, + ProfileName: resp.ProfileName, + }) + } +} + +func initLibRemoveCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command { + var destDir string + + removeCommand := &cobra.Command{ + Use: fmt.Sprintf("remove %s[@%s]...", i18n.Tr("LIBRARY"), i18n.Tr("VERSION_NUMBER")), + Short: i18n.Tr("Removes a library from the profile."), + Long: i18n.Tr("Removes a library from the profile."), + Example: "" + + " " + os.Args[0] + " profile lib remove AudioZero -m my_profile\n" + + " " + os.Args[0] + " profile lib remove Arduino_JSON@0.2.0 --profile my_profile\n", + Args: cobra.MinimumNArgs(1), + Run: func(cmd *cobra.Command, args []string) { + runLibRemoveCommand(cmd.Context(), args, srv, destDir) + }, + ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + return arguments.GetInstallableLibs(cmd.Context(), srv), cobra.ShellCompDirectiveDefault + }, + } + + removeCommand.Flags().StringVar(&destDir, "dest-dir", "", i18n.Tr("Location of the sketch project file.")) + profileArg.AddToCommand(removeCommand, srv) + + return removeCommand +} + +func runLibRemoveCommand(ctx context.Context, args []string, srv rpc.ArduinoCoreServiceServer, destDir string) { + sketchPath := arguments.InitSketchPath(destDir) + + instance := instance.CreateAndInit(ctx, srv) + libRefs, err := lib.ParseLibraryReferenceArgsAndAdjustCase(ctx, srv, instance, args) + if err != nil { + feedback.Fatal(i18n.Tr("Arguments error: %v", err), feedback.ErrBadArgument) + } + for _, lib := range libRefs { + resp, err := srv.ProfileLibRemove(ctx, &rpc.ProfileLibRemoveRequest{ + SketchPath: sketchPath.String(), + ProfileName: profileArg.Get(), + Library: &rpc.ProfileLibraryReference{ + Library: &rpc.ProfileLibraryReference_IndexLibrary_{ + IndexLibrary: &rpc.ProfileLibraryReference_IndexLibrary{ + Name: lib.Name, + Version: lib.Version, + }, + }, + }, + }) + if err != nil { + feedback.Fatal(fmt.Sprintf("%s: %v", + i18n.Tr("Error removing library %[1]s from the profile", lib.Name), err), feedback.ErrGeneric) + } + feedback.PrintResult(libRemoveResult{ + Library: result.NewProfileLibraryReference_IndexLibraryResult(resp.GetLibrary().GetIndexLibrary()), + ProfileName: resp.ProfileName}) + } +} + +type libAddResult struct { + AddedLibraries []*result.ProfileLibraryReference_IndexLibraryResult `json:"added_libraries"` + SkippedLibraries []*result.ProfileLibraryReference_IndexLibraryResult `json:"skipped_libraries"` + ProfileName string `json:"profile_name"` +} + +func (lr libAddResult) Data() interface{} { + return lr +} + +func (lr libAddResult) String() string { + res := "" + if len(lr.AddedLibraries) > 0 { + res += fmt.Sprintln(i18n.Tr("The following libraries were added to the profile %s:", lr.ProfileName)) + for _, l := range lr.AddedLibraries { + res += fmt.Sprintf(" - %s@%s\n", l.Name, l.Version) + } + } + if len(lr.SkippedLibraries) > 0 { + res += fmt.Sprintln(i18n.Tr("The following libraries were already present in the profile %s and were not modified:", lr.ProfileName)) + for _, l := range lr.SkippedLibraries { + res += fmt.Sprintf(" - %s@%s\n", l.Name, l.Version) + } + } + return res +} + +type libRemoveResult struct { + Library *result.ProfileLibraryReference_IndexLibraryResult `json:"library"` + ProfileName string `json:"profile_name"` +} + +func (lr libRemoveResult) Data() interface{} { + return lr +} + +func (lr libRemoveResult) String() string { + res := fmt.Sprintln(i18n.Tr("The following libraries were removed from the profile %s:", lr.ProfileName)) + res += fmt.Sprintf(" - %s@%s\n", lr.Library.Name, lr.Library.Version) + return res +} diff --git a/internal/cli/profile/profile.go b/internal/cli/profile/profile.go new file mode 100644 index 00000000000..e0195acf40a --- /dev/null +++ b/internal/cli/profile/profile.go @@ -0,0 +1,46 @@ +// This file is part of arduino-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package profile + +import ( + "os" + + "github.com/arduino/arduino-cli/internal/cli/arguments" + "github.com/arduino/arduino-cli/internal/i18n" + rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" + "github.com/spf13/cobra" +) + +var ( + fqbnArg arguments.Fqbn // Fully Qualified Board Name, e.g.: arduino:avr:uno. + profileArg arguments.Profile // Name of the profile to add to the project +) + +func NewCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command { + profileCommand := &cobra.Command{ + Use: "profile", + Short: i18n.Tr("Build profile operations."), + Long: i18n.Tr("Build profile operations."), + Example: " " + os.Args[0] + " profile init", + } + + profileCommand.AddCommand(initInitCommand(srv)) + profileCommand.AddCommand(initLibCommand(srv)) + profileCommand.AddCommand(initSetDefaultCommand(srv)) + profileCommand.AddCommand(initDumpCommand(srv)) + + return profileCommand +} diff --git a/internal/cli/profile/set_default.go b/internal/cli/profile/set_default.go new file mode 100644 index 00000000000..1fe2027fc49 --- /dev/null +++ b/internal/cli/profile/set_default.go @@ -0,0 +1,57 @@ +// This file is part of arduino-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package profile + +import ( + "context" + "os" + + "github.com/arduino/arduino-cli/internal/cli/arguments" + "github.com/arduino/arduino-cli/internal/cli/feedback" + "github.com/arduino/arduino-cli/internal/i18n" + rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" + "github.com/spf13/cobra" +) + +func initSetDefaultCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command { + var destDir string + setDefaultCommand := &cobra.Command{ + Use: "set-default", + Short: i18n.Tr("Set the default build profile."), + Long: i18n.Tr("Set the default build profile."), + Example: "" + + " " + os.Args[0] + " profile set-default my_profile\n", + Args: cobra.ExactArgs(1), + Run: func(cmd *cobra.Command, args []string) { + runSetDefaultCommand(cmd.Context(), args, srv, destDir) + }, + } + + setDefaultCommand.Flags().StringVar(&destDir, "dest-dir", "", i18n.Tr("Location of the sketch project file.")) + + return setDefaultCommand +} + +func runSetDefaultCommand(ctx context.Context, args []string, srv rpc.ArduinoCoreServiceServer, destDir string) { + profileName := args[0] + sketchPath := arguments.InitSketchPath(destDir) + + _, err := srv.ProfileSetDefault(ctx, &rpc.ProfileSetDefaultRequest{SketchPath: sketchPath.String(), ProfileName: profileName}) + if err != nil { + feedback.Fatal(i18n.Tr("Cannot set %s as default profile: %v", profileName, err), feedback.ErrGeneric) + } + feedback.Print(i18n.Tr("Default profile set to: %s", profileName)) +} diff --git a/internal/integrationtest/profiles/profiles_test.go b/internal/integrationtest/profiles/profiles_test.go index aafd914db2c..ffaa6a37f08 100644 --- a/internal/integrationtest/profiles/profiles_test.go +++ b/internal/integrationtest/profiles/profiles_test.go @@ -150,3 +150,304 @@ func TestCompileWithDefaultProfile(t *testing.T) { jsonOut.Query(".builder_result.build_properties").MustContain(`[ "build.fqbn=arduino:avr:nano" ]`) } } + +func TestInitProfile(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Init the environment explicitly + _, _, err := cli.Run("core", "update-index") + require.NoError(t, err) + + _, _, err = cli.Run("sketch", "new", cli.SketchbookDir().Join("Simple").String()) + require.NoError(t, err) + + _, _, err = cli.Run("core", "install", "arduino:avr") + require.NoError(t, err) + + integrationtest.CLISubtests{ + {"NoProfile", initNoProfile}, + {"ProfileCorrectFQBN", initWithCorrectFqbn}, + {"ProfileWrongFQBN", initWithWrongFqbn}, + {"ProfileMissingFQBN", initMissingFqbn}, + {"ExistingProfile", initExistingProfile}, + {"SetDefaultProfile", initSetDefaultProfile}, + }.Run(t, env, cli) +} + +func initNoProfile(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + projectFile := cli.SketchbookDir().Join("Simple", "sketch.yaml") + // Create an empty project file + stdout, _, err := cli.Run("profile", "init", cli.SketchbookDir().Join("Simple").String()) + require.NoError(t, err) + require.Contains(t, string(stdout), "Project file created in: "+projectFile.String()) + require.FileExists(t, projectFile.String()) + fileContent, err := projectFile.ReadFile() + require.NoError(t, err) + require.Equal(t, "profiles: {}\n", string(fileContent)) +} + +func initWithCorrectFqbn(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + projectFile := cli.SketchbookDir().Join("Simple", "sketch.yaml") + // Add a profile with a correct FQBN + _, _, err := cli.Run("profile", "init", cli.SketchbookDir().Join("Simple").String(), "-m", "Uno", "-b", "arduino:avr:uno") + require.NoError(t, err) + require.FileExists(t, projectFile.String()) + fileContent, err := projectFile.ReadFile() + require.NoError(t, err) + require.Equal(t, "profiles:\n Uno:\n fqbn: arduino:avr:uno\n platforms:\n - platform: arduino:avr (1.8.6)\n\ndefault_profile: Uno\n", string(fileContent)) +} + +func initWithWrongFqbn(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + // Adding a profile with an incorrect FQBN should return an error + _, stderr, err := cli.Run("profile", "init", cli.SketchbookDir().Join("Simple").String(), "-m", "wrong_fqbn", "-b", "foo:bar") + require.Error(t, err) + require.Contains(t, string(stderr), "Invalid FQBN") +} + +func initMissingFqbn(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + // Add a profile with no FQBN should return an error + _, stderr, err := cli.Run("profile", "init", cli.SketchbookDir().Join("Simple").String(), "-m", "Uno") + require.Error(t, err) + require.Contains(t, string(stderr), "Missing FQBN (Fully Qualified Board Name)") +} + +func initExistingProfile(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + // Adding a profile with a name that already exists should return an error + _, stderr, err := cli.Run("profile", "init", cli.SketchbookDir().Join("Simple").String(), "-m", "Uno", "-b", "arduino:avr:uno") + require.Error(t, err) + require.Contains(t, string(stderr), "Profile 'Uno' already exists") +} + +func initSetDefaultProfile(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + // Adding a profile with a name that already exists should return an error + _, _, err := cli.Run("profile", "init", cli.SketchbookDir().Join("Simple").String(), "-m", "new_profile", "-b", "arduino:avr:uno", "--default") + require.NoError(t, err) + fileContent, err := cli.SketchbookDir().Join("Simple", "sketch.yaml").ReadFileAsLines() + require.NoError(t, err) + require.Contains(t, fileContent, "default_profile: new_profile") +} + +func TestInitProfileMissingSketchFile(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Init the environment explicitly + _, _, err := cli.Run("core", "update-index") + require.NoError(t, err) + + _, stderr, err := cli.Run("profile", "init", cli.SketchbookDir().Join("Simple").String()) + require.Error(t, err) + require.Contains(t, string(stderr), "no such file or directory") + + err = cli.SketchbookDir().Join("Simple").MkdirAll() + require.NoError(t, err) + _, stderr, err = cli.Run("profile", "init", cli.SketchbookDir().Join("Simple").String()) + require.Error(t, err) + require.Contains(t, string(stderr), "main file missing from sketch") +} + +func TestInitProfilePlatformNotInstalled(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Init the environment explicitly + _, _, err := cli.Run("core", "update-index") + require.NoError(t, err) + + _, _, err = cli.Run("sketch", "new", cli.SketchbookDir().Join("Simple").String()) + require.NoError(t, err) + + // Adding a profile with a name that already exists should return an error + _, stderr, err := cli.Run("profile", "init", cli.SketchbookDir().Join("Simple").String(), "-m", "Uno", "-b", "arduino:avr:uno") + require.Error(t, err) + require.Contains(t, string(stderr), "platform not installed") +} + +func TestProfileLib(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Init the environment explicitly + _, _, err := cli.Run("core", "update-index") + require.NoError(t, err) + + _, _, err = cli.Run("core", "install", "arduino:avr") + require.NoError(t, err) + + integrationtest.CLISubtests{ + {"AddLibToDefaultProfile", addLibToDefaultProfile}, + {"ChangeLibVersionDefaultProfile", changeLibVersionDefaultProfile}, + {"RemoveLibFromDefaultProfile", removeLibFromDefaultProfile}, + {"AddInexistentLibToDefaultProfile", addInexistentLibToDefaultProfile}, + {"RemoveLibNotInDefaultProfile", removeLibNotInDefaultProfile}, + }.Run(t, env, cli) +} + +func addLibToDefaultProfile(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + sk := cli.SketchbookDir().Join("addLibToDefaultProfile") + _, _, err := cli.Run("sketch", "new", sk.String()) + require.NoError(t, err) + _, _, err = cli.Run("profile", "init", sk.String(), "-m", "Uno", "-b", "arduino:avr:uno") + require.NoError(t, err) + + out, _, err := cli.Run("profile", "lib", "add", "Modulino@0.5.0", "--dest-dir", sk.String(), "--json") + require.NoError(t, err) + requirejson.Parse(t, out).Query(".added_libraries").MustContain(`[{"name":"Modulino", "version":"0.5.0"}]`) + + fileContent, err := sk.Join("sketch.yaml").ReadFile() + require.NoError(t, err) + require.Contains(t, string(fileContent), " - Modulino (0.5.0)\n") + require.Contains(t, string(fileContent), " - Arduino_LSM6DSOX (") // dependency added as well +} + +func changeLibVersionDefaultProfile(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + sk := cli.SketchbookDir().Join("changeLibVersionDefaultProfile") + _, _, err := cli.Run("sketch", "new", sk.String()) + require.NoError(t, err) + _, _, err = cli.Run("profile", "init", sk.String(), "-m", "Uno", "-b", "arduino:avr:uno") + require.NoError(t, err) + + { + out, _, err := cli.Run("profile", "lib", "add", "Modulino@0.5.0", "--dest-dir", sk.String(), "--json") + require.NoError(t, err) + outjson := requirejson.Parse(t, out) + outjson.Query(".added_libraries").MustContain(`[{"name":"Modulino", "version":"0.5.0"},{"name":"Arduino_LSM6DSOX"}]`) + outjson.Query(".skipped_libraries").LengthMustEqualTo(0) + + fileContent, err := sk.Join("sketch.yaml").ReadFile() + require.NoError(t, err) + require.Contains(t, string(fileContent), " - Modulino (0.5.0)\n") + require.Contains(t, string(fileContent), " - Arduino_LSM6DSOX (") // dependency added as well + } + + { + out, _, err := cli.Run("profile", "lib", "add", "Modulino@0.4.0", "--dest-dir", sk.String(), "--json") + require.NoError(t, err) + outjson := requirejson.Parse(t, out) + outjson.Query(".added_libraries").MustContain(`[{"name":"Modulino", "version":"0.4.0"}]`) + outjson.Query(".skipped_libraries").MustContain(`[{"name":"Arduino_LSM6DSOX"}]`) + + fileContent, err := sk.Join("sketch.yaml").ReadFile() + require.NoError(t, err) + require.Contains(t, string(fileContent), " - Modulino (0.4.0)\n") + } +} + +func removeLibFromDefaultProfile(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + sk := cli.SketchbookDir().Join("removeLibFromDefaultProfile") + _, _, err := cli.Run("sketch", "new", sk.String()) + require.NoError(t, err) + _, _, err = cli.Run("profile", "init", sk.String(), "-m", "Uno", "-b", "arduino:avr:uno") + require.NoError(t, err) + + _, _, err = cli.Run("profile", "lib", "add", "Modulino@0.5.0", "--dest-dir", sk.String(), "--json") + require.NoError(t, err) + + _, _, err = cli.Run("profile", "lib", "remove", "Modulino", "--dest-dir", sk.String()) + require.NoError(t, err) + fileContent, err := sk.Join("sketch.yaml").ReadFile() + require.NoError(t, err) + require.NotContains(t, string(fileContent), " - Modulino") +} + +func addInexistentLibToDefaultProfile(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + sk := cli.SketchbookDir().Join("addInexistentLibToDefaultProfile") + _, _, err := cli.Run("sketch", "new", sk.String()) + require.NoError(t, err) + _, _, err = cli.Run("profile", "init", sk.String(), "-m", "Uno", "-b", "arduino:avr:uno") + require.NoError(t, err) + + _, stderr, err := cli.Run("profile", "lib", "add", "foobar", "--dest-dir", sk.String()) + require.Error(t, err) + require.Equal(t, "Error adding foobar to the profile : Library 'foobar@latest' not found\n", string(stderr)) +} + +func removeLibNotInDefaultProfile(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + sk := cli.SketchbookDir().Join("removeLibNotInDefaultProfile") + _, _, err := cli.Run("sketch", "new", sk.String()) + require.NoError(t, err) + _, _, err = cli.Run("profile", "init", sk.String(), "-m", "Uno", "-b", "arduino:avr:uno") + require.NoError(t, err) + + _, stderr, err := cli.Run("profile", "lib", "remove", "Arduino_JSON", "--dest-dir", sk.String()) + require.Error(t, err) + require.Equal(t, "Error removing library Arduino_JSON from the profile: Library 'Arduino_JSON' not found\n", string(stderr)) +} + +func TestProfileLibSpecificProfile(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Init the environment explicitly + _, _, err := cli.Run("core", "update-index") + require.NoError(t, err) + + sk := cli.SketchbookDir().Join("Simple") + _, _, err = cli.Run("sketch", "new", sk.String()) + require.NoError(t, err) + + _, _, err = cli.Run("core", "install", "arduino:avr") + require.NoError(t, err) + + _, _, err = cli.Run("profile", "init", sk.String(), "-m", "Uno", "-b", "arduino:avr:uno") + require.NoError(t, err) + + // Add a second profile + _, _, err = cli.Run("profile", "init", sk.String(), "-m", "my_profile", "-b", "arduino:avr:uno") + require.NoError(t, err) + + // Add library to a specific profile + _, _, err = cli.Run("profile", "lib", "add", "Modulino@0.5.0", "-m", "my_profile", "--dest-dir", sk.String(), "--no-deps") + require.NoError(t, err) + fileContent, err := sk.Join("sketch.yaml").ReadFile() + require.NoError(t, err) + require.Contains(t, string(fileContent), " my_profile:\n fqbn: arduino:avr:uno\n platforms:\n - platform: arduino:avr (1.8.6)\n libraries:\n - Modulino (0.5.0)\n") + + // Remove library from a specific profile + _, _, err = cli.Run("profile", "lib", "remove", "Modulino", "-m", "my_profile", "--dest-dir", sk.String()) + require.NoError(t, err) + fileContent, err = sk.Join("sketch.yaml").ReadFile() + require.NoError(t, err) + require.NotContains(t, string(fileContent), "- Modulino (0.5.0)") +} + +func TestProfileSetDefault(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Init the environment explicitly + _, _, err := cli.Run("core", "update-index") + require.NoError(t, err) + + sk := cli.SketchbookDir().Join("Simple") + _, _, err = cli.Run("sketch", "new", sk.String()) + require.NoError(t, err) + + _, _, err = cli.Run("core", "install", "arduino:avr") + require.NoError(t, err) + + _, _, err = cli.Run("profile", "init", sk.String(), "-m", "Uno", "-b", "arduino:avr:uno") + require.NoError(t, err) + + // Add a second profile + _, _, err = cli.Run("profile", "init", sk.String(), "-m", "my_profile", "-b", "arduino:avr:uno") + require.NoError(t, err) + fileContent, err := sk.Join("sketch.yaml").ReadFileAsLines() + require.NoError(t, err) + require.Contains(t, fileContent, "default_profile: Uno") + require.NotContains(t, fileContent, "default_profile: my_profile") + + // Change default profile + _, _, err = cli.Run("profile", "set-default", "my_profile", "--dest-dir", sk.String()) + require.NoError(t, err) + fileContent, err = sk.Join("sketch.yaml").ReadFileAsLines() + require.NoError(t, err) + require.NotContains(t, fileContent, "default_profile: Uno") + require.Contains(t, fileContent, "default_profile: my_profile") + + // Changing to an inexistent profile returns an error + _, stderr, err := cli.Run("profile", "set-default", "inexistent_profile", "--dest-dir", sk.String()) + require.Error(t, err) + require.Equal(t, "Cannot set inexistent_profile as default profile: Profile 'inexistent_profile' not found\n", string(stderr)) +} diff --git a/rpc/cc/arduino/cli/commands/v1/commands.pb.go b/rpc/cc/arduino/cli/commands/v1/commands.pb.go index b17f636954c..ed485d7a219 100644 --- a/rpc/cc/arduino/cli/commands/v1/commands.pb.go +++ b/rpc/cc/arduino/cli/commands/v1/commands.pb.go @@ -1663,6 +1663,818 @@ func (*CleanDownloadCacheDirectoryResponse) Descriptor() ([]byte, []int) { return file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP(), []int{25} } +type InitProfileRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // An Arduino Core instance. + Instance *Instance `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"` + // Absolute path to Sketch folder. + SketchPath string `protobuf:"bytes,2,opt,name=sketch_path,json=sketchPath,proto3" json:"sketch_path,omitempty"` + // Name of the profile. + ProfileName string `protobuf:"bytes,3,opt,name=profile_name,json=profileName,proto3" json:"profile_name,omitempty"` + // FQBN of the provided profile. + Fqbn string `protobuf:"bytes,4,opt,name=fqbn,proto3" json:"fqbn,omitempty"` + // Set the profile as the default one. + DefaultProfile bool `protobuf:"varint,5,opt,name=default_profile,json=defaultProfile,proto3" json:"default_profile,omitempty"` +} + +func (x *InitProfileRequest) Reset() { + *x = InitProfileRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InitProfileRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InitProfileRequest) ProtoMessage() {} + +func (x *InitProfileRequest) ProtoReflect() protoreflect.Message { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[26] + 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 InitProfileRequest.ProtoReflect.Descriptor instead. +func (*InitProfileRequest) Descriptor() ([]byte, []int) { + return file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP(), []int{26} +} + +func (x *InitProfileRequest) GetInstance() *Instance { + if x != nil { + return x.Instance + } + return nil +} + +func (x *InitProfileRequest) GetSketchPath() string { + if x != nil { + return x.SketchPath + } + return "" +} + +func (x *InitProfileRequest) GetProfileName() string { + if x != nil { + return x.ProfileName + } + return "" +} + +func (x *InitProfileRequest) GetFqbn() string { + if x != nil { + return x.Fqbn + } + return "" +} + +func (x *InitProfileRequest) GetDefaultProfile() bool { + if x != nil { + return x.DefaultProfile + } + return false +} + +type InitProfileResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Absolute path to the project file. + ProjectFilePath string `protobuf:"bytes,1,opt,name=project_file_path,json=projectFilePath,proto3" json:"project_file_path,omitempty"` +} + +func (x *InitProfileResponse) Reset() { + *x = InitProfileResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InitProfileResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InitProfileResponse) ProtoMessage() {} + +func (x *InitProfileResponse) ProtoReflect() protoreflect.Message { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[27] + 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 InitProfileResponse.ProtoReflect.Descriptor instead. +func (*InitProfileResponse) Descriptor() ([]byte, []int) { + return file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP(), []int{27} +} + +func (x *InitProfileResponse) GetProjectFilePath() string { + if x != nil { + return x.ProjectFilePath + } + return "" +} + +type ProfileLibAddRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // An Arduino Core instance. + Instance *Instance `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"` + // Absolute path to Sketch folder. + SketchPath string `protobuf:"bytes,2,opt,name=sketch_path,json=sketchPath,proto3" json:"sketch_path,omitempty"` + // Name of the profile. + ProfileName string `protobuf:"bytes,3,opt,name=profile_name,json=profileName,proto3" json:"profile_name,omitempty"` + // The library to add to the profile. + Library *ProfileLibraryReference `protobuf:"bytes,4,opt,name=library,proto3" json:"library,omitempty"` + // Set to true to add also all the dependencies of the library. + AddDependencies *bool `protobuf:"varint,5,opt,name=add_dependencies,json=addDependencies,proto3,oneof" json:"add_dependencies,omitempty"` + // Set to true to avoid overwriting an existing library in the profile. + NoOverwrite *bool `protobuf:"varint,6,opt,name=no_overwrite,json=noOverwrite,proto3,oneof" json:"no_overwrite,omitempty"` +} + +func (x *ProfileLibAddRequest) Reset() { + *x = ProfileLibAddRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileLibAddRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileLibAddRequest) ProtoMessage() {} + +func (x *ProfileLibAddRequest) ProtoReflect() protoreflect.Message { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[28] + 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 ProfileLibAddRequest.ProtoReflect.Descriptor instead. +func (*ProfileLibAddRequest) Descriptor() ([]byte, []int) { + return file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP(), []int{28} +} + +func (x *ProfileLibAddRequest) GetInstance() *Instance { + if x != nil { + return x.Instance + } + return nil +} + +func (x *ProfileLibAddRequest) GetSketchPath() string { + if x != nil { + return x.SketchPath + } + return "" +} + +func (x *ProfileLibAddRequest) GetProfileName() string { + if x != nil { + return x.ProfileName + } + return "" +} + +func (x *ProfileLibAddRequest) GetLibrary() *ProfileLibraryReference { + if x != nil { + return x.Library + } + return nil +} + +func (x *ProfileLibAddRequest) GetAddDependencies() bool { + if x != nil && x.AddDependencies != nil { + return *x.AddDependencies + } + return false +} + +func (x *ProfileLibAddRequest) GetNoOverwrite() bool { + if x != nil && x.NoOverwrite != nil { + return *x.NoOverwrite + } + return false +} + +type ProfileLibAddResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The library that has been added or overwritten to the profile. + AddedLibraries []*ProfileLibraryReference `protobuf:"bytes,1,rep,name=added_libraries,json=addedLibraries,proto3" json:"added_libraries,omitempty"` + // The libraries that have been skipped because they were already present + // in the profile and the no_overwrite option was set to true. + SkippedLibraries []*ProfileLibraryReference `protobuf:"bytes,2,rep,name=skipped_libraries,json=skippedLibraries,proto3" json:"skipped_libraries,omitempty"` + // Name of the profile. + ProfileName string `protobuf:"bytes,3,opt,name=profile_name,json=profileName,proto3" json:"profile_name,omitempty"` +} + +func (x *ProfileLibAddResponse) Reset() { + *x = ProfileLibAddResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileLibAddResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileLibAddResponse) ProtoMessage() {} + +func (x *ProfileLibAddResponse) ProtoReflect() protoreflect.Message { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[29] + 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 ProfileLibAddResponse.ProtoReflect.Descriptor instead. +func (*ProfileLibAddResponse) Descriptor() ([]byte, []int) { + return file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP(), []int{29} +} + +func (x *ProfileLibAddResponse) GetAddedLibraries() []*ProfileLibraryReference { + if x != nil { + return x.AddedLibraries + } + return nil +} + +func (x *ProfileLibAddResponse) GetSkippedLibraries() []*ProfileLibraryReference { + if x != nil { + return x.SkippedLibraries + } + return nil +} + +func (x *ProfileLibAddResponse) GetProfileName() string { + if x != nil { + return x.ProfileName + } + return "" +} + +type ProfileLibRemoveRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Absolute path to Sketch folder. + SketchPath string `protobuf:"bytes,1,opt,name=sketch_path,json=sketchPath,proto3" json:"sketch_path,omitempty"` + // Name of the profile. + ProfileName string `protobuf:"bytes,2,opt,name=profile_name,json=profileName,proto3" json:"profile_name,omitempty"` + // The library to remove from the profile. + Library *ProfileLibraryReference `protobuf:"bytes,3,opt,name=library,proto3" json:"library,omitempty"` +} + +func (x *ProfileLibRemoveRequest) Reset() { + *x = ProfileLibRemoveRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileLibRemoveRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileLibRemoveRequest) ProtoMessage() {} + +func (x *ProfileLibRemoveRequest) ProtoReflect() protoreflect.Message { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[30] + 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 ProfileLibRemoveRequest.ProtoReflect.Descriptor instead. +func (*ProfileLibRemoveRequest) Descriptor() ([]byte, []int) { + return file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP(), []int{30} +} + +func (x *ProfileLibRemoveRequest) GetSketchPath() string { + if x != nil { + return x.SketchPath + } + return "" +} + +func (x *ProfileLibRemoveRequest) GetProfileName() string { + if x != nil { + return x.ProfileName + } + return "" +} + +func (x *ProfileLibRemoveRequest) GetLibrary() *ProfileLibraryReference { + if x != nil { + return x.Library + } + return nil +} + +type ProfileLibRemoveResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The library that has been removed from the profile. + Library *ProfileLibraryReference `protobuf:"bytes,1,opt,name=library,proto3" json:"library,omitempty"` + // Name of the profile. + ProfileName string `protobuf:"bytes,2,opt,name=profile_name,json=profileName,proto3" json:"profile_name,omitempty"` +} + +func (x *ProfileLibRemoveResponse) Reset() { + *x = ProfileLibRemoveResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileLibRemoveResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileLibRemoveResponse) ProtoMessage() {} + +func (x *ProfileLibRemoveResponse) ProtoReflect() protoreflect.Message { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[31] + 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 ProfileLibRemoveResponse.ProtoReflect.Descriptor instead. +func (*ProfileLibRemoveResponse) Descriptor() ([]byte, []int) { + return file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP(), []int{31} +} + +func (x *ProfileLibRemoveResponse) GetLibrary() *ProfileLibraryReference { + if x != nil { + return x.Library + } + return nil +} + +func (x *ProfileLibRemoveResponse) GetProfileName() string { + if x != nil { + return x.ProfileName + } + return "" +} + +type ProfileLibraryReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Library: + // + // *ProfileLibraryReference_IndexLibrary_ + // *ProfileLibraryReference_LocalLibrary_ + Library isProfileLibraryReference_Library `protobuf_oneof:"library"` +} + +func (x *ProfileLibraryReference) Reset() { + *x = ProfileLibraryReference{} + if protoimpl.UnsafeEnabled { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileLibraryReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileLibraryReference) ProtoMessage() {} + +func (x *ProfileLibraryReference) ProtoReflect() protoreflect.Message { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[32] + 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 ProfileLibraryReference.ProtoReflect.Descriptor instead. +func (*ProfileLibraryReference) Descriptor() ([]byte, []int) { + return file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP(), []int{32} +} + +func (m *ProfileLibraryReference) GetLibrary() isProfileLibraryReference_Library { + if m != nil { + return m.Library + } + return nil +} + +func (x *ProfileLibraryReference) GetIndexLibrary() *ProfileLibraryReference_IndexLibrary { + if x, ok := x.GetLibrary().(*ProfileLibraryReference_IndexLibrary_); ok { + return x.IndexLibrary + } + return nil +} + +func (x *ProfileLibraryReference) GetLocalLibrary() *ProfileLibraryReference_LocalLibrary { + if x, ok := x.GetLibrary().(*ProfileLibraryReference_LocalLibrary_); ok { + return x.LocalLibrary + } + return nil +} + +type isProfileLibraryReference_Library interface { + isProfileLibraryReference_Library() +} + +type ProfileLibraryReference_IndexLibrary_ struct { + // The library is installed from the Library Index. + IndexLibrary *ProfileLibraryReference_IndexLibrary `protobuf:"bytes,1,opt,name=index_library,json=indexLibrary,proto3,oneof"` +} + +type ProfileLibraryReference_LocalLibrary_ struct { + // The library is a local library. + LocalLibrary *ProfileLibraryReference_LocalLibrary `protobuf:"bytes,2,opt,name=local_library,json=localLibrary,proto3,oneof"` +} + +func (*ProfileLibraryReference_IndexLibrary_) isProfileLibraryReference_Library() {} + +func (*ProfileLibraryReference_LocalLibrary_) isProfileLibraryReference_Library() {} + +type ProfileLibListRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Absolute path to Sketch folder. + SketchPath string `protobuf:"bytes,1,opt,name=sketch_path,json=sketchPath,proto3" json:"sketch_path,omitempty"` + // Name of the profile. + ProfileName string `protobuf:"bytes,2,opt,name=profile_name,json=profileName,proto3" json:"profile_name,omitempty"` +} + +func (x *ProfileLibListRequest) Reset() { + *x = ProfileLibListRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileLibListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileLibListRequest) ProtoMessage() {} + +func (x *ProfileLibListRequest) ProtoReflect() protoreflect.Message { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[33] + 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 ProfileLibListRequest.ProtoReflect.Descriptor instead. +func (*ProfileLibListRequest) Descriptor() ([]byte, []int) { + return file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP(), []int{33} +} + +func (x *ProfileLibListRequest) GetSketchPath() string { + if x != nil { + return x.SketchPath + } + return "" +} + +func (x *ProfileLibListRequest) GetProfileName() string { + if x != nil { + return x.ProfileName + } + return "" +} + +type ProfileLibListResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The libraries in the profile. + Libraries []*ProfileLibraryReference `protobuf:"bytes,1,rep,name=libraries,proto3" json:"libraries,omitempty"` + // Name of the profile. + ProfileName string `protobuf:"bytes,2,opt,name=profile_name,json=profileName,proto3" json:"profile_name,omitempty"` +} + +func (x *ProfileLibListResponse) Reset() { + *x = ProfileLibListResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileLibListResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileLibListResponse) ProtoMessage() {} + +func (x *ProfileLibListResponse) ProtoReflect() protoreflect.Message { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[34] + 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 ProfileLibListResponse.ProtoReflect.Descriptor instead. +func (*ProfileLibListResponse) Descriptor() ([]byte, []int) { + return file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP(), []int{34} +} + +func (x *ProfileLibListResponse) GetLibraries() []*ProfileLibraryReference { + if x != nil { + return x.Libraries + } + return nil +} + +func (x *ProfileLibListResponse) GetProfileName() string { + if x != nil { + return x.ProfileName + } + return "" +} + +type ProfileSetDefaultRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Absolute path to Sketch folder. + SketchPath string `protobuf:"bytes,1,opt,name=sketch_path,json=sketchPath,proto3" json:"sketch_path,omitempty"` + // Name of the profile. + ProfileName string `protobuf:"bytes,2,opt,name=profile_name,json=profileName,proto3" json:"profile_name,omitempty"` +} + +func (x *ProfileSetDefaultRequest) Reset() { + *x = ProfileSetDefaultRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileSetDefaultRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileSetDefaultRequest) ProtoMessage() {} + +func (x *ProfileSetDefaultRequest) ProtoReflect() protoreflect.Message { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[35] + 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 ProfileSetDefaultRequest.ProtoReflect.Descriptor instead. +func (*ProfileSetDefaultRequest) Descriptor() ([]byte, []int) { + return file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP(), []int{35} +} + +func (x *ProfileSetDefaultRequest) GetSketchPath() string { + if x != nil { + return x.SketchPath + } + return "" +} + +func (x *ProfileSetDefaultRequest) GetProfileName() string { + if x != nil { + return x.ProfileName + } + return "" +} + +type ProfileSetDefaultResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ProfileSetDefaultResponse) Reset() { + *x = ProfileSetDefaultResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileSetDefaultResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileSetDefaultResponse) ProtoMessage() {} + +func (x *ProfileSetDefaultResponse) ProtoReflect() protoreflect.Message { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[36] + 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 ProfileSetDefaultResponse.ProtoReflect.Descriptor instead. +func (*ProfileSetDefaultResponse) Descriptor() ([]byte, []int) { + return file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP(), []int{36} +} + +type ProfileDumpRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Absolute path to Sketch folder. + SketchPath string `protobuf:"bytes,1,opt,name=sketch_path,json=sketchPath,proto3" json:"sketch_path,omitempty"` + // The format of the dump (default is "json", allowed values are "json", and "yaml"). + DumpFormat string `protobuf:"bytes,2,opt,name=dump_format,json=dumpFormat,proto3" json:"dump_format,omitempty"` +} + +func (x *ProfileDumpRequest) Reset() { + *x = ProfileDumpRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileDumpRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileDumpRequest) ProtoMessage() {} + +func (x *ProfileDumpRequest) ProtoReflect() protoreflect.Message { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[37] + 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 ProfileDumpRequest.ProtoReflect.Descriptor instead. +func (*ProfileDumpRequest) Descriptor() ([]byte, []int) { + return file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP(), []int{37} +} + +func (x *ProfileDumpRequest) GetSketchPath() string { + if x != nil { + return x.SketchPath + } + return "" +} + +func (x *ProfileDumpRequest) GetDumpFormat() string { + if x != nil { + return x.DumpFormat + } + return "" +} + +type ProfileDumpResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The encoded profile dump. + EncodedProfile string `protobuf:"bytes,1,opt,name=encoded_profile,json=encodedProfile,proto3" json:"encoded_profile,omitempty"` +} + +func (x *ProfileDumpResponse) Reset() { + *x = ProfileDumpResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileDumpResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileDumpResponse) ProtoMessage() {} + +func (x *ProfileDumpResponse) ProtoReflect() protoreflect.Message { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[38] + 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 ProfileDumpResponse.ProtoReflect.Descriptor instead. +func (*ProfileDumpResponse) Descriptor() ([]byte, []int) { + return file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP(), []int{38} +} + +func (x *ProfileDumpResponse) GetEncodedProfile() string { + if x != nil { + return x.EncodedProfile + } + return "" +} + type InitResponse_Progress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1677,7 +2489,7 @@ type InitResponse_Progress struct { func (x *InitResponse_Progress) Reset() { *x = InitResponse_Progress{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[26] + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1690,7 +2502,7 @@ func (x *InitResponse_Progress) String() string { func (*InitResponse_Progress) ProtoMessage() {} func (x *InitResponse_Progress) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[26] + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1732,7 +2544,7 @@ type UpdateIndexResponse_Result struct { func (x *UpdateIndexResponse_Result) Reset() { *x = UpdateIndexResponse_Result{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[27] + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1745,7 +2557,7 @@ func (x *UpdateIndexResponse_Result) String() string { func (*UpdateIndexResponse_Result) ProtoMessage() {} func (x *UpdateIndexResponse_Result) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[27] + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1780,7 +2592,7 @@ type UpdateLibrariesIndexResponse_Result struct { func (x *UpdateLibrariesIndexResponse_Result) Reset() { *x = UpdateLibrariesIndexResponse_Result{} if protoimpl.UnsafeEnabled { - mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[28] + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1793,7 +2605,7 @@ func (x *UpdateLibrariesIndexResponse_Result) String() string { func (*UpdateLibrariesIndexResponse_Result) ProtoMessage() {} func (x *UpdateLibrariesIndexResponse_Result) ProtoReflect() protoreflect.Message { - mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[28] + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1816,6 +2628,111 @@ func (x *UpdateLibrariesIndexResponse_Result) GetLibrariesIndex() *IndexUpdateRe return nil } +type ProfileLibraryReference_IndexLibrary struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of the library. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Version of the library if taken from the Library Index. + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` +} + +func (x *ProfileLibraryReference_IndexLibrary) Reset() { + *x = ProfileLibraryReference_IndexLibrary{} + if protoimpl.UnsafeEnabled { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileLibraryReference_IndexLibrary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileLibraryReference_IndexLibrary) ProtoMessage() {} + +func (x *ProfileLibraryReference_IndexLibrary) ProtoReflect() protoreflect.Message { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[42] + 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 ProfileLibraryReference_IndexLibrary.ProtoReflect.Descriptor instead. +func (*ProfileLibraryReference_IndexLibrary) Descriptor() ([]byte, []int) { + return file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP(), []int{32, 0} +} + +func (x *ProfileLibraryReference_IndexLibrary) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ProfileLibraryReference_IndexLibrary) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +type ProfileLibraryReference_LocalLibrary struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Absolute path to the library. + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` +} + +func (x *ProfileLibraryReference_LocalLibrary) Reset() { + *x = ProfileLibraryReference_LocalLibrary{} + if protoimpl.UnsafeEnabled { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileLibraryReference_LocalLibrary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileLibraryReference_LocalLibrary) ProtoMessage() {} + +func (x *ProfileLibraryReference_LocalLibrary) ProtoReflect() protoreflect.Message { + mi := &file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[43] + 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 ProfileLibraryReference_LocalLibrary.ProtoReflect.Descriptor instead. +func (*ProfileLibraryReference_LocalLibrary) Descriptor() ([]byte, []int) { + return file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP(), []int{32, 1} +} + +func (x *ProfileLibraryReference_LocalLibrary) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + var File_cc_arduino_cli_commands_v1_commands_proto protoreflect.FileDescriptor var file_cc_arduino_cli_commands_v1_commands_proto_rawDesc = []byte{ @@ -2064,421 +2981,597 @@ var file_cc_arduino_cli_commands_v1_commands_proto_rawDesc = []byte{ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x25, 0x0a, 0x23, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x93, 0x02, 0x0a, 0x18, 0x46, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x52, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x27, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x49, - 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x31, 0x0a, 0x2d, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x53, 0x54, - 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, - 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, 0x55, - 0x52, 0x4c, 0x10, 0x01, 0x12, 0x30, 0x0a, 0x2c, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x49, - 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x2f, 0x0a, 0x2b, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, - 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x5f, 0x52, - 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x4f, 0x4c, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x34, 0x0a, 0x30, 0x46, 0x41, 0x49, 0x4c, 0x45, - 0x44, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x5f, - 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, 0x44, 0x4f, 0x57, - 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x32, 0xf1, 0x30, - 0x0a, 0x12, 0x41, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x61, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x29, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x12, 0x49, 0x6e, 0x69, 0x74, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, + 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, + 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x50, 0x61, 0x74, + 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x71, 0x62, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x66, 0x71, 0x62, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x22, 0x41, 0x0a, 0x13, 0x49, 0x6e, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6c, 0x65, + 0x50, 0x61, 0x74, 0x68, 0x22, 0xe9, 0x02, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x4c, 0x69, 0x62, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, + 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x73, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x50, 0x61, 0x74, 0x68, + 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x4d, 0x0a, 0x07, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, + 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x6c, 0x69, 0x62, 0x72, 0x61, + 0x72, 0x79, 0x12, 0x2e, 0x0a, 0x10, 0x61, 0x64, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, + 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f, + 0x61, 0x64, 0x64, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x88, + 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6e, 0x6f, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0b, 0x6e, 0x6f, 0x4f, 0x76, + 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, + 0x64, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x42, + 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x6f, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x22, 0xfa, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x41, + 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x61, 0x64, + 0x64, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, + 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x61, 0x64, 0x64, 0x65, 0x64, 0x4c, + 0x69, 0x62, 0x72, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x60, 0x0a, 0x11, 0x73, 0x6b, 0x69, 0x70, + 0x70, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, + 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x10, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, + 0x64, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xac, 0x01, + 0x0a, 0x17, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6b, 0x65, + 0x74, 0x63, 0x68, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x73, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x50, 0x61, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4d, 0x0a, + 0x07, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, 0x63, 0x2e, 0x61, - 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x04, 0x49, 0x6e, 0x69, 0x74, 0x12, - 0x27, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, - 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x64, 0x0a, 0x07, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, - 0x79, 0x12, 0x2a, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, - 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, - 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, - 0x6f, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0b, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2e, 0x2e, 0x63, 0x63, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x07, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x22, 0x8c, 0x01, 0x0a, + 0x18, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x07, 0x6c, 0x69, 0x62, + 0x72, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x63, 0x2e, + 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, + 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, + 0x07, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xd8, 0x02, 0x0a, 0x17, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x67, 0x0a, 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x5f, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, + 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, + 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, + 0x12, 0x67, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, + 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x72, + 0x61, 0x72, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4c, 0x6f, 0x63, + 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0c, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x1a, 0x3c, 0x0a, 0x0c, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x22, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x6c, + 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x6c, + 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x22, 0x5b, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x4c, 0x69, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1f, 0x0a, 0x0b, 0x73, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x50, 0x61, 0x74, 0x68, + 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, + 0x69, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, + 0x0a, 0x09, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, + 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x69, 0x65, + 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5e, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, + 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x50, 0x61, 0x74, + 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, + 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x56, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x75, 0x6d, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6b, 0x65, 0x74, 0x63, + 0x68, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6b, + 0x65, 0x74, 0x63, 0x68, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x75, 0x6d, 0x70, + 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, + 0x75, 0x6d, 0x70, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x3e, 0x0a, 0x13, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x44, 0x75, 0x6d, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x6f, 0x64, + 0x65, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2a, 0x93, 0x02, 0x0a, 0x18, 0x46, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x69, 0x74, + 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x27, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, + 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x5f, 0x52, + 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x31, 0x0a, 0x2d, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x49, 0x4e, + 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, + 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, + 0x5f, 0x55, 0x52, 0x4c, 0x10, 0x01, 0x12, 0x30, 0x0a, 0x2c, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, + 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x5f, 0x52, + 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, 0x4c, 0x4f, 0x41, 0x44, + 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x2f, 0x0a, 0x2b, 0x46, 0x41, 0x49, 0x4c, + 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, + 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x4f, 0x4c, 0x5f, 0x4c, 0x4f, 0x41, + 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x34, 0x0a, 0x30, 0x46, 0x41, 0x49, + 0x4c, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x49, + 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, 0x44, + 0x4f, 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x32, + 0xce, 0x36, 0x0a, 0x12, 0x41, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x43, 0x6f, 0x72, 0x65, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x61, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x12, 0x29, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, + 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x63, + 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x04, 0x49, 0x6e, 0x69, + 0x74, 0x12, 0x27, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, + 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, + 0x6e, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x63, 0x2e, + 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x64, 0x0a, 0x07, 0x44, 0x65, 0x73, 0x74, + 0x72, 0x6f, 0x79, 0x12, 0x2a, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, + 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2b, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, + 0x74, 0x72, 0x6f, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, + 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2e, 0x2e, + 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, + 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x30, 0x01, 0x12, 0x8d, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x62, + 0x72, 0x61, 0x72, 0x69, 0x65, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x37, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, - 0x12, 0x8d, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x62, 0x72, 0x61, - 0x72, 0x69, 0x65, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x37, 0x2e, 0x63, 0x63, 0x2e, 0x61, + 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, + 0x69, 0x62, 0x72, 0x61, 0x72, 0x69, 0x65, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, + 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x69, 0x65, + 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x30, 0x01, 0x12, 0x64, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, + 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x62, - 0x72, 0x61, 0x72, 0x69, 0x65, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, - 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x69, 0x65, 0x73, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, - 0x12, 0x64, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x63, 0x63, - 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, - 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, 0x09, 0x4e, 0x65, 0x77, 0x53, 0x6b, 0x65, - 0x74, 0x63, 0x68, 0x12, 0x2c, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, + 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, 0x09, 0x4e, 0x65, 0x77, 0x53, + 0x6b, 0x65, 0x74, 0x63, 0x68, 0x12, 0x2c, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, + 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x77, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x4e, 0x65, 0x77, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2d, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, - 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, - 0x65, 0x77, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x0a, 0x4c, 0x6f, 0x61, 0x64, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, - 0x12, 0x2d, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, - 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, - 0x61, 0x64, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2e, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, - 0x64, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x76, 0x0a, 0x0d, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x6b, 0x65, 0x74, - 0x63, 0x68, 0x12, 0x30, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, + 0x2e, 0x4e, 0x65, 0x77, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x0a, 0x4c, 0x6f, 0x61, 0x64, 0x53, 0x6b, 0x65, 0x74, + 0x63, 0x68, 0x12, 0x2d, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, + 0x4c, 0x6f, 0x61, 0x64, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2e, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, + 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x6f, 0x61, 0x64, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x0d, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x6b, + 0x65, 0x74, 0x63, 0x68, 0x12, 0x30, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x82, 0x01, 0x0a, 0x11, 0x53, 0x65, - 0x74, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, - 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, - 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, - 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x71, - 0x0a, 0x0c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2f, - 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, - 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x30, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, - 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x68, 0x0a, 0x09, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, + 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x6b, 0x65, 0x74, 0x63, + 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x82, 0x01, 0x0a, 0x11, + 0x53, 0x65, 0x74, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x73, 0x12, 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, + 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x65, 0x74, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, + 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x71, 0x0a, 0x0c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x2f, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, + 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, + 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x30, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, + 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, + 0x6f, 0x61, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x09, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x2c, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, + 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, + 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, - 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x63, - 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x0c, 0x42, - 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x12, 0x2f, 0x2e, 0x63, 0x63, - 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x63, - 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, - 0x0a, 0x0b, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x2e, 0x2e, - 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, + 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, + 0x0c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x12, 0x2f, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, - 0x0a, 0x0d, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x12, - 0x30, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, + 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, + 0x64, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x6e, 0x0a, 0x0b, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, + 0x2e, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, - 0x72, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, - 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, - 0x6f, 0x61, 0x72, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x0e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, - 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, - 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x63, 0x2e, 0x61, - 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, - 0x64, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x12, 0x2a, 0x2e, 0x63, 0x63, 0x2e, - 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, - 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x32, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, + 0x72, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2f, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, + 0x72, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x74, 0x0a, 0x0d, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x79, 0x12, 0x30, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, + 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, + 0x6f, 0x61, 0x72, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, + 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x0e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, + 0x69, 0x73, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x63, - 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x30, 0x01, 0x12, 0x7f, 0x0a, 0x10, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, - 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x44, 0x6f, 0x77, - 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x63, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x63, + 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x69, + 0x73, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, + 0x01, 0x12, 0x64, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x12, 0x2a, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x30, 0x01, 0x12, 0x82, 0x01, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x34, 0x2e, 0x63, 0x63, 0x2e, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, + 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x32, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x35, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, - 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0f, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x32, 0x2e, 0x63, - 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, - 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x61, 0x0a, 0x06, 0x55, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x12, 0x29, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, - 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, - 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x8e, 0x01, 0x0a, 0x15, 0x55, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, - 0x6d, 0x6d, 0x65, 0x72, 0x12, 0x38, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, - 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x86, 0x01, 0x0a, 0x13, - 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x12, 0x36, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, - 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x63, 0x63, - 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x65, 0x72, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x46, 0x6f, 0x72, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x44, 0x2e, 0x63, 0x63, 0x2e, - 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x67, - 0x72, 0x61, 0x6d, 0x6d, 0x65, 0x72, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, - 0x46, 0x6f, 0x72, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x45, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, - 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x65, 0x72, 0x73, 0x41, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x0e, 0x42, 0x75, 0x72, 0x6e, 0x42, - 0x6f, 0x6f, 0x74, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x12, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7f, 0x0a, 0x10, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x72, 0x6e, 0x42, 0x6f, 0x6f, 0x74, 0x6c, - 0x6f, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, + 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, + 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x82, 0x01, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x72, 0x6e, 0x42, 0x6f, - 0x6f, 0x74, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x30, 0x01, 0x12, 0x77, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x12, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, - 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, - 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x0f, 0x4c, - 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x32, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, + 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0f, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x32, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, - 0x61, 0x72, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x79, 0x0a, 0x0e, 0x4c, 0x69, 0x62, - 0x72, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x31, 0x2e, 0x63, 0x63, - 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x61, 0x0a, 0x06, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x12, 0x29, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, + 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, - 0x61, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x30, 0x01, 0x12, 0x79, 0x0a, 0x0e, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x55, - 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x8e, 0x01, 0x0a, + 0x15, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x6d, 0x65, 0x72, 0x12, 0x38, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x55, 0x70, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x63, 0x2e, 0x61, - 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x55, 0x70, - 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, - 0x82, 0x01, 0x0a, 0x11, 0x5a, 0x69, 0x70, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x50, + 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x39, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, + 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, + 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x86, 0x01, + 0x0a, 0x13, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x36, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x5a, 0x69, 0x70, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x63, 0x63, - 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x5a, 0x69, 0x70, 0x4c, 0x69, 0x62, 0x72, - 0x61, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x30, 0x01, 0x12, 0x82, 0x01, 0x0a, 0x11, 0x47, 0x69, 0x74, 0x4c, 0x69, 0x62, 0x72, - 0x61, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x34, 0x2e, 0x63, 0x63, 0x2e, - 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61, - 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x35, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, - 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, - 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7f, 0x0a, 0x10, 0x4c, 0x69, 0x62, - 0x72, 0x61, 0x72, 0x79, 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x33, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, 0x61, - 0x72, 0x79, 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x65, 0x72, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x44, 0x2e, 0x63, + 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, + 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x65, 0x72, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, + 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x45, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x82, 0x01, 0x0a, 0x11, 0x4c, - 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x41, 0x6c, 0x6c, - 0x12, 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, - 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x62, 0x72, 0x61, 0x72, 0x79, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, - 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x55, 0x70, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, - 0x9b, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x3d, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x65, 0x72, 0x73, 0x41, + 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x0e, 0x42, 0x75, 0x72, + 0x6e, 0x42, 0x6f, 0x6f, 0x74, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x12, 0x31, 0x2e, 0x63, 0x63, + 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x72, 0x6e, 0x42, 0x6f, 0x6f, + 0x74, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, - 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, - 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x72, 0x6e, + 0x42, 0x6f, 0x6f, 0x74, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x30, 0x01, 0x12, 0x77, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, + 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x63, 0x2e, 0x61, + 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, + 0x0f, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, + 0x12, 0x32, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, + 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x62, 0x72, 0x61, 0x72, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, + 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x79, 0x0a, 0x0e, 0x4c, + 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, 0x61, - 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, - 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, - 0x0d, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x30, - 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, - 0x61, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, + 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x32, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x62, 0x72, 0x61, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x0b, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x2e, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, + 0x62, 0x72, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x79, 0x0a, 0x0e, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, + 0x79, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, + 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x55, 0x70, 0x67, + 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x63, + 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, + 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, + 0x01, 0x12, 0x82, 0x01, 0x0a, 0x11, 0x5a, 0x69, 0x70, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, + 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x5a, 0x69, 0x70, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, + 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x5a, 0x69, 0x70, 0x4c, 0x69, + 0x62, 0x72, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x82, 0x01, 0x0a, 0x11, 0x47, 0x69, 0x74, 0x4c, 0x69, + 0x62, 0x72, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x34, 0x2e, 0x63, + 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x4c, 0x69, 0x62, + 0x72, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, + 0x47, 0x69, 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7f, 0x0a, 0x10, 0x4c, + 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, + 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x62, + 0x72, 0x61, 0x72, 0x79, 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, + 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x82, 0x01, 0x0a, + 0x11, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x41, + 0x6c, 0x6c, 0x12, 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x07, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x2a, - 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x63, 0x63, 0x2e, - 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0xa1, 0x01, 0x0a, 0x1c, - 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3f, 0x2e, 0x63, - 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, - 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x62, 0x0a, 0x05, 0x44, 0x65, 0x62, 0x75, 0x67, 0x12, 0x28, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, + 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x41, 0x6c, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x55, 0x70, 0x67, + 0x72, 0x61, 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, + 0x01, 0x12, 0x9b, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, + 0x12, 0x3d, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, + 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x62, 0x72, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x44, 0x65, 0x70, 0x65, + 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x3e, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x62, + 0x72, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x44, 0x65, 0x70, 0x65, 0x6e, + 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x74, 0x0a, 0x0d, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x12, 0x30, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, + 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x62, 0x72, 0x61, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, - 0x01, 0x30, 0x01, 0x12, 0x7f, 0x0a, 0x10, 0x49, 0x73, 0x44, 0x65, 0x62, 0x75, 0x67, 0x53, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, - 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x44, 0x65, 0x62, 0x75, 0x67, 0x53, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x63, + 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x0b, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, + 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, + 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x07, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x12, 0x2a, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, + 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x44, 0x65, 0x62, 0x75, - 0x67, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, - 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x63, 0x2e, 0x61, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0xa1, 0x01, + 0x0a, 0x1c, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3f, + 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x72, 0x74, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x40, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x72, + 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x62, 0x0a, 0x05, 0x44, 0x65, 0x62, 0x75, 0x67, 0x12, 0x28, 0x2e, 0x63, 0x63, 0x2e, + 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, + 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x7f, 0x0a, 0x10, 0x49, 0x73, 0x44, 0x65, 0x62, 0x75, 0x67, + 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x98, 0x01, 0x0a, 0x19, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x6f, 0x72, 0x41, 0x72, 0x64, 0x75, - 0x69, 0x6e, 0x6f, 0x43, 0x4c, 0x49, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x3c, 0x2e, + 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x44, 0x65, 0x62, 0x75, 0x67, 0x53, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, + 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x44, 0x65, + 0x62, 0x75, 0x67, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, + 0x75, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, + 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x63, + 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, + 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x98, 0x01, 0x0a, 0x19, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x6f, 0x72, 0x41, 0x72, + 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x43, 0x4c, 0x49, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, + 0x3c, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x46, 0x6f, 0x72, 0x41, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x43, 0x4c, 0x49, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x6f, 0x72, 0x41, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x43, 0x4c, 0x49, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x63, 0x63, - 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x6f, - 0x72, 0x41, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x43, 0x4c, 0x49, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9e, 0x01, 0x0a, 0x1b, 0x43, - 0x6c, 0x65, 0x61, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3e, 0x2e, 0x63, 0x63, 0x2e, - 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x44, 0x6f, 0x77, - 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x63, 0x63, 0x2e, - 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x44, 0x6f, 0x77, - 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x11, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x61, 0x76, - 0x65, 0x12, 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, - 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x61, 0x76, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, - 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, - 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, - 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, - 0x70, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x63, 0x63, 0x2e, - 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x7d, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x12, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, - 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x63, 0x63, 0x2e, - 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x80, 0x01, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x75, - 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, + 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9e, 0x01, 0x0a, + 0x1b, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3e, 0x2e, 0x63, + 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x63, + 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, + 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x61, 0x76, 0x65, 0x12, 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, + 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x61, + 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x63, 0x63, 0x2e, 0x61, + 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x80, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x75, 0x6d, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x63, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4f, 0x70, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x47, - 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x12, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x47, 0x65, 0x74, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x63, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x65, - 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x45, + 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, + 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, + 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, + 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, + 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x47, + 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, + 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x53, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, + 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x65, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, + 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x53, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x0b, 0x49, 0x6e, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, + 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x49, 0x6e, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, + 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x49, 0x6e, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x4c, 0x69, 0x62, 0x41, 0x64, 0x64, 0x12, 0x30, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x65, 0x74, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x63, 0x63, - 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x53, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2d, - 0x63, 0x6c, 0x69, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x63, 0x2f, 0x61, 0x72, 0x64, 0x75, 0x69, - 0x6e, 0x6f, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2f, - 0x76, 0x31, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x41, 0x64, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, + 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, + 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, + 0x10, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x12, 0x33, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, + 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, + 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, + 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x31, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, + 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, + 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x82, 0x01, 0x0a, 0x11, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, + 0x34, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, + 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, + 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x75, 0x6d, 0x70, 0x12, 0x2e, 0x2e, + 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x44, 0x75, 0x6d, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, + 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x44, 0x75, 0x6d, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, + 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2d, 0x63, + 0x6c, 0x69, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x63, 0x2f, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, + 0x6f, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x76, + 0x31, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -2494,7 +3587,7 @@ func file_cc_arduino_cli_commands_v1_commands_proto_rawDescGZIP() []byte { } var file_cc_arduino_cli_commands_v1_commands_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_cc_arduino_cli_commands_v1_commands_proto_msgTypes = make([]protoimpl.MessageInfo, 29) +var file_cc_arduino_cli_commands_v1_commands_proto_msgTypes = make([]protoimpl.MessageInfo, 44) var file_cc_arduino_cli_commands_v1_commands_proto_goTypes = []any{ (FailedInstanceInitReason)(0), // 0: cc.arduino.cli.commands.v1.FailedInstanceInitReason (IndexUpdateReport_Status)(0), // 1: cc.arduino.cli.commands.v1.IndexUpdateReport.Status @@ -2524,218 +3617,255 @@ var file_cc_arduino_cli_commands_v1_commands_proto_goTypes = []any{ (*CheckForArduinoCLIUpdatesResponse)(nil), // 25: cc.arduino.cli.commands.v1.CheckForArduinoCLIUpdatesResponse (*CleanDownloadCacheDirectoryRequest)(nil), // 26: cc.arduino.cli.commands.v1.CleanDownloadCacheDirectoryRequest (*CleanDownloadCacheDirectoryResponse)(nil), // 27: cc.arduino.cli.commands.v1.CleanDownloadCacheDirectoryResponse - (*InitResponse_Progress)(nil), // 28: cc.arduino.cli.commands.v1.InitResponse.Progress - (*UpdateIndexResponse_Result)(nil), // 29: cc.arduino.cli.commands.v1.UpdateIndexResponse.Result - (*UpdateLibrariesIndexResponse_Result)(nil), // 30: cc.arduino.cli.commands.v1.UpdateLibrariesIndexResponse.Result - (*Instance)(nil), // 31: cc.arduino.cli.commands.v1.Instance - (*status.Status)(nil), // 32: google.rpc.Status - (*SketchProfile)(nil), // 33: cc.arduino.cli.commands.v1.SketchProfile - (*DownloadProgress)(nil), // 34: cc.arduino.cli.commands.v1.DownloadProgress - (*Sketch)(nil), // 35: cc.arduino.cli.commands.v1.Sketch - (*TaskProgress)(nil), // 36: cc.arduino.cli.commands.v1.TaskProgress - (*BoardDetailsRequest)(nil), // 37: cc.arduino.cli.commands.v1.BoardDetailsRequest - (*BoardListRequest)(nil), // 38: cc.arduino.cli.commands.v1.BoardListRequest - (*BoardListAllRequest)(nil), // 39: cc.arduino.cli.commands.v1.BoardListAllRequest - (*BoardSearchRequest)(nil), // 40: cc.arduino.cli.commands.v1.BoardSearchRequest - (*BoardIdentifyRequest)(nil), // 41: cc.arduino.cli.commands.v1.BoardIdentifyRequest - (*BoardListWatchRequest)(nil), // 42: cc.arduino.cli.commands.v1.BoardListWatchRequest - (*CompileRequest)(nil), // 43: cc.arduino.cli.commands.v1.CompileRequest - (*PlatformInstallRequest)(nil), // 44: cc.arduino.cli.commands.v1.PlatformInstallRequest - (*PlatformDownloadRequest)(nil), // 45: cc.arduino.cli.commands.v1.PlatformDownloadRequest - (*PlatformUninstallRequest)(nil), // 46: cc.arduino.cli.commands.v1.PlatformUninstallRequest - (*PlatformUpgradeRequest)(nil), // 47: cc.arduino.cli.commands.v1.PlatformUpgradeRequest - (*UploadRequest)(nil), // 48: cc.arduino.cli.commands.v1.UploadRequest - (*UploadUsingProgrammerRequest)(nil), // 49: cc.arduino.cli.commands.v1.UploadUsingProgrammerRequest - (*SupportedUserFieldsRequest)(nil), // 50: cc.arduino.cli.commands.v1.SupportedUserFieldsRequest - (*ListProgrammersAvailableForUploadRequest)(nil), // 51: cc.arduino.cli.commands.v1.ListProgrammersAvailableForUploadRequest - (*BurnBootloaderRequest)(nil), // 52: cc.arduino.cli.commands.v1.BurnBootloaderRequest - (*PlatformSearchRequest)(nil), // 53: cc.arduino.cli.commands.v1.PlatformSearchRequest - (*LibraryDownloadRequest)(nil), // 54: cc.arduino.cli.commands.v1.LibraryDownloadRequest - (*LibraryInstallRequest)(nil), // 55: cc.arduino.cli.commands.v1.LibraryInstallRequest - (*LibraryUpgradeRequest)(nil), // 56: cc.arduino.cli.commands.v1.LibraryUpgradeRequest - (*ZipLibraryInstallRequest)(nil), // 57: cc.arduino.cli.commands.v1.ZipLibraryInstallRequest - (*GitLibraryInstallRequest)(nil), // 58: cc.arduino.cli.commands.v1.GitLibraryInstallRequest - (*LibraryUninstallRequest)(nil), // 59: cc.arduino.cli.commands.v1.LibraryUninstallRequest - (*LibraryUpgradeAllRequest)(nil), // 60: cc.arduino.cli.commands.v1.LibraryUpgradeAllRequest - (*LibraryResolveDependenciesRequest)(nil), // 61: cc.arduino.cli.commands.v1.LibraryResolveDependenciesRequest - (*LibrarySearchRequest)(nil), // 62: cc.arduino.cli.commands.v1.LibrarySearchRequest - (*LibraryListRequest)(nil), // 63: cc.arduino.cli.commands.v1.LibraryListRequest - (*MonitorRequest)(nil), // 64: cc.arduino.cli.commands.v1.MonitorRequest - (*EnumerateMonitorPortSettingsRequest)(nil), // 65: cc.arduino.cli.commands.v1.EnumerateMonitorPortSettingsRequest - (*DebugRequest)(nil), // 66: cc.arduino.cli.commands.v1.DebugRequest - (*IsDebugSupportedRequest)(nil), // 67: cc.arduino.cli.commands.v1.IsDebugSupportedRequest - (*GetDebugConfigRequest)(nil), // 68: cc.arduino.cli.commands.v1.GetDebugConfigRequest - (*ConfigurationSaveRequest)(nil), // 69: cc.arduino.cli.commands.v1.ConfigurationSaveRequest - (*ConfigurationOpenRequest)(nil), // 70: cc.arduino.cli.commands.v1.ConfigurationOpenRequest - (*ConfigurationGetRequest)(nil), // 71: cc.arduino.cli.commands.v1.ConfigurationGetRequest - (*SettingsEnumerateRequest)(nil), // 72: cc.arduino.cli.commands.v1.SettingsEnumerateRequest - (*SettingsGetValueRequest)(nil), // 73: cc.arduino.cli.commands.v1.SettingsGetValueRequest - (*SettingsSetValueRequest)(nil), // 74: cc.arduino.cli.commands.v1.SettingsSetValueRequest - (*BoardDetailsResponse)(nil), // 75: cc.arduino.cli.commands.v1.BoardDetailsResponse - (*BoardListResponse)(nil), // 76: cc.arduino.cli.commands.v1.BoardListResponse - (*BoardListAllResponse)(nil), // 77: cc.arduino.cli.commands.v1.BoardListAllResponse - (*BoardSearchResponse)(nil), // 78: cc.arduino.cli.commands.v1.BoardSearchResponse - (*BoardIdentifyResponse)(nil), // 79: cc.arduino.cli.commands.v1.BoardIdentifyResponse - (*BoardListWatchResponse)(nil), // 80: cc.arduino.cli.commands.v1.BoardListWatchResponse - (*CompileResponse)(nil), // 81: cc.arduino.cli.commands.v1.CompileResponse - (*PlatformInstallResponse)(nil), // 82: cc.arduino.cli.commands.v1.PlatformInstallResponse - (*PlatformDownloadResponse)(nil), // 83: cc.arduino.cli.commands.v1.PlatformDownloadResponse - (*PlatformUninstallResponse)(nil), // 84: cc.arduino.cli.commands.v1.PlatformUninstallResponse - (*PlatformUpgradeResponse)(nil), // 85: cc.arduino.cli.commands.v1.PlatformUpgradeResponse - (*UploadResponse)(nil), // 86: cc.arduino.cli.commands.v1.UploadResponse - (*UploadUsingProgrammerResponse)(nil), // 87: cc.arduino.cli.commands.v1.UploadUsingProgrammerResponse - (*SupportedUserFieldsResponse)(nil), // 88: cc.arduino.cli.commands.v1.SupportedUserFieldsResponse - (*ListProgrammersAvailableForUploadResponse)(nil), // 89: cc.arduino.cli.commands.v1.ListProgrammersAvailableForUploadResponse - (*BurnBootloaderResponse)(nil), // 90: cc.arduino.cli.commands.v1.BurnBootloaderResponse - (*PlatformSearchResponse)(nil), // 91: cc.arduino.cli.commands.v1.PlatformSearchResponse - (*LibraryDownloadResponse)(nil), // 92: cc.arduino.cli.commands.v1.LibraryDownloadResponse - (*LibraryInstallResponse)(nil), // 93: cc.arduino.cli.commands.v1.LibraryInstallResponse - (*LibraryUpgradeResponse)(nil), // 94: cc.arduino.cli.commands.v1.LibraryUpgradeResponse - (*ZipLibraryInstallResponse)(nil), // 95: cc.arduino.cli.commands.v1.ZipLibraryInstallResponse - (*GitLibraryInstallResponse)(nil), // 96: cc.arduino.cli.commands.v1.GitLibraryInstallResponse - (*LibraryUninstallResponse)(nil), // 97: cc.arduino.cli.commands.v1.LibraryUninstallResponse - (*LibraryUpgradeAllResponse)(nil), // 98: cc.arduino.cli.commands.v1.LibraryUpgradeAllResponse - (*LibraryResolveDependenciesResponse)(nil), // 99: cc.arduino.cli.commands.v1.LibraryResolveDependenciesResponse - (*LibrarySearchResponse)(nil), // 100: cc.arduino.cli.commands.v1.LibrarySearchResponse - (*LibraryListResponse)(nil), // 101: cc.arduino.cli.commands.v1.LibraryListResponse - (*MonitorResponse)(nil), // 102: cc.arduino.cli.commands.v1.MonitorResponse - (*EnumerateMonitorPortSettingsResponse)(nil), // 103: cc.arduino.cli.commands.v1.EnumerateMonitorPortSettingsResponse - (*DebugResponse)(nil), // 104: cc.arduino.cli.commands.v1.DebugResponse - (*IsDebugSupportedResponse)(nil), // 105: cc.arduino.cli.commands.v1.IsDebugSupportedResponse - (*GetDebugConfigResponse)(nil), // 106: cc.arduino.cli.commands.v1.GetDebugConfigResponse - (*ConfigurationSaveResponse)(nil), // 107: cc.arduino.cli.commands.v1.ConfigurationSaveResponse - (*ConfigurationOpenResponse)(nil), // 108: cc.arduino.cli.commands.v1.ConfigurationOpenResponse - (*ConfigurationGetResponse)(nil), // 109: cc.arduino.cli.commands.v1.ConfigurationGetResponse - (*SettingsEnumerateResponse)(nil), // 110: cc.arduino.cli.commands.v1.SettingsEnumerateResponse - (*SettingsGetValueResponse)(nil), // 111: cc.arduino.cli.commands.v1.SettingsGetValueResponse - (*SettingsSetValueResponse)(nil), // 112: cc.arduino.cli.commands.v1.SettingsSetValueResponse + (*InitProfileRequest)(nil), // 28: cc.arduino.cli.commands.v1.InitProfileRequest + (*InitProfileResponse)(nil), // 29: cc.arduino.cli.commands.v1.InitProfileResponse + (*ProfileLibAddRequest)(nil), // 30: cc.arduino.cli.commands.v1.ProfileLibAddRequest + (*ProfileLibAddResponse)(nil), // 31: cc.arduino.cli.commands.v1.ProfileLibAddResponse + (*ProfileLibRemoveRequest)(nil), // 32: cc.arduino.cli.commands.v1.ProfileLibRemoveRequest + (*ProfileLibRemoveResponse)(nil), // 33: cc.arduino.cli.commands.v1.ProfileLibRemoveResponse + (*ProfileLibraryReference)(nil), // 34: cc.arduino.cli.commands.v1.ProfileLibraryReference + (*ProfileLibListRequest)(nil), // 35: cc.arduino.cli.commands.v1.ProfileLibListRequest + (*ProfileLibListResponse)(nil), // 36: cc.arduino.cli.commands.v1.ProfileLibListResponse + (*ProfileSetDefaultRequest)(nil), // 37: cc.arduino.cli.commands.v1.ProfileSetDefaultRequest + (*ProfileSetDefaultResponse)(nil), // 38: cc.arduino.cli.commands.v1.ProfileSetDefaultResponse + (*ProfileDumpRequest)(nil), // 39: cc.arduino.cli.commands.v1.ProfileDumpRequest + (*ProfileDumpResponse)(nil), // 40: cc.arduino.cli.commands.v1.ProfileDumpResponse + (*InitResponse_Progress)(nil), // 41: cc.arduino.cli.commands.v1.InitResponse.Progress + (*UpdateIndexResponse_Result)(nil), // 42: cc.arduino.cli.commands.v1.UpdateIndexResponse.Result + (*UpdateLibrariesIndexResponse_Result)(nil), // 43: cc.arduino.cli.commands.v1.UpdateLibrariesIndexResponse.Result + (*ProfileLibraryReference_IndexLibrary)(nil), // 44: cc.arduino.cli.commands.v1.ProfileLibraryReference.IndexLibrary + (*ProfileLibraryReference_LocalLibrary)(nil), // 45: cc.arduino.cli.commands.v1.ProfileLibraryReference.LocalLibrary + (*Instance)(nil), // 46: cc.arduino.cli.commands.v1.Instance + (*status.Status)(nil), // 47: google.rpc.Status + (*SketchProfile)(nil), // 48: cc.arduino.cli.commands.v1.SketchProfile + (*DownloadProgress)(nil), // 49: cc.arduino.cli.commands.v1.DownloadProgress + (*Sketch)(nil), // 50: cc.arduino.cli.commands.v1.Sketch + (*TaskProgress)(nil), // 51: cc.arduino.cli.commands.v1.TaskProgress + (*BoardDetailsRequest)(nil), // 52: cc.arduino.cli.commands.v1.BoardDetailsRequest + (*BoardListRequest)(nil), // 53: cc.arduino.cli.commands.v1.BoardListRequest + (*BoardListAllRequest)(nil), // 54: cc.arduino.cli.commands.v1.BoardListAllRequest + (*BoardSearchRequest)(nil), // 55: cc.arduino.cli.commands.v1.BoardSearchRequest + (*BoardIdentifyRequest)(nil), // 56: cc.arduino.cli.commands.v1.BoardIdentifyRequest + (*BoardListWatchRequest)(nil), // 57: cc.arduino.cli.commands.v1.BoardListWatchRequest + (*CompileRequest)(nil), // 58: cc.arduino.cli.commands.v1.CompileRequest + (*PlatformInstallRequest)(nil), // 59: cc.arduino.cli.commands.v1.PlatformInstallRequest + (*PlatformDownloadRequest)(nil), // 60: cc.arduino.cli.commands.v1.PlatformDownloadRequest + (*PlatformUninstallRequest)(nil), // 61: cc.arduino.cli.commands.v1.PlatformUninstallRequest + (*PlatformUpgradeRequest)(nil), // 62: cc.arduino.cli.commands.v1.PlatformUpgradeRequest + (*UploadRequest)(nil), // 63: cc.arduino.cli.commands.v1.UploadRequest + (*UploadUsingProgrammerRequest)(nil), // 64: cc.arduino.cli.commands.v1.UploadUsingProgrammerRequest + (*SupportedUserFieldsRequest)(nil), // 65: cc.arduino.cli.commands.v1.SupportedUserFieldsRequest + (*ListProgrammersAvailableForUploadRequest)(nil), // 66: cc.arduino.cli.commands.v1.ListProgrammersAvailableForUploadRequest + (*BurnBootloaderRequest)(nil), // 67: cc.arduino.cli.commands.v1.BurnBootloaderRequest + (*PlatformSearchRequest)(nil), // 68: cc.arduino.cli.commands.v1.PlatformSearchRequest + (*LibraryDownloadRequest)(nil), // 69: cc.arduino.cli.commands.v1.LibraryDownloadRequest + (*LibraryInstallRequest)(nil), // 70: cc.arduino.cli.commands.v1.LibraryInstallRequest + (*LibraryUpgradeRequest)(nil), // 71: cc.arduino.cli.commands.v1.LibraryUpgradeRequest + (*ZipLibraryInstallRequest)(nil), // 72: cc.arduino.cli.commands.v1.ZipLibraryInstallRequest + (*GitLibraryInstallRequest)(nil), // 73: cc.arduino.cli.commands.v1.GitLibraryInstallRequest + (*LibraryUninstallRequest)(nil), // 74: cc.arduino.cli.commands.v1.LibraryUninstallRequest + (*LibraryUpgradeAllRequest)(nil), // 75: cc.arduino.cli.commands.v1.LibraryUpgradeAllRequest + (*LibraryResolveDependenciesRequest)(nil), // 76: cc.arduino.cli.commands.v1.LibraryResolveDependenciesRequest + (*LibrarySearchRequest)(nil), // 77: cc.arduino.cli.commands.v1.LibrarySearchRequest + (*LibraryListRequest)(nil), // 78: cc.arduino.cli.commands.v1.LibraryListRequest + (*MonitorRequest)(nil), // 79: cc.arduino.cli.commands.v1.MonitorRequest + (*EnumerateMonitorPortSettingsRequest)(nil), // 80: cc.arduino.cli.commands.v1.EnumerateMonitorPortSettingsRequest + (*DebugRequest)(nil), // 81: cc.arduino.cli.commands.v1.DebugRequest + (*IsDebugSupportedRequest)(nil), // 82: cc.arduino.cli.commands.v1.IsDebugSupportedRequest + (*GetDebugConfigRequest)(nil), // 83: cc.arduino.cli.commands.v1.GetDebugConfigRequest + (*ConfigurationSaveRequest)(nil), // 84: cc.arduino.cli.commands.v1.ConfigurationSaveRequest + (*ConfigurationOpenRequest)(nil), // 85: cc.arduino.cli.commands.v1.ConfigurationOpenRequest + (*ConfigurationGetRequest)(nil), // 86: cc.arduino.cli.commands.v1.ConfigurationGetRequest + (*SettingsEnumerateRequest)(nil), // 87: cc.arduino.cli.commands.v1.SettingsEnumerateRequest + (*SettingsGetValueRequest)(nil), // 88: cc.arduino.cli.commands.v1.SettingsGetValueRequest + (*SettingsSetValueRequest)(nil), // 89: cc.arduino.cli.commands.v1.SettingsSetValueRequest + (*BoardDetailsResponse)(nil), // 90: cc.arduino.cli.commands.v1.BoardDetailsResponse + (*BoardListResponse)(nil), // 91: cc.arduino.cli.commands.v1.BoardListResponse + (*BoardListAllResponse)(nil), // 92: cc.arduino.cli.commands.v1.BoardListAllResponse + (*BoardSearchResponse)(nil), // 93: cc.arduino.cli.commands.v1.BoardSearchResponse + (*BoardIdentifyResponse)(nil), // 94: cc.arduino.cli.commands.v1.BoardIdentifyResponse + (*BoardListWatchResponse)(nil), // 95: cc.arduino.cli.commands.v1.BoardListWatchResponse + (*CompileResponse)(nil), // 96: cc.arduino.cli.commands.v1.CompileResponse + (*PlatformInstallResponse)(nil), // 97: cc.arduino.cli.commands.v1.PlatformInstallResponse + (*PlatformDownloadResponse)(nil), // 98: cc.arduino.cli.commands.v1.PlatformDownloadResponse + (*PlatformUninstallResponse)(nil), // 99: cc.arduino.cli.commands.v1.PlatformUninstallResponse + (*PlatformUpgradeResponse)(nil), // 100: cc.arduino.cli.commands.v1.PlatformUpgradeResponse + (*UploadResponse)(nil), // 101: cc.arduino.cli.commands.v1.UploadResponse + (*UploadUsingProgrammerResponse)(nil), // 102: cc.arduino.cli.commands.v1.UploadUsingProgrammerResponse + (*SupportedUserFieldsResponse)(nil), // 103: cc.arduino.cli.commands.v1.SupportedUserFieldsResponse + (*ListProgrammersAvailableForUploadResponse)(nil), // 104: cc.arduino.cli.commands.v1.ListProgrammersAvailableForUploadResponse + (*BurnBootloaderResponse)(nil), // 105: cc.arduino.cli.commands.v1.BurnBootloaderResponse + (*PlatformSearchResponse)(nil), // 106: cc.arduino.cli.commands.v1.PlatformSearchResponse + (*LibraryDownloadResponse)(nil), // 107: cc.arduino.cli.commands.v1.LibraryDownloadResponse + (*LibraryInstallResponse)(nil), // 108: cc.arduino.cli.commands.v1.LibraryInstallResponse + (*LibraryUpgradeResponse)(nil), // 109: cc.arduino.cli.commands.v1.LibraryUpgradeResponse + (*ZipLibraryInstallResponse)(nil), // 110: cc.arduino.cli.commands.v1.ZipLibraryInstallResponse + (*GitLibraryInstallResponse)(nil), // 111: cc.arduino.cli.commands.v1.GitLibraryInstallResponse + (*LibraryUninstallResponse)(nil), // 112: cc.arduino.cli.commands.v1.LibraryUninstallResponse + (*LibraryUpgradeAllResponse)(nil), // 113: cc.arduino.cli.commands.v1.LibraryUpgradeAllResponse + (*LibraryResolveDependenciesResponse)(nil), // 114: cc.arduino.cli.commands.v1.LibraryResolveDependenciesResponse + (*LibrarySearchResponse)(nil), // 115: cc.arduino.cli.commands.v1.LibrarySearchResponse + (*LibraryListResponse)(nil), // 116: cc.arduino.cli.commands.v1.LibraryListResponse + (*MonitorResponse)(nil), // 117: cc.arduino.cli.commands.v1.MonitorResponse + (*EnumerateMonitorPortSettingsResponse)(nil), // 118: cc.arduino.cli.commands.v1.EnumerateMonitorPortSettingsResponse + (*DebugResponse)(nil), // 119: cc.arduino.cli.commands.v1.DebugResponse + (*IsDebugSupportedResponse)(nil), // 120: cc.arduino.cli.commands.v1.IsDebugSupportedResponse + (*GetDebugConfigResponse)(nil), // 121: cc.arduino.cli.commands.v1.GetDebugConfigResponse + (*ConfigurationSaveResponse)(nil), // 122: cc.arduino.cli.commands.v1.ConfigurationSaveResponse + (*ConfigurationOpenResponse)(nil), // 123: cc.arduino.cli.commands.v1.ConfigurationOpenResponse + (*ConfigurationGetResponse)(nil), // 124: cc.arduino.cli.commands.v1.ConfigurationGetResponse + (*SettingsEnumerateResponse)(nil), // 125: cc.arduino.cli.commands.v1.SettingsEnumerateResponse + (*SettingsGetValueResponse)(nil), // 126: cc.arduino.cli.commands.v1.SettingsGetValueResponse + (*SettingsSetValueResponse)(nil), // 127: cc.arduino.cli.commands.v1.SettingsSetValueResponse } var file_cc_arduino_cli_commands_v1_commands_proto_depIdxs = []int32{ - 31, // 0: cc.arduino.cli.commands.v1.CreateResponse.instance:type_name -> cc.arduino.cli.commands.v1.Instance - 31, // 1: cc.arduino.cli.commands.v1.InitRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance - 28, // 2: cc.arduino.cli.commands.v1.InitResponse.init_progress:type_name -> cc.arduino.cli.commands.v1.InitResponse.Progress - 32, // 3: cc.arduino.cli.commands.v1.InitResponse.error:type_name -> google.rpc.Status - 33, // 4: cc.arduino.cli.commands.v1.InitResponse.profile:type_name -> cc.arduino.cli.commands.v1.SketchProfile + 46, // 0: cc.arduino.cli.commands.v1.CreateResponse.instance:type_name -> cc.arduino.cli.commands.v1.Instance + 46, // 1: cc.arduino.cli.commands.v1.InitRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance + 41, // 2: cc.arduino.cli.commands.v1.InitResponse.init_progress:type_name -> cc.arduino.cli.commands.v1.InitResponse.Progress + 47, // 3: cc.arduino.cli.commands.v1.InitResponse.error:type_name -> google.rpc.Status + 48, // 4: cc.arduino.cli.commands.v1.InitResponse.profile:type_name -> cc.arduino.cli.commands.v1.SketchProfile 0, // 5: cc.arduino.cli.commands.v1.FailedInstanceInitError.reason:type_name -> cc.arduino.cli.commands.v1.FailedInstanceInitReason - 31, // 6: cc.arduino.cli.commands.v1.DestroyRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance - 31, // 7: cc.arduino.cli.commands.v1.UpdateIndexRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance - 34, // 8: cc.arduino.cli.commands.v1.UpdateIndexResponse.download_progress:type_name -> cc.arduino.cli.commands.v1.DownloadProgress - 29, // 9: cc.arduino.cli.commands.v1.UpdateIndexResponse.result:type_name -> cc.arduino.cli.commands.v1.UpdateIndexResponse.Result - 31, // 10: cc.arduino.cli.commands.v1.UpdateLibrariesIndexRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance - 34, // 11: cc.arduino.cli.commands.v1.UpdateLibrariesIndexResponse.download_progress:type_name -> cc.arduino.cli.commands.v1.DownloadProgress - 30, // 12: cc.arduino.cli.commands.v1.UpdateLibrariesIndexResponse.result:type_name -> cc.arduino.cli.commands.v1.UpdateLibrariesIndexResponse.Result + 46, // 6: cc.arduino.cli.commands.v1.DestroyRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance + 46, // 7: cc.arduino.cli.commands.v1.UpdateIndexRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance + 49, // 8: cc.arduino.cli.commands.v1.UpdateIndexResponse.download_progress:type_name -> cc.arduino.cli.commands.v1.DownloadProgress + 42, // 9: cc.arduino.cli.commands.v1.UpdateIndexResponse.result:type_name -> cc.arduino.cli.commands.v1.UpdateIndexResponse.Result + 46, // 10: cc.arduino.cli.commands.v1.UpdateLibrariesIndexRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance + 49, // 11: cc.arduino.cli.commands.v1.UpdateLibrariesIndexResponse.download_progress:type_name -> cc.arduino.cli.commands.v1.DownloadProgress + 43, // 12: cc.arduino.cli.commands.v1.UpdateLibrariesIndexResponse.result:type_name -> cc.arduino.cli.commands.v1.UpdateLibrariesIndexResponse.Result 1, // 13: cc.arduino.cli.commands.v1.IndexUpdateReport.status:type_name -> cc.arduino.cli.commands.v1.IndexUpdateReport.Status - 35, // 14: cc.arduino.cli.commands.v1.LoadSketchResponse.sketch:type_name -> cc.arduino.cli.commands.v1.Sketch - 31, // 15: cc.arduino.cli.commands.v1.CleanDownloadCacheDirectoryRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance - 34, // 16: cc.arduino.cli.commands.v1.InitResponse.Progress.download_progress:type_name -> cc.arduino.cli.commands.v1.DownloadProgress - 36, // 17: cc.arduino.cli.commands.v1.InitResponse.Progress.task_progress:type_name -> cc.arduino.cli.commands.v1.TaskProgress - 13, // 18: cc.arduino.cli.commands.v1.UpdateIndexResponse.Result.updated_indexes:type_name -> cc.arduino.cli.commands.v1.IndexUpdateReport - 13, // 19: cc.arduino.cli.commands.v1.UpdateLibrariesIndexResponse.Result.libraries_index:type_name -> cc.arduino.cli.commands.v1.IndexUpdateReport - 2, // 20: cc.arduino.cli.commands.v1.ArduinoCoreService.Create:input_type -> cc.arduino.cli.commands.v1.CreateRequest - 4, // 21: cc.arduino.cli.commands.v1.ArduinoCoreService.Init:input_type -> cc.arduino.cli.commands.v1.InitRequest - 7, // 22: cc.arduino.cli.commands.v1.ArduinoCoreService.Destroy:input_type -> cc.arduino.cli.commands.v1.DestroyRequest - 9, // 23: cc.arduino.cli.commands.v1.ArduinoCoreService.UpdateIndex:input_type -> cc.arduino.cli.commands.v1.UpdateIndexRequest - 11, // 24: cc.arduino.cli.commands.v1.ArduinoCoreService.UpdateLibrariesIndex:input_type -> cc.arduino.cli.commands.v1.UpdateLibrariesIndexRequest - 14, // 25: cc.arduino.cli.commands.v1.ArduinoCoreService.Version:input_type -> cc.arduino.cli.commands.v1.VersionRequest - 16, // 26: cc.arduino.cli.commands.v1.ArduinoCoreService.NewSketch:input_type -> cc.arduino.cli.commands.v1.NewSketchRequest - 18, // 27: cc.arduino.cli.commands.v1.ArduinoCoreService.LoadSketch:input_type -> cc.arduino.cli.commands.v1.LoadSketchRequest - 20, // 28: cc.arduino.cli.commands.v1.ArduinoCoreService.ArchiveSketch:input_type -> cc.arduino.cli.commands.v1.ArchiveSketchRequest - 22, // 29: cc.arduino.cli.commands.v1.ArduinoCoreService.SetSketchDefaults:input_type -> cc.arduino.cli.commands.v1.SetSketchDefaultsRequest - 37, // 30: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardDetails:input_type -> cc.arduino.cli.commands.v1.BoardDetailsRequest - 38, // 31: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardList:input_type -> cc.arduino.cli.commands.v1.BoardListRequest - 39, // 32: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardListAll:input_type -> cc.arduino.cli.commands.v1.BoardListAllRequest - 40, // 33: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardSearch:input_type -> cc.arduino.cli.commands.v1.BoardSearchRequest - 41, // 34: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardIdentify:input_type -> cc.arduino.cli.commands.v1.BoardIdentifyRequest - 42, // 35: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardListWatch:input_type -> cc.arduino.cli.commands.v1.BoardListWatchRequest - 43, // 36: cc.arduino.cli.commands.v1.ArduinoCoreService.Compile:input_type -> cc.arduino.cli.commands.v1.CompileRequest - 44, // 37: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformInstall:input_type -> cc.arduino.cli.commands.v1.PlatformInstallRequest - 45, // 38: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformDownload:input_type -> cc.arduino.cli.commands.v1.PlatformDownloadRequest - 46, // 39: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformUninstall:input_type -> cc.arduino.cli.commands.v1.PlatformUninstallRequest - 47, // 40: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformUpgrade:input_type -> cc.arduino.cli.commands.v1.PlatformUpgradeRequest - 48, // 41: cc.arduino.cli.commands.v1.ArduinoCoreService.Upload:input_type -> cc.arduino.cli.commands.v1.UploadRequest - 49, // 42: cc.arduino.cli.commands.v1.ArduinoCoreService.UploadUsingProgrammer:input_type -> cc.arduino.cli.commands.v1.UploadUsingProgrammerRequest - 50, // 43: cc.arduino.cli.commands.v1.ArduinoCoreService.SupportedUserFields:input_type -> cc.arduino.cli.commands.v1.SupportedUserFieldsRequest - 51, // 44: cc.arduino.cli.commands.v1.ArduinoCoreService.ListProgrammersAvailableForUpload:input_type -> cc.arduino.cli.commands.v1.ListProgrammersAvailableForUploadRequest - 52, // 45: cc.arduino.cli.commands.v1.ArduinoCoreService.BurnBootloader:input_type -> cc.arduino.cli.commands.v1.BurnBootloaderRequest - 53, // 46: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformSearch:input_type -> cc.arduino.cli.commands.v1.PlatformSearchRequest - 54, // 47: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryDownload:input_type -> cc.arduino.cli.commands.v1.LibraryDownloadRequest - 55, // 48: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryInstall:input_type -> cc.arduino.cli.commands.v1.LibraryInstallRequest - 56, // 49: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryUpgrade:input_type -> cc.arduino.cli.commands.v1.LibraryUpgradeRequest - 57, // 50: cc.arduino.cli.commands.v1.ArduinoCoreService.ZipLibraryInstall:input_type -> cc.arduino.cli.commands.v1.ZipLibraryInstallRequest - 58, // 51: cc.arduino.cli.commands.v1.ArduinoCoreService.GitLibraryInstall:input_type -> cc.arduino.cli.commands.v1.GitLibraryInstallRequest - 59, // 52: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryUninstall:input_type -> cc.arduino.cli.commands.v1.LibraryUninstallRequest - 60, // 53: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryUpgradeAll:input_type -> cc.arduino.cli.commands.v1.LibraryUpgradeAllRequest - 61, // 54: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryResolveDependencies:input_type -> cc.arduino.cli.commands.v1.LibraryResolveDependenciesRequest - 62, // 55: cc.arduino.cli.commands.v1.ArduinoCoreService.LibrarySearch:input_type -> cc.arduino.cli.commands.v1.LibrarySearchRequest - 63, // 56: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryList:input_type -> cc.arduino.cli.commands.v1.LibraryListRequest - 64, // 57: cc.arduino.cli.commands.v1.ArduinoCoreService.Monitor:input_type -> cc.arduino.cli.commands.v1.MonitorRequest - 65, // 58: cc.arduino.cli.commands.v1.ArduinoCoreService.EnumerateMonitorPortSettings:input_type -> cc.arduino.cli.commands.v1.EnumerateMonitorPortSettingsRequest - 66, // 59: cc.arduino.cli.commands.v1.ArduinoCoreService.Debug:input_type -> cc.arduino.cli.commands.v1.DebugRequest - 67, // 60: cc.arduino.cli.commands.v1.ArduinoCoreService.IsDebugSupported:input_type -> cc.arduino.cli.commands.v1.IsDebugSupportedRequest - 68, // 61: cc.arduino.cli.commands.v1.ArduinoCoreService.GetDebugConfig:input_type -> cc.arduino.cli.commands.v1.GetDebugConfigRequest - 24, // 62: cc.arduino.cli.commands.v1.ArduinoCoreService.CheckForArduinoCLIUpdates:input_type -> cc.arduino.cli.commands.v1.CheckForArduinoCLIUpdatesRequest - 26, // 63: cc.arduino.cli.commands.v1.ArduinoCoreService.CleanDownloadCacheDirectory:input_type -> cc.arduino.cli.commands.v1.CleanDownloadCacheDirectoryRequest - 69, // 64: cc.arduino.cli.commands.v1.ArduinoCoreService.ConfigurationSave:input_type -> cc.arduino.cli.commands.v1.ConfigurationSaveRequest - 70, // 65: cc.arduino.cli.commands.v1.ArduinoCoreService.ConfigurationOpen:input_type -> cc.arduino.cli.commands.v1.ConfigurationOpenRequest - 71, // 66: cc.arduino.cli.commands.v1.ArduinoCoreService.ConfigurationGet:input_type -> cc.arduino.cli.commands.v1.ConfigurationGetRequest - 72, // 67: cc.arduino.cli.commands.v1.ArduinoCoreService.SettingsEnumerate:input_type -> cc.arduino.cli.commands.v1.SettingsEnumerateRequest - 73, // 68: cc.arduino.cli.commands.v1.ArduinoCoreService.SettingsGetValue:input_type -> cc.arduino.cli.commands.v1.SettingsGetValueRequest - 74, // 69: cc.arduino.cli.commands.v1.ArduinoCoreService.SettingsSetValue:input_type -> cc.arduino.cli.commands.v1.SettingsSetValueRequest - 3, // 70: cc.arduino.cli.commands.v1.ArduinoCoreService.Create:output_type -> cc.arduino.cli.commands.v1.CreateResponse - 5, // 71: cc.arduino.cli.commands.v1.ArduinoCoreService.Init:output_type -> cc.arduino.cli.commands.v1.InitResponse - 8, // 72: cc.arduino.cli.commands.v1.ArduinoCoreService.Destroy:output_type -> cc.arduino.cli.commands.v1.DestroyResponse - 10, // 73: cc.arduino.cli.commands.v1.ArduinoCoreService.UpdateIndex:output_type -> cc.arduino.cli.commands.v1.UpdateIndexResponse - 12, // 74: cc.arduino.cli.commands.v1.ArduinoCoreService.UpdateLibrariesIndex:output_type -> cc.arduino.cli.commands.v1.UpdateLibrariesIndexResponse - 15, // 75: cc.arduino.cli.commands.v1.ArduinoCoreService.Version:output_type -> cc.arduino.cli.commands.v1.VersionResponse - 17, // 76: cc.arduino.cli.commands.v1.ArduinoCoreService.NewSketch:output_type -> cc.arduino.cli.commands.v1.NewSketchResponse - 19, // 77: cc.arduino.cli.commands.v1.ArduinoCoreService.LoadSketch:output_type -> cc.arduino.cli.commands.v1.LoadSketchResponse - 21, // 78: cc.arduino.cli.commands.v1.ArduinoCoreService.ArchiveSketch:output_type -> cc.arduino.cli.commands.v1.ArchiveSketchResponse - 23, // 79: cc.arduino.cli.commands.v1.ArduinoCoreService.SetSketchDefaults:output_type -> cc.arduino.cli.commands.v1.SetSketchDefaultsResponse - 75, // 80: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardDetails:output_type -> cc.arduino.cli.commands.v1.BoardDetailsResponse - 76, // 81: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardList:output_type -> cc.arduino.cli.commands.v1.BoardListResponse - 77, // 82: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardListAll:output_type -> cc.arduino.cli.commands.v1.BoardListAllResponse - 78, // 83: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardSearch:output_type -> cc.arduino.cli.commands.v1.BoardSearchResponse - 79, // 84: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardIdentify:output_type -> cc.arduino.cli.commands.v1.BoardIdentifyResponse - 80, // 85: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardListWatch:output_type -> cc.arduino.cli.commands.v1.BoardListWatchResponse - 81, // 86: cc.arduino.cli.commands.v1.ArduinoCoreService.Compile:output_type -> cc.arduino.cli.commands.v1.CompileResponse - 82, // 87: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformInstall:output_type -> cc.arduino.cli.commands.v1.PlatformInstallResponse - 83, // 88: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformDownload:output_type -> cc.arduino.cli.commands.v1.PlatformDownloadResponse - 84, // 89: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformUninstall:output_type -> cc.arduino.cli.commands.v1.PlatformUninstallResponse - 85, // 90: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformUpgrade:output_type -> cc.arduino.cli.commands.v1.PlatformUpgradeResponse - 86, // 91: cc.arduino.cli.commands.v1.ArduinoCoreService.Upload:output_type -> cc.arduino.cli.commands.v1.UploadResponse - 87, // 92: cc.arduino.cli.commands.v1.ArduinoCoreService.UploadUsingProgrammer:output_type -> cc.arduino.cli.commands.v1.UploadUsingProgrammerResponse - 88, // 93: cc.arduino.cli.commands.v1.ArduinoCoreService.SupportedUserFields:output_type -> cc.arduino.cli.commands.v1.SupportedUserFieldsResponse - 89, // 94: cc.arduino.cli.commands.v1.ArduinoCoreService.ListProgrammersAvailableForUpload:output_type -> cc.arduino.cli.commands.v1.ListProgrammersAvailableForUploadResponse - 90, // 95: cc.arduino.cli.commands.v1.ArduinoCoreService.BurnBootloader:output_type -> cc.arduino.cli.commands.v1.BurnBootloaderResponse - 91, // 96: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformSearch:output_type -> cc.arduino.cli.commands.v1.PlatformSearchResponse - 92, // 97: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryDownload:output_type -> cc.arduino.cli.commands.v1.LibraryDownloadResponse - 93, // 98: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryInstall:output_type -> cc.arduino.cli.commands.v1.LibraryInstallResponse - 94, // 99: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryUpgrade:output_type -> cc.arduino.cli.commands.v1.LibraryUpgradeResponse - 95, // 100: cc.arduino.cli.commands.v1.ArduinoCoreService.ZipLibraryInstall:output_type -> cc.arduino.cli.commands.v1.ZipLibraryInstallResponse - 96, // 101: cc.arduino.cli.commands.v1.ArduinoCoreService.GitLibraryInstall:output_type -> cc.arduino.cli.commands.v1.GitLibraryInstallResponse - 97, // 102: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryUninstall:output_type -> cc.arduino.cli.commands.v1.LibraryUninstallResponse - 98, // 103: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryUpgradeAll:output_type -> cc.arduino.cli.commands.v1.LibraryUpgradeAllResponse - 99, // 104: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryResolveDependencies:output_type -> cc.arduino.cli.commands.v1.LibraryResolveDependenciesResponse - 100, // 105: cc.arduino.cli.commands.v1.ArduinoCoreService.LibrarySearch:output_type -> cc.arduino.cli.commands.v1.LibrarySearchResponse - 101, // 106: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryList:output_type -> cc.arduino.cli.commands.v1.LibraryListResponse - 102, // 107: cc.arduino.cli.commands.v1.ArduinoCoreService.Monitor:output_type -> cc.arduino.cli.commands.v1.MonitorResponse - 103, // 108: cc.arduino.cli.commands.v1.ArduinoCoreService.EnumerateMonitorPortSettings:output_type -> cc.arduino.cli.commands.v1.EnumerateMonitorPortSettingsResponse - 104, // 109: cc.arduino.cli.commands.v1.ArduinoCoreService.Debug:output_type -> cc.arduino.cli.commands.v1.DebugResponse - 105, // 110: cc.arduino.cli.commands.v1.ArduinoCoreService.IsDebugSupported:output_type -> cc.arduino.cli.commands.v1.IsDebugSupportedResponse - 106, // 111: cc.arduino.cli.commands.v1.ArduinoCoreService.GetDebugConfig:output_type -> cc.arduino.cli.commands.v1.GetDebugConfigResponse - 25, // 112: cc.arduino.cli.commands.v1.ArduinoCoreService.CheckForArduinoCLIUpdates:output_type -> cc.arduino.cli.commands.v1.CheckForArduinoCLIUpdatesResponse - 27, // 113: cc.arduino.cli.commands.v1.ArduinoCoreService.CleanDownloadCacheDirectory:output_type -> cc.arduino.cli.commands.v1.CleanDownloadCacheDirectoryResponse - 107, // 114: cc.arduino.cli.commands.v1.ArduinoCoreService.ConfigurationSave:output_type -> cc.arduino.cli.commands.v1.ConfigurationSaveResponse - 108, // 115: cc.arduino.cli.commands.v1.ArduinoCoreService.ConfigurationOpen:output_type -> cc.arduino.cli.commands.v1.ConfigurationOpenResponse - 109, // 116: cc.arduino.cli.commands.v1.ArduinoCoreService.ConfigurationGet:output_type -> cc.arduino.cli.commands.v1.ConfigurationGetResponse - 110, // 117: cc.arduino.cli.commands.v1.ArduinoCoreService.SettingsEnumerate:output_type -> cc.arduino.cli.commands.v1.SettingsEnumerateResponse - 111, // 118: cc.arduino.cli.commands.v1.ArduinoCoreService.SettingsGetValue:output_type -> cc.arduino.cli.commands.v1.SettingsGetValueResponse - 112, // 119: cc.arduino.cli.commands.v1.ArduinoCoreService.SettingsSetValue:output_type -> cc.arduino.cli.commands.v1.SettingsSetValueResponse - 70, // [70:120] is the sub-list for method output_type - 20, // [20:70] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 50, // 14: cc.arduino.cli.commands.v1.LoadSketchResponse.sketch:type_name -> cc.arduino.cli.commands.v1.Sketch + 46, // 15: cc.arduino.cli.commands.v1.CleanDownloadCacheDirectoryRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance + 46, // 16: cc.arduino.cli.commands.v1.InitProfileRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance + 46, // 17: cc.arduino.cli.commands.v1.ProfileLibAddRequest.instance:type_name -> cc.arduino.cli.commands.v1.Instance + 34, // 18: cc.arduino.cli.commands.v1.ProfileLibAddRequest.library:type_name -> cc.arduino.cli.commands.v1.ProfileLibraryReference + 34, // 19: cc.arduino.cli.commands.v1.ProfileLibAddResponse.added_libraries:type_name -> cc.arduino.cli.commands.v1.ProfileLibraryReference + 34, // 20: cc.arduino.cli.commands.v1.ProfileLibAddResponse.skipped_libraries:type_name -> cc.arduino.cli.commands.v1.ProfileLibraryReference + 34, // 21: cc.arduino.cli.commands.v1.ProfileLibRemoveRequest.library:type_name -> cc.arduino.cli.commands.v1.ProfileLibraryReference + 34, // 22: cc.arduino.cli.commands.v1.ProfileLibRemoveResponse.library:type_name -> cc.arduino.cli.commands.v1.ProfileLibraryReference + 44, // 23: cc.arduino.cli.commands.v1.ProfileLibraryReference.index_library:type_name -> cc.arduino.cli.commands.v1.ProfileLibraryReference.IndexLibrary + 45, // 24: cc.arduino.cli.commands.v1.ProfileLibraryReference.local_library:type_name -> cc.arduino.cli.commands.v1.ProfileLibraryReference.LocalLibrary + 34, // 25: cc.arduino.cli.commands.v1.ProfileLibListResponse.libraries:type_name -> cc.arduino.cli.commands.v1.ProfileLibraryReference + 49, // 26: cc.arduino.cli.commands.v1.InitResponse.Progress.download_progress:type_name -> cc.arduino.cli.commands.v1.DownloadProgress + 51, // 27: cc.arduino.cli.commands.v1.InitResponse.Progress.task_progress:type_name -> cc.arduino.cli.commands.v1.TaskProgress + 13, // 28: cc.arduino.cli.commands.v1.UpdateIndexResponse.Result.updated_indexes:type_name -> cc.arduino.cli.commands.v1.IndexUpdateReport + 13, // 29: cc.arduino.cli.commands.v1.UpdateLibrariesIndexResponse.Result.libraries_index:type_name -> cc.arduino.cli.commands.v1.IndexUpdateReport + 2, // 30: cc.arduino.cli.commands.v1.ArduinoCoreService.Create:input_type -> cc.arduino.cli.commands.v1.CreateRequest + 4, // 31: cc.arduino.cli.commands.v1.ArduinoCoreService.Init:input_type -> cc.arduino.cli.commands.v1.InitRequest + 7, // 32: cc.arduino.cli.commands.v1.ArduinoCoreService.Destroy:input_type -> cc.arduino.cli.commands.v1.DestroyRequest + 9, // 33: cc.arduino.cli.commands.v1.ArduinoCoreService.UpdateIndex:input_type -> cc.arduino.cli.commands.v1.UpdateIndexRequest + 11, // 34: cc.arduino.cli.commands.v1.ArduinoCoreService.UpdateLibrariesIndex:input_type -> cc.arduino.cli.commands.v1.UpdateLibrariesIndexRequest + 14, // 35: cc.arduino.cli.commands.v1.ArduinoCoreService.Version:input_type -> cc.arduino.cli.commands.v1.VersionRequest + 16, // 36: cc.arduino.cli.commands.v1.ArduinoCoreService.NewSketch:input_type -> cc.arduino.cli.commands.v1.NewSketchRequest + 18, // 37: cc.arduino.cli.commands.v1.ArduinoCoreService.LoadSketch:input_type -> cc.arduino.cli.commands.v1.LoadSketchRequest + 20, // 38: cc.arduino.cli.commands.v1.ArduinoCoreService.ArchiveSketch:input_type -> cc.arduino.cli.commands.v1.ArchiveSketchRequest + 22, // 39: cc.arduino.cli.commands.v1.ArduinoCoreService.SetSketchDefaults:input_type -> cc.arduino.cli.commands.v1.SetSketchDefaultsRequest + 52, // 40: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardDetails:input_type -> cc.arduino.cli.commands.v1.BoardDetailsRequest + 53, // 41: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardList:input_type -> cc.arduino.cli.commands.v1.BoardListRequest + 54, // 42: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardListAll:input_type -> cc.arduino.cli.commands.v1.BoardListAllRequest + 55, // 43: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardSearch:input_type -> cc.arduino.cli.commands.v1.BoardSearchRequest + 56, // 44: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardIdentify:input_type -> cc.arduino.cli.commands.v1.BoardIdentifyRequest + 57, // 45: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardListWatch:input_type -> cc.arduino.cli.commands.v1.BoardListWatchRequest + 58, // 46: cc.arduino.cli.commands.v1.ArduinoCoreService.Compile:input_type -> cc.arduino.cli.commands.v1.CompileRequest + 59, // 47: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformInstall:input_type -> cc.arduino.cli.commands.v1.PlatformInstallRequest + 60, // 48: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformDownload:input_type -> cc.arduino.cli.commands.v1.PlatformDownloadRequest + 61, // 49: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformUninstall:input_type -> cc.arduino.cli.commands.v1.PlatformUninstallRequest + 62, // 50: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformUpgrade:input_type -> cc.arduino.cli.commands.v1.PlatformUpgradeRequest + 63, // 51: cc.arduino.cli.commands.v1.ArduinoCoreService.Upload:input_type -> cc.arduino.cli.commands.v1.UploadRequest + 64, // 52: cc.arduino.cli.commands.v1.ArduinoCoreService.UploadUsingProgrammer:input_type -> cc.arduino.cli.commands.v1.UploadUsingProgrammerRequest + 65, // 53: cc.arduino.cli.commands.v1.ArduinoCoreService.SupportedUserFields:input_type -> cc.arduino.cli.commands.v1.SupportedUserFieldsRequest + 66, // 54: cc.arduino.cli.commands.v1.ArduinoCoreService.ListProgrammersAvailableForUpload:input_type -> cc.arduino.cli.commands.v1.ListProgrammersAvailableForUploadRequest + 67, // 55: cc.arduino.cli.commands.v1.ArduinoCoreService.BurnBootloader:input_type -> cc.arduino.cli.commands.v1.BurnBootloaderRequest + 68, // 56: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformSearch:input_type -> cc.arduino.cli.commands.v1.PlatformSearchRequest + 69, // 57: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryDownload:input_type -> cc.arduino.cli.commands.v1.LibraryDownloadRequest + 70, // 58: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryInstall:input_type -> cc.arduino.cli.commands.v1.LibraryInstallRequest + 71, // 59: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryUpgrade:input_type -> cc.arduino.cli.commands.v1.LibraryUpgradeRequest + 72, // 60: cc.arduino.cli.commands.v1.ArduinoCoreService.ZipLibraryInstall:input_type -> cc.arduino.cli.commands.v1.ZipLibraryInstallRequest + 73, // 61: cc.arduino.cli.commands.v1.ArduinoCoreService.GitLibraryInstall:input_type -> cc.arduino.cli.commands.v1.GitLibraryInstallRequest + 74, // 62: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryUninstall:input_type -> cc.arduino.cli.commands.v1.LibraryUninstallRequest + 75, // 63: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryUpgradeAll:input_type -> cc.arduino.cli.commands.v1.LibraryUpgradeAllRequest + 76, // 64: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryResolveDependencies:input_type -> cc.arduino.cli.commands.v1.LibraryResolveDependenciesRequest + 77, // 65: cc.arduino.cli.commands.v1.ArduinoCoreService.LibrarySearch:input_type -> cc.arduino.cli.commands.v1.LibrarySearchRequest + 78, // 66: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryList:input_type -> cc.arduino.cli.commands.v1.LibraryListRequest + 79, // 67: cc.arduino.cli.commands.v1.ArduinoCoreService.Monitor:input_type -> cc.arduino.cli.commands.v1.MonitorRequest + 80, // 68: cc.arduino.cli.commands.v1.ArduinoCoreService.EnumerateMonitorPortSettings:input_type -> cc.arduino.cli.commands.v1.EnumerateMonitorPortSettingsRequest + 81, // 69: cc.arduino.cli.commands.v1.ArduinoCoreService.Debug:input_type -> cc.arduino.cli.commands.v1.DebugRequest + 82, // 70: cc.arduino.cli.commands.v1.ArduinoCoreService.IsDebugSupported:input_type -> cc.arduino.cli.commands.v1.IsDebugSupportedRequest + 83, // 71: cc.arduino.cli.commands.v1.ArduinoCoreService.GetDebugConfig:input_type -> cc.arduino.cli.commands.v1.GetDebugConfigRequest + 24, // 72: cc.arduino.cli.commands.v1.ArduinoCoreService.CheckForArduinoCLIUpdates:input_type -> cc.arduino.cli.commands.v1.CheckForArduinoCLIUpdatesRequest + 26, // 73: cc.arduino.cli.commands.v1.ArduinoCoreService.CleanDownloadCacheDirectory:input_type -> cc.arduino.cli.commands.v1.CleanDownloadCacheDirectoryRequest + 84, // 74: cc.arduino.cli.commands.v1.ArduinoCoreService.ConfigurationSave:input_type -> cc.arduino.cli.commands.v1.ConfigurationSaveRequest + 85, // 75: cc.arduino.cli.commands.v1.ArduinoCoreService.ConfigurationOpen:input_type -> cc.arduino.cli.commands.v1.ConfigurationOpenRequest + 86, // 76: cc.arduino.cli.commands.v1.ArduinoCoreService.ConfigurationGet:input_type -> cc.arduino.cli.commands.v1.ConfigurationGetRequest + 87, // 77: cc.arduino.cli.commands.v1.ArduinoCoreService.SettingsEnumerate:input_type -> cc.arduino.cli.commands.v1.SettingsEnumerateRequest + 88, // 78: cc.arduino.cli.commands.v1.ArduinoCoreService.SettingsGetValue:input_type -> cc.arduino.cli.commands.v1.SettingsGetValueRequest + 89, // 79: cc.arduino.cli.commands.v1.ArduinoCoreService.SettingsSetValue:input_type -> cc.arduino.cli.commands.v1.SettingsSetValueRequest + 28, // 80: cc.arduino.cli.commands.v1.ArduinoCoreService.InitProfile:input_type -> cc.arduino.cli.commands.v1.InitProfileRequest + 30, // 81: cc.arduino.cli.commands.v1.ArduinoCoreService.ProfileLibAdd:input_type -> cc.arduino.cli.commands.v1.ProfileLibAddRequest + 32, // 82: cc.arduino.cli.commands.v1.ArduinoCoreService.ProfileLibRemove:input_type -> cc.arduino.cli.commands.v1.ProfileLibRemoveRequest + 35, // 83: cc.arduino.cli.commands.v1.ArduinoCoreService.ProfileLibList:input_type -> cc.arduino.cli.commands.v1.ProfileLibListRequest + 37, // 84: cc.arduino.cli.commands.v1.ArduinoCoreService.ProfileSetDefault:input_type -> cc.arduino.cli.commands.v1.ProfileSetDefaultRequest + 39, // 85: cc.arduino.cli.commands.v1.ArduinoCoreService.ProfileDump:input_type -> cc.arduino.cli.commands.v1.ProfileDumpRequest + 3, // 86: cc.arduino.cli.commands.v1.ArduinoCoreService.Create:output_type -> cc.arduino.cli.commands.v1.CreateResponse + 5, // 87: cc.arduino.cli.commands.v1.ArduinoCoreService.Init:output_type -> cc.arduino.cli.commands.v1.InitResponse + 8, // 88: cc.arduino.cli.commands.v1.ArduinoCoreService.Destroy:output_type -> cc.arduino.cli.commands.v1.DestroyResponse + 10, // 89: cc.arduino.cli.commands.v1.ArduinoCoreService.UpdateIndex:output_type -> cc.arduino.cli.commands.v1.UpdateIndexResponse + 12, // 90: cc.arduino.cli.commands.v1.ArduinoCoreService.UpdateLibrariesIndex:output_type -> cc.arduino.cli.commands.v1.UpdateLibrariesIndexResponse + 15, // 91: cc.arduino.cli.commands.v1.ArduinoCoreService.Version:output_type -> cc.arduino.cli.commands.v1.VersionResponse + 17, // 92: cc.arduino.cli.commands.v1.ArduinoCoreService.NewSketch:output_type -> cc.arduino.cli.commands.v1.NewSketchResponse + 19, // 93: cc.arduino.cli.commands.v1.ArduinoCoreService.LoadSketch:output_type -> cc.arduino.cli.commands.v1.LoadSketchResponse + 21, // 94: cc.arduino.cli.commands.v1.ArduinoCoreService.ArchiveSketch:output_type -> cc.arduino.cli.commands.v1.ArchiveSketchResponse + 23, // 95: cc.arduino.cli.commands.v1.ArduinoCoreService.SetSketchDefaults:output_type -> cc.arduino.cli.commands.v1.SetSketchDefaultsResponse + 90, // 96: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardDetails:output_type -> cc.arduino.cli.commands.v1.BoardDetailsResponse + 91, // 97: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardList:output_type -> cc.arduino.cli.commands.v1.BoardListResponse + 92, // 98: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardListAll:output_type -> cc.arduino.cli.commands.v1.BoardListAllResponse + 93, // 99: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardSearch:output_type -> cc.arduino.cli.commands.v1.BoardSearchResponse + 94, // 100: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardIdentify:output_type -> cc.arduino.cli.commands.v1.BoardIdentifyResponse + 95, // 101: cc.arduino.cli.commands.v1.ArduinoCoreService.BoardListWatch:output_type -> cc.arduino.cli.commands.v1.BoardListWatchResponse + 96, // 102: cc.arduino.cli.commands.v1.ArduinoCoreService.Compile:output_type -> cc.arduino.cli.commands.v1.CompileResponse + 97, // 103: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformInstall:output_type -> cc.arduino.cli.commands.v1.PlatformInstallResponse + 98, // 104: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformDownload:output_type -> cc.arduino.cli.commands.v1.PlatformDownloadResponse + 99, // 105: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformUninstall:output_type -> cc.arduino.cli.commands.v1.PlatformUninstallResponse + 100, // 106: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformUpgrade:output_type -> cc.arduino.cli.commands.v1.PlatformUpgradeResponse + 101, // 107: cc.arduino.cli.commands.v1.ArduinoCoreService.Upload:output_type -> cc.arduino.cli.commands.v1.UploadResponse + 102, // 108: cc.arduino.cli.commands.v1.ArduinoCoreService.UploadUsingProgrammer:output_type -> cc.arduino.cli.commands.v1.UploadUsingProgrammerResponse + 103, // 109: cc.arduino.cli.commands.v1.ArduinoCoreService.SupportedUserFields:output_type -> cc.arduino.cli.commands.v1.SupportedUserFieldsResponse + 104, // 110: cc.arduino.cli.commands.v1.ArduinoCoreService.ListProgrammersAvailableForUpload:output_type -> cc.arduino.cli.commands.v1.ListProgrammersAvailableForUploadResponse + 105, // 111: cc.arduino.cli.commands.v1.ArduinoCoreService.BurnBootloader:output_type -> cc.arduino.cli.commands.v1.BurnBootloaderResponse + 106, // 112: cc.arduino.cli.commands.v1.ArduinoCoreService.PlatformSearch:output_type -> cc.arduino.cli.commands.v1.PlatformSearchResponse + 107, // 113: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryDownload:output_type -> cc.arduino.cli.commands.v1.LibraryDownloadResponse + 108, // 114: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryInstall:output_type -> cc.arduino.cli.commands.v1.LibraryInstallResponse + 109, // 115: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryUpgrade:output_type -> cc.arduino.cli.commands.v1.LibraryUpgradeResponse + 110, // 116: cc.arduino.cli.commands.v1.ArduinoCoreService.ZipLibraryInstall:output_type -> cc.arduino.cli.commands.v1.ZipLibraryInstallResponse + 111, // 117: cc.arduino.cli.commands.v1.ArduinoCoreService.GitLibraryInstall:output_type -> cc.arduino.cli.commands.v1.GitLibraryInstallResponse + 112, // 118: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryUninstall:output_type -> cc.arduino.cli.commands.v1.LibraryUninstallResponse + 113, // 119: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryUpgradeAll:output_type -> cc.arduino.cli.commands.v1.LibraryUpgradeAllResponse + 114, // 120: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryResolveDependencies:output_type -> cc.arduino.cli.commands.v1.LibraryResolveDependenciesResponse + 115, // 121: cc.arduino.cli.commands.v1.ArduinoCoreService.LibrarySearch:output_type -> cc.arduino.cli.commands.v1.LibrarySearchResponse + 116, // 122: cc.arduino.cli.commands.v1.ArduinoCoreService.LibraryList:output_type -> cc.arduino.cli.commands.v1.LibraryListResponse + 117, // 123: cc.arduino.cli.commands.v1.ArduinoCoreService.Monitor:output_type -> cc.arduino.cli.commands.v1.MonitorResponse + 118, // 124: cc.arduino.cli.commands.v1.ArduinoCoreService.EnumerateMonitorPortSettings:output_type -> cc.arduino.cli.commands.v1.EnumerateMonitorPortSettingsResponse + 119, // 125: cc.arduino.cli.commands.v1.ArduinoCoreService.Debug:output_type -> cc.arduino.cli.commands.v1.DebugResponse + 120, // 126: cc.arduino.cli.commands.v1.ArduinoCoreService.IsDebugSupported:output_type -> cc.arduino.cli.commands.v1.IsDebugSupportedResponse + 121, // 127: cc.arduino.cli.commands.v1.ArduinoCoreService.GetDebugConfig:output_type -> cc.arduino.cli.commands.v1.GetDebugConfigResponse + 25, // 128: cc.arduino.cli.commands.v1.ArduinoCoreService.CheckForArduinoCLIUpdates:output_type -> cc.arduino.cli.commands.v1.CheckForArduinoCLIUpdatesResponse + 27, // 129: cc.arduino.cli.commands.v1.ArduinoCoreService.CleanDownloadCacheDirectory:output_type -> cc.arduino.cli.commands.v1.CleanDownloadCacheDirectoryResponse + 122, // 130: cc.arduino.cli.commands.v1.ArduinoCoreService.ConfigurationSave:output_type -> cc.arduino.cli.commands.v1.ConfigurationSaveResponse + 123, // 131: cc.arduino.cli.commands.v1.ArduinoCoreService.ConfigurationOpen:output_type -> cc.arduino.cli.commands.v1.ConfigurationOpenResponse + 124, // 132: cc.arduino.cli.commands.v1.ArduinoCoreService.ConfigurationGet:output_type -> cc.arduino.cli.commands.v1.ConfigurationGetResponse + 125, // 133: cc.arduino.cli.commands.v1.ArduinoCoreService.SettingsEnumerate:output_type -> cc.arduino.cli.commands.v1.SettingsEnumerateResponse + 126, // 134: cc.arduino.cli.commands.v1.ArduinoCoreService.SettingsGetValue:output_type -> cc.arduino.cli.commands.v1.SettingsGetValueResponse + 127, // 135: cc.arduino.cli.commands.v1.ArduinoCoreService.SettingsSetValue:output_type -> cc.arduino.cli.commands.v1.SettingsSetValueResponse + 29, // 136: cc.arduino.cli.commands.v1.ArduinoCoreService.InitProfile:output_type -> cc.arduino.cli.commands.v1.InitProfileResponse + 31, // 137: cc.arduino.cli.commands.v1.ArduinoCoreService.ProfileLibAdd:output_type -> cc.arduino.cli.commands.v1.ProfileLibAddResponse + 33, // 138: cc.arduino.cli.commands.v1.ArduinoCoreService.ProfileLibRemove:output_type -> cc.arduino.cli.commands.v1.ProfileLibRemoveResponse + 36, // 139: cc.arduino.cli.commands.v1.ArduinoCoreService.ProfileLibList:output_type -> cc.arduino.cli.commands.v1.ProfileLibListResponse + 38, // 140: cc.arduino.cli.commands.v1.ArduinoCoreService.ProfileSetDefault:output_type -> cc.arduino.cli.commands.v1.ProfileSetDefaultResponse + 40, // 141: cc.arduino.cli.commands.v1.ArduinoCoreService.ProfileDump:output_type -> cc.arduino.cli.commands.v1.ProfileDumpResponse + 86, // [86:142] is the sub-list for method output_type + 30, // [30:86] is the sub-list for method input_type + 30, // [30:30] is the sub-list for extension type_name + 30, // [30:30] is the sub-list for extension extendee + 0, // [0:30] is the sub-list for field type_name } func init() { file_cc_arduino_cli_commands_v1_commands_proto_init() } @@ -3066,7 +4196,7 @@ func file_cc_arduino_cli_commands_v1_commands_proto_init() { } } file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*InitResponse_Progress); i { + switch v := v.(*InitProfileRequest); i { case 0: return &v.state case 1: @@ -3078,7 +4208,7 @@ func file_cc_arduino_cli_commands_v1_commands_proto_init() { } } file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*UpdateIndexResponse_Result); i { + switch v := v.(*InitProfileResponse); i { case 0: return &v.state case 1: @@ -3090,6 +4220,162 @@ func file_cc_arduino_cli_commands_v1_commands_proto_init() { } } file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[28].Exporter = func(v any, i int) any { + switch v := v.(*ProfileLibAddRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[29].Exporter = func(v any, i int) any { + switch v := v.(*ProfileLibAddResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[30].Exporter = func(v any, i int) any { + switch v := v.(*ProfileLibRemoveRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[31].Exporter = func(v any, i int) any { + switch v := v.(*ProfileLibRemoveResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[32].Exporter = func(v any, i int) any { + switch v := v.(*ProfileLibraryReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[33].Exporter = func(v any, i int) any { + switch v := v.(*ProfileLibListRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[34].Exporter = func(v any, i int) any { + switch v := v.(*ProfileLibListResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[35].Exporter = func(v any, i int) any { + switch v := v.(*ProfileSetDefaultRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[36].Exporter = func(v any, i int) any { + switch v := v.(*ProfileSetDefaultResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[37].Exporter = func(v any, i int) any { + switch v := v.(*ProfileDumpRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[38].Exporter = func(v any, i int) any { + switch v := v.(*ProfileDumpResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[39].Exporter = func(v any, i int) any { + switch v := v.(*InitResponse_Progress); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[40].Exporter = func(v any, i int) any { + switch v := v.(*UpdateIndexResponse_Result); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[41].Exporter = func(v any, i int) any { switch v := v.(*UpdateLibrariesIndexResponse_Result); i { case 0: return &v.state @@ -3101,6 +4387,30 @@ func file_cc_arduino_cli_commands_v1_commands_proto_init() { return nil } } + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[42].Exporter = func(v any, i int) any { + switch v := v.(*ProfileLibraryReference_IndexLibrary); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[43].Exporter = func(v any, i int) any { + switch v := v.(*ProfileLibraryReference_LocalLibrary); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[3].OneofWrappers = []any{ (*InitResponse_InitProgress)(nil), @@ -3115,13 +4425,18 @@ func file_cc_arduino_cli_commands_v1_commands_proto_init() { (*UpdateLibrariesIndexResponse_DownloadProgress)(nil), (*UpdateLibrariesIndexResponse_Result_)(nil), } + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[28].OneofWrappers = []any{} + file_cc_arduino_cli_commands_v1_commands_proto_msgTypes[32].OneofWrappers = []any{ + (*ProfileLibraryReference_IndexLibrary_)(nil), + (*ProfileLibraryReference_LocalLibrary_)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cc_arduino_cli_commands_v1_commands_proto_rawDesc, NumEnums: 2, - NumMessages: 29, + NumMessages: 44, NumExtensions: 0, NumServices: 1, }, diff --git a/rpc/cc/arduino/cli/commands/v1/commands.proto b/rpc/cc/arduino/cli/commands/v1/commands.proto index 4a55e0ded24..7ee3dab9571 100644 --- a/rpc/cc/arduino/cli/commands/v1/commands.proto +++ b/rpc/cc/arduino/cli/commands/v1/commands.proto @@ -190,6 +190,24 @@ service ArduinoCoreService { // Set a single configuration value. rpc SettingsSetValue(SettingsSetValueRequest) returns (SettingsSetValueResponse); + + // Create the sketch project file and add a build profile to it. + rpc InitProfile(InitProfileRequest) returns (InitProfileResponse) {} + + // Add a library to the build profile. + rpc ProfileLibAdd(ProfileLibAddRequest) returns (ProfileLibAddResponse) {} + + // Remove a library from the build profile. + rpc ProfileLibRemove(ProfileLibRemoveRequest) returns (ProfileLibRemoveResponse) {} + + // List the libraries in the build profile. + rpc ProfileLibList(ProfileLibListRequest) returns (ProfileLibListResponse) {} + + // Set the default build profile. + rpc ProfileSetDefault(ProfileSetDefaultRequest) returns (ProfileSetDefaultResponse) {} + + // Dump the sketch project file. + rpc ProfileDump(ProfileDumpRequest) returns (ProfileDumpResponse) {} } message CreateRequest {} @@ -419,3 +437,116 @@ message CleanDownloadCacheDirectoryRequest { } message CleanDownloadCacheDirectoryResponse {} + +message InitProfileRequest { + // An Arduino Core instance. + Instance instance = 1; + // Absolute path to Sketch folder. + string sketch_path = 2; + // Name of the profile. + string profile_name = 3; + // FQBN of the provided profile. + string fqbn = 4; + // Set the profile as the default one. + bool default_profile = 5; +} + +message InitProfileResponse { + // Absolute path to the project file. + string project_file_path = 1; +} + +message ProfileLibAddRequest { + // An Arduino Core instance. + Instance instance = 1; + // Absolute path to Sketch folder. + string sketch_path = 2; + // Name of the profile. + string profile_name = 3; + // The library to add to the profile. + ProfileLibraryReference library = 4; + // Set to true to add also all the dependencies of the library. + optional bool add_dependencies = 5; + // Set to true to avoid overwriting an existing library in the profile. + optional bool no_overwrite = 6; +} + +message ProfileLibAddResponse { + // The library that has been added or overwritten to the profile. + repeated ProfileLibraryReference added_libraries = 1; + // The libraries that have been skipped because they were already present + // in the profile and the no_overwrite option was set to true. + repeated ProfileLibraryReference skipped_libraries = 2; + // Name of the profile. + string profile_name = 3; +} + +message ProfileLibRemoveRequest { + // Absolute path to Sketch folder. + string sketch_path = 1; + // Name of the profile. + string profile_name = 2; + // The library to remove from the profile. + ProfileLibraryReference library = 3; +} + +message ProfileLibRemoveResponse { + // The library that has been removed from the profile. + ProfileLibraryReference library = 1; + // Name of the profile. + string profile_name = 2; +} + +message ProfileLibraryReference { + message IndexLibrary { + // Name of the library. + string name = 1; + // Version of the library if taken from the Library Index. + string version = 2; + } + message LocalLibrary { + // Absolute path to the library. + string path = 1; + } + oneof library { + // The library is installed from the Library Index. + IndexLibrary index_library = 1; + // The library is a local library. + LocalLibrary local_library = 2; + } +} + +message ProfileLibListRequest { + // Absolute path to Sketch folder. + string sketch_path = 1; + // Name of the profile. + string profile_name = 2; +} + +message ProfileLibListResponse { + // The libraries in the profile. + repeated ProfileLibraryReference libraries = 1; + // Name of the profile. + string profile_name = 2; +} + +message ProfileSetDefaultRequest { + // Absolute path to Sketch folder. + string sketch_path = 1; + // Name of the profile. + string profile_name = 2; +} + +message ProfileSetDefaultResponse {} + +message ProfileDumpRequest { + // Absolute path to Sketch folder. + string sketch_path = 1; + // The format of the dump (default is "json", allowed values are "json", and "yaml"). + string dump_format = 2; +} + +message ProfileDumpResponse { + // The encoded profile dump. + string encoded_profile = 1; +} diff --git a/rpc/cc/arduino/cli/commands/v1/commands_grpc.pb.go b/rpc/cc/arduino/cli/commands/v1/commands_grpc.pb.go index 1daf07db43b..38256bdd338 100644 --- a/rpc/cc/arduino/cli/commands/v1/commands_grpc.pb.go +++ b/rpc/cc/arduino/cli/commands/v1/commands_grpc.pb.go @@ -85,6 +85,12 @@ const ( ArduinoCoreService_SettingsEnumerate_FullMethodName = "/cc.arduino.cli.commands.v1.ArduinoCoreService/SettingsEnumerate" ArduinoCoreService_SettingsGetValue_FullMethodName = "/cc.arduino.cli.commands.v1.ArduinoCoreService/SettingsGetValue" ArduinoCoreService_SettingsSetValue_FullMethodName = "/cc.arduino.cli.commands.v1.ArduinoCoreService/SettingsSetValue" + ArduinoCoreService_InitProfile_FullMethodName = "/cc.arduino.cli.commands.v1.ArduinoCoreService/InitProfile" + ArduinoCoreService_ProfileLibAdd_FullMethodName = "/cc.arduino.cli.commands.v1.ArduinoCoreService/ProfileLibAdd" + ArduinoCoreService_ProfileLibRemove_FullMethodName = "/cc.arduino.cli.commands.v1.ArduinoCoreService/ProfileLibRemove" + ArduinoCoreService_ProfileLibList_FullMethodName = "/cc.arduino.cli.commands.v1.ArduinoCoreService/ProfileLibList" + ArduinoCoreService_ProfileSetDefault_FullMethodName = "/cc.arduino.cli.commands.v1.ArduinoCoreService/ProfileSetDefault" + ArduinoCoreService_ProfileDump_FullMethodName = "/cc.arduino.cli.commands.v1.ArduinoCoreService/ProfileDump" ) // ArduinoCoreServiceClient is the client API for ArduinoCoreService service. @@ -201,6 +207,18 @@ type ArduinoCoreServiceClient interface { SettingsGetValue(ctx context.Context, in *SettingsGetValueRequest, opts ...grpc.CallOption) (*SettingsGetValueResponse, error) // Set a single configuration value. SettingsSetValue(ctx context.Context, in *SettingsSetValueRequest, opts ...grpc.CallOption) (*SettingsSetValueResponse, error) + // Create the sketch project file and add a build profile to it. + InitProfile(ctx context.Context, in *InitProfileRequest, opts ...grpc.CallOption) (*InitProfileResponse, error) + // Add a library to the build profile. + ProfileLibAdd(ctx context.Context, in *ProfileLibAddRequest, opts ...grpc.CallOption) (*ProfileLibAddResponse, error) + // Remove a library from the build profile. + ProfileLibRemove(ctx context.Context, in *ProfileLibRemoveRequest, opts ...grpc.CallOption) (*ProfileLibRemoveResponse, error) + // List the libraries in the build profile. + ProfileLibList(ctx context.Context, in *ProfileLibListRequest, opts ...grpc.CallOption) (*ProfileLibListResponse, error) + // Set the default build profile. + ProfileSetDefault(ctx context.Context, in *ProfileSetDefaultRequest, opts ...grpc.CallOption) (*ProfileSetDefaultResponse, error) + // Dump the sketch project file. + ProfileDump(ctx context.Context, in *ProfileDumpRequest, opts ...grpc.CallOption) (*ProfileDumpResponse, error) } type arduinoCoreServiceClient struct { @@ -888,6 +906,66 @@ func (c *arduinoCoreServiceClient) SettingsSetValue(ctx context.Context, in *Set return out, nil } +func (c *arduinoCoreServiceClient) InitProfile(ctx context.Context, in *InitProfileRequest, opts ...grpc.CallOption) (*InitProfileResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(InitProfileResponse) + err := c.cc.Invoke(ctx, ArduinoCoreService_InitProfile_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *arduinoCoreServiceClient) ProfileLibAdd(ctx context.Context, in *ProfileLibAddRequest, opts ...grpc.CallOption) (*ProfileLibAddResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ProfileLibAddResponse) + err := c.cc.Invoke(ctx, ArduinoCoreService_ProfileLibAdd_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *arduinoCoreServiceClient) ProfileLibRemove(ctx context.Context, in *ProfileLibRemoveRequest, opts ...grpc.CallOption) (*ProfileLibRemoveResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ProfileLibRemoveResponse) + err := c.cc.Invoke(ctx, ArduinoCoreService_ProfileLibRemove_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *arduinoCoreServiceClient) ProfileLibList(ctx context.Context, in *ProfileLibListRequest, opts ...grpc.CallOption) (*ProfileLibListResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ProfileLibListResponse) + err := c.cc.Invoke(ctx, ArduinoCoreService_ProfileLibList_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *arduinoCoreServiceClient) ProfileSetDefault(ctx context.Context, in *ProfileSetDefaultRequest, opts ...grpc.CallOption) (*ProfileSetDefaultResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ProfileSetDefaultResponse) + err := c.cc.Invoke(ctx, ArduinoCoreService_ProfileSetDefault_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *arduinoCoreServiceClient) ProfileDump(ctx context.Context, in *ProfileDumpRequest, opts ...grpc.CallOption) (*ProfileDumpResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ProfileDumpResponse) + err := c.cc.Invoke(ctx, ArduinoCoreService_ProfileDump_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + // ArduinoCoreServiceServer is the server API for ArduinoCoreService service. // All implementations must embed UnimplementedArduinoCoreServiceServer // for forward compatibility. @@ -1002,6 +1080,18 @@ type ArduinoCoreServiceServer interface { SettingsGetValue(context.Context, *SettingsGetValueRequest) (*SettingsGetValueResponse, error) // Set a single configuration value. SettingsSetValue(context.Context, *SettingsSetValueRequest) (*SettingsSetValueResponse, error) + // Create the sketch project file and add a build profile to it. + InitProfile(context.Context, *InitProfileRequest) (*InitProfileResponse, error) + // Add a library to the build profile. + ProfileLibAdd(context.Context, *ProfileLibAddRequest) (*ProfileLibAddResponse, error) + // Remove a library from the build profile. + ProfileLibRemove(context.Context, *ProfileLibRemoveRequest) (*ProfileLibRemoveResponse, error) + // List the libraries in the build profile. + ProfileLibList(context.Context, *ProfileLibListRequest) (*ProfileLibListResponse, error) + // Set the default build profile. + ProfileSetDefault(context.Context, *ProfileSetDefaultRequest) (*ProfileSetDefaultResponse, error) + // Dump the sketch project file. + ProfileDump(context.Context, *ProfileDumpRequest) (*ProfileDumpResponse, error) mustEmbedUnimplementedArduinoCoreServiceServer() } @@ -1162,6 +1252,24 @@ func (UnimplementedArduinoCoreServiceServer) SettingsGetValue(context.Context, * func (UnimplementedArduinoCoreServiceServer) SettingsSetValue(context.Context, *SettingsSetValueRequest) (*SettingsSetValueResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SettingsSetValue not implemented") } +func (UnimplementedArduinoCoreServiceServer) InitProfile(context.Context, *InitProfileRequest) (*InitProfileResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method InitProfile not implemented") +} +func (UnimplementedArduinoCoreServiceServer) ProfileLibAdd(context.Context, *ProfileLibAddRequest) (*ProfileLibAddResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ProfileLibAdd not implemented") +} +func (UnimplementedArduinoCoreServiceServer) ProfileLibRemove(context.Context, *ProfileLibRemoveRequest) (*ProfileLibRemoveResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ProfileLibRemove not implemented") +} +func (UnimplementedArduinoCoreServiceServer) ProfileLibList(context.Context, *ProfileLibListRequest) (*ProfileLibListResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ProfileLibList not implemented") +} +func (UnimplementedArduinoCoreServiceServer) ProfileSetDefault(context.Context, *ProfileSetDefaultRequest) (*ProfileSetDefaultResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ProfileSetDefault not implemented") +} +func (UnimplementedArduinoCoreServiceServer) ProfileDump(context.Context, *ProfileDumpRequest) (*ProfileDumpResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ProfileDump not implemented") +} func (UnimplementedArduinoCoreServiceServer) mustEmbedUnimplementedArduinoCoreServiceServer() {} func (UnimplementedArduinoCoreServiceServer) testEmbeddedByValue() {} @@ -1928,6 +2036,114 @@ func _ArduinoCoreService_SettingsSetValue_Handler(srv interface{}, ctx context.C return interceptor(ctx, in, info, handler) } +func _ArduinoCoreService_InitProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InitProfileRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArduinoCoreServiceServer).InitProfile(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ArduinoCoreService_InitProfile_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArduinoCoreServiceServer).InitProfile(ctx, req.(*InitProfileRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArduinoCoreService_ProfileLibAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ProfileLibAddRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArduinoCoreServiceServer).ProfileLibAdd(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ArduinoCoreService_ProfileLibAdd_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArduinoCoreServiceServer).ProfileLibAdd(ctx, req.(*ProfileLibAddRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArduinoCoreService_ProfileLibRemove_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ProfileLibRemoveRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArduinoCoreServiceServer).ProfileLibRemove(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ArduinoCoreService_ProfileLibRemove_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArduinoCoreServiceServer).ProfileLibRemove(ctx, req.(*ProfileLibRemoveRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArduinoCoreService_ProfileLibList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ProfileLibListRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArduinoCoreServiceServer).ProfileLibList(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ArduinoCoreService_ProfileLibList_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArduinoCoreServiceServer).ProfileLibList(ctx, req.(*ProfileLibListRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArduinoCoreService_ProfileSetDefault_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ProfileSetDefaultRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArduinoCoreServiceServer).ProfileSetDefault(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ArduinoCoreService_ProfileSetDefault_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArduinoCoreServiceServer).ProfileSetDefault(ctx, req.(*ProfileSetDefaultRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArduinoCoreService_ProfileDump_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ProfileDumpRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArduinoCoreServiceServer).ProfileDump(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ArduinoCoreService_ProfileDump_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArduinoCoreServiceServer).ProfileDump(ctx, req.(*ProfileDumpRequest)) + } + return interceptor(ctx, in, info, handler) +} + // ArduinoCoreService_ServiceDesc is the grpc.ServiceDesc for ArduinoCoreService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -2051,6 +2267,30 @@ var ArduinoCoreService_ServiceDesc = grpc.ServiceDesc{ MethodName: "SettingsSetValue", Handler: _ArduinoCoreService_SettingsSetValue_Handler, }, + { + MethodName: "InitProfile", + Handler: _ArduinoCoreService_InitProfile_Handler, + }, + { + MethodName: "ProfileLibAdd", + Handler: _ArduinoCoreService_ProfileLibAdd_Handler, + }, + { + MethodName: "ProfileLibRemove", + Handler: _ArduinoCoreService_ProfileLibRemove_Handler, + }, + { + MethodName: "ProfileLibList", + Handler: _ArduinoCoreService_ProfileLibList_Handler, + }, + { + MethodName: "ProfileSetDefault", + Handler: _ArduinoCoreService_ProfileSetDefault_Handler, + }, + { + MethodName: "ProfileDump", + Handler: _ArduinoCoreService_ProfileDump_Handler, + }, }, Streams: []grpc.StreamDesc{ {