diff --git a/api/api.go b/api/api.go index adb6a06..59c4ce3 100644 --- a/api/api.go +++ b/api/api.go @@ -4,14 +4,15 @@ import ( "io" "net" - "go.arsenm.dev/lrpc/client" - "go.arsenm.dev/lrpc/codec" + "go.arsenm.dev/itd/internal/rpc" + "storj.io/drpc/drpcconn" ) const DefaultAddr = "/tmp/itd/socket" type Client struct { - client *client.Client + conn *drpcconn.Conn + client rpc.DRPCITDClient } func New(sockPath string) (*Client, error) { @@ -19,19 +20,27 @@ func New(sockPath string) (*Client, error) { if err != nil { return nil, err } + dconn := drpcconn.New(conn) - out := &Client{ - client: client.New(conn, codec.Default), - } - return out, nil + return &Client{ + conn: dconn, + client: rpc.NewDRPCITDClient(dconn), + }, nil } func NewFromConn(conn io.ReadWriteCloser) *Client { + dconn := drpcconn.New(conn) + return &Client{ - client: client.New(conn, codec.Default), + conn: dconn, + client: rpc.NewDRPCITDClient(dconn), } } -func (c *Client) Close() error { - return c.client.Close() +func (c *Client) FS() *FSClient { + return &FSClient{rpc.NewDRPCFSClient(c.conn)} +} + +func (c *Client) Close() error { + return c.conn.Close() } diff --git a/api/firmware.go b/api/firmware.go index 406fac7..4d13caf 100644 --- a/api/firmware.go +++ b/api/firmware.go @@ -3,24 +3,34 @@ package api import ( "context" - "go.arsenm.dev/infinitime" + "go.arsenm.dev/itd/internal/rpc" ) -func (c *Client) FirmwareUpgrade(ctx context.Context, upgType UpgradeType, files ...string) (chan infinitime.DFUProgress, error) { - progressCh := make(chan infinitime.DFUProgress, 5) - err := c.client.Call( - ctx, - "ITD", - "FirmwareUpgrade", - FwUpgradeData{ - Type: upgType, - Files: files, - }, - progressCh, - ) +type DFUProgress struct { + Sent int64 + Received int64 + Total int64 + Err error +} + +func (c *Client) FirmwareUpgrade(ctx context.Context, upgType UpgradeType, files ...string) (chan DFUProgress, error) { + progressCh := make(chan DFUProgress, 5) + fc, err := c.client.FirmwareUpgrade(ctx, &rpc.FirmwareUpgradeRequest{ + Type: rpc.FirmwareUpgradeRequest_Type(upgType), + Files: files, + }) if err != nil { return nil, err } + go fsRecvToChannel[rpc.DFUProgress](fc, progressCh, func(evt *rpc.DFUProgress, err error) DFUProgress { + return DFUProgress{ + Sent: evt.Sent, + Received: evt.Recieved, + Total: evt.Total, + Err: err, + } + }) + return progressCh, nil } diff --git a/api/fs.go b/api/fs.go index 7b05b51..f9b6988 100644 --- a/api/fs.go +++ b/api/fs.go @@ -1,96 +1,119 @@ package api -import "context" +import ( + "context" + "errors" + "io" -func (c *Client) RemoveAll(ctx context.Context, paths ...string) error { - return c.client.Call( - ctx, - "FS", - "RemoveAll", - paths, - nil, - ) + "go.arsenm.dev/itd/internal/rpc" +) + +type FSClient struct { + client rpc.DRPCFSClient } -func (c *Client) Remove(ctx context.Context, paths ...string) error { - return c.client.Call( - ctx, - "FS", - "Remove", - paths, - nil, - ) +func (c *FSClient) RemoveAll(ctx context.Context, paths ...string) error { + _, err := c.client.RemoveAll(ctx, &rpc.PathsRequest{Paths: paths}) + return err } -func (c *Client) Rename(ctx context.Context, old, new string) error { - return c.client.Call( - ctx, - "FS", - "Rename", - [2]string{old, new}, - nil, - ) +func (c *FSClient) Remove(ctx context.Context, paths ...string) error { + _, err := c.client.Remove(ctx, &rpc.PathsRequest{Paths: paths}) + return err } -func (c *Client) MkdirAll(ctx context.Context, paths ...string) error { - return c.client.Call( - ctx, - "FS", - "MkdirAll", - paths, - nil, - ) +func (c *FSClient) Rename(ctx context.Context, old, new string) error { + _, err := c.client.Rename(ctx, &rpc.RenameRequest{ + From: old, + To: new, + }) + return err } -func (c *Client) Mkdir(ctx context.Context, paths ...string) error { - return c.client.Call( - ctx, - "FS", - "Mkdir", - paths, - nil, - ) +func (c *FSClient) MkdirAll(ctx context.Context, paths ...string) error { + _, err := c.client.MkdirAll(ctx, &rpc.PathsRequest{Paths: paths}) + return err } -func (c *Client) ReadDir(ctx context.Context, dir string) (out []FileInfo, err error) { - err = c.client.Call( - ctx, - "FS", - "ReadDir", - dir, - &out, - ) - return +func (c *FSClient) Mkdir(ctx context.Context, paths ...string) error { + _, err := c.client.Mkdir(ctx, &rpc.PathsRequest{Paths: paths}) + return err } -func (c *Client) Upload(ctx context.Context, dst, src string) (chan FSTransferProgress, error) { +func (c *FSClient) ReadDir(ctx context.Context, dir string) ([]FileInfo, error) { + res, err := c.client.ReadDir(ctx, &rpc.PathRequest{Path: dir}) + return convertEntries(res.Entries), err +} + +func convertEntries(e []*rpc.FileInfo) []FileInfo { + out := make([]FileInfo, len(e)) + for i, fi := range e { + out[i] = FileInfo{ + Name: fi.Name, + Size: fi.Size, + IsDir: fi.IsDir, + } + } + return out +} + +func (c *FSClient) Upload(ctx context.Context, dst, src string) (chan FSTransferProgress, error) { progressCh := make(chan FSTransferProgress, 5) - err := c.client.Call( - ctx, - "FS", - "Upload", - [2]string{dst, src}, - progressCh, - ) + tc, err := c.client.Upload(ctx, &rpc.TransferRequest{Source: src, Destination: dst}) if err != nil { return nil, err } + go fsRecvToChannel[rpc.TransferProgress](tc, progressCh, func(evt *rpc.TransferProgress, err error) FSTransferProgress { + return FSTransferProgress{ + Sent: evt.Sent, + Total: evt.Total, + Err: err, + } + }) + return progressCh, nil } -func (c *Client) Download(ctx context.Context, dst, src string) (chan FSTransferProgress, error) { +func (c *FSClient) Download(ctx context.Context, dst, src string) (chan FSTransferProgress, error) { progressCh := make(chan FSTransferProgress, 5) - err := c.client.Call( - ctx, - "FS", - "Download", - [2]string{dst, src}, - progressCh, - ) + tc, err := c.client.Download(ctx, &rpc.TransferRequest{Source: src, Destination: dst}) if err != nil { return nil, err } + go fsRecvToChannel[rpc.TransferProgress](tc, progressCh, func(evt *rpc.TransferProgress, err error) FSTransferProgress { + return FSTransferProgress{ + Sent: evt.Sent, + Total: evt.Total, + Err: err, + } + }) + return progressCh, nil } + +// fsRecvToChannel converts a DRPC stream client to a Go channel, using cf to convert +// RPC generated types to API response types. +func fsRecvToChannel[R any, A any](s StreamClient[R], ch chan<- A, cf func(evt *R, err error) A) { + defer close(ch) + + var err error + var evt *R + + for { + select { + case <-s.Context().Done(): + return + default: + evt, err = s.Recv() + if errors.Is(err, io.EOF) { + return + } else if err != nil { + ch <- cf(new(R), err) + return + } + ch <- cf(evt, nil) + } + } +} diff --git a/api/get.go b/api/get.go index bc61703..ce944a2 100644 --- a/api/get.go +++ b/api/get.go @@ -3,71 +3,39 @@ package api import ( "context" - "go.arsenm.dev/infinitime" + "go.arsenm.dev/itd/internal/rpc" ) -func (c *Client) HeartRate(ctx context.Context) (out uint8, err error) { - err = c.client.Call( - ctx, - "ITD", - "HeartRate", - nil, - &out, - ) - return +func (c *Client) HeartRate(ctx context.Context) (uint8, error) { + res, err := c.client.HeartRate(ctx, &rpc.Empty{}) + return uint8(res.Value), err } -func (c *Client) BatteryLevel(ctx context.Context) (out uint8, err error) { - err = c.client.Call( - ctx, - "ITD", - "BatteryLevel", - nil, - &out, - ) - return +func (c *Client) BatteryLevel(ctx context.Context) (uint8, error) { + res, err := c.client.BatteryLevel(ctx, &rpc.Empty{}) + return uint8(res.Value), err } -func (c *Client) Motion(ctx context.Context) (out infinitime.MotionValues, err error) { - err = c.client.Call( - ctx, - "ITD", - "Motion", - nil, - &out, - ) - return +type MotionValues struct { + X, Y, Z int16 +} + +func (c *Client) Motion(ctx context.Context) (MotionValues, error) { + res, err := c.client.Motion(ctx, &rpc.Empty{}) + return MotionValues{int16(res.X), int16(res.Y), int16(res.Z)}, err } func (c *Client) StepCount(ctx context.Context) (out uint32, err error) { - err = c.client.Call( - ctx, - "ITD", - "StepCount", - nil, - &out, - ) - return + res, err := c.client.StepCount(ctx, &rpc.Empty{}) + return res.Value, err } func (c *Client) Version(ctx context.Context) (out string, err error) { - err = c.client.Call( - ctx, - "ITD", - "Version", - nil, - &out, - ) - return + res, err := c.client.Version(ctx, &rpc.Empty{}) + return res.Value, err } func (c *Client) Address(ctx context.Context) (out string, err error) { - err = c.client.Call( - ctx, - "ITD", - "Address", - nil, - &out, - ) - return + res, err := c.client.Address(ctx, &rpc.Empty{}) + return res.Value, err } diff --git a/api/notify.go b/api/notify.go index a5b0344..baf8ff5 100644 --- a/api/notify.go +++ b/api/notify.go @@ -1,16 +1,15 @@ package api -import "context" +import ( + "context" + + "go.arsenm.dev/itd/internal/rpc" +) func (c *Client) Notify(ctx context.Context, title, body string) error { - return c.client.Call( - ctx, - "ITD", - "Notify", - NotifyData{ - Title: title, - Body: body, - }, - nil, - ) + _, err := c.client.Notify(ctx, &rpc.NotifyRequest{ + Title: title, + Body: body, + }) + return err } diff --git a/api/resources.go b/api/resources.go index 8690ddc..adc04b8 100644 --- a/api/resources.go +++ b/api/resources.go @@ -4,23 +4,48 @@ import ( "context" "go.arsenm.dev/infinitime" + "go.arsenm.dev/itd/internal/rpc" ) +type ResourceOperation uint8 + +const ( + ResourceOperationRemoveObsolete = infinitime.ResourceOperationRemoveObsolete + ResourceOperationUpload = infinitime.ResourceOperationUpload +) + +type ResourceLoadProgress struct { + Operation ResourceOperation + Name string + Total int64 + Sent int64 + Err error +} + // LoadResources loads resources onto the watch from the given // file path to the resources zip -func (c *Client) LoadResources(ctx context.Context, path string) (<-chan infinitime.ResourceLoadProgress, error) { - progCh := make(chan infinitime.ResourceLoadProgress) +func (c *FSClient) LoadResources(ctx context.Context, path string) (<-chan ResourceLoadProgress, error) { + progCh := make(chan ResourceLoadProgress, 2) - err := c.client.Call( - ctx, - "FS", - "LoadResources", - path, - progCh, - ) + rc, err := c.client.LoadResources(ctx, &rpc.PathRequest{Path: path}) if err != nil { return nil, err } + go fsRecvToChannel[rpc.ResourceLoadProgress](rc, progCh, func(evt *rpc.ResourceLoadProgress, err error) ResourceLoadProgress { + return ResourceLoadProgress{ + Operation: ResourceOperation(evt.Operation), + Name: evt.Name, + Sent: evt.Sent, + Total: evt.Total, + Err: err, + } + }) + return progCh, nil } + +type StreamClient[T any] interface { + Recv() (*T, error) + Context() context.Context +} diff --git a/api/set.go b/api/set.go index efe283b..9e10f32 100644 --- a/api/set.go +++ b/api/set.go @@ -3,14 +3,11 @@ package api import ( "context" "time" + + "go.arsenm.dev/itd/internal/rpc" ) func (c *Client) SetTime(ctx context.Context, t time.Time) error { - return c.client.Call( - ctx, - "ITD", - "SetTime", - t, - nil, - ) + _, err := c.client.SetTime(ctx, &rpc.SetTimeRequest{UnixNano: t.UnixNano()}) + return err } diff --git a/api/types.go b/api/types.go index 281a85b..bfb1bf8 100644 --- a/api/types.go +++ b/api/types.go @@ -30,6 +30,7 @@ type NotifyData struct { type FSTransferProgress struct { Total uint32 Sent uint32 + Err error } type FileInfo struct { diff --git a/api/update.go b/api/update.go index 5b6bbb1..0fad720 100644 --- a/api/update.go +++ b/api/update.go @@ -1,13 +1,12 @@ package api -import "context" +import ( + "context" + + "go.arsenm.dev/itd/internal/rpc" +) func (c *Client) WeatherUpdate(ctx context.Context) error { - return c.client.Call( - ctx, - "ITD", - "WeatherUpdate", - nil, - nil, - ) + _, err := c.client.WeatherUpdate(ctx, &rpc.Empty{}) + return err } diff --git a/api/watch.go b/api/watch.go index 1b4964b..488f8ee 100644 --- a/api/watch.go +++ b/api/watch.go @@ -3,69 +3,133 @@ package api import ( "context" - "go.arsenm.dev/infinitime" + "go.arsenm.dev/itd/internal/rpc" ) func (c *Client) WatchHeartRate(ctx context.Context) (<-chan uint8, error) { outCh := make(chan uint8, 2) - err := c.client.Call( - ctx, - "ITD", - "WatchHeartRate", - nil, - outCh, - ) + wc, err := c.client.WatchHeartRate(ctx, &rpc.Empty{}) if err != nil { return nil, err } + go func() { + defer close(outCh) + + var err error + var evt *rpc.IntResponse + + for { + select { + case <-ctx.Done(): + wc.Close() + return + default: + evt, err = wc.Recv() + if err != nil { + return + } + } + + outCh <- uint8(evt.Value) + } + }() + return outCh, nil } func (c *Client) WatchBatteryLevel(ctx context.Context) (<-chan uint8, error) { outCh := make(chan uint8, 2) - err := c.client.Call( - ctx, - "ITD", - "WatchBatteryLevel", - nil, - outCh, - ) + wc, err := c.client.WatchBatteryLevel(ctx, &rpc.Empty{}) if err != nil { return nil, err } + go func() { + defer close(outCh) + + var err error + var evt *rpc.IntResponse + + for { + select { + case <-ctx.Done(): + wc.Close() + return + default: + evt, err = wc.Recv() + if err != nil { + return + } + } + + outCh <- uint8(evt.Value) + } + }() + return outCh, nil } func (c *Client) WatchStepCount(ctx context.Context) (<-chan uint32, error) { outCh := make(chan uint32, 2) - err := c.client.Call( - ctx, - "ITD", - "WatchStepCount", - nil, - outCh, - ) + wc, err := c.client.WatchStepCount(ctx, &rpc.Empty{}) if err != nil { return nil, err } + go func() { + defer close(outCh) + + var err error + var evt *rpc.IntResponse + + for { + select { + case <-ctx.Done(): + wc.Close() + return + default: + evt, err = wc.Recv() + if err != nil { + return + } + } + + outCh <- evt.Value + } + }() + return outCh, nil } -func (c *Client) WatchMotion(ctx context.Context) (<-chan infinitime.MotionValues, error) { - outCh := make(chan infinitime.MotionValues, 2) - err := c.client.Call( - ctx, - "ITD", - "WatchMotion", - nil, - outCh, - ) +func (c *Client) WatchMotion(ctx context.Context) (<-chan MotionValues, error) { + outCh := make(chan MotionValues, 2) + wc, err := c.client.WatchMotion(ctx, &rpc.Empty{}) if err != nil { return nil, err } + go func() { + defer close(outCh) + + var err error + var evt *rpc.MotionResponse + + for { + select { + case <-ctx.Done(): + wc.Close() + return + default: + evt, err = wc.Recv() + if err != nil { + return + } + } + + outCh <- MotionValues{int16(evt.X), int16(evt.Y), int16(evt.Z)} + } + }() + return outCh, nil } diff --git a/cmd/itctl/firmware.go b/cmd/itctl/firmware.go index d8d3f39..54f5e77 100644 --- a/cmd/itctl/firmware.go +++ b/cmd/itctl/firmware.go @@ -54,6 +54,10 @@ func fwUpgrade(c *cli.Context) error { bar := pb.ProgressBarTemplate(barTmpl).Start(0) // Create new scanner of connection for event := range progress { + if event.Err != nil { + return event.Err + } + // Set total bytes in progress bar bar.SetTotal(event.Total) // Set amount of bytes received in progress bar diff --git a/cmd/itctl/fs.go b/cmd/itctl/fs.go index fc2ec0a..393759e 100644 --- a/cmd/itctl/fs.go +++ b/cmd/itctl/fs.go @@ -3,7 +3,6 @@ package main import ( "fmt" "io" - "io/ioutil" "os" "path/filepath" @@ -17,7 +16,7 @@ func fsList(c *cli.Context) error { dirPath = c.Args().Get(0) } - listing, err := client.ReadDir(c.Context, dirPath) + listing, err := client.FS().ReadDir(c.Context, dirPath) if err != nil { return err } @@ -36,9 +35,9 @@ func fsMkdir(c *cli.Context) error { var err error if c.Bool("parents") { - err = client.MkdirAll(c.Context, c.Args().Slice()...) + err = client.FS().MkdirAll(c.Context, c.Args().Slice()...) } else { - err = client.Mkdir(c.Context, c.Args().Slice()...) + err = client.FS().Mkdir(c.Context, c.Args().Slice()...) } if err != nil { return err @@ -52,7 +51,7 @@ func fsMove(c *cli.Context) error { return cli.Exit("Command move requires two arguments", 1) } - err := client.Rename(c.Context, c.Args().Get(0), c.Args().Get(1)) + err := client.FS().Rename(c.Context, c.Args().Get(0), c.Args().Get(1)) if err != nil { return err } @@ -69,7 +68,7 @@ func fsRead(c *cli.Context) error { var path string var err error if c.Args().Get(1) == "-" { - tmpFile, err = ioutil.TempFile("/tmp", "itctl.*") + tmpFile, err = os.CreateTemp("/tmp", "itctl.*") if err != nil { return err } @@ -81,7 +80,7 @@ func fsRead(c *cli.Context) error { } } - progress, err := client.Download(c.Context, path, c.Args().Get(0)) + progress, err := client.FS().Download(c.Context, path, c.Args().Get(0)) if err != nil { return err } @@ -92,6 +91,10 @@ func fsRead(c *cli.Context) error { bar := pb.ProgressBarTemplate(barTmpl).Start(0) // Get progress events for event := range progress { + if event.Err != nil { + return event.Err + } + // Set total bytes in progress bar bar.SetTotal(int64(event.Total)) // Set amount of bytes sent in progress bar @@ -116,9 +119,9 @@ func fsRemove(c *cli.Context) error { var err error if c.Bool("recursive") { - err = client.RemoveAll(c.Context, c.Args().Slice()...) + err = client.FS().RemoveAll(c.Context, c.Args().Slice()...) } else { - err = client.Remove(c.Context, c.Args().Slice()...) + err = client.FS().Remove(c.Context, c.Args().Slice()...) } if err != nil { return err @@ -136,7 +139,7 @@ func fsWrite(c *cli.Context) error { var path string var err error if c.Args().Get(0) == "-" { - tmpFile, err = ioutil.TempFile("/tmp", "itctl.*") + tmpFile, err = os.CreateTemp("/tmp", "itctl.*") if err != nil { return err } @@ -154,7 +157,7 @@ func fsWrite(c *cli.Context) error { defer os.Remove(path) } - progress, err := client.Upload(c.Context, c.Args().Get(1), path) + progress, err := client.FS().Upload(c.Context, c.Args().Get(1), path) if err != nil { return err } @@ -165,6 +168,10 @@ func fsWrite(c *cli.Context) error { bar := pb.ProgressBarTemplate(barTmpl).Start(0) // Get progress events for event := range progress { + if event.Err != nil { + return event.Err + } + // Set total bytes in progress bar bar.SetTotal(int64(event.Total)) // Set amount of bytes sent in progress bar diff --git a/cmd/itctl/resources.go b/cmd/itctl/resources.go index 2600ef5..db4e213 100644 --- a/cmd/itctl/resources.go +++ b/cmd/itctl/resources.go @@ -29,7 +29,7 @@ func resLoad(ctx context.Context, args []string) error { return err } - progCh, err := client.LoadResources(ctx, path) + progCh, err := client.FS().LoadResources(ctx, path) if err != nil { return err } diff --git a/cmd/itgui/fs.go b/cmd/itgui/fs.go index 1011730..faa5dbe 100644 --- a/cmd/itgui/fs.go +++ b/cmd/itgui/fs.go @@ -36,7 +36,7 @@ func fsTab(ctx context.Context, client *api.Client, w fyne.Window, opened chan s loading.Show() // Read root directory - ls, err := client.ReadDir(ctx, "/") + ls, err := client.FS().ReadDir(ctx, "/") if err != nil { guiErr(err, "Error reading directory", false, w) return @@ -69,18 +69,13 @@ func fsTab(ctx context.Context, client *api.Client, w fyne.Window, opened chan s progressDlg := newProgress(w) progressDlg.Show() - progCh, err := client.LoadResources(ctx, resPath) + progCh, err := client.FS().LoadResources(ctx, resPath) if err != nil { guiErr(err, "Error loading resources", false, w) return } for evt := range progCh { - if evt.Err != nil { - guiErr(evt.Err, "Error loading resources", false, w) - return - } - switch evt.Operation { case infinitime.ResourceOperationRemoveObsolete: progressDlg.SetText("Removing " + evt.Name) @@ -135,7 +130,7 @@ func fsTab(ctx context.Context, client *api.Client, w fyne.Window, opened chan s progressDlg.Show() // Upload file - progressCh, err := client.Upload(ctx, remotePath, localPath) + progressCh, err := client.FS().Upload(ctx, remotePath, localPath) if err != nil { guiErr(err, "Error uploading file", false, w) return @@ -182,7 +177,7 @@ func fsTab(ctx context.Context, client *api.Client, w fyne.Window, opened chan s remotePath := filepath.Join(cwd, filenameEntry.Text) // Make directory - err := client.Mkdir(ctx, remotePath) + err := client.FS().Mkdir(ctx, remotePath) if err != nil { guiErr(err, "Error creating directory", false, w) return @@ -282,7 +277,7 @@ func makeItems( progressDlg.Show() // Download file - progressCh, err := client.Download(ctx, localPath, remotePath) + progressCh, err := client.FS().Download(ctx, localPath, remotePath) if err != nil { guiErr(err, "Error downloading file", false, w) return @@ -323,7 +318,7 @@ func makeItems( oldPath := filepath.Join(cwd, item.Name) // Rename file - err := client.Rename(ctx, oldPath, moveEntry.Text) + err := client.FS().Rename(ctx, oldPath, moveEntry.Text) if err != nil { guiErr(err, "Error renaming file", false, w) return @@ -342,7 +337,7 @@ func makeItems( path := filepath.Join(cwd, item.Name) // Remove file - err := client.Remove(ctx, path) + err := client.FS().Remove(ctx, path) if err != nil { guiErr(err, "Error removing file", false, w) return @@ -381,7 +376,7 @@ func refresh( // Get current directory cwd, _ := cwdData.Get() // Read directory - ls, err := client.ReadDir(ctx, cwd) + ls, err := client.FS().ReadDir(ctx, cwd) if err != nil { guiErr(err, "Error reading directory", false, w) return diff --git a/go.mod b/go.mod index 7c3bd5e..0370984 100644 --- a/go.mod +++ b/go.mod @@ -1,83 +1,85 @@ module go.arsenm.dev/itd -go 1.17 +go 1.18 replace fyne.io/x/fyne => github.com/metal3d/fyne-x v0.0.0-20220508095732-177117e583fb require ( - fyne.io/fyne/v2 v2.2.3 - fyne.io/x/fyne v0.0.0-20220107050838-c4a1de51d4ce - github.com/cheggaaa/pb/v3 v3.0.8 - github.com/gen2brain/dlgs v0.0.0-20211108104213-bade24837f0b + fyne.io/fyne/v2 v2.3.0 + fyne.io/x/fyne v0.0.0-20221121180555-92e65f302337 + github.com/cheggaaa/pb/v3 v3.1.0 + github.com/gen2brain/dlgs v0.0.0-20220603100644-40c77870fa8d github.com/godbus/dbus/v5 v5.1.0 - github.com/knadh/koanf v1.4.0 - github.com/mattn/go-isatty v0.0.14 + github.com/knadh/koanf v1.4.4 + github.com/mattn/go-isatty v0.0.17 github.com/mozillazg/go-pinyin v0.19.0 - github.com/rs/zerolog v1.26.1 - github.com/urfave/cli/v2 v2.4.0 - go.arsenm.dev/infinitime v0.0.0-20221119224612-0c369dc5df94 - go.arsenm.dev/lrpc v0.0.0-20220513001344-3bcc01fdb6a0 - golang.org/x/text v0.3.7 - modernc.org/sqlite v1.17.2 + github.com/rs/zerolog v1.28.0 + github.com/urfave/cli/v2 v2.23.7 + go.arsenm.dev/infinitime v0.0.0-20221122225335-2da80044b34a + golang.org/x/text v0.5.0 + google.golang.org/protobuf v1.28.1 + modernc.org/sqlite v1.20.1 + storj.io/drpc v0.0.32 ) require ( - fyne.io/systray v1.10.1-0.20220621085403-9a2652634e93 // indirect - github.com/VividCortex/ewma v1.1.1 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.1 // indirect + fyne.io/systray v1.10.1-0.20221115204952-d16a6177e6f1 // indirect + github.com/VividCortex/ewma v1.2.0 // indirect + github.com/benoitkugler/textlayout v0.3.0 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/fatih/color v1.10.0 // indirect + github.com/dustin/go-humanize v1.0.0 // indirect + github.com/fatih/color v1.13.0 // indirect github.com/fatih/structs v1.1.0 // indirect - github.com/fredbi/uri v0.0.0-20181227131451-3dcfdacbaaf3 // indirect - github.com/fsnotify/fsnotify v1.5.4 // indirect + github.com/fredbi/uri v1.0.0 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/fxamacker/cbor/v2 v2.4.0 // indirect - github.com/fyne-io/gl-js v0.0.0-20220119005834-d2da28d9ccfe // indirect - github.com/fyne-io/glfw-js v0.0.0-20220120001248-ee7290d23504 // indirect - github.com/fyne-io/image v0.0.0-20220602074514-4956b0afb3d2 // indirect + github.com/fyne-io/gl-js v0.0.0-20220802150000-8e339395f381 // indirect + github.com/fyne-io/glfw-js v0.0.0-20220517201726-bebc2019cd33 // indirect + github.com/fyne-io/image v0.0.0-20221020213044-f609c6a24345 // indirect github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6 // indirect - github.com/go-gl/glfw/v3.3/glfw v0.0.0-20211213063430-748e38ca8aec // indirect - github.com/gofrs/uuid v4.2.0+incompatible // indirect + github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b // indirect + github.com/go-text/typesetting v0.0.0-20221219135543-5d0d724ee181 // indirect github.com/goki/freetype v0.0.0-20220119013949-7a161fd3728c // indirect github.com/google/uuid v1.3.0 // indirect github.com/gopherjs/gopherjs v1.17.2 // indirect github.com/jsummers/gobmp v0.0.0-20151104160322-e2ba15ffa76e // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect - github.com/mattn/go-colorable v0.1.8 // indirect - github.com/mattn/go-runewidth v0.0.13 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-runewidth v0.0.14 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/muka/go-bluetooth v0.0.0-20220819140550-1d8857e3b268 // indirect - github.com/pelletier/go-toml v1.9.3 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect - github.com/rivo/uniseg v0.2.0 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20220927061507-ef77025ab5aa // indirect + github.com/rivo/uniseg v0.4.3 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/sirupsen/logrus v1.8.1 // indirect - github.com/srwiley/oksvg v0.0.0-20220128195007-1f435e4c2b44 // indirect - github.com/srwiley/rasterx v0.0.0-20220128185129-2efea2b9ea41 // indirect - github.com/stretchr/testify v1.7.2 // indirect + github.com/sirupsen/logrus v1.9.0 // indirect + github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c // indirect + github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef // indirect + github.com/stretchr/testify v1.8.1 // indirect github.com/tevino/abool v1.2.0 // indirect - github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect - github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/x448/float16 v0.8.4 // indirect - github.com/yuin/goldmark v1.4.10 // indirect - golang.org/x/image v0.0.0-20220601225756-64ec528b34cd // indirect - golang.org/x/mobile v0.0.0-20211207041440-4e6c2922fdee // indirect - golang.org/x/mod v0.4.2 // indirect - golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4 // indirect - golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect - golang.org/x/tools v0.1.8-0.20211022200916-316ba0b74098 // indirect - golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect + github.com/yuin/goldmark v1.5.3 // indirect + github.com/zeebo/errs v1.3.0 // indirect + golang.org/x/image v0.2.0 // indirect + golang.org/x/mobile v0.0.0-20221110043201-43a038452099 // indirect + golang.org/x/mod v0.7.0 // indirect + golang.org/x/net v0.4.0 // indirect + golang.org/x/sys v0.3.0 // indirect + golang.org/x/tools v0.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2 // indirect - lukechampine.com/uint128 v1.1.1 // indirect - modernc.org/cc/v3 v3.36.0 // indirect - modernc.org/ccgo/v3 v3.16.6 // indirect - modernc.org/libc v1.16.7 // indirect - modernc.org/mathutil v1.4.1 // indirect - modernc.org/memory v1.1.1 // indirect - modernc.org/opt v0.1.1 // indirect - modernc.org/strutil v1.1.1 // indirect - modernc.org/token v1.0.0 // indirect + honnef.co/go/js/dom v0.0.0-20221001195520-26252dedbe70 // indirect + lukechampine.com/uint128 v1.2.0 // indirect + modernc.org/cc/v3 v3.40.0 // indirect + modernc.org/ccgo/v3 v3.16.13 // indirect + modernc.org/libc v1.22.2 // indirect + modernc.org/mathutil v1.5.0 // indirect + modernc.org/memory v1.5.0 // indirect + modernc.org/opt v0.1.3 // indirect + modernc.org/strutil v1.1.3 // indirect + modernc.org/token v1.1.0 // indirect ) diff --git a/go.sum b/go.sum index 8d73d68..781eae2 100644 --- a/go.sum +++ b/go.sum @@ -38,24 +38,31 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= fyne.io/fyne/v2 v2.1.0/go.mod h1:c1vwI38Ebd0dAdxVa6H1Pj6/+cK1xtDy61+I31g+s14= -fyne.io/fyne/v2 v2.2.3 h1:Umi3vVVW8XnWWPJmMkhIWQOMU/jxB1OqpWVUmjhODD0= -fyne.io/fyne/v2 v2.2.3/go.mod h1:MBoGuHzLLSXdQOWFAwWhIhYTEMp33zqtGCReSWhaQTA= -fyne.io/systray v1.10.1-0.20220621085403-9a2652634e93 h1:V2IC9t0Zj9Ur6qDbfhUuzVmIvXKFyxZXRJyigUvovs4= -fyne.io/systray v1.10.1-0.20220621085403-9a2652634e93/go.mod h1:oM2AQqGJ1AMo4nNqZFYU8xYygSBZkW2hmdJ7n4yjedE= +fyne.io/fyne/v2 v2.3.0 h1:g9tPI3lyBK50IvyPbXqv2zI3JJ4uhMAffu89f3nX5PU= +fyne.io/fyne/v2 v2.3.0/go.mod h1:odfJmbFnODiKn1MXdL44JR6CK+0v8lrmgdPlrUF6w0M= +fyne.io/systray v1.10.1-0.20221115204952-d16a6177e6f1 h1:OiHw+bZAGEaSreHsA8dDkBOVJmSFzsNTOc/htpM+fOc= +fyne.io/systray v1.10.1-0.20221115204952-d16a6177e6f1/go.mod h1:oM2AQqGJ1AMo4nNqZFYU8xYygSBZkW2hmdJ7n4yjedE= github.com/Andrew-M-C/go.jsonvalue v1.1.2-0.20211223013816-e873b56b4a84/go.mod h1:oTJGG91FhtsxvUFVwHSvr6zuaTcAuroj/ToxfT7Ox8U= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/Kodeworks/golang-image-ico v0.0.0-20141118225523-73f0f4cfade9/go.mod h1:7uhhqiBaR4CpN0k9rMjOtjpcfGd6DG2m04zQxKnWQ0I= -github.com/VividCortex/ewma v1.1.1 h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdcM= github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA= +github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= +github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= github.com/akavel/rsrc v0.8.0/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c= github.com/akavel/rsrc v0.10.2/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw= github.com/aws/aws-sdk-go-v2/credentials v1.4.3/go.mod h1:FNNC6nQZQUuyhq5aE5c7ata8o9e4ECGmS4lAXC7o1mQ= @@ -66,11 +73,20 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72H github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/benoitkugler/pstokenizer v1.0.0/go.mod h1:l1G2Voirz0q/jj0TQfabNxVsa8HZXh/VMxFSRALWTiE= +github.com/benoitkugler/textlayout v0.3.0 h1:2ehWXEkgb6RUokTjXh1LzdGwG4dRP6X3dqhYYDYhUVk= +github.com/benoitkugler/textlayout v0.3.0/go.mod h1:o+1hFV+JSHBC9qNLIuwVoLedERU7sBPgEFcuSgfvi/w= +github.com/benoitkugler/textlayout-testdata v0.1.1 h1:AvFxBxpfrQd8v55qH59mZOJOQjtD6K2SFe9/HvnIbJk= +github.com/benoitkugler/textlayout-testdata v0.1.1/go.mod h1:i/qZl09BbUOtd7Bu/W1CAubRwTWrEXWq6JwMkw8wYxo= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cheggaaa/pb/v3 v3.0.8 h1:bC8oemdChbke2FHIIGy9mn4DPJ2caZYQnfbRqwmdCoA= -github.com/cheggaaa/pb/v3 v3.0.8/go.mod h1:UICbiLec/XO6Hw6k+BHEtHeQFzzBH4i2/qk/ow1EJTA= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cheggaaa/pb/v3 v3.1.0 h1:3uouEsl32RL7gTiQsuaXD4Bzbfl5tGztXGUvXbs4O04= +github.com/cheggaaa/pb/v3 v3.1.0/go.mod h1:YjrevcBqadFDaGQKRdmZxTY42pXEqda48Ea3lt0K/BE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -80,10 +96,12 @@ github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnht github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.1 h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU= github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -98,47 +116,64 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/fredbi/uri v0.0.0-20181227131451-3dcfdacbaaf3 h1:FDqhDm7pcsLhhWl1QtD8vlzI4mm59llRvNzrFg6/LAA= github.com/fredbi/uri v0.0.0-20181227131451-3dcfdacbaaf3/go.mod h1:CzM2G82Q9BDUvMTGHnXf/6OExw/Dz2ivDj48nVg7Lg8= +github.com/fredbi/uri v0.1.0/go.mod h1:1xC40RnIOGCaQzswaOvrzvG/3M3F0hyDVb3aO/1iGy0= +github.com/fredbi/uri v1.0.0 h1:s4QwUAZ8fz+mbTsukND+4V5f+mJ/wjaTokwstGUAemg= +github.com/fredbi/uri v1.0.0/go.mod h1:1xC40RnIOGCaQzswaOvrzvG/3M3F0hyDVb3aO/1iGy0= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/fxamacker/cbor/v2 v2.4.0 h1:ri0ArlOR+5XunOP8CRUowT0pSJOwhW098ZCUyskZD88= github.com/fxamacker/cbor/v2 v2.4.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= -github.com/fyne-io/gl-js v0.0.0-20220119005834-d2da28d9ccfe h1:A/wiwvQ0CAjPkuJytaD+SsXkPU0asQ+guQEIg1BJGX4= github.com/fyne-io/gl-js v0.0.0-20220119005834-d2da28d9ccfe/go.mod h1:d4clgH0/GrRwWjRzJJQXxT/h1TyuNSfF/X64zb/3Ggg= -github.com/fyne-io/glfw-js v0.0.0-20220120001248-ee7290d23504 h1:+31CdF/okdokeFNoy9L/2PccG3JFidQT3ev64/r4pYU= +github.com/fyne-io/gl-js v0.0.0-20220802150000-8e339395f381 h1:SFtj9yo9C7F4CxyJeSJi9AjT6x9c88gnY1tjlXWh9QU= +github.com/fyne-io/gl-js v0.0.0-20220802150000-8e339395f381/go.mod h1:d4clgH0/GrRwWjRzJJQXxT/h1TyuNSfF/X64zb/3Ggg= github.com/fyne-io/glfw-js v0.0.0-20220120001248-ee7290d23504/go.mod h1:gLRWYfYnMA9TONeppRSikMdXlHQ97xVsPojddUv3b/E= -github.com/fyne-io/image v0.0.0-20220602074514-4956b0afb3d2 h1:hnLq+55b7Zh7/2IRzWCpiTcAvjv/P8ERF+N7+xXbZhk= +github.com/fyne-io/glfw-js v0.0.0-20220517201726-bebc2019cd33 h1:0Ayg0/do/sqX2R7NonoLZvWxGrd9utTVf3A0QvCbC88= +github.com/fyne-io/glfw-js v0.0.0-20220517201726-bebc2019cd33/go.mod h1:gLRWYfYnMA9TONeppRSikMdXlHQ97xVsPojddUv3b/E= github.com/fyne-io/image v0.0.0-20220602074514-4956b0afb3d2/go.mod h1:eO7W361vmlPOrykIg+Rsh1SZ3tQBaOsfzZhsIOb/Lm0= -github.com/gen2brain/dlgs v0.0.0-20211108104213-bade24837f0b h1:M0/hjawi9ur15zpqL/h66ga87jlYA7iAuZ4HC6ak08k= -github.com/gen2brain/dlgs v0.0.0-20211108104213-bade24837f0b/go.mod h1:/eFcjDXaU2THSOOqLxOPETIbHETnamk8FA/hMjhg/gU= +github.com/fyne-io/image v0.0.0-20221020213044-f609c6a24345 h1:ONkcbJmsWUOHyjUm0wlnkFc/uaacFFtStVbsG6qJfew= +github.com/fyne-io/image v0.0.0-20221020213044-f609c6a24345/go.mod h1:eO7W361vmlPOrykIg+Rsh1SZ3tQBaOsfzZhsIOb/Lm0= +github.com/gen2brain/dlgs v0.0.0-20220603100644-40c77870fa8d h1:dHYKX8CBAs1zSGXm3q3M15CLAEwPEkwrK1ed8FCo+Xo= +github.com/gen2brain/dlgs v0.0.0-20220603100644-40c77870fa8d/go.mod h1:/eFcjDXaU2THSOOqLxOPETIbHETnamk8FA/hMjhg/gU= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-gl/gl v0.0.0-20210813123233-e4099ee2221f/go.mod h1:wjpnOv6ONl2SuJSxqCPVaPZibGFdSci9HFocT9qtVYM= github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6 h1:zDw5v7qm4yH7N8C8uWd+8Ii9rROdgWxQuGoJ9WDXxfk= github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6/go.mod h1:9YTyiznxEY1fVinfM7RvRcjRHbw2xLBJ3AAGIT0I4Nw= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20210410170116-ea3d685f79fb/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20211213063430-748e38ca8aec h1:3FLiRYO6PlQFDpUU7OEFlWgjGD1jnBIVSJ5SYRWk+9c= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20211213063430-748e38ca8aec/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b h1:GgabKamyOYguHqHjSkDACcgoPIz3w0Dis/zJ1wyHHHU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-text/typesetting v0.0.0-20221212183139-1eb938670a1f/go.mod h1:/cmOXaoTiO+lbCwkTZBgCvevJpbFsZ5reXIpEJVh5MI= +github.com/go-text/typesetting v0.0.0-20221219135543-5d0d724ee181 h1:J6XG/Xx7uCCpskM71R6YAgPHd/E8FzhyPhL6Ll94uMY= +github.com/go-text/typesetting v0.0.0-20221219135543-5d0d724ee181/go.mod h1:/cmOXaoTiO+lbCwkTZBgCvevJpbFsZ5reXIpEJVh5MI= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0= -github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/goki/freetype v0.0.0-20181231101311-fa8a33aabaff/go.mod h1:wfqRWLHRBsRgkp5dmbG56SA0DmVtwrF5N3oPdI8t+Aw= github.com/goki/freetype v0.0.0-20220119013949-7a161fd3728c h1:JGCm/+tJ9gC6THUxooTldS+CUDsba0qvkvU3DHklqW8= @@ -186,8 +221,9 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -203,6 +239,7 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -217,21 +254,27 @@ github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfre github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/goxjs/gl v0.0.0-20210104184919-e3fafc6f8f2a/go.mod h1:dy/f2gjY09hwVfIyATps4G2ai7/hLwLkc5TrPqONuXY= github.com/goxjs/glfw v0.0.0-20191126052801-d2efb5f20838/go.mod h1:oS8P8gVOT4ywTcjV6wZlOU4GuVFQ8F5328KY3MJ79CY= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/api v1.13.0/go.mod h1:ZlVrynguJKcYr54zGaDbaL3fOvKC9m72FhPvA8T35KQ= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= @@ -245,12 +288,17 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q= github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hjson/hjson-go/v4 v4.0.0 h1:wlm6IYYqHjOdXH1gHev4VoXCaW20HdQAGCxdOEEg2cs= +github.com/hjson/hjson-go/v4 v4.0.0/go.mod h1:KaYt3bTw3zhBjYqnXkYywcYctk0A2nxeEFTse3rH13E= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= @@ -262,43 +310,64 @@ github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/josephspurrier/goversioninfo v0.0.0-20200309025242-14b0ab84c6ca/go.mod h1:eJTEwMjXb7kZ633hO3Ln9mBUCOjX2+FlTljvpl9SYdE= github.com/josephspurrier/goversioninfo v1.4.0/go.mod h1:JWzv5rKQr+MmW+LvM412ToT/IkYDZjaclF2pKDss8IY= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jsummers/gobmp v0.0.0-20151104160322-e2ba15ffa76e h1:LvL4XsI70QxOGHed6yhQtAU34Kx3Qq2wwBzGFKY8zKk= github.com/jsummers/gobmp v0.0.0-20151104160322-e2ba15ffa76e/go.mod h1:kLgvv7o6UM+0QSf0QjAse3wReFDsb9qbZJdfexWlrQw= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/knadh/koanf v1.4.0 h1:/k0Bh49SqLyLNfte9r6cvuZWrApOQhglOmhIU3L/zDw= -github.com/knadh/koanf v1.4.0/go.mod h1:1cfH5223ZeZUOs8FU2UdTmaNfHpqgtjV0+NHjRO43gs= +github.com/knadh/koanf v1.4.4 h1:d2jY5nCCeoaiqvEKSBW9rEc93EfNy/XWgWsSB3j7JEA= +github.com/knadh/koanf v1.4.4/go.mod h1:Hgyjp4y8v44hpZtPzs7JZfRAW5AhN7KfZcwv1RYggDs= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/lucor/goinfo v0.0.0-20210802170112-c078a2b0f08b/go.mod h1:PRq09yoB+Q2OJReAmwzKivcYyremnibWGbK7WfftHzc= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= -github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-sqlite3 v1.14.12 h1:TJ1bhYJPV44phC+IMu1u2K/i5RriLTPe+yc68XDJ1Z0= -github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mcuadros/go-version v0.0.0-20190830083331-035f6764e8d2/go.mod h1:76rfSfYPWj01Z85hUf/ituArm797mNKcvINh1OlsZKo= github.com/metal3d/fyne-x v0.0.0-20220508095732-177117e583fb h1:+fP6ENsbd+BUOmD/kSjNtrOmi2vgJ/JfWDSWjTKmTVY= github.com/metal3d/fyne-x v0.0.0-20220508095732-177117e583fb/go.mod h1:jBspDudEQ+Rdono8vBGHDtMUPE8ZpB/xq7FUYRqT3CI= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= @@ -318,12 +387,15 @@ github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mozillazg/go-pinyin v0.19.0 h1:p+J8/kjJ558KPvVGYLvqBhxf8jbZA2exSLCs2uUVN8c= github.com/mozillazg/go-pinyin v0.19.0/go.mod h1:iR4EnMMRXkfpFVV5FMi4FNB6wGq9NV6uDWbUuPhP4Yc= github.com/muka/go-bluetooth v0.0.0-20220819140550-1d8857e3b268 h1:kOnq7TfaAO2Vc/MHxPqFIXe00y1qBxJAvhctXdko6vo= github.com/muka/go-bluetooth v0.0.0-20220819140550-1d8857e3b268/go.mod h1:dMCjicU6vRBk34dqOmIZm0aod6gUwZXOXzBROqGous0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= github.com/neelance/sourcemap v0.0.0-20200213170602-2833bce08e4c/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= @@ -335,8 +407,9 @@ github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FI github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/paypal/gatt v0.0.0-20151011220935-4ae819d591cf/go.mod h1:+AwQL2mK3Pd3S+TUwg0tYQjid0q1txyNUJuuSmz8Kdk= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= -github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -345,18 +418,37 @@ github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/remyoudompheng/bigfft v0.0.0-20220927061507-ef77025ab5aa h1:tEkEyxYeZ43TR55QU/hsIt9aRGBxbgGuz9CGykjvogY= +github.com/remyoudompheng/bigfft v0.0.0-20220927061507-ef77025ab5aa/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= +github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.26.1 h1:/ihwxqH+4z8UxyI70wM1z9yCvkWcfz/a3mj48k/Zngc= +github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.26.1/go.mod h1:/wSSJWX7lVrsOwlbyTRSOJvqRlc+WjWlfes+CiJ+tmc= +github.com/rs/zerolog v1.28.0 h1:MirSo27VyNi7RJYP3078AA1+Cyzd2GB66qy3aUHvsWY= +github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -368,9 +460,12 @@ github.com/shurcooL/go v0.0.0-20200502201357-93f07166e636/go.mod h1:TDJrrUr11Vxr github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= @@ -383,13 +478,17 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/srwiley/oksvg v0.0.0-20200311192757-870daf9aa564/go.mod h1:afMbS0qvv1m5tfENCwnOdZGOF8RGR/FsZ7bvBxQGZG4= -github.com/srwiley/oksvg v0.0.0-20220128195007-1f435e4c2b44 h1:XPYXKIuH/n5zpUoEWk2jWV/SjEMNYmqDYmTgbjmhtaI= -github.com/srwiley/oksvg v0.0.0-20220128195007-1f435e4c2b44/go.mod h1:cNQ3dwVJtS5Hmnjxy6AgTPd0Inb3pW05ftPSX7NZO7Q= +github.com/srwiley/oksvg v0.0.0-20220731023508-a61f04f16b76/go.mod h1:cNQ3dwVJtS5Hmnjxy6AgTPd0Inb3pW05ftPSX7NZO7Q= +github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c h1:km8GpoQut05eY3GiYWEedbTT0qnSxrCjsVbb7yKY1KE= +github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c/go.mod h1:cNQ3dwVJtS5Hmnjxy6AgTPd0Inb3pW05ftPSX7NZO7Q= github.com/srwiley/rasterx v0.0.0-20200120212402-85cb7272f5e9/go.mod h1:mvWM0+15UqyrFKqdRjY6LuAVJR0HOVhJlEgZ5JWtSWU= github.com/srwiley/rasterx v0.0.0-20210519020934-456a8d69b780/go.mod h1:mvWM0+15UqyrFKqdRjY6LuAVJR0HOVhJlEgZ5JWtSWU= -github.com/srwiley/rasterx v0.0.0-20220128185129-2efea2b9ea41 h1:YR16ysw3I1bqwtEcYV9dpvhHEe7j55hIClkLoAqY31I= -github.com/srwiley/rasterx v0.0.0-20220128185129-2efea2b9ea41/go.mod h1:nXTWP6+gD5+LUJ8krVhhoeHjvHTutPxMYl5SvkcnJNE= +github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef h1:Ch6Q+AZUxDBCVqdkI8FSpFyZDtCVBc2VmejdNrm5rRQ= +github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef/go.mod h1:nXTWP6+gD5+LUJ8krVhhoeHjvHTutPxMYl5SvkcnJNE= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -397,22 +496,22 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/suapapa/go_eddystone v1.3.1/go.mod h1:bXC11TfJOS+3g3q/Uzd7FKd5g62STQEfeEIhcKe4Qy8= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tevino/abool v1.2.0 h1:heAkClL8H6w+mK5md9dzsuohKeXHUpY7Vw0ZCKW+huA= github.com/tevino/abool v1.2.0/go.mod h1:qc66Pna1RiIsPa7O4Egxxs9OqkuxDX55zznh9K07Tzg= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -github.com/urfave/cli/v2 v2.4.0 h1:m2pxjjDFgDxSPtO8WSdbndj17Wu2y8vOT86wE/tjr+I= github.com/urfave/cli/v2 v2.4.0/go.mod h1:NX9W0zmTvedE5oDoOMs2RTC8RvdK98NTYZE5LbaEYPg= -github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU= -github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= -github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= -github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/urfave/cli/v2 v2.23.7 h1:YHDQ46s3VghFHFf1DdF+Sh7H4RqhcM+t0TmZRJx4oJY= +github.com/urfave/cli/v2 v2.23.7/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/wagslane/go-password-validator v0.3.0/go.mod h1:TI1XJ6T5fRdRnHqHt14pvy1tNVnrwe7m3/f1f2fDphQ= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -420,15 +519,20 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.3.8/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.10 h1:+WgKGo8CQrlMTRJpGCFCyNddOhW801TKC2QijVV9QVg= -github.com/yuin/goldmark v1.4.10/go.mod h1:rmuwmfZ0+bvzB24eSC//bk1R1Zp3hM0OXYv/G2LIilg= -go.arsenm.dev/infinitime v0.0.0-20221119224612-0c369dc5df94 h1:b3kEsAfUyJN5781f0+K72v30MDrwusyPDh/1kPFCDNQ= -go.arsenm.dev/infinitime v0.0.0-20221119224612-0c369dc5df94/go.mod h1:K3NJ6fyPv5qqHUedB3MccKOE0whJMJZ80l/yTzzTrgc= -go.arsenm.dev/lrpc v0.0.0-20220513001344-3bcc01fdb6a0 h1:1K96g1eww+77GeGchwMhd0NTrs7Mk/Hc3M3ItW5NbG4= -go.arsenm.dev/lrpc v0.0.0-20220513001344-3bcc01fdb6a0/go.mod h1:goK9z735lfXmqlDxu9qN7FS8t0HJHN3PjyDtCToUY4w= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yuin/goldmark v1.5.3 h1:3HUJmBFbQW9fhQOzMgseU134xfi6hU+mjWywx5Ty+/M= +github.com/yuin/goldmark v1.5.3/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/errs v1.3.0 h1:hmiaKqgYZzcVgRL1Vkc1Mn2914BbzB0IBxs+ebeutGs= +github.com/zeebo/errs v1.3.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= +go.arsenm.dev/infinitime v0.0.0-20221122225335-2da80044b34a h1:4XmKIO0udIwVS9wqoi4hq76y3+X0MeV/GRMo2/01xSU= +go.arsenm.dev/infinitime v0.0.0-20221122225335-2da80044b34a/go.mod h1:K3NJ6fyPv5qqHUedB3MccKOE0whJMJZ80l/yTzzTrgc= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -439,14 +543,17 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -462,9 +569,12 @@ golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMk golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210504121937-7319ad40d33e/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20220601225756-64ec528b34cd h1:9NbNcTg//wfC5JskFW4Z3sqwVnjmJKHxLAol1bW2qgw= golang.org/x/image v0.0.0-20220601225756-64ec528b34cd/go.mod h1:doUCurBvlfPMKfmIpRIywoHmhN3VyhnoFDbvIEWF4hY= +golang.org/x/image v0.2.0 h1:/DcQ0w3VHKCC5p0/P2B0JpAZ9Z++V2KOo2fyU89CXBQ= +golang.org/x/image v0.2.0/go.mod h1:la7oBXb9w3YFjBqaAwtynVioc1ZvOnNteUNrifGNmAI= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -479,8 +589,9 @@ golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPI golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mobile v0.0.0-20211207041440-4e6c2922fdee h1:/tShaw8UTf0XzI8DOZwQHzC7d6Vi3EtrBnftiZ4vAvU= golang.org/x/mobile v0.0.0-20211207041440-4e6c2922fdee/go.mod h1:pe2sM7Uk+2Su1y7u/6Z8KJ24D7lepUjFZbhFOrmDfuQ= +golang.org/x/mobile v0.0.0-20221110043201-43a038452099 h1:aIu0lKmfdgtn2uTj7JI2oN4TUrQvgB+wzTPO23bCKt8= +golang.org/x/mobile v0.0.0-20221110043201-43a038452099/go.mod h1:aAjjkJNdrh3PMckS4B10TGS2nag27cbKR1y2BpUxsiY= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= @@ -489,11 +600,14 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -502,9 +616,11 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -528,10 +644,13 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= +golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211118161319-6a13c67c3ce4/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4 h1:HVyaeDAYux4pnY+D/SiwmLOR36ewZ4iGQIIrtnuCjFA= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU= +golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -555,11 +674,16 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -570,14 +694,19 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -588,6 +717,8 @@ golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -596,7 +727,9 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -604,14 +737,21 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -623,8 +763,9 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -642,6 +783,7 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -674,7 +816,6 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20200925191224-5d1fdd8fa346/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -683,12 +824,13 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= -golang.org/x/tools v0.1.8-0.20211022200916-316ba0b74098 h1:YuekqPskqwCCPM79F1X5Dhv4ezTCj+Ki1oNwiafxkA0= golang.org/x/tools v0.1.8-0.20211022200916-316ba0b74098/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4= +golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -795,25 +937,33 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2 h1:oomkgU6VaQDsV6qZby2uz1Lap0eXmku8+2em3A/l700= honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2/go.mod h1:sUMDUKNB2ZcVjt92UnLy3cdGs+wDAcrPdV3JP6sVgA4= +honnef.co/go/js/dom v0.0.0-20221001195520-26252dedbe70 h1:2ZZFiPwRLxiNX2E/YO6Jgw1pCjDRDgmx20PGyw/cw+M= +honnef.co/go/js/dom v0.0.0-20221001195520-26252dedbe70/go.mod h1:sUMDUKNB2ZcVjt92UnLy3cdGs+wDAcrPdV3JP6sVgA4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -821,41 +971,33 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -lukechampine.com/uint128 v1.1.1 h1:pnxCASz787iMf+02ssImqk6OLt+Z5QHMoZyUXR4z6JU= -lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= -modernc.org/cc/v3 v3.36.0 h1:0kmRkTmqNidmu3c7BNDSdVHCxXCkWLmWmCIVX4LUboo= -modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= -modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= -modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= -modernc.org/ccgo/v3 v3.16.6 h1:3l18poV+iUemQ98O3X5OMr97LOqlzis+ytivU4NqGhA= -modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI= +lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw= +modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0= +modernc.org/ccgo/v3 v3.16.13 h1:Mkgdzl46i5F/CNR/Kj80Ri59hC8TKAhZrYSaqvkwzUw= +modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY= modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk= -modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM= -modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= -modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= -modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= -modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= -modernc.org/libc v1.16.7 h1:qzQtHhsZNpVPpeCu+aMIQldXeV1P0vRhSqCL0nOIJOA= -modernc.org/libc v1.16.7/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= -modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/mathutil v1.4.1 h1:ij3fYGe8zBF4Vu+g0oT7mB06r8sqGWKuJu1yXeR4by8= -modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/memory v1.1.1 h1:bDOL0DIDLQv7bWhP3gMvIrnoFw+Eo6F7a2QK9HPDiFU= -modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= -modernc.org/opt v0.1.1 h1:/0RX92k9vwVeDXj+Xn23DKp2VJubL7k8qNffND6qn3A= -modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sqlite v1.17.2 h1:TjmF36Wi5QcPYqRoAacV1cAyJ7xB/CD0ExpVUEMebnw= -modernc.org/sqlite v1.17.2/go.mod h1:GOQmuiXd6pTTes1Fi2s9apiCcD/wbKQtBZ0Nw6/etjM= -modernc.org/strutil v1.1.1 h1:xv+J1BXY3Opl2ALrBwyfEikFAj8pmqcpnfmuwUwcozs= -modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= -modernc.org/tcl v1.13.1 h1:npxzTwFTZYM8ghWicVIX1cRWzj7Nd8i6AqqX2p+IYao= -modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= -modernc.org/token v1.0.0 h1:a0jaWiNMDhDUtqOj09wvjWWAqd3q7WpBulmL9H2egsk= -modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -modernc.org/z v1.5.1 h1:RTNHdsrOpeoSeOF4FbzTo8gBYByaJ5xT7NgZ9ZqRiJM= -modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= +modernc.org/libc v1.22.2 h1:4U7v51GyhlWqQmwCHj28Rdq2Yzwk55ovjFrdPjs8Hb0= +modernc.org/libc v1.22.2/go.mod h1:uvQavJ1pZ0hIoC/jfqNoMLURIMhKzINIWypNM17puug= +modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds= +modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.20.1 h1:z6qRLw72B0VfRrJjs3l6hWkzYDx1bo0WGVrBGP4ohhM= +modernc.org/sqlite v1.20.1/go.mod h1:fODt+bFmc/j8LcoCbMSkAuKuGmhxjG45KGc25N2705M= +modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY= +modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= +modernc.org/tcl v1.15.0 h1:oY+JeD11qVVSgVvodMJsu7Edf8tr5E/7tuhF5cNYz34= +modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= +modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/z v1.7.0 h1:xkDw/KepgEjeizO2sNco+hqYkU12taxQFqPEmgm1GWE= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +storj.io/drpc v0.0.32 h1:5p5ZwsK/VOgapaCu+oxaPVwO6UwIs+iwdMiD50+R4PI= +storj.io/drpc v0.0.32/go.mod h1:6rcOyR/QQkSTX/9L5ZGtlZaE2PtXTTZl8d+ulSeeYEg= diff --git a/internal/rpc/gen.go b/internal/rpc/gen.go new file mode 100644 index 0000000..c13c0ab --- /dev/null +++ b/internal/rpc/gen.go @@ -0,0 +1,3 @@ +package rpc + +//go:generate protoc --go_out=. --go_opt=paths=source_relative --go-drpc_out=. --go-drpc_opt=paths=source_relative itd.proto diff --git a/internal/rpc/itd.pb.go b/internal/rpc/itd.pb.go new file mode 100644 index 0000000..9f62a7a --- /dev/null +++ b/internal/rpc/itd.pb.go @@ -0,0 +1,1424 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.12 +// source: itd.proto + +package rpc + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type FirmwareUpgradeRequest_Type int32 + +const ( + FirmwareUpgradeRequest_Archive FirmwareUpgradeRequest_Type = 0 + FirmwareUpgradeRequest_Files FirmwareUpgradeRequest_Type = 1 +) + +// Enum value maps for FirmwareUpgradeRequest_Type. +var ( + FirmwareUpgradeRequest_Type_name = map[int32]string{ + 0: "Archive", + 1: "Files", + } + FirmwareUpgradeRequest_Type_value = map[string]int32{ + "Archive": 0, + "Files": 1, + } +) + +func (x FirmwareUpgradeRequest_Type) Enum() *FirmwareUpgradeRequest_Type { + p := new(FirmwareUpgradeRequest_Type) + *p = x + return p +} + +func (x FirmwareUpgradeRequest_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FirmwareUpgradeRequest_Type) Descriptor() protoreflect.EnumDescriptor { + return file_itd_proto_enumTypes[0].Descriptor() +} + +func (FirmwareUpgradeRequest_Type) Type() protoreflect.EnumType { + return &file_itd_proto_enumTypes[0] +} + +func (x FirmwareUpgradeRequest_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FirmwareUpgradeRequest_Type.Descriptor instead. +func (FirmwareUpgradeRequest_Type) EnumDescriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{6, 0} +} + +type ResourceLoadProgress_Operation int32 + +const ( + ResourceLoadProgress_Upload ResourceLoadProgress_Operation = 0 + ResourceLoadProgress_RemoveObsolete ResourceLoadProgress_Operation = 1 +) + +// Enum value maps for ResourceLoadProgress_Operation. +var ( + ResourceLoadProgress_Operation_name = map[int32]string{ + 0: "Upload", + 1: "RemoveObsolete", + } + ResourceLoadProgress_Operation_value = map[string]int32{ + "Upload": 0, + "RemoveObsolete": 1, + } +) + +func (x ResourceLoadProgress_Operation) Enum() *ResourceLoadProgress_Operation { + p := new(ResourceLoadProgress_Operation) + *p = x + return p +} + +func (x ResourceLoadProgress_Operation) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ResourceLoadProgress_Operation) Descriptor() protoreflect.EnumDescriptor { + return file_itd_proto_enumTypes[1].Descriptor() +} + +func (ResourceLoadProgress_Operation) Type() protoreflect.EnumType { + return &file_itd_proto_enumTypes[1] +} + +func (x ResourceLoadProgress_Operation) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ResourceLoadProgress_Operation.Descriptor instead. +func (ResourceLoadProgress_Operation) EnumDescriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{15, 0} +} + +type Empty struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Empty) Reset() { + *x = Empty{} + if protoimpl.UnsafeEnabled { + mi := &file_itd_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Empty) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Empty) ProtoMessage() {} + +func (x *Empty) ProtoReflect() protoreflect.Message { + mi := &file_itd_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Empty.ProtoReflect.Descriptor instead. +func (*Empty) Descriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{0} +} + +type IntResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *IntResponse) Reset() { + *x = IntResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_itd_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IntResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IntResponse) ProtoMessage() {} + +func (x *IntResponse) ProtoReflect() protoreflect.Message { + mi := &file_itd_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IntResponse.ProtoReflect.Descriptor instead. +func (*IntResponse) Descriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{1} +} + +func (x *IntResponse) GetValue() uint32 { + if x != nil { + return x.Value + } + return 0 +} + +type StringResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *StringResponse) Reset() { + *x = StringResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_itd_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StringResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StringResponse) ProtoMessage() {} + +func (x *StringResponse) ProtoReflect() protoreflect.Message { + mi := &file_itd_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StringResponse.ProtoReflect.Descriptor instead. +func (*StringResponse) Descriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{2} +} + +func (x *StringResponse) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +type MotionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + X int32 `protobuf:"varint,1,opt,name=x,proto3" json:"x,omitempty"` + Y int32 `protobuf:"varint,2,opt,name=y,proto3" json:"y,omitempty"` + Z int32 `protobuf:"varint,3,opt,name=z,proto3" json:"z,omitempty"` +} + +func (x *MotionResponse) Reset() { + *x = MotionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_itd_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MotionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MotionResponse) ProtoMessage() {} + +func (x *MotionResponse) ProtoReflect() protoreflect.Message { + mi := &file_itd_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MotionResponse.ProtoReflect.Descriptor instead. +func (*MotionResponse) Descriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{3} +} + +func (x *MotionResponse) GetX() int32 { + if x != nil { + return x.X + } + return 0 +} + +func (x *MotionResponse) GetY() int32 { + if x != nil { + return x.Y + } + return 0 +} + +func (x *MotionResponse) GetZ() int32 { + if x != nil { + return x.Z + } + return 0 +} + +type NotifyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` +} + +func (x *NotifyRequest) Reset() { + *x = NotifyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_itd_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NotifyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotifyRequest) ProtoMessage() {} + +func (x *NotifyRequest) ProtoReflect() protoreflect.Message { + mi := &file_itd_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotifyRequest.ProtoReflect.Descriptor instead. +func (*NotifyRequest) Descriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{4} +} + +func (x *NotifyRequest) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *NotifyRequest) GetBody() string { + if x != nil { + return x.Body + } + return "" +} + +type SetTimeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UnixNano int64 `protobuf:"varint,1,opt,name=unix_nano,json=unixNano,proto3" json:"unix_nano,omitempty"` +} + +func (x *SetTimeRequest) Reset() { + *x = SetTimeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_itd_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SetTimeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetTimeRequest) ProtoMessage() {} + +func (x *SetTimeRequest) ProtoReflect() protoreflect.Message { + mi := &file_itd_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetTimeRequest.ProtoReflect.Descriptor instead. +func (*SetTimeRequest) Descriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{5} +} + +func (x *SetTimeRequest) GetUnixNano() int64 { + if x != nil { + return x.UnixNano + } + return 0 +} + +type FirmwareUpgradeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type FirmwareUpgradeRequest_Type `protobuf:"varint,1,opt,name=type,proto3,enum=rpc.FirmwareUpgradeRequest_Type" json:"type,omitempty"` + Files []string `protobuf:"bytes,2,rep,name=files,proto3" json:"files,omitempty"` +} + +func (x *FirmwareUpgradeRequest) Reset() { + *x = FirmwareUpgradeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_itd_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FirmwareUpgradeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FirmwareUpgradeRequest) ProtoMessage() {} + +func (x *FirmwareUpgradeRequest) ProtoReflect() protoreflect.Message { + mi := &file_itd_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FirmwareUpgradeRequest.ProtoReflect.Descriptor instead. +func (*FirmwareUpgradeRequest) Descriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{6} +} + +func (x *FirmwareUpgradeRequest) GetType() FirmwareUpgradeRequest_Type { + if x != nil { + return x.Type + } + return FirmwareUpgradeRequest_Archive +} + +func (x *FirmwareUpgradeRequest) GetFiles() []string { + if x != nil { + return x.Files + } + return nil +} + +type DFUProgress struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sent int64 `protobuf:"varint,1,opt,name=sent,proto3" json:"sent,omitempty"` + Recieved int64 `protobuf:"varint,2,opt,name=recieved,proto3" json:"recieved,omitempty"` + Total int64 `protobuf:"varint,3,opt,name=total,proto3" json:"total,omitempty"` +} + +func (x *DFUProgress) Reset() { + *x = DFUProgress{} + if protoimpl.UnsafeEnabled { + mi := &file_itd_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DFUProgress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DFUProgress) ProtoMessage() {} + +func (x *DFUProgress) ProtoReflect() protoreflect.Message { + mi := &file_itd_proto_msgTypes[7] + 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 DFUProgress.ProtoReflect.Descriptor instead. +func (*DFUProgress) Descriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{7} +} + +func (x *DFUProgress) GetSent() int64 { + if x != nil { + return x.Sent + } + return 0 +} + +func (x *DFUProgress) GetRecieved() int64 { + if x != nil { + return x.Recieved + } + return 0 +} + +func (x *DFUProgress) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +type PathRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` +} + +func (x *PathRequest) Reset() { + *x = PathRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_itd_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PathRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PathRequest) ProtoMessage() {} + +func (x *PathRequest) ProtoReflect() protoreflect.Message { + mi := &file_itd_proto_msgTypes[8] + 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 PathRequest.ProtoReflect.Descriptor instead. +func (*PathRequest) Descriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{8} +} + +func (x *PathRequest) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +type PathsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Paths []string `protobuf:"bytes,1,rep,name=paths,proto3" json:"paths,omitempty"` +} + +func (x *PathsRequest) Reset() { + *x = PathsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_itd_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PathsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PathsRequest) ProtoMessage() {} + +func (x *PathsRequest) ProtoReflect() protoreflect.Message { + mi := &file_itd_proto_msgTypes[9] + 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 PathsRequest.ProtoReflect.Descriptor instead. +func (*PathsRequest) Descriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{9} +} + +func (x *PathsRequest) GetPaths() []string { + if x != nil { + return x.Paths + } + return nil +} + +type RenameRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` + To string `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"` +} + +func (x *RenameRequest) Reset() { + *x = RenameRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_itd_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RenameRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RenameRequest) ProtoMessage() {} + +func (x *RenameRequest) ProtoReflect() protoreflect.Message { + mi := &file_itd_proto_msgTypes[10] + 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 RenameRequest.ProtoReflect.Descriptor instead. +func (*RenameRequest) Descriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{10} +} + +func (x *RenameRequest) GetFrom() string { + if x != nil { + return x.From + } + return "" +} + +func (x *RenameRequest) GetTo() string { + if x != nil { + return x.To + } + return "" +} + +type TransferRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + Destination string `protobuf:"bytes,2,opt,name=destination,proto3" json:"destination,omitempty"` +} + +func (x *TransferRequest) Reset() { + *x = TransferRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_itd_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransferRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransferRequest) ProtoMessage() {} + +func (x *TransferRequest) ProtoReflect() protoreflect.Message { + mi := &file_itd_proto_msgTypes[11] + 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 TransferRequest.ProtoReflect.Descriptor instead. +func (*TransferRequest) Descriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{11} +} + +func (x *TransferRequest) GetSource() string { + if x != nil { + return x.Source + } + return "" +} + +func (x *TransferRequest) GetDestination() string { + if x != nil { + return x.Destination + } + return "" +} + +type FileInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Size int64 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` + IsDir bool `protobuf:"varint,3,opt,name=is_dir,json=isDir,proto3" json:"is_dir,omitempty"` +} + +func (x *FileInfo) Reset() { + *x = FileInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_itd_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FileInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileInfo) ProtoMessage() {} + +func (x *FileInfo) ProtoReflect() protoreflect.Message { + mi := &file_itd_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FileInfo.ProtoReflect.Descriptor instead. +func (*FileInfo) Descriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{12} +} + +func (x *FileInfo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FileInfo) GetSize() int64 { + if x != nil { + return x.Size + } + return 0 +} + +func (x *FileInfo) GetIsDir() bool { + if x != nil { + return x.IsDir + } + return false +} + +type DirResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Entries []*FileInfo `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` +} + +func (x *DirResponse) Reset() { + *x = DirResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_itd_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DirResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DirResponse) ProtoMessage() {} + +func (x *DirResponse) ProtoReflect() protoreflect.Message { + mi := &file_itd_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DirResponse.ProtoReflect.Descriptor instead. +func (*DirResponse) Descriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{13} +} + +func (x *DirResponse) GetEntries() []*FileInfo { + if x != nil { + return x.Entries + } + return nil +} + +type TransferProgress struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sent uint32 `protobuf:"varint,1,opt,name=sent,proto3" json:"sent,omitempty"` + Total uint32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` +} + +func (x *TransferProgress) Reset() { + *x = TransferProgress{} + if protoimpl.UnsafeEnabled { + mi := &file_itd_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransferProgress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransferProgress) ProtoMessage() {} + +func (x *TransferProgress) ProtoReflect() protoreflect.Message { + mi := &file_itd_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransferProgress.ProtoReflect.Descriptor instead. +func (*TransferProgress) Descriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{14} +} + +func (x *TransferProgress) GetSent() uint32 { + if x != nil { + return x.Sent + } + return 0 +} + +func (x *TransferProgress) GetTotal() uint32 { + if x != nil { + return x.Total + } + return 0 +} + +type ResourceLoadProgress struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + Sent int64 `protobuf:"varint,3,opt,name=sent,proto3" json:"sent,omitempty"` + Operation ResourceLoadProgress_Operation `protobuf:"varint,4,opt,name=operation,proto3,enum=rpc.ResourceLoadProgress_Operation" json:"operation,omitempty"` +} + +func (x *ResourceLoadProgress) Reset() { + *x = ResourceLoadProgress{} + if protoimpl.UnsafeEnabled { + mi := &file_itd_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResourceLoadProgress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResourceLoadProgress) ProtoMessage() {} + +func (x *ResourceLoadProgress) ProtoReflect() protoreflect.Message { + mi := &file_itd_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResourceLoadProgress.ProtoReflect.Descriptor instead. +func (*ResourceLoadProgress) Descriptor() ([]byte, []int) { + return file_itd_proto_rawDescGZIP(), []int{15} +} + +func (x *ResourceLoadProgress) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ResourceLoadProgress) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *ResourceLoadProgress) GetSent() int64 { + if x != nil { + return x.Sent + } + return 0 +} + +func (x *ResourceLoadProgress) GetOperation() ResourceLoadProgress_Operation { + if x != nil { + return x.Operation + } + return ResourceLoadProgress_Upload +} + +var File_itd_proto protoreflect.FileDescriptor + +var file_itd_proto_rawDesc = []byte{ + 0x0a, 0x09, 0x69, 0x74, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x72, 0x70, 0x63, + 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x23, 0x0a, 0x0b, 0x49, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x26, + 0x0a, 0x0e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x0a, 0x0e, 0x4d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x01, 0x79, 0x12, 0x0c, 0x0a, 0x01, 0x7a, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x01, 0x7a, 0x22, 0x39, 0x0a, 0x0d, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x2d, 0x0a, + 0x0e, 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1b, 0x0a, 0x09, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x08, 0x75, 0x6e, 0x69, 0x78, 0x4e, 0x61, 0x6e, 0x6f, 0x22, 0x84, 0x01, 0x0a, + 0x16, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x69, 0x72, 0x6d, + 0x77, 0x61, 0x72, 0x65, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, + 0x6c, 0x65, 0x73, 0x22, 0x1e, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x41, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x69, 0x6c, 0x65, + 0x73, 0x10, 0x01, 0x22, 0x53, 0x0a, 0x0b, 0x44, 0x46, 0x55, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x04, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x69, 0x65, 0x76, + 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x63, 0x69, 0x65, 0x76, + 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x21, 0x0a, 0x0b, 0x50, 0x61, 0x74, 0x68, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x24, 0x0a, 0x0c, 0x50, + 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, + 0x61, 0x74, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, + 0x73, 0x22, 0x33, 0x0a, 0x0d, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x22, 0x4b, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x49, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x69, 0x73, 0x5f, 0x64, 0x69, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x44, 0x69, 0x72, 0x22, 0x36, + 0x0a, 0x0b, 0x44, 0x69, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, + 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x65, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xc4, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, + 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x61, + 0x64, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2b, + 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0a, 0x0a, 0x06, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4f, 0x62, 0x73, 0x6f, 0x6c, 0x65, 0x74, 0x65, 0x10, 0x01, 0x32, 0x9a, 0x05, 0x0a, 0x03, + 0x49, 0x54, 0x44, 0x12, 0x29, 0x0a, 0x09, 0x48, 0x65, 0x61, 0x72, 0x74, 0x52, 0x61, 0x74, 0x65, + 0x12, 0x0a, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x10, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, + 0x0a, 0x0e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x72, 0x74, 0x52, 0x61, 0x74, 0x65, + 0x12, 0x0a, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x10, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, + 0x12, 0x2c, 0x0a, 0x0c, 0x42, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x0a, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x10, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, + 0x0a, 0x11, 0x57, 0x61, 0x74, 0x63, 0x68, 0x42, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x0a, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, + 0x10, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x30, 0x01, 0x12, 0x29, 0x0a, 0x06, 0x4d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0a, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, 0x72, 0x70, 0x63, 0x2e, + 0x4d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, + 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0a, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, 0x72, 0x70, 0x63, 0x2e, + 0x4d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, + 0x12, 0x29, 0x0a, 0x09, 0x53, 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0a, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x10, 0x2e, 0x72, 0x70, 0x63, 0x2e, + 0x49, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x0e, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0a, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x10, 0x2e, 0x72, 0x70, 0x63, 0x2e, + 0x49, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x2a, 0x0a, + 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0a, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x07, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x12, 0x0a, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x13, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, + 0x12, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, + 0x2a, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x13, 0x2e, 0x72, 0x70, 0x63, + 0x2e, 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x0a, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0d, 0x57, + 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x0a, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0a, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0f, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, + 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x46, 0x55, 0x50, 0x72, + 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x30, 0x01, 0x32, 0xb9, 0x03, 0x0a, 0x02, 0x46, 0x53, 0x12, + 0x2a, 0x0a, 0x09, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x12, 0x11, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x0a, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x06, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x11, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x74, 0x68, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x12, 0x28, 0x0a, 0x06, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, + 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x29, + 0x0a, 0x08, 0x4d, 0x6b, 0x64, 0x69, 0x72, 0x41, 0x6c, 0x6c, 0x12, 0x11, 0x2e, 0x72, 0x70, 0x63, + 0x2e, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x26, 0x0a, 0x05, 0x4d, 0x6b, 0x64, + 0x69, 0x72, 0x12, 0x11, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x12, 0x2d, 0x0a, 0x07, 0x52, 0x65, 0x61, 0x64, 0x44, 0x69, 0x72, 0x12, 0x10, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, + 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x69, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x37, 0x0a, 0x06, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x14, 0x2e, 0x72, 0x70, 0x63, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x15, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x30, 0x01, 0x12, 0x39, 0x0a, 0x08, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x72, 0x70, + 0x63, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x30, 0x01, 0x12, 0x3e, 0x0a, 0x0d, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x10, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x74, 0x68, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x30, 0x01, 0x42, 0x20, 0x5a, 0x1e, 0x67, 0x6f, 0x2e, 0x61, 0x72, 0x73, 0x65, 0x6e, + 0x6d, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x69, 0x74, 0x64, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_itd_proto_rawDescOnce sync.Once + file_itd_proto_rawDescData = file_itd_proto_rawDesc +) + +func file_itd_proto_rawDescGZIP() []byte { + file_itd_proto_rawDescOnce.Do(func() { + file_itd_proto_rawDescData = protoimpl.X.CompressGZIP(file_itd_proto_rawDescData) + }) + return file_itd_proto_rawDescData +} + +var file_itd_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_itd_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_itd_proto_goTypes = []interface{}{ + (FirmwareUpgradeRequest_Type)(0), // 0: rpc.FirmwareUpgradeRequest.Type + (ResourceLoadProgress_Operation)(0), // 1: rpc.ResourceLoadProgress.Operation + (*Empty)(nil), // 2: rpc.Empty + (*IntResponse)(nil), // 3: rpc.IntResponse + (*StringResponse)(nil), // 4: rpc.StringResponse + (*MotionResponse)(nil), // 5: rpc.MotionResponse + (*NotifyRequest)(nil), // 6: rpc.NotifyRequest + (*SetTimeRequest)(nil), // 7: rpc.SetTimeRequest + (*FirmwareUpgradeRequest)(nil), // 8: rpc.FirmwareUpgradeRequest + (*DFUProgress)(nil), // 9: rpc.DFUProgress + (*PathRequest)(nil), // 10: rpc.PathRequest + (*PathsRequest)(nil), // 11: rpc.PathsRequest + (*RenameRequest)(nil), // 12: rpc.RenameRequest + (*TransferRequest)(nil), // 13: rpc.TransferRequest + (*FileInfo)(nil), // 14: rpc.FileInfo + (*DirResponse)(nil), // 15: rpc.DirResponse + (*TransferProgress)(nil), // 16: rpc.TransferProgress + (*ResourceLoadProgress)(nil), // 17: rpc.ResourceLoadProgress +} +var file_itd_proto_depIdxs = []int32{ + 0, // 0: rpc.FirmwareUpgradeRequest.type:type_name -> rpc.FirmwareUpgradeRequest.Type + 14, // 1: rpc.DirResponse.entries:type_name -> rpc.FileInfo + 1, // 2: rpc.ResourceLoadProgress.operation:type_name -> rpc.ResourceLoadProgress.Operation + 2, // 3: rpc.ITD.HeartRate:input_type -> rpc.Empty + 2, // 4: rpc.ITD.WatchHeartRate:input_type -> rpc.Empty + 2, // 5: rpc.ITD.BatteryLevel:input_type -> rpc.Empty + 2, // 6: rpc.ITD.WatchBatteryLevel:input_type -> rpc.Empty + 2, // 7: rpc.ITD.Motion:input_type -> rpc.Empty + 2, // 8: rpc.ITD.WatchMotion:input_type -> rpc.Empty + 2, // 9: rpc.ITD.StepCount:input_type -> rpc.Empty + 2, // 10: rpc.ITD.WatchStepCount:input_type -> rpc.Empty + 2, // 11: rpc.ITD.Version:input_type -> rpc.Empty + 2, // 12: rpc.ITD.Address:input_type -> rpc.Empty + 6, // 13: rpc.ITD.Notify:input_type -> rpc.NotifyRequest + 7, // 14: rpc.ITD.SetTime:input_type -> rpc.SetTimeRequest + 2, // 15: rpc.ITD.WeatherUpdate:input_type -> rpc.Empty + 8, // 16: rpc.ITD.FirmwareUpgrade:input_type -> rpc.FirmwareUpgradeRequest + 11, // 17: rpc.FS.RemoveAll:input_type -> rpc.PathsRequest + 11, // 18: rpc.FS.Remove:input_type -> rpc.PathsRequest + 12, // 19: rpc.FS.Rename:input_type -> rpc.RenameRequest + 11, // 20: rpc.FS.MkdirAll:input_type -> rpc.PathsRequest + 11, // 21: rpc.FS.Mkdir:input_type -> rpc.PathsRequest + 10, // 22: rpc.FS.ReadDir:input_type -> rpc.PathRequest + 13, // 23: rpc.FS.Upload:input_type -> rpc.TransferRequest + 13, // 24: rpc.FS.Download:input_type -> rpc.TransferRequest + 10, // 25: rpc.FS.LoadResources:input_type -> rpc.PathRequest + 3, // 26: rpc.ITD.HeartRate:output_type -> rpc.IntResponse + 3, // 27: rpc.ITD.WatchHeartRate:output_type -> rpc.IntResponse + 3, // 28: rpc.ITD.BatteryLevel:output_type -> rpc.IntResponse + 3, // 29: rpc.ITD.WatchBatteryLevel:output_type -> rpc.IntResponse + 5, // 30: rpc.ITD.Motion:output_type -> rpc.MotionResponse + 5, // 31: rpc.ITD.WatchMotion:output_type -> rpc.MotionResponse + 3, // 32: rpc.ITD.StepCount:output_type -> rpc.IntResponse + 3, // 33: rpc.ITD.WatchStepCount:output_type -> rpc.IntResponse + 4, // 34: rpc.ITD.Version:output_type -> rpc.StringResponse + 4, // 35: rpc.ITD.Address:output_type -> rpc.StringResponse + 2, // 36: rpc.ITD.Notify:output_type -> rpc.Empty + 2, // 37: rpc.ITD.SetTime:output_type -> rpc.Empty + 2, // 38: rpc.ITD.WeatherUpdate:output_type -> rpc.Empty + 9, // 39: rpc.ITD.FirmwareUpgrade:output_type -> rpc.DFUProgress + 2, // 40: rpc.FS.RemoveAll:output_type -> rpc.Empty + 2, // 41: rpc.FS.Remove:output_type -> rpc.Empty + 2, // 42: rpc.FS.Rename:output_type -> rpc.Empty + 2, // 43: rpc.FS.MkdirAll:output_type -> rpc.Empty + 2, // 44: rpc.FS.Mkdir:output_type -> rpc.Empty + 15, // 45: rpc.FS.ReadDir:output_type -> rpc.DirResponse + 16, // 46: rpc.FS.Upload:output_type -> rpc.TransferProgress + 16, // 47: rpc.FS.Download:output_type -> rpc.TransferProgress + 17, // 48: rpc.FS.LoadResources:output_type -> rpc.ResourceLoadProgress + 26, // [26:49] is the sub-list for method output_type + 3, // [3:26] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_itd_proto_init() } +func file_itd_proto_init() { + if File_itd_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_itd_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Empty); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_itd_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IntResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_itd_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StringResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_itd_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MotionResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_itd_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NotifyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_itd_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetTimeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_itd_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FirmwareUpgradeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_itd_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DFUProgress); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_itd_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PathRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_itd_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PathsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_itd_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RenameRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_itd_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TransferRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_itd_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_itd_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DirResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_itd_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TransferProgress); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_itd_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResourceLoadProgress); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_itd_proto_rawDesc, + NumEnums: 2, + NumMessages: 16, + NumExtensions: 0, + NumServices: 2, + }, + GoTypes: file_itd_proto_goTypes, + DependencyIndexes: file_itd_proto_depIdxs, + EnumInfos: file_itd_proto_enumTypes, + MessageInfos: file_itd_proto_msgTypes, + }.Build() + File_itd_proto = out.File + file_itd_proto_rawDesc = nil + file_itd_proto_goTypes = nil + file_itd_proto_depIdxs = nil +} diff --git a/internal/rpc/itd.proto b/internal/rpc/itd.proto new file mode 100644 index 0000000..15fdaaa --- /dev/null +++ b/internal/rpc/itd.proto @@ -0,0 +1,124 @@ +syntax = "proto3"; +package rpc; +option go_package = "go.arsenm.dev/itd/internal/rpc"; + +message Empty {}; + +message IntResponse { + uint32 value = 1; +} + +message StringResponse { + string value = 1; +} + +message MotionResponse { + int32 x = 1; + int32 y = 2; + int32 z = 3; +} + +message NotifyRequest { + string title = 1; + string body = 2; +} + +message SetTimeRequest { + int64 unix_nano = 1; +} + + +message FirmwareUpgradeRequest { + enum Type { + Archive = 0; + Files = 1; + } + + Type type = 1; + repeated string files = 2; +} + +message DFUProgress { + int64 sent = 1; + int64 recieved = 2; + int64 total = 3; +} + +service ITD { + rpc HeartRate(Empty) returns (IntResponse); + rpc WatchHeartRate(Empty) returns (stream IntResponse); + + rpc BatteryLevel(Empty) returns (IntResponse); + rpc WatchBatteryLevel(Empty) returns (stream IntResponse); + + rpc Motion(Empty) returns (MotionResponse); + rpc WatchMotion(Empty) returns (stream MotionResponse); + + rpc StepCount(Empty) returns (IntResponse); + rpc WatchStepCount(Empty) returns (stream IntResponse); + + rpc Version(Empty) returns (StringResponse); + rpc Address(Empty) returns (StringResponse); + + rpc Notify(NotifyRequest) returns (Empty); + rpc SetTime(SetTimeRequest) returns (Empty); + rpc WeatherUpdate(Empty) returns (Empty); + rpc FirmwareUpgrade(FirmwareUpgradeRequest) returns (stream DFUProgress); +} + +message PathRequest { + string path = 1; +} + +message PathsRequest { + repeated string paths = 1; +} + +message RenameRequest { + string from = 1; + string to = 2; +} + +message TransferRequest { + string source = 1; + string destination = 2; +} + +message FileInfo { + string name = 1; + int64 size = 2; + bool is_dir = 3; +} + +message DirResponse { + repeated FileInfo entries = 1; +} + +message TransferProgress { + uint32 sent = 1; + uint32 total = 2; +} + +message ResourceLoadProgress { + enum Operation { + Upload = 0; + RemoveObsolete = 1; + } + + string name = 1; + int64 total = 2; + int64 sent = 3; + Operation operation = 4; +} + +service FS { + rpc RemoveAll(PathsRequest) returns (Empty); + rpc Remove(PathsRequest) returns (Empty); + rpc Rename(RenameRequest) returns (Empty); + rpc MkdirAll(PathsRequest) returns (Empty); + rpc Mkdir(PathsRequest) returns (Empty); + rpc ReadDir(PathRequest) returns (DirResponse); + rpc Upload(TransferRequest) returns (stream TransferProgress); + rpc Download(TransferRequest) returns (stream TransferProgress); + rpc LoadResources(PathRequest) returns (stream ResourceLoadProgress); +} \ No newline at end of file diff --git a/internal/rpc/itd_drpc.pb.go b/internal/rpc/itd_drpc.pb.go new file mode 100644 index 0000000..e043a90 --- /dev/null +++ b/internal/rpc/itd_drpc.pb.go @@ -0,0 +1,1218 @@ +// Code generated by protoc-gen-go-drpc. DO NOT EDIT. +// protoc-gen-go-drpc version: v0.0.32 +// source: itd.proto + +package rpc + +import ( + context "context" + errors "errors" + protojson "google.golang.org/protobuf/encoding/protojson" + proto "google.golang.org/protobuf/proto" + drpc "storj.io/drpc" + drpcerr "storj.io/drpc/drpcerr" +) + +type drpcEncoding_File_itd_proto struct{} + +func (drpcEncoding_File_itd_proto) Marshal(msg drpc.Message) ([]byte, error) { + return proto.Marshal(msg.(proto.Message)) +} + +func (drpcEncoding_File_itd_proto) MarshalAppend(buf []byte, msg drpc.Message) ([]byte, error) { + return proto.MarshalOptions{}.MarshalAppend(buf, msg.(proto.Message)) +} + +func (drpcEncoding_File_itd_proto) Unmarshal(buf []byte, msg drpc.Message) error { + return proto.Unmarshal(buf, msg.(proto.Message)) +} + +func (drpcEncoding_File_itd_proto) JSONMarshal(msg drpc.Message) ([]byte, error) { + return protojson.Marshal(msg.(proto.Message)) +} + +func (drpcEncoding_File_itd_proto) JSONUnmarshal(buf []byte, msg drpc.Message) error { + return protojson.Unmarshal(buf, msg.(proto.Message)) +} + +type DRPCITDClient interface { + DRPCConn() drpc.Conn + + HeartRate(ctx context.Context, in *Empty) (*IntResponse, error) + WatchHeartRate(ctx context.Context, in *Empty) (DRPCITD_WatchHeartRateClient, error) + BatteryLevel(ctx context.Context, in *Empty) (*IntResponse, error) + WatchBatteryLevel(ctx context.Context, in *Empty) (DRPCITD_WatchBatteryLevelClient, error) + Motion(ctx context.Context, in *Empty) (*MotionResponse, error) + WatchMotion(ctx context.Context, in *Empty) (DRPCITD_WatchMotionClient, error) + StepCount(ctx context.Context, in *Empty) (*IntResponse, error) + WatchStepCount(ctx context.Context, in *Empty) (DRPCITD_WatchStepCountClient, error) + Version(ctx context.Context, in *Empty) (*StringResponse, error) + Address(ctx context.Context, in *Empty) (*StringResponse, error) + Notify(ctx context.Context, in *NotifyRequest) (*Empty, error) + SetTime(ctx context.Context, in *SetTimeRequest) (*Empty, error) + WeatherUpdate(ctx context.Context, in *Empty) (*Empty, error) + FirmwareUpgrade(ctx context.Context, in *FirmwareUpgradeRequest) (DRPCITD_FirmwareUpgradeClient, error) +} + +type drpcITDClient struct { + cc drpc.Conn +} + +func NewDRPCITDClient(cc drpc.Conn) DRPCITDClient { + return &drpcITDClient{cc} +} + +func (c *drpcITDClient) DRPCConn() drpc.Conn { return c.cc } + +func (c *drpcITDClient) HeartRate(ctx context.Context, in *Empty) (*IntResponse, error) { + out := new(IntResponse) + err := c.cc.Invoke(ctx, "/rpc.ITD/HeartRate", drpcEncoding_File_itd_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcITDClient) WatchHeartRate(ctx context.Context, in *Empty) (DRPCITD_WatchHeartRateClient, error) { + stream, err := c.cc.NewStream(ctx, "/rpc.ITD/WatchHeartRate", drpcEncoding_File_itd_proto{}) + if err != nil { + return nil, err + } + x := &drpcITD_WatchHeartRateClient{stream} + if err := x.MsgSend(in, drpcEncoding_File_itd_proto{}); err != nil { + return nil, err + } + if err := x.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type DRPCITD_WatchHeartRateClient interface { + drpc.Stream + Recv() (*IntResponse, error) +} + +type drpcITD_WatchHeartRateClient struct { + drpc.Stream +} + +func (x *drpcITD_WatchHeartRateClient) Recv() (*IntResponse, error) { + m := new(IntResponse) + if err := x.MsgRecv(m, drpcEncoding_File_itd_proto{}); err != nil { + return nil, err + } + return m, nil +} + +func (x *drpcITD_WatchHeartRateClient) RecvMsg(m *IntResponse) error { + return x.MsgRecv(m, drpcEncoding_File_itd_proto{}) +} + +func (c *drpcITDClient) BatteryLevel(ctx context.Context, in *Empty) (*IntResponse, error) { + out := new(IntResponse) + err := c.cc.Invoke(ctx, "/rpc.ITD/BatteryLevel", drpcEncoding_File_itd_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcITDClient) WatchBatteryLevel(ctx context.Context, in *Empty) (DRPCITD_WatchBatteryLevelClient, error) { + stream, err := c.cc.NewStream(ctx, "/rpc.ITD/WatchBatteryLevel", drpcEncoding_File_itd_proto{}) + if err != nil { + return nil, err + } + x := &drpcITD_WatchBatteryLevelClient{stream} + if err := x.MsgSend(in, drpcEncoding_File_itd_proto{}); err != nil { + return nil, err + } + if err := x.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type DRPCITD_WatchBatteryLevelClient interface { + drpc.Stream + Recv() (*IntResponse, error) +} + +type drpcITD_WatchBatteryLevelClient struct { + drpc.Stream +} + +func (x *drpcITD_WatchBatteryLevelClient) Recv() (*IntResponse, error) { + m := new(IntResponse) + if err := x.MsgRecv(m, drpcEncoding_File_itd_proto{}); err != nil { + return nil, err + } + return m, nil +} + +func (x *drpcITD_WatchBatteryLevelClient) RecvMsg(m *IntResponse) error { + return x.MsgRecv(m, drpcEncoding_File_itd_proto{}) +} + +func (c *drpcITDClient) Motion(ctx context.Context, in *Empty) (*MotionResponse, error) { + out := new(MotionResponse) + err := c.cc.Invoke(ctx, "/rpc.ITD/Motion", drpcEncoding_File_itd_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcITDClient) WatchMotion(ctx context.Context, in *Empty) (DRPCITD_WatchMotionClient, error) { + stream, err := c.cc.NewStream(ctx, "/rpc.ITD/WatchMotion", drpcEncoding_File_itd_proto{}) + if err != nil { + return nil, err + } + x := &drpcITD_WatchMotionClient{stream} + if err := x.MsgSend(in, drpcEncoding_File_itd_proto{}); err != nil { + return nil, err + } + if err := x.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type DRPCITD_WatchMotionClient interface { + drpc.Stream + Recv() (*MotionResponse, error) +} + +type drpcITD_WatchMotionClient struct { + drpc.Stream +} + +func (x *drpcITD_WatchMotionClient) Recv() (*MotionResponse, error) { + m := new(MotionResponse) + if err := x.MsgRecv(m, drpcEncoding_File_itd_proto{}); err != nil { + return nil, err + } + return m, nil +} + +func (x *drpcITD_WatchMotionClient) RecvMsg(m *MotionResponse) error { + return x.MsgRecv(m, drpcEncoding_File_itd_proto{}) +} + +func (c *drpcITDClient) StepCount(ctx context.Context, in *Empty) (*IntResponse, error) { + out := new(IntResponse) + err := c.cc.Invoke(ctx, "/rpc.ITD/StepCount", drpcEncoding_File_itd_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcITDClient) WatchStepCount(ctx context.Context, in *Empty) (DRPCITD_WatchStepCountClient, error) { + stream, err := c.cc.NewStream(ctx, "/rpc.ITD/WatchStepCount", drpcEncoding_File_itd_proto{}) + if err != nil { + return nil, err + } + x := &drpcITD_WatchStepCountClient{stream} + if err := x.MsgSend(in, drpcEncoding_File_itd_proto{}); err != nil { + return nil, err + } + if err := x.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type DRPCITD_WatchStepCountClient interface { + drpc.Stream + Recv() (*IntResponse, error) +} + +type drpcITD_WatchStepCountClient struct { + drpc.Stream +} + +func (x *drpcITD_WatchStepCountClient) Recv() (*IntResponse, error) { + m := new(IntResponse) + if err := x.MsgRecv(m, drpcEncoding_File_itd_proto{}); err != nil { + return nil, err + } + return m, nil +} + +func (x *drpcITD_WatchStepCountClient) RecvMsg(m *IntResponse) error { + return x.MsgRecv(m, drpcEncoding_File_itd_proto{}) +} + +func (c *drpcITDClient) Version(ctx context.Context, in *Empty) (*StringResponse, error) { + out := new(StringResponse) + err := c.cc.Invoke(ctx, "/rpc.ITD/Version", drpcEncoding_File_itd_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcITDClient) Address(ctx context.Context, in *Empty) (*StringResponse, error) { + out := new(StringResponse) + err := c.cc.Invoke(ctx, "/rpc.ITD/Address", drpcEncoding_File_itd_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcITDClient) Notify(ctx context.Context, in *NotifyRequest) (*Empty, error) { + out := new(Empty) + err := c.cc.Invoke(ctx, "/rpc.ITD/Notify", drpcEncoding_File_itd_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcITDClient) SetTime(ctx context.Context, in *SetTimeRequest) (*Empty, error) { + out := new(Empty) + err := c.cc.Invoke(ctx, "/rpc.ITD/SetTime", drpcEncoding_File_itd_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcITDClient) WeatherUpdate(ctx context.Context, in *Empty) (*Empty, error) { + out := new(Empty) + err := c.cc.Invoke(ctx, "/rpc.ITD/WeatherUpdate", drpcEncoding_File_itd_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcITDClient) FirmwareUpgrade(ctx context.Context, in *FirmwareUpgradeRequest) (DRPCITD_FirmwareUpgradeClient, error) { + stream, err := c.cc.NewStream(ctx, "/rpc.ITD/FirmwareUpgrade", drpcEncoding_File_itd_proto{}) + if err != nil { + return nil, err + } + x := &drpcITD_FirmwareUpgradeClient{stream} + if err := x.MsgSend(in, drpcEncoding_File_itd_proto{}); err != nil { + return nil, err + } + if err := x.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type DRPCITD_FirmwareUpgradeClient interface { + drpc.Stream + Recv() (*DFUProgress, error) +} + +type drpcITD_FirmwareUpgradeClient struct { + drpc.Stream +} + +func (x *drpcITD_FirmwareUpgradeClient) Recv() (*DFUProgress, error) { + m := new(DFUProgress) + if err := x.MsgRecv(m, drpcEncoding_File_itd_proto{}); err != nil { + return nil, err + } + return m, nil +} + +func (x *drpcITD_FirmwareUpgradeClient) RecvMsg(m *DFUProgress) error { + return x.MsgRecv(m, drpcEncoding_File_itd_proto{}) +} + +type DRPCITDServer interface { + HeartRate(context.Context, *Empty) (*IntResponse, error) + WatchHeartRate(*Empty, DRPCITD_WatchHeartRateStream) error + BatteryLevel(context.Context, *Empty) (*IntResponse, error) + WatchBatteryLevel(*Empty, DRPCITD_WatchBatteryLevelStream) error + Motion(context.Context, *Empty) (*MotionResponse, error) + WatchMotion(*Empty, DRPCITD_WatchMotionStream) error + StepCount(context.Context, *Empty) (*IntResponse, error) + WatchStepCount(*Empty, DRPCITD_WatchStepCountStream) error + Version(context.Context, *Empty) (*StringResponse, error) + Address(context.Context, *Empty) (*StringResponse, error) + Notify(context.Context, *NotifyRequest) (*Empty, error) + SetTime(context.Context, *SetTimeRequest) (*Empty, error) + WeatherUpdate(context.Context, *Empty) (*Empty, error) + FirmwareUpgrade(*FirmwareUpgradeRequest, DRPCITD_FirmwareUpgradeStream) error +} + +type DRPCITDUnimplementedServer struct{} + +func (s *DRPCITDUnimplementedServer) HeartRate(context.Context, *Empty) (*IntResponse, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCITDUnimplementedServer) WatchHeartRate(*Empty, DRPCITD_WatchHeartRateStream) error { + return drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCITDUnimplementedServer) BatteryLevel(context.Context, *Empty) (*IntResponse, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCITDUnimplementedServer) WatchBatteryLevel(*Empty, DRPCITD_WatchBatteryLevelStream) error { + return drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCITDUnimplementedServer) Motion(context.Context, *Empty) (*MotionResponse, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCITDUnimplementedServer) WatchMotion(*Empty, DRPCITD_WatchMotionStream) error { + return drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCITDUnimplementedServer) StepCount(context.Context, *Empty) (*IntResponse, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCITDUnimplementedServer) WatchStepCount(*Empty, DRPCITD_WatchStepCountStream) error { + return drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCITDUnimplementedServer) Version(context.Context, *Empty) (*StringResponse, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCITDUnimplementedServer) Address(context.Context, *Empty) (*StringResponse, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCITDUnimplementedServer) Notify(context.Context, *NotifyRequest) (*Empty, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCITDUnimplementedServer) SetTime(context.Context, *SetTimeRequest) (*Empty, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCITDUnimplementedServer) WeatherUpdate(context.Context, *Empty) (*Empty, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCITDUnimplementedServer) FirmwareUpgrade(*FirmwareUpgradeRequest, DRPCITD_FirmwareUpgradeStream) error { + return drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +type DRPCITDDescription struct{} + +func (DRPCITDDescription) NumMethods() int { return 14 } + +func (DRPCITDDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) { + switch n { + case 0: + return "/rpc.ITD/HeartRate", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCITDServer). + HeartRate( + ctx, + in1.(*Empty), + ) + }, DRPCITDServer.HeartRate, true + case 1: + return "/rpc.ITD/WatchHeartRate", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return nil, srv.(DRPCITDServer). + WatchHeartRate( + in1.(*Empty), + &drpcITD_WatchHeartRateStream{in2.(drpc.Stream)}, + ) + }, DRPCITDServer.WatchHeartRate, true + case 2: + return "/rpc.ITD/BatteryLevel", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCITDServer). + BatteryLevel( + ctx, + in1.(*Empty), + ) + }, DRPCITDServer.BatteryLevel, true + case 3: + return "/rpc.ITD/WatchBatteryLevel", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return nil, srv.(DRPCITDServer). + WatchBatteryLevel( + in1.(*Empty), + &drpcITD_WatchBatteryLevelStream{in2.(drpc.Stream)}, + ) + }, DRPCITDServer.WatchBatteryLevel, true + case 4: + return "/rpc.ITD/Motion", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCITDServer). + Motion( + ctx, + in1.(*Empty), + ) + }, DRPCITDServer.Motion, true + case 5: + return "/rpc.ITD/WatchMotion", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return nil, srv.(DRPCITDServer). + WatchMotion( + in1.(*Empty), + &drpcITD_WatchMotionStream{in2.(drpc.Stream)}, + ) + }, DRPCITDServer.WatchMotion, true + case 6: + return "/rpc.ITD/StepCount", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCITDServer). + StepCount( + ctx, + in1.(*Empty), + ) + }, DRPCITDServer.StepCount, true + case 7: + return "/rpc.ITD/WatchStepCount", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return nil, srv.(DRPCITDServer). + WatchStepCount( + in1.(*Empty), + &drpcITD_WatchStepCountStream{in2.(drpc.Stream)}, + ) + }, DRPCITDServer.WatchStepCount, true + case 8: + return "/rpc.ITD/Version", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCITDServer). + Version( + ctx, + in1.(*Empty), + ) + }, DRPCITDServer.Version, true + case 9: + return "/rpc.ITD/Address", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCITDServer). + Address( + ctx, + in1.(*Empty), + ) + }, DRPCITDServer.Address, true + case 10: + return "/rpc.ITD/Notify", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCITDServer). + Notify( + ctx, + in1.(*NotifyRequest), + ) + }, DRPCITDServer.Notify, true + case 11: + return "/rpc.ITD/SetTime", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCITDServer). + SetTime( + ctx, + in1.(*SetTimeRequest), + ) + }, DRPCITDServer.SetTime, true + case 12: + return "/rpc.ITD/WeatherUpdate", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCITDServer). + WeatherUpdate( + ctx, + in1.(*Empty), + ) + }, DRPCITDServer.WeatherUpdate, true + case 13: + return "/rpc.ITD/FirmwareUpgrade", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return nil, srv.(DRPCITDServer). + FirmwareUpgrade( + in1.(*FirmwareUpgradeRequest), + &drpcITD_FirmwareUpgradeStream{in2.(drpc.Stream)}, + ) + }, DRPCITDServer.FirmwareUpgrade, true + default: + return "", nil, nil, nil, false + } +} + +func DRPCRegisterITD(mux drpc.Mux, impl DRPCITDServer) error { + return mux.Register(impl, DRPCITDDescription{}) +} + +type DRPCITD_HeartRateStream interface { + drpc.Stream + SendAndClose(*IntResponse) error +} + +type drpcITD_HeartRateStream struct { + drpc.Stream +} + +func (x *drpcITD_HeartRateStream) SendAndClose(m *IntResponse) error { + if err := x.MsgSend(m, drpcEncoding_File_itd_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCITD_WatchHeartRateStream interface { + drpc.Stream + Send(*IntResponse) error +} + +type drpcITD_WatchHeartRateStream struct { + drpc.Stream +} + +func (x *drpcITD_WatchHeartRateStream) Send(m *IntResponse) error { + return x.MsgSend(m, drpcEncoding_File_itd_proto{}) +} + +type DRPCITD_BatteryLevelStream interface { + drpc.Stream + SendAndClose(*IntResponse) error +} + +type drpcITD_BatteryLevelStream struct { + drpc.Stream +} + +func (x *drpcITD_BatteryLevelStream) SendAndClose(m *IntResponse) error { + if err := x.MsgSend(m, drpcEncoding_File_itd_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCITD_WatchBatteryLevelStream interface { + drpc.Stream + Send(*IntResponse) error +} + +type drpcITD_WatchBatteryLevelStream struct { + drpc.Stream +} + +func (x *drpcITD_WatchBatteryLevelStream) Send(m *IntResponse) error { + return x.MsgSend(m, drpcEncoding_File_itd_proto{}) +} + +type DRPCITD_MotionStream interface { + drpc.Stream + SendAndClose(*MotionResponse) error +} + +type drpcITD_MotionStream struct { + drpc.Stream +} + +func (x *drpcITD_MotionStream) SendAndClose(m *MotionResponse) error { + if err := x.MsgSend(m, drpcEncoding_File_itd_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCITD_WatchMotionStream interface { + drpc.Stream + Send(*MotionResponse) error +} + +type drpcITD_WatchMotionStream struct { + drpc.Stream +} + +func (x *drpcITD_WatchMotionStream) Send(m *MotionResponse) error { + return x.MsgSend(m, drpcEncoding_File_itd_proto{}) +} + +type DRPCITD_StepCountStream interface { + drpc.Stream + SendAndClose(*IntResponse) error +} + +type drpcITD_StepCountStream struct { + drpc.Stream +} + +func (x *drpcITD_StepCountStream) SendAndClose(m *IntResponse) error { + if err := x.MsgSend(m, drpcEncoding_File_itd_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCITD_WatchStepCountStream interface { + drpc.Stream + Send(*IntResponse) error +} + +type drpcITD_WatchStepCountStream struct { + drpc.Stream +} + +func (x *drpcITD_WatchStepCountStream) Send(m *IntResponse) error { + return x.MsgSend(m, drpcEncoding_File_itd_proto{}) +} + +type DRPCITD_VersionStream interface { + drpc.Stream + SendAndClose(*StringResponse) error +} + +type drpcITD_VersionStream struct { + drpc.Stream +} + +func (x *drpcITD_VersionStream) SendAndClose(m *StringResponse) error { + if err := x.MsgSend(m, drpcEncoding_File_itd_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCITD_AddressStream interface { + drpc.Stream + SendAndClose(*StringResponse) error +} + +type drpcITD_AddressStream struct { + drpc.Stream +} + +func (x *drpcITD_AddressStream) SendAndClose(m *StringResponse) error { + if err := x.MsgSend(m, drpcEncoding_File_itd_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCITD_NotifyStream interface { + drpc.Stream + SendAndClose(*Empty) error +} + +type drpcITD_NotifyStream struct { + drpc.Stream +} + +func (x *drpcITD_NotifyStream) SendAndClose(m *Empty) error { + if err := x.MsgSend(m, drpcEncoding_File_itd_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCITD_SetTimeStream interface { + drpc.Stream + SendAndClose(*Empty) error +} + +type drpcITD_SetTimeStream struct { + drpc.Stream +} + +func (x *drpcITD_SetTimeStream) SendAndClose(m *Empty) error { + if err := x.MsgSend(m, drpcEncoding_File_itd_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCITD_WeatherUpdateStream interface { + drpc.Stream + SendAndClose(*Empty) error +} + +type drpcITD_WeatherUpdateStream struct { + drpc.Stream +} + +func (x *drpcITD_WeatherUpdateStream) SendAndClose(m *Empty) error { + if err := x.MsgSend(m, drpcEncoding_File_itd_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCITD_FirmwareUpgradeStream interface { + drpc.Stream + Send(*DFUProgress) error +} + +type drpcITD_FirmwareUpgradeStream struct { + drpc.Stream +} + +func (x *drpcITD_FirmwareUpgradeStream) Send(m *DFUProgress) error { + return x.MsgSend(m, drpcEncoding_File_itd_proto{}) +} + +type DRPCFSClient interface { + DRPCConn() drpc.Conn + + RemoveAll(ctx context.Context, in *PathsRequest) (*Empty, error) + Remove(ctx context.Context, in *PathsRequest) (*Empty, error) + Rename(ctx context.Context, in *RenameRequest) (*Empty, error) + MkdirAll(ctx context.Context, in *PathsRequest) (*Empty, error) + Mkdir(ctx context.Context, in *PathsRequest) (*Empty, error) + ReadDir(ctx context.Context, in *PathRequest) (*DirResponse, error) + Upload(ctx context.Context, in *TransferRequest) (DRPCFS_UploadClient, error) + Download(ctx context.Context, in *TransferRequest) (DRPCFS_DownloadClient, error) + LoadResources(ctx context.Context, in *PathRequest) (DRPCFS_LoadResourcesClient, error) +} + +type drpcFSClient struct { + cc drpc.Conn +} + +func NewDRPCFSClient(cc drpc.Conn) DRPCFSClient { + return &drpcFSClient{cc} +} + +func (c *drpcFSClient) DRPCConn() drpc.Conn { return c.cc } + +func (c *drpcFSClient) RemoveAll(ctx context.Context, in *PathsRequest) (*Empty, error) { + out := new(Empty) + err := c.cc.Invoke(ctx, "/rpc.FS/RemoveAll", drpcEncoding_File_itd_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcFSClient) Remove(ctx context.Context, in *PathsRequest) (*Empty, error) { + out := new(Empty) + err := c.cc.Invoke(ctx, "/rpc.FS/Remove", drpcEncoding_File_itd_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcFSClient) Rename(ctx context.Context, in *RenameRequest) (*Empty, error) { + out := new(Empty) + err := c.cc.Invoke(ctx, "/rpc.FS/Rename", drpcEncoding_File_itd_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcFSClient) MkdirAll(ctx context.Context, in *PathsRequest) (*Empty, error) { + out := new(Empty) + err := c.cc.Invoke(ctx, "/rpc.FS/MkdirAll", drpcEncoding_File_itd_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcFSClient) Mkdir(ctx context.Context, in *PathsRequest) (*Empty, error) { + out := new(Empty) + err := c.cc.Invoke(ctx, "/rpc.FS/Mkdir", drpcEncoding_File_itd_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcFSClient) ReadDir(ctx context.Context, in *PathRequest) (*DirResponse, error) { + out := new(DirResponse) + err := c.cc.Invoke(ctx, "/rpc.FS/ReadDir", drpcEncoding_File_itd_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcFSClient) Upload(ctx context.Context, in *TransferRequest) (DRPCFS_UploadClient, error) { + stream, err := c.cc.NewStream(ctx, "/rpc.FS/Upload", drpcEncoding_File_itd_proto{}) + if err != nil { + return nil, err + } + x := &drpcFS_UploadClient{stream} + if err := x.MsgSend(in, drpcEncoding_File_itd_proto{}); err != nil { + return nil, err + } + if err := x.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type DRPCFS_UploadClient interface { + drpc.Stream + Recv() (*TransferProgress, error) +} + +type drpcFS_UploadClient struct { + drpc.Stream +} + +func (x *drpcFS_UploadClient) Recv() (*TransferProgress, error) { + m := new(TransferProgress) + if err := x.MsgRecv(m, drpcEncoding_File_itd_proto{}); err != nil { + return nil, err + } + return m, nil +} + +func (x *drpcFS_UploadClient) RecvMsg(m *TransferProgress) error { + return x.MsgRecv(m, drpcEncoding_File_itd_proto{}) +} + +func (c *drpcFSClient) Download(ctx context.Context, in *TransferRequest) (DRPCFS_DownloadClient, error) { + stream, err := c.cc.NewStream(ctx, "/rpc.FS/Download", drpcEncoding_File_itd_proto{}) + if err != nil { + return nil, err + } + x := &drpcFS_DownloadClient{stream} + if err := x.MsgSend(in, drpcEncoding_File_itd_proto{}); err != nil { + return nil, err + } + if err := x.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type DRPCFS_DownloadClient interface { + drpc.Stream + Recv() (*TransferProgress, error) +} + +type drpcFS_DownloadClient struct { + drpc.Stream +} + +func (x *drpcFS_DownloadClient) Recv() (*TransferProgress, error) { + m := new(TransferProgress) + if err := x.MsgRecv(m, drpcEncoding_File_itd_proto{}); err != nil { + return nil, err + } + return m, nil +} + +func (x *drpcFS_DownloadClient) RecvMsg(m *TransferProgress) error { + return x.MsgRecv(m, drpcEncoding_File_itd_proto{}) +} + +func (c *drpcFSClient) LoadResources(ctx context.Context, in *PathRequest) (DRPCFS_LoadResourcesClient, error) { + stream, err := c.cc.NewStream(ctx, "/rpc.FS/LoadResources", drpcEncoding_File_itd_proto{}) + if err != nil { + return nil, err + } + x := &drpcFS_LoadResourcesClient{stream} + if err := x.MsgSend(in, drpcEncoding_File_itd_proto{}); err != nil { + return nil, err + } + if err := x.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type DRPCFS_LoadResourcesClient interface { + drpc.Stream + Recv() (*ResourceLoadProgress, error) +} + +type drpcFS_LoadResourcesClient struct { + drpc.Stream +} + +func (x *drpcFS_LoadResourcesClient) Recv() (*ResourceLoadProgress, error) { + m := new(ResourceLoadProgress) + if err := x.MsgRecv(m, drpcEncoding_File_itd_proto{}); err != nil { + return nil, err + } + return m, nil +} + +func (x *drpcFS_LoadResourcesClient) RecvMsg(m *ResourceLoadProgress) error { + return x.MsgRecv(m, drpcEncoding_File_itd_proto{}) +} + +type DRPCFSServer interface { + RemoveAll(context.Context, *PathsRequest) (*Empty, error) + Remove(context.Context, *PathsRequest) (*Empty, error) + Rename(context.Context, *RenameRequest) (*Empty, error) + MkdirAll(context.Context, *PathsRequest) (*Empty, error) + Mkdir(context.Context, *PathsRequest) (*Empty, error) + ReadDir(context.Context, *PathRequest) (*DirResponse, error) + Upload(*TransferRequest, DRPCFS_UploadStream) error + Download(*TransferRequest, DRPCFS_DownloadStream) error + LoadResources(*PathRequest, DRPCFS_LoadResourcesStream) error +} + +type DRPCFSUnimplementedServer struct{} + +func (s *DRPCFSUnimplementedServer) RemoveAll(context.Context, *PathsRequest) (*Empty, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCFSUnimplementedServer) Remove(context.Context, *PathsRequest) (*Empty, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCFSUnimplementedServer) Rename(context.Context, *RenameRequest) (*Empty, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCFSUnimplementedServer) MkdirAll(context.Context, *PathsRequest) (*Empty, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCFSUnimplementedServer) Mkdir(context.Context, *PathsRequest) (*Empty, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCFSUnimplementedServer) ReadDir(context.Context, *PathRequest) (*DirResponse, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCFSUnimplementedServer) Upload(*TransferRequest, DRPCFS_UploadStream) error { + return drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCFSUnimplementedServer) Download(*TransferRequest, DRPCFS_DownloadStream) error { + return drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCFSUnimplementedServer) LoadResources(*PathRequest, DRPCFS_LoadResourcesStream) error { + return drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +type DRPCFSDescription struct{} + +func (DRPCFSDescription) NumMethods() int { return 9 } + +func (DRPCFSDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) { + switch n { + case 0: + return "/rpc.FS/RemoveAll", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCFSServer). + RemoveAll( + ctx, + in1.(*PathsRequest), + ) + }, DRPCFSServer.RemoveAll, true + case 1: + return "/rpc.FS/Remove", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCFSServer). + Remove( + ctx, + in1.(*PathsRequest), + ) + }, DRPCFSServer.Remove, true + case 2: + return "/rpc.FS/Rename", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCFSServer). + Rename( + ctx, + in1.(*RenameRequest), + ) + }, DRPCFSServer.Rename, true + case 3: + return "/rpc.FS/MkdirAll", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCFSServer). + MkdirAll( + ctx, + in1.(*PathsRequest), + ) + }, DRPCFSServer.MkdirAll, true + case 4: + return "/rpc.FS/Mkdir", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCFSServer). + Mkdir( + ctx, + in1.(*PathsRequest), + ) + }, DRPCFSServer.Mkdir, true + case 5: + return "/rpc.FS/ReadDir", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCFSServer). + ReadDir( + ctx, + in1.(*PathRequest), + ) + }, DRPCFSServer.ReadDir, true + case 6: + return "/rpc.FS/Upload", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return nil, srv.(DRPCFSServer). + Upload( + in1.(*TransferRequest), + &drpcFS_UploadStream{in2.(drpc.Stream)}, + ) + }, DRPCFSServer.Upload, true + case 7: + return "/rpc.FS/Download", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return nil, srv.(DRPCFSServer). + Download( + in1.(*TransferRequest), + &drpcFS_DownloadStream{in2.(drpc.Stream)}, + ) + }, DRPCFSServer.Download, true + case 8: + return "/rpc.FS/LoadResources", drpcEncoding_File_itd_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return nil, srv.(DRPCFSServer). + LoadResources( + in1.(*PathRequest), + &drpcFS_LoadResourcesStream{in2.(drpc.Stream)}, + ) + }, DRPCFSServer.LoadResources, true + default: + return "", nil, nil, nil, false + } +} + +func DRPCRegisterFS(mux drpc.Mux, impl DRPCFSServer) error { + return mux.Register(impl, DRPCFSDescription{}) +} + +type DRPCFS_RemoveAllStream interface { + drpc.Stream + SendAndClose(*Empty) error +} + +type drpcFS_RemoveAllStream struct { + drpc.Stream +} + +func (x *drpcFS_RemoveAllStream) SendAndClose(m *Empty) error { + if err := x.MsgSend(m, drpcEncoding_File_itd_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCFS_RemoveStream interface { + drpc.Stream + SendAndClose(*Empty) error +} + +type drpcFS_RemoveStream struct { + drpc.Stream +} + +func (x *drpcFS_RemoveStream) SendAndClose(m *Empty) error { + if err := x.MsgSend(m, drpcEncoding_File_itd_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCFS_RenameStream interface { + drpc.Stream + SendAndClose(*Empty) error +} + +type drpcFS_RenameStream struct { + drpc.Stream +} + +func (x *drpcFS_RenameStream) SendAndClose(m *Empty) error { + if err := x.MsgSend(m, drpcEncoding_File_itd_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCFS_MkdirAllStream interface { + drpc.Stream + SendAndClose(*Empty) error +} + +type drpcFS_MkdirAllStream struct { + drpc.Stream +} + +func (x *drpcFS_MkdirAllStream) SendAndClose(m *Empty) error { + if err := x.MsgSend(m, drpcEncoding_File_itd_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCFS_MkdirStream interface { + drpc.Stream + SendAndClose(*Empty) error +} + +type drpcFS_MkdirStream struct { + drpc.Stream +} + +func (x *drpcFS_MkdirStream) SendAndClose(m *Empty) error { + if err := x.MsgSend(m, drpcEncoding_File_itd_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCFS_ReadDirStream interface { + drpc.Stream + SendAndClose(*DirResponse) error +} + +type drpcFS_ReadDirStream struct { + drpc.Stream +} + +func (x *drpcFS_ReadDirStream) SendAndClose(m *DirResponse) error { + if err := x.MsgSend(m, drpcEncoding_File_itd_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCFS_UploadStream interface { + drpc.Stream + Send(*TransferProgress) error +} + +type drpcFS_UploadStream struct { + drpc.Stream +} + +func (x *drpcFS_UploadStream) Send(m *TransferProgress) error { + return x.MsgSend(m, drpcEncoding_File_itd_proto{}) +} + +type DRPCFS_DownloadStream interface { + drpc.Stream + Send(*TransferProgress) error +} + +type drpcFS_DownloadStream struct { + drpc.Stream +} + +func (x *drpcFS_DownloadStream) Send(m *TransferProgress) error { + return x.MsgSend(m, drpcEncoding_File_itd_proto{}) +} + +type DRPCFS_LoadResourcesStream interface { + drpc.Stream + Send(*ResourceLoadProgress) error +} + +type drpcFS_LoadResourcesStream struct { + drpc.Stream +} + +func (x *drpcFS_LoadResourcesStream) Send(m *ResourceLoadProgress) error { + return x.MsgSend(m, drpcEncoding_File_itd_proto{}) +} diff --git a/socket.go b/socket.go index 017712e..0a355f3 100644 --- a/socket.go +++ b/socket.go @@ -30,9 +30,9 @@ import ( "github.com/rs/zerolog/log" "go.arsenm.dev/infinitime" "go.arsenm.dev/infinitime/blefs" - "go.arsenm.dev/itd/api" - "go.arsenm.dev/lrpc/codec" - "go.arsenm.dev/lrpc/server" + "go.arsenm.dev/itd/internal/rpc" + "storj.io/drpc/drpcmux" + "storj.io/drpc/drpcserver" ) var ( @@ -65,26 +65,21 @@ func startSocket(ctx context.Context, dev *infinitime.Device) error { log.Warn().Err(err).Msg("Error getting BLE filesystem") } - srv := server.New() + mux := drpcmux.New() - itdAPI := &ITD{ + rpc.DRPCRegisterITD(mux, &ITD{ dev: dev, - } - err = srv.Register(itdAPI) - if err != nil { - return err - } + }) - fsAPI := &FS{ + rpc.DRPCRegisterFS(mux, &FS{ dev: dev, fs: fs, - } - err = srv.Register(fsAPI) + }) if err != nil { return err } - go srv.Serve(ctx, ln, codec.Default) + go drpcserver.New(mux).Serve(ctx, ln) // Log socket start log.Info().Str("path", k.String("socket.path")).Msg("Started control socket") @@ -96,159 +91,153 @@ type ITD struct { dev *infinitime.Device } -func (i *ITD) HeartRate(_ *server.Context) (uint8, error) { - return i.dev.HeartRate() +func (i *ITD) HeartRate(_ context.Context, _ *rpc.Empty) (*rpc.IntResponse, error) { + hr, err := i.dev.HeartRate() + return &rpc.IntResponse{Value: uint32(hr)}, err } -func (i *ITD) WatchHeartRate(ctx *server.Context) error { - ch, err := ctx.MakeChannel() +func (i *ITD) WatchHeartRate(_ *rpc.Empty, s rpc.DRPCITD_WatchHeartRateStream) error { + heartRateCh, err := i.dev.WatchHeartRate(s.Context()) if err != nil { return err } - heartRateCh, err := i.dev.WatchHeartRate(ctx) - if err != nil { - return err - } - - go func() { - // For every heart rate value - for heartRate := range heartRateCh { - ch <- heartRate - } - }() - - return nil -} - -func (i *ITD) BatteryLevel(_ *server.Context) (uint8, error) { - return i.dev.BatteryLevel() -} - -func (i *ITD) WatchBatteryLevel(ctx *server.Context) error { - ch, err := ctx.MakeChannel() - if err != nil { - return err - } - - battLevelCh, err := i.dev.WatchBatteryLevel(ctx) - if err != nil { - return err - } - - go func() { - // For every heart rate value - for battLevel := range battLevelCh { - ch <- battLevel - } - }() - - return nil -} - -func (i *ITD) Motion(_ *server.Context) (infinitime.MotionValues, error) { - return i.dev.Motion() -} - -func (i *ITD) WatchMotion(ctx *server.Context) error { - ch, err := ctx.MakeChannel() - if err != nil { - return err - } - - motionValsCh, err := i.dev.WatchMotion(ctx) - if err != nil { - return err - } - - go func() { - // For every heart rate value - for motionVals := range motionValsCh { - ch <- motionVals - } - }() - - return nil -} - -func (i *ITD) StepCount(_ *server.Context) (uint32, error) { - return i.dev.StepCount() -} - -func (i *ITD) WatchStepCount(ctx *server.Context) error { - ch, err := ctx.MakeChannel() - if err != nil { - return err - } - - stepCountCh, err := i.dev.WatchStepCount(ctx) - if err != nil { - return err - } - - go func() { - // For every heart rate value - for stepCount := range stepCountCh { - ch <- stepCount - } - }() - - return nil -} - -func (i *ITD) Version(_ *server.Context) (string, error) { - return i.dev.Version() -} - -func (i *ITD) Address(_ *server.Context) string { - return i.dev.Address() -} - -func (i *ITD) Notify(_ *server.Context, data api.NotifyData) error { - return i.dev.Notify(data.Title, data.Body) -} - -func (i *ITD) SetTime(_ *server.Context, t *time.Time) error { - return i.dev.SetTime(*t) -} - -func (i *ITD) WeatherUpdate(_ *server.Context) { - sendWeatherCh <- struct{}{} -} - -func (i *ITD) FirmwareUpgrade(ctx *server.Context, reqData api.FwUpgradeData) error { - i.dev.DFU.Reset() - - switch reqData.Type { - case api.UpgradeTypeArchive: - // If less than one file, return error - if len(reqData.Files) < 1 { - return ErrDFUNotEnoughFiles - } - // If file is not zip archive, return error - if filepath.Ext(reqData.Files[0]) != ".zip" { - return ErrDFUInvalidFile - } - // Load DFU archive - err := i.dev.DFU.LoadArchive(reqData.Files[0]) + for heartRate := range heartRateCh { + err = s.Send(&rpc.IntResponse{Value: uint32(heartRate)}) if err != nil { return err } - case api.UpgradeTypeFiles: + } + + return nil +} + +func (i *ITD) BatteryLevel(_ context.Context, _ *rpc.Empty) (*rpc.IntResponse, error) { + bl, err := i.dev.BatteryLevel() + return &rpc.IntResponse{Value: uint32(bl)}, err +} + +func (i *ITD) WatchBatteryLevel(_ *rpc.Empty, s rpc.DRPCITD_WatchBatteryLevelStream) error { + battLevelCh, err := i.dev.WatchBatteryLevel(s.Context()) + if err != nil { + return err + } + + for battLevel := range battLevelCh { + err = s.Send(&rpc.IntResponse{Value: uint32(battLevel)}) + if err != nil { + return err + } + } + + return nil +} + +func (i *ITD) Motion(_ context.Context, _ *rpc.Empty) (*rpc.MotionResponse, error) { + motionVals, err := i.dev.Motion() + return &rpc.MotionResponse{ + X: int32(motionVals.X), + Y: int32(motionVals.Y), + Z: int32(motionVals.Z), + }, err +} + +func (i *ITD) WatchMotion(_ *rpc.Empty, s rpc.DRPCITD_WatchMotionStream) error { + motionValsCh, err := i.dev.WatchMotion(s.Context()) + if err != nil { + return err + } + + for motionVals := range motionValsCh { + err = s.Send(&rpc.MotionResponse{ + X: int32(motionVals.X), + Y: int32(motionVals.Y), + Z: int32(motionVals.Z), + }) + if err != nil { + return err + } + } + + return nil +} + +func (i *ITD) StepCount(_ context.Context, _ *rpc.Empty) (*rpc.IntResponse, error) { + sc, err := i.dev.StepCount() + return &rpc.IntResponse{Value: sc}, err +} + +func (i *ITD) WatchStepCount(_ *rpc.Empty, s rpc.DRPCITD_WatchStepCountStream) error { + stepCountCh, err := i.dev.WatchStepCount(s.Context()) + if err != nil { + return err + } + + for stepCount := range stepCountCh { + err = s.Send(&rpc.IntResponse{Value: stepCount}) + if err != nil { + return err + } + } + + return nil +} + +func (i *ITD) Version(_ context.Context, _ *rpc.Empty) (*rpc.StringResponse, error) { + v, err := i.dev.Version() + return &rpc.StringResponse{Value: v}, err +} + +func (i *ITD) Address(_ context.Context, _ *rpc.Empty) (*rpc.StringResponse, error) { + return &rpc.StringResponse{Value: i.dev.Address()}, nil +} + +func (i *ITD) Notify(_ context.Context, data *rpc.NotifyRequest) (*rpc.Empty, error) { + return &rpc.Empty{}, i.dev.Notify(data.Title, data.Body) +} + +func (i *ITD) SetTime(_ context.Context, data *rpc.SetTimeRequest) (*rpc.Empty, error) { + return &rpc.Empty{}, i.dev.SetTime(time.Unix(0, data.UnixNano)) +} + +func (i *ITD) WeatherUpdate(context.Context, *rpc.Empty) (*rpc.Empty, error) { + sendWeatherCh <- struct{}{} + return &rpc.Empty{}, nil +} + +func (i *ITD) FirmwareUpgrade(data *rpc.FirmwareUpgradeRequest, s rpc.DRPCITD_FirmwareUpgradeStream) error { + i.dev.DFU.Reset() + + switch data.Type { + case rpc.FirmwareUpgradeRequest_Archive: + // If less than one file, return error + if len(data.Files) < 1 { + return ErrDFUNotEnoughFiles + } + // If file is not zip archive, return error + if filepath.Ext(data.Files[0]) != ".zip" { + return ErrDFUInvalidFile + } + // Load DFU archive + err := i.dev.DFU.LoadArchive(data.Files[0]) + if err != nil { + return err + } + case rpc.FirmwareUpgradeRequest_Files: // If less than two files, return error - if len(reqData.Files) < 2 { + if len(data.Files) < 2 { return ErrDFUNotEnoughFiles } // If first file is not init packet, return error - if filepath.Ext(reqData.Files[0]) != ".dat" { + if filepath.Ext(data.Files[0]) != ".dat" { return ErrDFUInvalidFile } // If second file is not firmware image, return error - if filepath.Ext(reqData.Files[1]) != ".bin" { + if filepath.Ext(data.Files[1]) != ".bin" { return ErrDFUInvalidFile } // Load individual DFU files - err := i.dev.DFU.LoadFiles(reqData.Files[0], reqData.Files[1]) + err := i.dev.DFU.LoadFiles(data.Files[0], data.Files[1]) if err != nil { return err } @@ -256,34 +245,27 @@ func (i *ITD) FirmwareUpgrade(ctx *server.Context, reqData api.FwUpgradeData) er return ErrDFUInvalidUpgType } - ch, err := ctx.MakeChannel() - if err != nil { - return err - } - go func() { - // For every progress event for event := range i.dev.DFU.Progress() { - ch <- event + _ = s.Send(&rpc.DFUProgress{ + Sent: int64(event.Sent), + Recieved: int64(event.Received), + Total: event.Total, + }) } firmwareUpdating = false - // Send zero object to signal completion - close(ch) }() // Set firmwareUpdating firmwareUpdating = true - go func() { - // Start DFU - err := i.dev.DFU.Start() - if err != nil { - log.Error().Err(err).Msg("Error while upgrading firmware") - firmwareUpdating = false - return - } - }() + // Start DFU + err := i.dev.DFU.Start() + if err != nil { + firmwareUpdating = false + return err + } return nil } @@ -293,82 +275,82 @@ type FS struct { fs *blefs.FS } -func (fs *FS) RemoveAll(_ *server.Context, paths []string) error { +func (fs *FS) RemoveAll(_ context.Context, req *rpc.PathsRequest) (*rpc.Empty, error) { fs.updateFS() - for _, path := range paths { + for _, path := range req.Paths { err := fs.fs.RemoveAll(path) if err != nil { - return err + return &rpc.Empty{}, err } } - return nil + return &rpc.Empty{}, nil } -func (fs *FS) Remove(_ *server.Context, paths []string) error { +func (fs *FS) Remove(_ context.Context, req *rpc.PathsRequest) (*rpc.Empty, error) { fs.updateFS() - for _, path := range paths { + for _, path := range req.Paths { err := fs.fs.Remove(path) if err != nil { - return err + return &rpc.Empty{}, err } } - return nil + return &rpc.Empty{}, nil } -func (fs *FS) Rename(_ *server.Context, paths [2]string) error { +func (fs *FS) Rename(_ context.Context, req *rpc.RenameRequest) (*rpc.Empty, error) { fs.updateFS() - return fs.fs.Rename(paths[0], paths[1]) + return &rpc.Empty{}, fs.fs.Rename(req.From, req.To) } -func (fs *FS) MkdirAll(_ *server.Context, paths []string) error { +func (fs *FS) MkdirAll(_ context.Context, req *rpc.PathsRequest) (*rpc.Empty, error) { fs.updateFS() - for _, path := range paths { + for _, path := range req.Paths { err := fs.fs.MkdirAll(path) if err != nil { - return err + return &rpc.Empty{}, err } } - return nil + return &rpc.Empty{}, nil } -func (fs *FS) Mkdir(_ *server.Context, paths []string) error { +func (fs *FS) Mkdir(_ context.Context, req *rpc.PathsRequest) (*rpc.Empty, error) { fs.updateFS() - for _, path := range paths { + for _, path := range req.Paths { err := fs.fs.Mkdir(path) if err != nil { - return err + return &rpc.Empty{}, err } } - return nil + return &rpc.Empty{}, nil } -func (fs *FS) ReadDir(_ *server.Context, dir string) ([]api.FileInfo, error) { +func (fs *FS) ReadDir(_ context.Context, req *rpc.PathRequest) (*rpc.DirResponse, error) { fs.updateFS() - entries, err := fs.fs.ReadDir(dir) + entries, err := fs.fs.ReadDir(req.Path) if err != nil { return nil, err } - var fileInfo []api.FileInfo + var fileInfo []*rpc.FileInfo for _, entry := range entries { info, err := entry.Info() if err != nil { return nil, err } - fileInfo = append(fileInfo, api.FileInfo{ + fileInfo = append(fileInfo, &rpc.FileInfo{ Name: info.Name(), Size: info.Size(), IsDir: info.IsDir(), }) } - return fileInfo, nil + return &rpc.DirResponse{Entries: fileInfo}, nil } -func (fs *FS) Upload(ctx *server.Context, paths [2]string) error { +func (fs *FS) Upload(req *rpc.TransferRequest, s rpc.DRPCFS_UploadStream) error { fs.updateFS() - localFile, err := os.Open(paths[1]) + localFile, err := os.Open(req.Source) if err != nil { return err } @@ -378,76 +360,64 @@ func (fs *FS) Upload(ctx *server.Context, paths [2]string) error { return err } - remoteFile, err := fs.fs.Create(paths[0], uint32(localInfo.Size())) + remoteFile, err := fs.fs.Create(req.Destination, uint32(localInfo.Size())) if err != nil { return err } - ch, err := ctx.MakeChannel() - if err != nil { - return err - } go func() { // For every progress event for sent := range remoteFile.Progress() { - ch <- api.FSTransferProgress{ + _ = s.Send(&rpc.TransferProgress{ Total: remoteFile.Size(), Sent: sent, - } + }) } - - // Send zero object to signal completion - close(ch) }() - go func() { - io.Copy(remoteFile, localFile) - localFile.Close() - remoteFile.Close() - }() + io.Copy(remoteFile, localFile) + localFile.Close() + remoteFile.Close() return nil } -func (fs *FS) Download(ctx *server.Context, paths [2]string) error { +func (fs *FS) Download(req *rpc.TransferRequest, s rpc.DRPCFS_DownloadStream) error { fs.updateFS() - localFile, err := os.Create(paths[0]) + localFile, err := os.Create(req.Destination) if err != nil { return err } - remoteFile, err := fs.fs.Open(paths[1]) + remoteFile, err := fs.fs.Open(req.Source) if err != nil { return err } - ch, err := ctx.MakeChannel() - if err != nil { - return err - } + defer localFile.Close() + defer remoteFile.Close() + go func() { // For every progress event for sent := range remoteFile.Progress() { - ch <- api.FSTransferProgress{ + _ = s.Send(&rpc.TransferProgress{ Total: remoteFile.Size(), Sent: sent, - } + }) } - - // Send zero object to signal completion - close(ch) - localFile.Close() - remoteFile.Close() }() - go io.Copy(localFile, remoteFile) + _, err = io.Copy(localFile, remoteFile) + if err != nil { + return err + } return nil } -func (fs *FS) LoadResources(ctx *server.Context, path string) error { - resFl, err := os.Open(path) +func (fs *FS) LoadResources(req *rpc.PathRequest, s rpc.DRPCFS_LoadResourcesStream) error { + resFl, err := os.Open(req.Path) if err != nil { return err } @@ -457,17 +427,17 @@ func (fs *FS) LoadResources(ctx *server.Context, path string) error { return err } - ch, err := ctx.MakeChannel() - if err != nil { - return err - } - - go func() { - for evt := range progCh { - ch <- evt + for evt := range progCh { + err = s.Send(&rpc.ResourceLoadProgress{ + Name: evt.Name, + Total: evt.Total, + Sent: evt.Sent, + Operation: rpc.ResourceLoadProgress_Operation(evt.Operation), + }) + if err != nil { + return err } - close(ch) - }() + } return nil }