From ca4b7dce3629adfbcaa7d8939b4cab350102ed1f Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 10 Aug 2021 13:56:41 +0200 Subject: [PATCH 01/98] fix: file keyring fails to add/import/export keys when input is not stdin (fix #9566) (backport #9821) (#9880) * fix: file keyring fails to add/import/export keys when input is not stdin (fix #9566) (#9821) ## Description Add a test case to reproduce the issue described in #9566. The test currently fails, and I've pointed some possible solutions over https://github.com/cosmos/cosmos-sdk/issues/9566#issuecomment-889281861. But I feel this needs more works in order to provide a more robust solution. I'll keep poking at better options, but taking any pointers if anyone has ideas. (cherry picked from commit f479b515a8ce2353ab583525a029f7e68dad4e5f) # Conflicts: # client/keys/add.go # client/keys/add_test.go # client/keys/export_test.go * fix: merge conflict backporting pr-9821 (#9888) Co-authored-by: daeMOn --- client/context.go | 6 +- client/keys/add.go | 2 +- client/keys/add_test.go | 47 ++++++++++++- client/keys/export.go | 2 +- client/keys/export_test.go | 139 ++++++++++++++++++++++++------------- client/keys/import.go | 2 +- client/keys/import_test.go | 114 +++++++++++++++++++++++------- 7 files changed, 232 insertions(+), 80 deletions(-) diff --git a/client/context.go b/client/context.go index cacdb6ee961c..44ccbc259cd5 100644 --- a/client/context.go +++ b/client/context.go @@ -1,6 +1,7 @@ package client import ( + "bufio" "encoding/json" "io" "os" @@ -60,7 +61,10 @@ func (ctx Context) WithKeyring(k keyring.Keyring) Context { // WithInput returns a copy of the context with an updated input. func (ctx Context) WithInput(r io.Reader) Context { - ctx.Input = r + // convert to a bufio.Reader to have a shared buffer between the keyring and the + // the Commands, ensuring a read from one advance the read pointer for the other. + // see https://github.com/cosmos/cosmos-sdk/issues/9566. + ctx.Input = bufio.NewReader(r) return ctx } diff --git a/client/keys/add.go b/client/keys/add.go index 20c142c777b3..1e8783550098 100644 --- a/client/keys/add.go +++ b/client/keys/add.go @@ -83,12 +83,12 @@ the flag --nosort is set. } func runAddCmdPrepare(cmd *cobra.Command, args []string) error { - buf := bufio.NewReader(cmd.InOrStdin()) clientCtx, err := client.GetClientQueryContext(cmd) if err != nil { return err } + buf := bufio.NewReader(clientCtx.Input) return RunAddCmd(clientCtx, cmd, args, buf) } diff --git a/client/keys/add_test.go b/client/keys/add_test.go index aa6f68876a2e..6c8af3867da6 100644 --- a/client/keys/add_test.go +++ b/client/keys/add_test.go @@ -15,6 +15,7 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keyring" "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" + bip39 "github.com/cosmos/go-bip39" ) func Test_runAddCmdBasic(t *testing.T) { @@ -27,7 +28,7 @@ func Test_runAddCmdBasic(t *testing.T) { kb, err := keyring.New(sdk.KeyringServiceName(), keyring.BackendTest, kbHome, mockIn) require.NoError(t, err) - clientCtx := client.Context{}.WithKeyringDir(kbHome) + clientCtx := client.Context{}.WithKeyringDir(kbHome).WithInput(mockIn) ctx := context.WithValue(context.Background(), client.ClientContextKey, &clientCtx) t.Cleanup(func() { @@ -114,3 +115,47 @@ func Test_runAddCmdBasic(t *testing.T) { mockIn.Reset("\n" + password + "\n" + "fail" + "\n") require.Error(t, cmd.ExecuteContext(ctx)) } + +func TestAddRecoverFileBackend(t *testing.T) { + cmd := AddKeyCommand() + cmd.Flags().AddFlagSet(Commands("home").PersistentFlags()) + + mockIn := testutil.ApplyMockIODiscardOutErr(cmd) + kbHome := t.TempDir() + + clientCtx := client.Context{}.WithKeyringDir(kbHome).WithInput(mockIn) + ctx := context.WithValue(context.Background(), client.ClientContextKey, &clientCtx) + + cmd.SetArgs([]string{ + "keyname1", + fmt.Sprintf("--%s=%s", flags.FlagHome, kbHome), + fmt.Sprintf("--%s=%s", cli.OutputFlag, OutputFormatText), + fmt.Sprintf("--%s=%s", flags.FlagKeyAlgorithm, string(hd.Secp256k1Type)), + fmt.Sprintf("--%s=%s", flags.FlagKeyringBackend, keyring.BackendFile), + fmt.Sprintf("--%s", flagRecover), + }) + + keyringPassword := "12345678" + + entropySeed, err := bip39.NewEntropy(mnemonicEntropySize) + require.NoError(t, err) + + mnemonic, err := bip39.NewMnemonic(entropySeed) + require.NoError(t, err) + + mockIn.Reset(fmt.Sprintf("%s\n%s\n%s\n", mnemonic, keyringPassword, keyringPassword)) + require.NoError(t, cmd.ExecuteContext(ctx)) + + kb, err := keyring.New(sdk.KeyringServiceName(), keyring.BackendFile, kbHome, mockIn) + require.NoError(t, err) + + t.Cleanup(func() { + mockIn.Reset(fmt.Sprintf("%s\n%s\n", keyringPassword, keyringPassword)) + _ = kb.Delete("keyname1") + }) + + mockIn.Reset(fmt.Sprintf("%s\n%s\n", keyringPassword, keyringPassword)) + info, err := kb.Key("keyname1") + require.NoError(t, err) + require.Equal(t, "keyname1", info.GetName()) +} diff --git a/client/keys/export.go b/client/keys/export.go index 7e9cb88ed633..13491b5e839a 100644 --- a/client/keys/export.go +++ b/client/keys/export.go @@ -31,11 +31,11 @@ FULLY AWARE OF THE RISKS. If you are unsure, you may want to do some research and export your keys in ASCII-armored encrypted format.`, Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { - buf := bufio.NewReader(cmd.InOrStdin()) clientCtx, err := client.GetClientQueryContext(cmd) if err != nil { return err } + buf := bufio.NewReader(clientCtx.Input) unarmored, _ := cmd.Flags().GetBool(flagUnarmoredHex) unsafe, _ := cmd.Flags().GetBool(flagUnsafe) diff --git a/client/keys/export_test.go b/client/keys/export_test.go index b207a71bb159..7b07bbc6dbd5 100644 --- a/client/keys/export_test.go +++ b/client/keys/export_test.go @@ -1,6 +1,7 @@ package keys import ( + "bufio" "context" "fmt" "testing" @@ -17,55 +18,95 @@ import ( ) func Test_runExportCmd(t *testing.T) { - cmd := ExportKeyCommand() - cmd.Flags().AddFlagSet(Commands("home").PersistentFlags()) - mockIn := testutil.ApplyMockIODiscardOutErr(cmd) - - // Now add a temporary keybase - kbHome := t.TempDir() - - // create a key - kb, err := keyring.New(sdk.KeyringServiceName(), keyring.BackendTest, kbHome, mockIn) - require.NoError(t, err) - t.Cleanup(func() { - kb.Delete("keyname1") // nolint:errcheck - }) - - path := sdk.GetConfig().GetFullFundraiserPath() - _, err = kb.NewAccount("keyname1", testutil.TestMnemonic, "", path, hd.Secp256k1) - require.NoError(t, err) - - // Now enter password - args := []string{ - "keyname1", - fmt.Sprintf("--%s=%s", flags.FlagHome, kbHome), - fmt.Sprintf("--%s=%s", flags.FlagKeyringBackend, keyring.BackendTest), + testCases := []struct { + name string + keyringBackend string + extraArgs []string + userInput string + mustFail bool + expectedOutput string + }{ + { + name: "--unsafe only must fail", + keyringBackend: keyring.BackendTest, + extraArgs: []string{"--unsafe"}, + mustFail: true, + }, + { + name: "--unarmored-hex must fail", + keyringBackend: keyring.BackendTest, + extraArgs: []string{"--unarmored-hex"}, + mustFail: true, + }, + { + name: "--unsafe --unarmored-hex fail with no user confirmation", + keyringBackend: keyring.BackendTest, + extraArgs: []string{"--unsafe", "--unarmored-hex"}, + userInput: "", + mustFail: true, + expectedOutput: "", + }, + { + name: "--unsafe --unarmored-hex succeed", + keyringBackend: keyring.BackendTest, + extraArgs: []string{"--unsafe", "--unarmored-hex"}, + userInput: "y\n", + mustFail: false, + expectedOutput: "2485e33678db4175dc0ecef2d6e1fc493d4a0d7f7ce83324b6ed70afe77f3485\n", + }, + { + name: "file keyring backend properly read password and user confirmation", + keyringBackend: keyring.BackendFile, + extraArgs: []string{"--unsafe", "--unarmored-hex"}, + // first 2 pass for creating the key, then unsafe export confirmation, then unlock keyring pass + userInput: "12345678\n12345678\ny\n12345678\n", + mustFail: false, + expectedOutput: "2485e33678db4175dc0ecef2d6e1fc493d4a0d7f7ce83324b6ed70afe77f3485\n", + }, } - mockIn.Reset("123456789\n123456789\n") - cmd.SetArgs(args) - - clientCtx := client.Context{}. - WithKeyringDir(kbHome). - WithKeyring(kb) - ctx := context.WithValue(context.Background(), client.ClientContextKey, &clientCtx) - - require.NoError(t, cmd.ExecuteContext(ctx)) - - argsUnsafeOnly := append(args, "--unsafe") - cmd.SetArgs(argsUnsafeOnly) - require.Error(t, cmd.ExecuteContext(ctx)) - - argsUnarmoredHexOnly := append(args, "--unarmored-hex") - cmd.SetArgs(argsUnarmoredHexOnly) - require.Error(t, cmd.ExecuteContext(ctx)) - - argsUnsafeUnarmoredHex := append(args, "--unsafe", "--unarmored-hex") - cmd.SetArgs(argsUnsafeUnarmoredHex) - require.Error(t, cmd.ExecuteContext(ctx)) - - mockIn, mockOut := testutil.ApplyMockIO(cmd) - mockIn.Reset("y\n") - require.NoError(t, cmd.ExecuteContext(ctx)) - require.Equal(t, "2485e33678db4175dc0ecef2d6e1fc493d4a0d7f7ce83324b6ed70afe77f3485\n", mockOut.String()) + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + kbHome := t.TempDir() + defaultArgs := []string{ + "keyname1", + fmt.Sprintf("--%s=%s", flags.FlagHome, kbHome), + fmt.Sprintf("--%s=%s", flags.FlagKeyringBackend, tc.keyringBackend), + } + + cmd := ExportKeyCommand() + cmd.Flags().AddFlagSet(Commands("home").PersistentFlags()) + + cmd.SetArgs(append(defaultArgs, tc.extraArgs...)) + mockIn, mockOut := testutil.ApplyMockIO(cmd) + + mockIn.Reset(tc.userInput) + mockInBuf := bufio.NewReader(mockIn) + + // create a key + kb, err := keyring.New(sdk.KeyringServiceName(), tc.keyringBackend, kbHome, bufio.NewReader(mockInBuf)) + require.NoError(t, err) + t.Cleanup(func() { + kb.Delete("keyname1") // nolint:errcheck + }) + + path := sdk.GetConfig().GetFullFundraiserPath() + _, err = kb.NewAccount("keyname1", testutil.TestMnemonic, "", path, hd.Secp256k1) + require.NoError(t, err) + + clientCtx := client.Context{}. + WithKeyringDir(kbHome). + WithKeyring(kb). + WithInput(mockInBuf) + ctx := context.WithValue(context.Background(), client.ClientContextKey, &clientCtx) + + err = cmd.ExecuteContext(ctx) + if tc.mustFail { + require.Error(t, err) + } else { + require.NoError(t, err) + require.Equal(t, tc.expectedOutput, mockOut.String()) + } + }) + } } diff --git a/client/keys/import.go b/client/keys/import.go index 2b7e230654ce..36662a8dd2e6 100644 --- a/client/keys/import.go +++ b/client/keys/import.go @@ -18,11 +18,11 @@ func ImportKeyCommand() *cobra.Command { Long: "Import a ASCII armored private key into the local keybase.", Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { - buf := bufio.NewReader(cmd.InOrStdin()) clientCtx, err := client.GetClientQueryContext(cmd) if err != nil { return err } + buf := bufio.NewReader(clientCtx.Input) bz, err := ioutil.ReadFile(args[1]) if err != nil { diff --git a/client/keys/import_test.go b/client/keys/import_test.go index ea84408c2df5..ac05ed567daa 100644 --- a/client/keys/import_test.go +++ b/client/keys/import_test.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "io/ioutil" + "os" "path/filepath" "testing" @@ -17,25 +18,50 @@ import ( ) func Test_runImportCmd(t *testing.T) { - cmd := ImportKeyCommand() - cmd.Flags().AddFlagSet(Commands("home").PersistentFlags()) - mockIn := testutil.ApplyMockIODiscardOutErr(cmd) + testCases := []struct { + name string + keyringBackend string + userInput string + expectError bool + }{ + { + name: "test backend success", + keyringBackend: keyring.BackendTest, + // key armor passphrase + userInput: "123456789\n", + }, + { + name: "test backend fail with wrong armor pass", + keyringBackend: keyring.BackendTest, + userInput: "987654321\n", + expectError: true, + }, + { + name: "file backend success", + keyringBackend: keyring.BackendFile, + // key armor passphrase + keyring password x2 + userInput: "123456789\n12345678\n12345678\n", + }, + { + name: "file backend fail with wrong armor pass", + keyringBackend: keyring.BackendFile, + userInput: "987654321\n12345678\n12345678\n", + expectError: true, + }, + { + name: "file backend fail with wrong keyring pass", + keyringBackend: keyring.BackendFile, + userInput: "123465789\n12345678\n87654321\n", + expectError: true, + }, + { + name: "file backend fail with no keyring pass", + keyringBackend: keyring.BackendFile, + userInput: "123465789\n", + expectError: true, + }, + } - // Now add a temporary keybase - kbHome := t.TempDir() - kb, err := keyring.New(sdk.KeyringServiceName(), keyring.BackendTest, kbHome, mockIn) - - clientCtx := client.Context{}. - WithKeyringDir(kbHome). - WithKeyring(kb) - ctx := context.WithValue(context.Background(), client.ClientContextKey, &clientCtx) - - require.NoError(t, err) - t.Cleanup(func() { - kb.Delete("keyname1") // nolint:errcheck - }) - - keyfile := filepath.Join(kbHome, "key.asc") armoredKey := `-----BEGIN TENDERMINT PRIVATE KEY----- salt: A790BB721D1C094260EA84F5E5B72289 kdf: bcrypt @@ -45,12 +71,48 @@ HbP+c6JmeJy9JXe2rbbF1QtCX1gLqGcDQPBXiCtFvP7/8wTZtVOPj8vREzhZ9ElO =f3l4 -----END TENDERMINT PRIVATE KEY----- ` - require.NoError(t, ioutil.WriteFile(keyfile, []byte(armoredKey), 0644)) - - mockIn.Reset("123456789\n") - cmd.SetArgs([]string{ - "keyname1", keyfile, - fmt.Sprintf("--%s=%s", flags.FlagKeyringBackend, keyring.BackendTest), - }) - require.NoError(t, cmd.ExecuteContext(ctx)) + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + cmd := ImportKeyCommand() + cmd.Flags().AddFlagSet(Commands("home").PersistentFlags()) + mockIn := testutil.ApplyMockIODiscardOutErr(cmd) + + // Now add a temporary keybase + kbHome := t.TempDir() + kb, err := keyring.New(sdk.KeyringServiceName(), tc.keyringBackend, kbHome, nil) + + clientCtx := client.Context{}. + WithKeyringDir(kbHome). + WithKeyring(kb). + WithInput(mockIn) + ctx := context.WithValue(context.Background(), client.ClientContextKey, &clientCtx) + + require.NoError(t, err) + t.Cleanup(func() { + kb.Delete("keyname1") // nolint:errcheck + }) + + keyfile := filepath.Join(kbHome, "key.asc") + + require.NoError(t, ioutil.WriteFile(keyfile, []byte(armoredKey), 0644)) + + defer func() { + _ = os.RemoveAll(kbHome) + }() + + mockIn.Reset(tc.userInput) + cmd.SetArgs([]string{ + "keyname1", keyfile, + fmt.Sprintf("--%s=%s", flags.FlagKeyringBackend, tc.keyringBackend), + }) + + err = cmd.ExecuteContext(ctx) + if tc.expectError { + require.Error(t, err) + } else { + require.NoError(t, err) + } + }) + } } From 52dd15796c94bce93a04346f14473c5e3d779eb1 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 17 Aug 2021 10:04:42 -0400 Subject: [PATCH 02/98] fix: Fix CLI query tx docs for acc/seq (#9942) (#9951) ## Description ref: user from #validators-verfied channel on Cosmos Discord --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing) - [ ] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) (cherry picked from commit cc1e2ddf221d396cef4e63b967bfd98c0199a86b) Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> --- x/auth/client/cli/query.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/x/auth/client/cli/query.go b/x/auth/client/cli/query.go index c136630c2c6c..b019749bd6b2 100644 --- a/x/auth/client/cli/query.go +++ b/x/auth/client/cli/query.go @@ -187,12 +187,12 @@ $ %s query txs --%s 'message.sender=cosmos1...&message.action=withdraw_delegator func QueryTxCmd() *cobra.Command { cmd := &cobra.Command{ Use: "tx --type=[hash|acc_seq|signature] [hash|acc_seq|signature]", - Short: "Query for a transaction by hash, addr++seq combination or signature in a committed block", + Short: "Query for a transaction by hash, \"/\" combination or comma-separated signatures in a committed block", Long: strings.TrimSpace(fmt.Sprintf(` Example: $ %s query tx -$ %s query tx --%s=%s : -$ %s query tx --%s=%s +$ %s query tx --%s=%s / +$ %s query tx --%s=%s , `, version.AppName, version.AppName, flagType, typeAccSeq, From be188d08fb7ef49d6fd358a36060c5a766e479c0 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 17 Aug 2021 12:06:46 -0400 Subject: [PATCH 03/98] build(deps): bump TM to v0.34.12 (backport #9956) (#9961) --- CHANGELOG.md | 2 +- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ebd2da4a0031..8823a046e2c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,7 +43,6 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [\#9835](https://github.com/cosmos/cosmos-sdk/pull/9835) Moved capability initialization logic to BeginBlocker to fix nondeterminsim issue mentioned in [\#9800](https://github.com/cosmos/cosmos-sdk/issues/9800). Applications must now include the capability module in their BeginBlocker order before any module that uses capabilities gets run. * [\#9201](https://github.com/cosmos/cosmos-sdk/pull/9201) Fixed ` init --recover` flag. - ### API Breaking Changes * [\#9835](https://github.com/cosmos/cosmos-sdk/pull/9835) The `InitializeAndSeal` API has not changed, however it no longer initializes the in-memory state. `InitMemStore` has been introduced to serve this function, which will be called either in `InitChain` or `BeginBlock` (whichever is first after app start). Nodes may run this version on a network running 0.42.x, however, they must update their app.go files to include the capability module in their begin blockers. @@ -60,6 +59,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Improvements +* (deps) [\#9956](https://github.com/cosmos/cosmos-sdk/pull/9956) Bump Tendermint to [v0.34.12](https://github.com/tendermint/tendermint/releases/tag/v0.34.12). * (cli) [\#9717](https://github.com/cosmos/cosmos-sdk/pull/9717) Added CLI flag `--output json/text` to `tx` cli commands. ### Bug Fixes diff --git a/go.mod b/go.mod index dd54829612b6..c671c7a1845d 100644 --- a/go.mod +++ b/go.mod @@ -48,7 +48,7 @@ require ( github.com/tendermint/btcd v0.1.1 github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 github.com/tendermint/go-amino v0.16.0 - github.com/tendermint/tendermint v0.34.11 + github.com/tendermint/tendermint v0.34.12 github.com/tendermint/tm-db v0.6.4 golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad golang.org/x/sys v0.0.0-20210510120138-977fb7262007 // indirect diff --git a/go.sum b/go.sum index 359c7955684f..939100f8bff4 100644 --- a/go.sum +++ b/go.sum @@ -566,8 +566,8 @@ github.com/tendermint/tendermint v0.34.0-rc4/go.mod h1:yotsojf2C1QBOw4dZrTcxbyxm github.com/tendermint/tendermint v0.34.0-rc6/go.mod h1:ugzyZO5foutZImv0Iyx/gOFCX6mjJTgbLHTwi17VDVg= github.com/tendermint/tendermint v0.34.0/go.mod h1:Aj3PIipBFSNO21r+Lq3TtzQ+uKESxkbA3yo/INM4QwQ= github.com/tendermint/tendermint v0.34.10/go.mod h1:aeHL7alPh4uTBIJQ8mgFEE8VwJLXI1VD3rVOmH2Mcy0= -github.com/tendermint/tendermint v0.34.11 h1:q1Yh76oG4QbS07xhmIJh5iAE0fYpJ8P8YKYtjnWfJRY= -github.com/tendermint/tendermint v0.34.11/go.mod h1:aeHL7alPh4uTBIJQ8mgFEE8VwJLXI1VD3rVOmH2Mcy0= +github.com/tendermint/tendermint v0.34.12 h1:m+kUYNhONedhJfHmHG8lqsdZvbR5t6vmhaok1yXjpKg= +github.com/tendermint/tendermint v0.34.12/go.mod h1:aeHL7alPh4uTBIJQ8mgFEE8VwJLXI1VD3rVOmH2Mcy0= github.com/tendermint/tm-db v0.6.2/go.mod h1:GYtQ67SUvATOcoY8/+x6ylk8Qo02BQyLrAs+yAcLvGI= github.com/tendermint/tm-db v0.6.3/go.mod h1:lfA1dL9/Y/Y8wwyPp2NMLyn5P5Ptr/gvDFNWtrCWSf8= github.com/tendermint/tm-db v0.6.4 h1:3N2jlnYQkXNQclQwd/eKV/NzlqPlfK21cpRRIx80XXQ= From f2917ebb5f0b2b3ea34bcd243b6c1faffffdb253 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 9 Sep 2021 12:40:16 -0400 Subject: [PATCH 04/98] perf: Remove telemetry from wrappings of store (backport #10077) (#10084) --- CHANGELOG.md | 4 ++++ store/cachekv/store.go | 2 -- store/gaskv/store.go | 4 ---- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8823a046e2c5..9aac0407f8a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,10 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## Unreleased +### API Breaking Changes + +* [\#10077](https://github.com/cosmos/cosmos-sdk/pull/10077) Remove telemetry on `GasKV` and `CacheKV` store Get/Set operations, significantly improving their performance. + ## [v0.42.9](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.42.9) - 2021-08-04 ### Bug Fixes diff --git a/store/cachekv/store.go b/store/cachekv/store.go index cd7087c5dc7b..f978c23bd5e3 100644 --- a/store/cachekv/store.go +++ b/store/cachekv/store.go @@ -55,7 +55,6 @@ func (store *Store) GetStoreType() types.StoreType { func (store *Store) Get(key []byte) (value []byte) { store.mtx.Lock() defer store.mtx.Unlock() - defer telemetry.MeasureSince(time.Now(), "store", "cachekv", "get") types.AssertValidKey(key) @@ -74,7 +73,6 @@ func (store *Store) Get(key []byte) (value []byte) { func (store *Store) Set(key []byte, value []byte) { store.mtx.Lock() defer store.mtx.Unlock() - defer telemetry.MeasureSince(time.Now(), "store", "cachekv", "set") types.AssertValidKey(key) types.AssertValidValue(value) diff --git a/store/gaskv/store.go b/store/gaskv/store.go index 06b55f5ead48..812d08972011 100644 --- a/store/gaskv/store.go +++ b/store/gaskv/store.go @@ -35,8 +35,6 @@ func (gs *Store) GetStoreType() types.StoreType { // Implements KVStore. func (gs *Store) Get(key []byte) (value []byte) { - defer telemetry.MeasureSince(time.Now(), "store", "gaskv", "get") - gs.gasMeter.ConsumeGas(gs.gasConfig.ReadCostFlat, types.GasReadCostFlatDesc) value = gs.parent.Get(key) @@ -48,8 +46,6 @@ func (gs *Store) Get(key []byte) (value []byte) { // Implements KVStore. func (gs *Store) Set(key []byte, value []byte) { - defer telemetry.MeasureSince(time.Now(), "store", "gaskv", "set") - types.AssertValidKey(key) types.AssertValidValue(value) gs.gasMeter.ConsumeGas(gs.gasConfig.WriteCostFlat, types.GasWriteCostFlatDesc) From 1af4f4998f8484863be9b62874d62cd31fc84cd1 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 10 Sep 2021 13:24:01 +0200 Subject: [PATCH 05/98] docs: update to v0.44 version tag (#10069) (#10097) (cherry picked from commit d6c30175d95f242aaa0f87857646651935653e4e) # Conflicts: # docs/.vuepress/enhanceApp.js Co-authored-by: Ryan Christoffersen <12519942+ryanchristo@users.noreply.github.com> --- docs/.vuepress/config.js | 4 ++-- docs/.vuepress/enhanceApp.js | 8 ++++++++ docs/versions | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 docs/.vuepress/enhanceApp.js diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 223d2d91aa8b..e02f734a8e9c 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -47,8 +47,8 @@ module.exports = { "key": "v0.42" }, { - "label": "v0.43", - "key": "v0.43" + "label": "v0.44", + "key": "v0.44" }, { "label": "master", diff --git a/docs/.vuepress/enhanceApp.js b/docs/.vuepress/enhanceApp.js new file mode 100644 index 000000000000..36cee6366fc8 --- /dev/null +++ b/docs/.vuepress/enhanceApp.js @@ -0,0 +1,8 @@ +export default ({ router }) => { + router.addRoutes([ + { path: '/master/spec/*', redirect: '/master/modules/' }, + { path: '/master/spec/governance/', redirect: '/master/modules/gov/' }, + { path: '/v0.41/', redirect: '/v0.42/' }, + { path: '/v0.43/', redirect: '/v0.44/' }, + ]) +} diff --git a/docs/versions b/docs/versions index d01230080817..aec06db250e3 100644 --- a/docs/versions +++ b/docs/versions @@ -1,4 +1,4 @@ master master launchpad/backports v0.39 release/v0.42.x v0.42 -release/v0.43.x v0.43 +release/v0.44.x v0.44 From 16e6b086b34e41c598f8f3f086f64f9da1e9660a Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 15 Sep 2021 12:29:05 -0400 Subject: [PATCH 06/98] fix!: update ABCI query to use request height (backport #9879) (#10144) --- CHANGELOG.md | 4 +++ client/grpc_query.go | 5 ++-- client/query.go | 14 ++++++++-- client/query_test.go | 62 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 81 insertions(+), 4 deletions(-) create mode 100644 client/query_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 9aac0407f8a1..009964cc8b43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,10 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## Unreleased +### Client Breaking Changes + +* [\#9879](https://github.com/cosmos/cosmos-sdk/pull/9879) Modify ABCI Queries to use `abci.QueryRequest` Height field if it is non-zero, otherwise continue using context height. + ### API Breaking Changes * [\#10077](https://github.com/cosmos/cosmos-sdk/pull/10077) Remove telemetry on `GasKV` and `CacheKV` store Get/Set operations, significantly improving their performance. diff --git a/client/grpc_query.go b/client/grpc_query.go index 011523944c54..cbaba73caa2a 100644 --- a/client/grpc_query.go +++ b/client/grpc_query.go @@ -112,8 +112,9 @@ func RunGRPCQuery(ctx Context, grpcCtx gocontext.Context, method string, req int } abciReq := abci.RequestQuery{ - Path: method, - Data: reqBz, + Path: method, + Data: reqBz, + Height: ctx.Height, } abciRes, err := ctx.QueryABCI(abciReq) diff --git a/client/query.go b/client/query.go index 85749a739a87..6c6f16b485e4 100644 --- a/client/query.go +++ b/client/query.go @@ -50,7 +50,9 @@ func (ctx Context) QueryStore(key tmbytes.HexBytes, storeName string) ([]byte, i } // QueryABCI performs a query to a Tendermint node with the provide RequestQuery. -// It returns the ResultQuery obtained from the query. +// It returns the ResultQuery obtained from the query. The height used to perform +// the query is the RequestQuery Height if it is non-zero, otherwise the context +// height is used. func (ctx Context) QueryABCI(req abci.RequestQuery) (abci.ResponseQuery, error) { return ctx.queryABCI(req) } @@ -71,8 +73,16 @@ func (ctx Context) queryABCI(req abci.RequestQuery) (abci.ResponseQuery, error) return abci.ResponseQuery{}, err } + var queryHeight int64 + if req.Height != 0 { + queryHeight = req.Height + } else { + // fallback on the context height + queryHeight = ctx.Height + } + opts := rpcclient.ABCIQueryOptions{ - Height: ctx.Height, + Height: queryHeight, Prove: req.Prove, } diff --git a/client/query_test.go b/client/query_test.go new file mode 100644 index 000000000000..a8e2725860ec --- /dev/null +++ b/client/query_test.go @@ -0,0 +1,62 @@ +// +build norace + +package client_test + +import ( + "fmt" + + abci "github.com/tendermint/tendermint/abci/types" + + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" +) + +func (s *IntegrationTestSuite) TestQueryABCIHeight() { + testCases := []struct { + name string + reqHeight int64 + ctxHeight int64 + expHeight int64 + }{ + { + name: "non zero request height", + reqHeight: 3, + ctxHeight: 1, // query at height 1 or 2 would cause an error + expHeight: 3, + }, + { + name: "empty request height - use context height", + reqHeight: 0, + ctxHeight: 3, + expHeight: 3, + }, + { + name: "empty request height and context height - use latest height", + reqHeight: 0, + ctxHeight: 0, + expHeight: 4, + }, + } + + for _, tc := range testCases { + s.Run(tc.name, func() { + s.network.WaitForHeight(tc.expHeight) + + val := s.network.Validators[0] + + clientCtx := val.ClientCtx + clientCtx = clientCtx.WithHeight(tc.ctxHeight) + + req := abci.RequestQuery{ + Path: fmt.Sprintf("store/%s/key", banktypes.StoreKey), + Height: tc.reqHeight, + Data: append(banktypes.BalancesPrefix, val.Address.Bytes()...), + Prove: true, + } + + res, err := clientCtx.QueryABCI(req) + s.Require().NoError(err) + + s.Require().Equal(tc.expHeight, res.Height) + }) + } +} From 1496ba71292d5d644c9413ccc919af6134969e18 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 16 Sep 2021 23:42:43 +0200 Subject: [PATCH 07/98] fix: use keyring in config for add-genesis-account cmd (backport #9969) (#10065) * fix: use keyring in config for add-genesis-account cmd (#9969) ## Description ref: #9644 +use the keyring backend (if specified) in the binary config for the add-genesis-account command +update existing test to check for the case of keyring in config --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing) - [ ] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) (cherry picked from commit cdf6196a7e6b4fa635dc6169949a0c9d4d61af8f) # Conflicts: # simapp/simd/cmd/genaccounts.go * fix conflicts * goimport file * add changelog entry Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com> Co-authored-by: technicallyty <48813565+tytech3@users.noreply.github.com> Co-authored-by: Robert Zaremba --- CHANGELOG.md | 4 +++ simapp/simd/cmd/genaccounts.go | 21 ++++++----- simapp/simd/cmd/genaccounts_test.go | 55 ++++++++++++++++++++--------- 3 files changed, 55 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 009964cc8b43..a2f8c2a75693 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,10 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## Unreleased +### Bug Fixes + +* [\#9969](https://github.com/cosmos/cosmos-sdk/pull/9969) fix: use keyring in config for add-genesis-account cmd. + ### Client Breaking Changes * [\#9879](https://github.com/cosmos/cosmos-sdk/pull/9879) Modify ABCI Queries to use `abci.QueryRequest` Height field if it is non-zero, otherwise continue using context height. diff --git a/simapp/simd/cmd/genaccounts.go b/simapp/simd/cmd/genaccounts.go index 57de144c36b4..7bf3d370f7bf 100644 --- a/simapp/simd/cmd/genaccounts.go +++ b/simapp/simd/cmd/genaccounts.go @@ -48,22 +48,25 @@ contain valid denominations. Accounts may optionally be supplied with vesting pa config.SetRoot(clientCtx.HomeDir) + var kr keyring.Keyring addr, err := sdk.AccAddressFromBech32(args[0]) if err != nil { inBuf := bufio.NewReader(cmd.InOrStdin()) keyringBackend, _ := cmd.Flags().GetString(flags.FlagKeyringBackend) - - // attempt to lookup address from Keybase if no address was provided - kb, err := keyring.New(sdk.KeyringServiceName(), keyringBackend, clientCtx.HomeDir, inBuf) - if err != nil { - return err + if keyringBackend != "" && clientCtx.Keyring == nil { + var err error + kr, err = keyring.New(sdk.KeyringServiceName(), keyringBackend, clientCtx.HomeDir, inBuf) + if err != nil { + return err + } + } else { + kr = clientCtx.Keyring } - info, err := kb.Key(args[0]) + info, err := kr.Key(args[0]) if err != nil { - return fmt.Errorf("failed to get address from Keybase: %w", err) + return fmt.Errorf("failed to get address from Keyring: %w", err) } - addr = info.GetAddress() } @@ -148,7 +151,7 @@ contain valid denominations. Accounts may optionally be supplied with vesting pa appState[authtypes.ModuleName] = authGenStateBz - bankGenState := banktypes.GetGenesisStateFromAppState(depCdc, appState) + bankGenState := banktypes.GetGenesisStateFromAppState(cdc, appState) bankGenState.Balances = append(bankGenState.Balances, balances) bankGenState.Balances = banktypes.SanitizeGenesisBalances(bankGenState.Balances) bankGenState.Supply = bankGenState.Supply.Add(balances.Coins...) diff --git a/simapp/simd/cmd/genaccounts_test.go b/simapp/simd/cmd/genaccounts_test.go index 9efc5343e7a3..813bf4b88e92 100644 --- a/simapp/simd/cmd/genaccounts_test.go +++ b/simapp/simd/cmd/genaccounts_test.go @@ -3,6 +3,9 @@ package cmd_test import ( "context" "fmt" + "github.com/cosmos/cosmos-sdk/crypto/hd" + "github.com/cosmos/cosmos-sdk/crypto/keyring" + sdk "github.com/cosmos/cosmos-sdk/types" "testing" "github.com/spf13/viper" @@ -25,28 +28,39 @@ var testMbm = module.NewBasicManager(genutil.AppModuleBasic{}) func TestAddGenesisAccountCmd(t *testing.T) { _, _, addr1 := testdata.KeyTestPubAddr() tests := []struct { - name string - addr string - denom string - expectErr bool + name string + addr string + denom string + withKeyring bool + expectErr bool }{ { - name: "invalid address", - addr: "", - denom: "1000atom", - expectErr: true, + name: "invalid address", + addr: "", + denom: "1000atom", + withKeyring: false, + expectErr: true, }, { - name: "valid address", - addr: addr1.String(), - denom: "1000atom", - expectErr: false, + name: "valid address", + addr: addr1.String(), + denom: "1000atom", + withKeyring: false, + expectErr: false, }, { - name: "multiple denoms", - addr: addr1.String(), - denom: "1000atom, 2000stake", - expectErr: false, + name: "multiple denoms", + addr: addr1.String(), + denom: "1000atom, 2000stake", + withKeyring: false, + expectErr: false, + }, + { + name: "with keyring", + addr: "ser", + denom: "1000atom", + withKeyring: true, + expectErr: false, }, } @@ -65,6 +79,15 @@ func TestAddGenesisAccountCmd(t *testing.T) { serverCtx := server.NewContext(viper.New(), cfg, logger) clientCtx := client.Context{}.WithJSONMarshaler(appCodec).WithHomeDir(home) + if tc.withKeyring { + path := hd.CreateHDPath(118, 0, 0).String() + kr, err := keyring.New(sdk.KeyringServiceName(), keyring.BackendMemory, home, nil) + require.NoError(t, err) + _, _, err = kr.NewMnemonic(tc.addr, keyring.English, path, hd.Secp256k1) + require.NoError(t, err) + clientCtx = clientCtx.WithKeyring(kr) + } + ctx := context.Background() ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx) ctx = context.WithValue(ctx, server.ServerContextKey, serverCtx) From 2e871ebf5172911c11fb1b92b0612b0a85a7250d Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 17 Sep 2021 01:29:41 +0200 Subject: [PATCH 08/98] build(deps): bump github.com/tendermint/tendermint from 0.34.12 to 0.34.13 (backport #10106) (#10107) * build(deps): bump github.com/tendermint/tendermint (#10106) (cherry picked from commit 8ee5e50d8bc6b2fe601241a9fe6c65b43154bc15) * fix go.sum Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Robert Zaremba --- go.mod | 3 +-- go.sum | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 75 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index c671c7a1845d..e39b694d2c76 100644 --- a/go.mod +++ b/go.mod @@ -48,10 +48,9 @@ require ( github.com/tendermint/btcd v0.1.1 github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 github.com/tendermint/go-amino v0.16.0 - github.com/tendermint/tendermint v0.34.12 + github.com/tendermint/tendermint v0.34.13 github.com/tendermint/tm-db v0.6.4 golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad - golang.org/x/sys v0.0.0-20210510120138-977fb7262007 // indirect google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f google.golang.org/grpc v1.37.0 google.golang.org/protobuf v1.26.0 diff --git a/go.sum b/go.sum index 939100f8bff4..558eeb5c6041 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,4 @@ +bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= @@ -10,6 +11,9 @@ cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqCl cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= @@ -19,6 +23,11 @@ github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.5.0 h1:Elr9Wn+sGKPlkaBvwu4mTrxtmOp3F3yV9qhaHbXGjwU= +github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= @@ -27,6 +36,8 @@ github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrd github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/Workiva/go-datastructures v1.0.52 h1:PLSK6pwn8mYdaoaCZEMsXBpBotr4HHn9abU0yMQt0NI= github.com/Workiva/go-datastructures v1.0.52/go.mod h1:Z+F2Rca0qCsVYDS8z7bAGm8f3UkzuWYS/oBZz5a7VVA= +github.com/adlio/schema v1.1.13 h1:LeNMVg5Z1FX+Qgz8tJUijBLRdcpbFUElz+d1489On98= +github.com/adlio/schema v1.1.13/go.mod h1:L5Z7tw+7lRK1Fnpi/LT/ooCP1elkXn0krMWBQHUhEDE= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -53,6 +64,7 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= @@ -71,12 +83,15 @@ github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= +github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= @@ -87,6 +102,10 @@ github.com/confio/ics23/go v0.0.0-20200817220745-f173e6211efb/go.mod h1:E45Nqnlp github.com/confio/ics23/go v0.6.3/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/confio/ics23/go v0.6.6 h1:pkOy18YxxJ/r0XFDCnrl4Bjv6h4LkBSpLS6F38mrKL8= github.com/confio/ics23/go v0.6.6/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= +github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= +github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.1.0 h1:UFRRY5JemiAhPZrr/uE0n8fMTLcZsUvySPr1+D7pgr8= +github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -95,6 +114,7 @@ github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= @@ -115,6 +135,7 @@ github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwc 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/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU= github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -133,6 +154,10 @@ github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUn github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= @@ -159,6 +184,7 @@ github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8 github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= @@ -178,6 +204,7 @@ github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -247,6 +274,7 @@ github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.1/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= @@ -331,9 +359,12 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxv 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.1/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/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/libp2p/go-buffer-pool v0.0.2 h1:QNK2iAFa8gjAe1SPz6mHSMuCcjs+X1wlHzeOSqcmlfs= github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= @@ -365,10 +396,12 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= 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/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -399,6 +432,16 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= +github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.2 h1:opHZMaswlyxz1OuGpBE53Dwe4/xF7EZTY0A2L/FpCOg= +github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= +github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -407,6 +450,8 @@ github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxS github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= +github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= @@ -499,10 +544,15 @@ github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZ github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa h1:0U2s5loxrTy6/VgfVoLuVLFJcURKLH49ie0zSch7gh4= github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= 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.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= @@ -552,6 +602,7 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca h1:Ld/zXl5t4+D69SiV4JoN7kkfvJdOWlPpfxrzxpLMoUk= github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= @@ -566,8 +617,8 @@ github.com/tendermint/tendermint v0.34.0-rc4/go.mod h1:yotsojf2C1QBOw4dZrTcxbyxm github.com/tendermint/tendermint v0.34.0-rc6/go.mod h1:ugzyZO5foutZImv0Iyx/gOFCX6mjJTgbLHTwi17VDVg= github.com/tendermint/tendermint v0.34.0/go.mod h1:Aj3PIipBFSNO21r+Lq3TtzQ+uKESxkbA3yo/INM4QwQ= github.com/tendermint/tendermint v0.34.10/go.mod h1:aeHL7alPh4uTBIJQ8mgFEE8VwJLXI1VD3rVOmH2Mcy0= -github.com/tendermint/tendermint v0.34.12 h1:m+kUYNhONedhJfHmHG8lqsdZvbR5t6vmhaok1yXjpKg= -github.com/tendermint/tendermint v0.34.12/go.mod h1:aeHL7alPh4uTBIJQ8mgFEE8VwJLXI1VD3rVOmH2Mcy0= +github.com/tendermint/tendermint v0.34.13 h1:fu+tsHudbOr5PvepjH0q47Jae59hQAvn3IqAHv2EbC8= +github.com/tendermint/tendermint v0.34.13/go.mod h1:6RVVRBqwtKhA+H59APKumO+B7Nye4QXSFc6+TYxAxCI= github.com/tendermint/tm-db v0.6.2/go.mod h1:GYtQ67SUvATOcoY8/+x6ylk8Qo02BQyLrAs+yAcLvGI= github.com/tendermint/tm-db v0.6.3/go.mod h1:lfA1dL9/Y/Y8wwyPp2NMLyn5P5Ptr/gvDFNWtrCWSf8= github.com/tendermint/tm-db v0.6.4 h1:3N2jlnYQkXNQclQwd/eKV/NzlqPlfK21cpRRIx80XXQ= @@ -579,6 +630,8 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -665,6 +718,7 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR 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-20190813141303-74dc4d7220e7/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-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= @@ -673,8 +727,10 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f h1:w6wWR0H+nyVpbSAQbzVEIACVyr/h8l/BEkY6Sokc7Eg= +golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= 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= @@ -703,15 +759,18 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/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-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -724,20 +783,27 @@ golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7w 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-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/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-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221 h1:/ZHdbVpdR/jk3g30/d4yUL0JU9kksj8+F/bnQUVLGDM= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210903071746-97244b99971b h1:3Dq0eVHn0uaQJmPO+/aYPI/fRMqdrVDbu7MQcku54gg= +golang.org/x/sys v0.0.0-20210903071746-97244b99971b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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= @@ -846,6 +912,7 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= 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= From a7e5071f320480e8e6a858d937562ecddbae1a69 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 17 Sep 2021 02:22:07 +0200 Subject: [PATCH 09/98] perf: Make CacheKV store interleaved iterator and insertion not O(n^2) (backport #10026) (#10114) * perf: Make CacheKV store interleaved iterator and insertion not O(n^2) (#10026) (cherry picked from commit 28bf2c124b3e3ddd8aed1999e6798b5d4d649940) # Conflicts: # CHANGELOG.md # store/cachekv/store.go * Fix merge conflict * fix changelog Co-authored-by: Dev Ojha Co-authored-by: ValarDragon Co-authored-by: Robert Zaremba --- CHANGELOG.md | 4 ++ store/cachekv/memiterator.go | 101 ++++++++--------------------------- store/cachekv/store.go | 94 +++++++++++++++++++------------- 3 files changed, 82 insertions(+), 117 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a2f8c2a75693..a4171242f9d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,10 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## Unreleased +### Improvements + +* (store) [\#10026](https://github.com/cosmos/cosmos-sdk/pull/10026) Improve CacheKVStore datastructures / algorithms, to no longer take O(N^2) time when interleaving iterators and insertions. + ### Bug Fixes * [\#9969](https://github.com/cosmos/cosmos-sdk/pull/9969) fix: use keyring in config for add-genesis-account cmd. diff --git a/store/cachekv/memiterator.go b/store/cachekv/memiterator.go index b197ac141660..0a4bc57a6406 100644 --- a/store/cachekv/memiterator.go +++ b/store/cachekv/memiterator.go @@ -1,107 +1,50 @@ package cachekv import ( - "errors" - dbm "github.com/tendermint/tm-db" - "github.com/cosmos/cosmos-sdk/types/kv" + "github.com/cosmos/cosmos-sdk/store/types" ) // Iterates over iterKVCache items. // if key is nil, means it was deleted. // Implements Iterator. type memIterator struct { - start, end []byte - items []*kv.Pair - ascending bool -} - -func newMemIterator(start, end []byte, items *kv.List, ascending bool) *memIterator { - itemsInDomain := make([]*kv.Pair, 0, items.Len()) - - var entered bool - - for e := items.Front(); e != nil; e = e.Next() { - item := e.Value - if !dbm.IsKeyInDomain(item.Key, start, end) { - if entered { - break - } - - continue - } - - itemsInDomain = append(itemsInDomain, item) - entered = true - } + types.Iterator - return &memIterator{ - start: start, - end: end, - items: itemsInDomain, - ascending: ascending, - } + deleted map[string]struct{} } -func (mi *memIterator) Domain() ([]byte, []byte) { - return mi.start, mi.end -} +func newMemIterator(start, end []byte, items *dbm.MemDB, deleted map[string]struct{}, ascending bool) *memIterator { + var iter types.Iterator + var err error -func (mi *memIterator) Valid() bool { - return len(mi.items) > 0 -} + if ascending { + iter, err = items.Iterator(start, end) + } else { + iter, err = items.ReverseIterator(start, end) + } -func (mi *memIterator) assertValid() { - if err := mi.Error(); err != nil { + if err != nil { panic(err) } -} -func (mi *memIterator) Next() { - mi.assertValid() - - if mi.ascending { - mi.items = mi.items[1:] - } else { - mi.items = mi.items[:len(mi.items)-1] + newDeleted := make(map[string]struct{}) + for k, v := range deleted { + newDeleted[k] = v } -} -func (mi *memIterator) Key() []byte { - mi.assertValid() + return &memIterator{ + Iterator: iter, - if mi.ascending { - return mi.items[0].Key + deleted: newDeleted, } - - return mi.items[len(mi.items)-1].Key } func (mi *memIterator) Value() []byte { - mi.assertValid() - - if mi.ascending { - return mi.items[0].Value - } - - return mi.items[len(mi.items)-1].Value -} - -func (mi *memIterator) Close() error { - mi.start = nil - mi.end = nil - mi.items = nil - - return nil -} - -// Error returns an error if the memIterator is invalid defined by the Valid -// method. -func (mi *memIterator) Error() error { - if !mi.Valid() { - return errors.New("invalid memIterator") + key := mi.Iterator.Key() + if _, ok := mi.deleted[string(key)]; ok { + return nil } - - return nil + return mi.Iterator.Value() } diff --git a/store/cachekv/store.go b/store/cachekv/store.go index f978c23bd5e3..2544e18c2ae9 100644 --- a/store/cachekv/store.go +++ b/store/cachekv/store.go @@ -20,17 +20,17 @@ import ( // If value is nil but deleted is false, it means the parent doesn't have the // key. (No need to delete upon Write()) type cValue struct { - value []byte - deleted bool - dirty bool + value []byte + dirty bool } // Store wraps an in-memory cache around an underlying types.KVStore. type Store struct { mtx sync.Mutex cache map[string]*cValue + deleted map[string]struct{} unsortedCache map[string]struct{} - sortedCache *kv.List // always ascending sorted + sortedCache *dbm.MemDB // always ascending sorted parent types.KVStore } @@ -40,8 +40,9 @@ var _ types.CacheKVStore = (*Store)(nil) func NewStore(parent types.KVStore) *Store { return &Store{ cache: make(map[string]*cValue), + deleted: make(map[string]struct{}), unsortedCache: make(map[string]struct{}), - sortedCache: kv.NewList(), + sortedCache: dbm.NewMemDB(), parent: parent, } } @@ -120,7 +121,7 @@ func (store *Store) Write() { cacheValue := store.cache[key] switch { - case cacheValue.deleted: + case store.isDeleted(key): store.parent.Delete([]byte(key)) case cacheValue.value == nil: // Skip, it already doesn't exist in parent. @@ -131,8 +132,9 @@ func (store *Store) Write() { // Clear the cache store.cache = make(map[string]*cValue) + store.deleted = make(map[string]struct{}) store.unsortedCache = make(map[string]struct{}) - store.sortedCache = kv.NewList() + store.sortedCache = dbm.NewMemDB() } // CacheWrap implements CacheWrapper. @@ -171,7 +173,7 @@ func (store *Store) iterator(start, end []byte, ascending bool) types.Iterator { } store.dirtyItems(start, end) - cache = newMemIterator(start, end, store.sortedCache, ascending) + cache = newMemIterator(start, end, store.sortedCache, store.deleted, ascending) return newCacheMergeIterator(parent, cache, ascending) } @@ -180,7 +182,7 @@ func (store *Store) iterator(start, end []byte, ascending bool) types.Iterator { // from string -> []byte to speed up operations, it is not meant // to be used generally, but for a specific pattern to check for available // keys within a domain. -func strToByte(s string) []byte { +func strToBytes(s string) []byte { var b []byte hdr := (*reflect.SliceHeader)(unsafe.Pointer(&b)) hdr.Cap = len(s) @@ -200,16 +202,33 @@ func byteSliceToStr(b []byte) string { // Constructs a slice of dirty items, to use w/ memIterator. func (store *Store) dirtyItems(start, end []byte) { - unsorted := make([]*kv.Pair, 0) - n := len(store.unsortedCache) - for key := range store.unsortedCache { - if dbm.IsKeyInDomain(strToByte(key), start, end) { + unsorted := make([]*kv.Pair, 0) + // If the unsortedCache is too big, its costs too much to determine + // whats in the subset we are concerned about. + // If you are interleaving iterator calls with writes, this can easily become an + // O(N^2) overhead. + // Even without that, too many range checks eventually becomes more expensive + // than just not having the cache. + if n >= 1024 { + for key := range store.unsortedCache { cacheValue := store.cache[key] unsorted = append(unsorted, &kv.Pair{Key: []byte(key), Value: cacheValue.value}) } + } else { + // else do a linear scan to determine if the unsorted pairs are in the pool. + for key := range store.unsortedCache { + if dbm.IsKeyInDomain(strToBytes(key), start, end) { + cacheValue := store.cache[key] + unsorted = append(unsorted, &kv.Pair{Key: []byte(key), Value: cacheValue.value}) + } + } } + store.clearUnsortedCacheSubset(unsorted) +} +func (store *Store) clearUnsortedCacheSubset(unsorted []*kv.Pair) { + n := len(store.unsortedCache) if len(unsorted) == n { // This pattern allows the Go compiler to emit the map clearing idiom for the entire map. for key := range store.unsortedCache { delete(store.unsortedCache, key) @@ -219,32 +238,21 @@ func (store *Store) dirtyItems(start, end []byte) { delete(store.unsortedCache, byteSliceToStr(kv.Key)) } } - sort.Slice(unsorted, func(i, j int) bool { return bytes.Compare(unsorted[i].Key, unsorted[j].Key) < 0 }) - for e := store.sortedCache.Front(); e != nil && len(unsorted) != 0; { - uitem := unsorted[0] - sitem := e.Value - comp := bytes.Compare(uitem.Key, sitem.Key) - - switch comp { - case -1: - unsorted = unsorted[1:] - - store.sortedCache.InsertBefore(uitem, e) - case 1: - e = e.Next() - case 0: - unsorted = unsorted[1:] - e.Value = uitem - e = e.Next() + for _, item := range unsorted { + if item.Value == nil { + // deleted element, tracked by store.deleted + // setting arbitrary value + store.sortedCache.Set(item.Key, []byte{}) + continue + } + err := store.sortedCache.Set(item.Key, item.Value) + if err != nil { + panic(err) } - } - - for _, kvp := range unsorted { - store.sortedCache.PushBack(kvp) } } @@ -253,12 +261,22 @@ func (store *Store) dirtyItems(start, end []byte) { // Only entrypoint to mutate store.cache. func (store *Store) setCacheValue(key, value []byte, deleted bool, dirty bool) { - store.cache[string(key)] = &cValue{ - value: value, - deleted: deleted, - dirty: dirty, + keyStr := byteSliceToStr(key) + store.cache[keyStr] = &cValue{ + value: value, + dirty: dirty, + } + if deleted { + store.deleted[keyStr] = struct{}{} + } else { + delete(store.deleted, keyStr) } if dirty { store.unsortedCache[string(key)] = struct{}{} } } + +func (store *Store) isDeleted(key string) bool { + _, ok := store.deleted[key] + return ok +} From a062a5ab9cee647679a9c7a5192fe60736678b7b Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 17 Sep 2021 09:47:56 +0200 Subject: [PATCH 10/98] chore: bump IAVL version (backport #10040) (#10186) * chore: bump IAVL version (#10040) * chore: bump IAVL version * test master * update IAVL version * adding missing go.sum entry * adding missing entries * fix go.sum * clear go.sum * fixing go.sum Co-authored-by: marbar3778 (cherry picked from commit 693ffb130ec7f76b212bb4625e50db4ad8be4df3) * add changelog update * tidy go.mod Co-authored-by: Robert Zaremba --- CHANGELOG.md | 1 + go.mod | 4 ++-- go.sum | 5 ++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4171242f9d9..aafa5ef067df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Improvements * (store) [\#10026](https://github.com/cosmos/cosmos-sdk/pull/10026) Improve CacheKVStore datastructures / algorithms, to no longer take O(N^2) time when interleaving iterators and insertions. +* (store) [\#10040](https://github.com/cosmos/cosmos-sdk/pull/10040) Bump IAVL to v0.17.1 which includes performance improvements on a batch load. ### Bug Fixes diff --git a/go.mod b/go.mod index e39b694d2c76..dcae062fd368 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/btcsuite/btcutil v1.0.2 github.com/confio/ics23/go v0.6.6 github.com/cosmos/go-bip39 v1.0.0 - github.com/cosmos/iavl v0.16.0 + github.com/cosmos/iavl v0.17.1 github.com/cosmos/ledger-cosmos-go v0.11.1 github.com/dgraph-io/ristretto v0.0.3 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect @@ -52,7 +52,7 @@ require ( github.com/tendermint/tm-db v0.6.4 golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f - google.golang.org/grpc v1.37.0 + google.golang.org/grpc v1.40.0 google.golang.org/protobuf v1.26.0 gopkg.in/ini.v1 v1.61.0 // indirect gopkg.in/yaml.v2 v2.4.0 diff --git a/go.sum b/go.sum index 558eeb5c6041..b48ef0649559 100644 --- a/go.sum +++ b/go.sum @@ -123,8 +123,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/iavl v0.15.0-rc3.0.20201009144442-230e9bdf52cd/go.mod h1:3xOIaNNX19p0QrX0VqWa6voPRoJRGGYtny+DH8NEPvE= github.com/cosmos/iavl v0.15.0-rc5/go.mod h1:WqoPL9yPTQ85QBMT45OOUzPxG/U/JcJoN7uMjgxke/I= github.com/cosmos/iavl v0.15.3/go.mod h1:OLjQiAQ4fGD2KDZooyJG9yz+p2ao2IAYSbke8mVvSA4= -github.com/cosmos/iavl v0.16.0 h1:ICIOB8xysirTX27GmVAaoeSpeozzgSu9d49w36xkVJA= -github.com/cosmos/iavl v0.16.0/go.mod h1:2A8O/Jz9YwtjqXMO0CjnnbTYEEaovE8jWcwrakH3PoE= +github.com/cosmos/iavl v0.17.1 h1:b/Cl8h1PRMvsu24+TYNlKchIu7W6tmxIBGe6E9u2Ybw= +github.com/cosmos/iavl v0.17.1/go.mod h1:7aisPZK8yCpQdy3PMvKeO+bhq1NwDjUwjzxwwROUxFk= github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 h1:DdzS1m6o/pCqeZ8VOAit/gyATedRgjvkVI+UCrLpyuU= github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76/go.mod h1:0mkLWIoZuQ7uBoospo5Q9zIpqq6rYCPJDSUdeCJvPM8= github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4= @@ -616,7 +616,6 @@ github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoM github.com/tendermint/tendermint v0.34.0-rc4/go.mod h1:yotsojf2C1QBOw4dZrTcxbyxmPUrT4hNuOQWX9XUwB4= github.com/tendermint/tendermint v0.34.0-rc6/go.mod h1:ugzyZO5foutZImv0Iyx/gOFCX6mjJTgbLHTwi17VDVg= github.com/tendermint/tendermint v0.34.0/go.mod h1:Aj3PIipBFSNO21r+Lq3TtzQ+uKESxkbA3yo/INM4QwQ= -github.com/tendermint/tendermint v0.34.10/go.mod h1:aeHL7alPh4uTBIJQ8mgFEE8VwJLXI1VD3rVOmH2Mcy0= github.com/tendermint/tendermint v0.34.13 h1:fu+tsHudbOr5PvepjH0q47Jae59hQAvn3IqAHv2EbC8= github.com/tendermint/tendermint v0.34.13/go.mod h1:6RVVRBqwtKhA+H59APKumO+B7Nye4QXSFc6+TYxAxCI= github.com/tendermint/tm-db v0.6.2/go.mod h1:GYtQ67SUvATOcoY8/+x6ylk8Qo02BQyLrAs+yAcLvGI= From 9c91f5c4c3d8c5a551bbf433cf110be8377f3a45 Mon Sep 17 00:00:00 2001 From: Carlos Rodriguez Date: Tue, 28 Sep 2021 15:13:28 +0200 Subject: [PATCH 11/98] feat: backport reject redundant transactions from ibc-go (#10211) * backport refund of redundant packets from ibc-go * update changelog * address review comments and lint errors * added nolint Co-authored-by: Carlos Rodriguez --- CHANGELOG.md | 1 + RELEASE_NOTES.md | 4 ++ simapp/ante_handler.go | 36 ++++++++++++++ simapp/app.go | 4 +- x/ibc/core/04-channel/types/errors.go | 3 ++ x/ibc/core/ante/ante.go | 72 +++++++++++++++++++++++++++ 6 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 simapp/ante_handler.go create mode 100644 x/ibc/core/ante/ante.go diff --git a/CHANGELOG.md b/CHANGELOG.md index aafa5ef067df..385c6e454466 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (store) [\#10026](https://github.com/cosmos/cosmos-sdk/pull/10026) Improve CacheKVStore datastructures / algorithms, to no longer take O(N^2) time when interleaving iterators and insertions. * (store) [\#10040](https://github.com/cosmos/cosmos-sdk/pull/10040) Bump IAVL to v0.17.1 which includes performance improvements on a batch load. +* [\#10211](https://github.com/cosmos/cosmos-sdk/pull/10211) Backport of the mechanism to reject redundant IBC transactions from [ibc-go \#235](https://github.com/cosmos/ibc-go/pull/235). ### Bug Fixes diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 35ff8ae10d80..98bd917f85f3 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,3 +1,7 @@ +# Cosmos SDK v0.42.10 "Stargate" Release Notes + +This release includes a new `AnteHandler` that rejects redundant IBC transactions to save relayers fees. This is a backport of [ibc-go \#235](https://github.com/cosmos/ibc-go/pull/235). + # Cosmos SDK v0.42.9 "Stargate" Release Notes This release includes an important `x/capabiliy` module bug fix for 0.42.7 and 0.42.8 which prohibits IBC to create new channels (issuse [\#9800](https://github.com/cosmos/cosmos-sdk/issues/9800)). diff --git a/simapp/ante_handler.go b/simapp/ante_handler.go new file mode 100644 index 000000000000..954a3b7c55b6 --- /dev/null +++ b/simapp/ante_handler.go @@ -0,0 +1,36 @@ +package simapp + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/auth/ante" + "github.com/cosmos/cosmos-sdk/x/auth/signing" + "github.com/cosmos/cosmos-sdk/x/gov/types" + channelkeeper "github.com/cosmos/cosmos-sdk/x/ibc/core/04-channel/keeper" + ibcante "github.com/cosmos/cosmos-sdk/x/ibc/core/ante" +) + +func NewAnteHandler( + ak ante.AccountKeeper, + bankKeeper types.BankKeeper, //nolint:interfacer + sigGasConsumer ante.SignatureVerificationGasConsumer, + signModeHandler signing.SignModeHandler, + channelKeeper channelkeeper.Keeper, +) sdk.AnteHandler { + return sdk.ChainAnteDecorators( + ante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first + ante.NewRejectExtensionOptionsDecorator(), + ante.NewMempoolFeeDecorator(), + ante.NewValidateBasicDecorator(), + ante.TxTimeoutHeightDecorator{}, + ante.NewValidateMemoDecorator(ak), + ante.NewConsumeGasForTxSizeDecorator(ak), + ante.NewRejectFeeGranterDecorator(), + ante.NewSetPubKeyDecorator(ak), // SetPubKeyDecorator must be called before all signature verification decorators + ante.NewValidateSigCountDecorator(ak), + ante.NewDeductFeeDecorator(ak, bankKeeper), + ante.NewSigGasConsumeDecorator(ak, sigGasConsumer), + ante.NewSigVerificationDecorator(ak, signModeHandler), + ante.NewIncrementSequenceDecorator(ak), + ibcante.NewAnteDecorator(channelKeeper), + ) +} diff --git a/simapp/app.go b/simapp/app.go index 18221250a7f7..b60693f7a949 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -403,9 +403,9 @@ func NewSimApp( app.SetInitChainer(app.InitChainer) app.SetBeginBlocker(app.BeginBlocker) app.SetAnteHandler( - ante.NewAnteHandler( + NewAnteHandler( app.AccountKeeper, app.BankKeeper, ante.DefaultSigVerificationGasConsumer, - encodingConfig.TxConfig.SignModeHandler(), + encodingConfig.TxConfig.SignModeHandler(), app.IBCKeeper.ChannelKeeper, ), ) app.SetEndBlocker(app.EndBlocker) diff --git a/x/ibc/core/04-channel/types/errors.go b/x/ibc/core/04-channel/types/errors.go index 82cf773057d7..b1d11e1fddd5 100644 --- a/x/ibc/core/04-channel/types/errors.go +++ b/x/ibc/core/04-channel/types/errors.go @@ -25,4 +25,7 @@ var ( ErrPacketReceived = sdkerrors.Register(SubModuleName, 18, "packet already received") ErrAcknowledgementExists = sdkerrors.Register(SubModuleName, 19, "acknowledgement for packet already exists") ErrInvalidChannelIdentifier = sdkerrors.Register(SubModuleName, 20, "invalid channel identifier") + + // Antehandler error + ErrRedundantTx = sdkerrors.Register(SubModuleName, 22, "packet messages are redundant") ) diff --git a/x/ibc/core/ante/ante.go b/x/ibc/core/ante/ante.go new file mode 100644 index 000000000000..b3cae30245e5 --- /dev/null +++ b/x/ibc/core/ante/ante.go @@ -0,0 +1,72 @@ +package ante + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + clienttypes "github.com/cosmos/cosmos-sdk/x/ibc/core/02-client/types" + channelkeeper "github.com/cosmos/cosmos-sdk/x/ibc/core/04-channel/keeper" + channeltypes "github.com/cosmos/cosmos-sdk/x/ibc/core/04-channel/types" +) + +type Decorator struct { + k channelkeeper.Keeper +} + +func NewAnteDecorator(k channelkeeper.Keeper) Decorator { + return Decorator{k: k} +} + +// AnteDecorator returns an error if a multiMsg tx only contains packet messages (Recv, Ack, Timeout) and additional update messages and all packet messages +// are redundant. If the transaction is just a single UpdateClient message, or the multimsg transaction contains some other message type, then the antedecorator returns no error +// and continues processing to ensure these transactions are included. +// This will ensure that relayers do not waste fees on multiMsg transactions when another relayer has already submitted all packets, by rejecting the tx at the mempool layer. +func (ad Decorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) { + // do not run redundancy check on DeliverTx or simulate + if (ctx.IsCheckTx() || ctx.IsReCheckTx()) && !simulate { + // keep track of total packet messages and number of redundancies across `RecvPacket`, `AcknowledgePacket`, and `TimeoutPacket/OnClose` + redundancies := 0 + packetMsgs := 0 + for _, m := range tx.GetMsgs() { + switch msg := m.(type) { + case *channeltypes.MsgRecvPacket: + if _, found := ad.k.GetPacketReceipt(ctx, msg.Packet.GetDestPort(), msg.Packet.GetDestChannel(), msg.Packet.GetSequence()); found { + redundancies++ + } + packetMsgs++ + + case *channeltypes.MsgAcknowledgement: + if commitment := ad.k.GetPacketCommitment(ctx, msg.Packet.GetSourcePort(), msg.Packet.GetSourceChannel(), msg.Packet.GetSequence()); len(commitment) == 0 { + redundancies++ + } + packetMsgs++ + + case *channeltypes.MsgTimeout: + if commitment := ad.k.GetPacketCommitment(ctx, msg.Packet.GetSourcePort(), msg.Packet.GetSourceChannel(), msg.Packet.GetSequence()); len(commitment) == 0 { + redundancies++ + } + packetMsgs++ + + case *channeltypes.MsgTimeoutOnClose: + if commitment := ad.k.GetPacketCommitment(ctx, msg.Packet.GetSourcePort(), msg.Packet.GetSourceChannel(), msg.Packet.GetSequence()); len(commitment) == 0 { + redundancies++ + } + packetMsgs++ + + case *clienttypes.MsgUpdateClient: + // do nothing here, as we want to avoid updating clients if it is batched with only redundant messages + + default: + // if the multiMsg tx has a msg that is not a packet msg or update msg, then we will not return error + // regardless of if all packet messages are redundant. This ensures that non-packet messages get processed + // even if they get batched with redundant packet messages. + return next(ctx, tx, simulate) + } + + } + + // only return error if all packet messages are redundant + if redundancies == packetMsgs && packetMsgs > 0 { + return ctx, channeltypes.ErrRedundantTx + } + } + return next(ctx, tx, simulate) +} From 58270e8a2e67beed4d016bbdbfcc21b7feb192b7 Mon Sep 17 00:00:00 2001 From: Amaury <1293565+amaurym@users.noreply.github.com> Date: Tue, 28 Sep 2021 15:34:23 +0200 Subject: [PATCH 12/98] chore: Changelog and Release Notes for 0.42.10 (#10242) --- CHANGELOG.md | 2 ++ RELEASE_NOTES.md | 13 +++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 385c6e454466..cacb1f0b6e71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,8 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## Unreleased +## [v0.42.10](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.42.10) - 2021-09-28 + ### Improvements * (store) [\#10026](https://github.com/cosmos/cosmos-sdk/pull/10026) Improve CacheKVStore datastructures / algorithms, to no longer take O(N^2) time when interleaving iterators and insertions. diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 98bd917f85f3..9a2a97f9b0af 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -2,13 +2,14 @@ This release includes a new `AnteHandler` that rejects redundant IBC transactions to save relayers fees. This is a backport of [ibc-go \#235](https://github.com/cosmos/ibc-go/pull/235). -# Cosmos SDK v0.42.9 "Stargate" Release Notes +v0.42.10 also includes multiple performance improvements, such as: -This release includes an important `x/capabiliy` module bug fix for 0.42.7 and 0.42.8 which prohibits IBC to create new channels (issuse [\#9800](https://github.com/cosmos/cosmos-sdk/issues/9800)). -The fix changes the `x/capability/keeper/Keeper.InitializeAndSeal` method behavior and requires to update an app module manager by adding x/capability module to Begin Blockers. +- improve ABCI performance under concurrent load via [Tendermint v0.34.13](https://github.com/tendermint/tendermint/blob/master/CHANGELOG.md#v03413), +- improve CacheKVStore datastructures / algorithms, to no longer take O(N^2) time when interleaving iterators and insertions. +- bump IAVL to v0.17.1 which includes performance improvements on a batch load. -We also fixed ` init --recovery` mode where the mnemonic was not handled correctly. +We fixed the keyring to use pre-configured data for `add-genesis-account` command. -We also changed ` tx distribution withdraw-all-rewards` CLI by forcing the broadcast mode if a chunk size is greater than 0. This will ensure that the transactions do not fail even if the user uses invalid broadcast modes for this command (sync and async). This was requested by the community and we consider it as fixing the `withdraw-all-rewards` behavior. +Finally, when using the `client.Context`, we modified ABCI queries to use `abci.QueryRequest`'s `Height` field if it is non-zero, otherwise continue using `client.Context`'s height. This is a minor client-breaking change for users of the `client.Context`. -See the [Cosmos SDK v0.42.9 milestone](https://github.com/cosmos/cosmos-sdk/milestone/53?closed=1) on our issue tracker for the exhaustive list of all changes. +See the [Cosmos SDK v0.42.10 milestone](https://github.com/cosmos/cosmos-sdk/milestone/55?closed=1) on our issue tracker for the exhaustive list of all changes. From a5abf6c4bfc258617336477e0474d3e1e32a5b20 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 11 Oct 2021 11:49:23 +0200 Subject: [PATCH 13/98] fix: --home flag parsing (backport #10226) (#10272) * fix: --home flag parsing (#10226) ## Description Closes: #XXXX --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [x] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [x] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing) - [x] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [x] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [x] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [x] reviewed state machine logic - [x] reviewed API design and naming - [x] reviewed documentation is accurate - [x] reviewed tests and test coverage - [x] manually tested (if applicable) (cherry picked from commit cc1a1c8cd0b0853f24f785d52822bb7e71ee572b) # Conflicts: # CHANGELOG.md # client/cmd.go # simapp/simd/cmd/root.go # x/genutil/client/cli/init.go * changelog * fix conflicts Co-authored-by: Arijit Das Co-authored-by: Amaury M <1293565+amaurym@users.noreply.github.com> Co-authored-by: likhita-809 --- CHANGELOG.md | 4 ++++ client/cmd.go | 15 --------------- client/keys/list_test.go | 2 -- simapp/simd/cmd/root.go | 11 +++++++++-- x/genutil/client/cli/init.go | 3 +-- 5 files changed, 14 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cacb1f0b6e71..8f15d65c37ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,10 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## Unreleased +### Bug Fixes + +* (client) [#10226](https://github.com/cosmos/cosmos-sdk/pull/10226) Fix --home flag parsing. + ## [v0.42.10](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.42.10) - 2021-09-28 ### Improvements diff --git a/client/cmd.go b/client/cmd.go index f27aea3691f4..57b404fc48f3 100644 --- a/client/cmd.go +++ b/client/cmd.go @@ -245,21 +245,6 @@ func readTxCommandFlags(clientCtx Context, flagSet *pflag.FlagSet) (Context, err return clientCtx, nil } -// ReadHomeFlag checks if home flag is changed. -// If this is a case, we update HomeDir field of Client Context -/* Discovered a bug with Cory -./build/simd init andrei --home ./test -cd test/config there is no client.toml configuration file -*/ -func ReadHomeFlag(clientCtx Context, cmd *cobra.Command) Context { - if cmd.Flags().Changed(flags.FlagHome) { - rootDir, _ := cmd.Flags().GetString(flags.FlagHome) - clientCtx = clientCtx.WithHomeDir(rootDir) - } - - return clientCtx -} - // GetClientQueryContext returns a Context from a command with fields set based on flags // defined in AddQueryFlagsToCmd. An error is returned if any flag query fails. // diff --git a/client/keys/list_test.go b/client/keys/list_test.go index 5904f74bfdd2..7e3760384c8d 100644 --- a/client/keys/list_test.go +++ b/client/keys/list_test.go @@ -57,7 +57,6 @@ func Test_runListCmd(t *testing.T) { cmd.SetArgs([]string{ fmt.Sprintf("--%s=%s", flags.FlagHome, tt.kbDir), fmt.Sprintf("--%s=false", flagListNames), - fmt.Sprintf("--%s=%s", flags.FlagKeyringBackend, keyring.BackendTest), }) if err := cmd.ExecuteContext(ctx); (err != nil) != tt.wantErr { @@ -67,7 +66,6 @@ func Test_runListCmd(t *testing.T) { cmd.SetArgs([]string{ fmt.Sprintf("--%s=%s", flags.FlagHome, tt.kbDir), fmt.Sprintf("--%s=true", flagListNames), - fmt.Sprintf("--%s=%s", flags.FlagKeyringBackend, keyring.BackendTest), }) if err := cmd.ExecuteContext(ctx); (err != nil) != tt.wantErr { diff --git a/simapp/simd/cmd/root.go b/simapp/simd/cmd/root.go index 5b1cd1ca5eb7..2a393fdc126b 100644 --- a/simapp/simd/cmd/root.go +++ b/simapp/simd/cmd/root.go @@ -53,9 +53,16 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) { Use: "simd", Short: "simulation app", PersistentPreRunE: func(cmd *cobra.Command, _ []string) error { - initClientCtx = client.ReadHomeFlag(initClientCtx, cmd) + // set the default command outputs + cmd.SetOut(cmd.OutOrStdout()) + cmd.SetErr(cmd.ErrOrStderr()) - initClientCtx, err := config.ReadFromClientConfig(initClientCtx) + initClientCtx, err := client.ReadPersistentCommandFlags(initClientCtx, cmd.Flags()) + if err != nil { + return err + } + + initClientCtx, err = config.ReadFromClientConfig(initClientCtx) if err != nil { return err } diff --git a/x/genutil/client/cli/init.go b/x/genutil/client/cli/init.go index f5fda79c69f0..377857ae73ac 100644 --- a/x/genutil/client/cli/init.go +++ b/x/genutil/client/cli/init.go @@ -7,7 +7,6 @@ import ( "os" "path/filepath" - "github.com/cosmos/go-bip39" "github.com/pkg/errors" "github.com/spf13/cobra" cfg "github.com/tendermint/tendermint/config" @@ -23,6 +22,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/x/genutil" + "github.com/cosmos/go-bip39" ) const ( @@ -76,7 +76,6 @@ func InitCmd(mbm module.BasicManager, defaultNodeHome string) *cobra.Command { serverCtx := server.GetServerContextFromCmd(cmd) config := serverCtx.Config - config.SetRoot(clientCtx.HomeDir) chainID, _ := cmd.Flags().GetString(flags.FlagChainID) From 9b04856cb1cf80dfeed65d8f9b197927c182fe45 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 12 Oct 2021 12:46:58 +0200 Subject: [PATCH 14/98] fix: null guard for tx fee amounts (backport #10327) (#10343) * fix: null guard for tx fee amounts (#10327) ## Description It is possible to submit a TX with a fees object containing a Coin with a nil amount. This results in a rather cryptic redacted panic response when the basic validation checks fee Coins for negative amounts. This PR adds an additional check for nil to provide a friendlier error message. --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [x] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [x] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting)) - [x] provided a link to the relevant issue or specification (note: No issue exists) - [x] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules) - [x] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing) (note: First PR against the SDK so please comment with what needs to be done) - [x] added a changelog entry to `CHANGELOG.md` - [x] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [x] reviewed "Files changed" and left comments if necessary - [x] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) (cherry picked from commit 96e162b8a3939c7999c0c12c39d196698594306c) # Conflicts: # CHANGELOG.md * solve conflicts * move sections Co-authored-by: Alex Megalokonomos Co-authored-by: marbar3778 --- CHANGELOG.md | 4 ++++ types/coin.go | 18 ++++++++++++++++++ types/coin_test.go | 27 +++++++++++++++++++++++++++ types/tx/types.go | 7 +++++++ 4 files changed, 56 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f15d65c37ab..e797f20787c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,10 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## Unreleased +### Improvements + +* [\#10327](https://github.com/cosmos/cosmos-sdk/pull/10327) Add null guard for possible nil `Amount` in tx fee `Coins` + ### Bug Fixes * (client) [#10226](https://github.com/cosmos/cosmos-sdk/pull/10226) Fix --home flag parsing. diff --git a/types/coin.go b/types/coin.go index b86cff51865e..2749edadc7fb 100644 --- a/types/coin.go +++ b/types/coin.go @@ -129,6 +129,11 @@ func (coin Coin) IsNegative() bool { return coin.Amount.Sign() == -1 } +// IsNil returns true if the coin amount is nil and false otherwise. +func (coin Coin) IsNil() bool { + return coin.Amount.i == nil +} + //----------------------------------------------------------------------------- // Coins @@ -543,6 +548,19 @@ func (coins Coins) IsAnyNegative() bool { return false } +// IsAnyNil returns true if there is at least one coin whose amount +// is nil; returns false otherwise. It returns false if the coin set +// is empty too. +func (coins Coins) IsAnyNil() bool { + for _, coin := range coins { + if coin.IsNil() { + return true + } + } + + return false +} + // negative returns a set of coins with all amount negative. // // TODO: Remove once unsigned integers are used. diff --git a/types/coin_test.go b/types/coin_test.go index ab69f16a17db..bb1d00f1380a 100644 --- a/types/coin_test.go +++ b/types/coin_test.go @@ -237,6 +237,20 @@ func (s *coinTestSuite) TestCoinIsZero() { s.Require().False(res) } +func (s *coinTestSuite) TestCoinIsNil() { + coin := sdk.Coin{} + res := coin.IsNil() + s.Require().True(res) + + coin = sdk.Coin{Denom: "uatom"} + res = coin.IsNil() + s.Require().True(res) + + coin = sdk.NewInt64Coin(testDenom1, 1) + res = coin.IsNil() + s.Require().False(res) +} + func (s *coinTestSuite) TestFilteredZeroCoins() { cases := []struct { name string @@ -902,6 +916,19 @@ func (s *coinTestSuite) TestCoinsIsAnyGT() { } } +func (s *coinTestSuite) TestCoinsIsAnyNil() { + twoAtom := sdk.NewInt64Coin("atom", 2) + fiveAtom := sdk.NewInt64Coin("atom", 5) + threeEth := sdk.NewInt64Coin("eth", 3) + nilAtom := sdk.Coin{Denom: "atom"} + + s.Require().True(sdk.Coins{twoAtom, fiveAtom, threeEth, nilAtom}.IsAnyNil()) + s.Require().True(sdk.Coins{twoAtom, nilAtom, fiveAtom, threeEth}.IsAnyNil()) + s.Require().True(sdk.Coins{nilAtom, twoAtom, fiveAtom, threeEth}.IsAnyNil()) + s.Require().False(sdk.Coins{twoAtom, fiveAtom, threeEth}.IsAnyNil()) + +} + func (s *coinTestSuite) TestMarshalJSONCoins() { cdc := codec.NewLegacyAmino() sdk.RegisterLegacyAminoCodec(cdc) diff --git a/types/tx/types.go b/types/tx/types.go index 0392b2fcfd08..65313f735b7a 100644 --- a/types/tx/types.go +++ b/types/tx/types.go @@ -72,6 +72,13 @@ func (t *Tx) ValidateBasic() error { ) } + if fee.Amount.IsAnyNil() { + return sdkerrors.Wrapf( + sdkerrors.ErrInsufficientFee, + "invalid fee provided: null", + ) + } + if fee.Amount.IsAnyNegative() { return sdkerrors.Wrapf( sdkerrors.ErrInsufficientFee, From 51dd00781b18f398f068959ccce03a46e89300ff Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 14 Oct 2021 11:11:25 +0200 Subject: [PATCH 15/98] perf: Only do memory allocation when zero coin is found (backport #10339) (#10362) * perf: Only do memory allocation when zero coin is found (#10339) ## Description Closes: #10333 Added a loop that checks for zero coins before making any memory allocations. If no zero coins are found, just return the `coins` slice as is. If a zero coin is found, then allocate the new array, stop looking for the first zero, and restart the loop to "remove" the 0's. --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [x] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change (Not Applicable) - [x] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting)) - [x] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules) (Not Applicable) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing) (Not Applicable) - [x] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) (Not Applicable) - [ ] updated the relevant documentation or specification (Not Applicable) - [x] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) (cherry picked from commit f00e7a4e15be6299166aa30045efbadb7d7c8423) # Conflicts: # CHANGELOG.md * fix conflict Co-authored-by: Jake Waggoner <32466459+waggonerjake@users.noreply.github.com> Co-authored-by: marbar3778 --- CHANGELOG.md | 1 + types/coin.go | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e797f20787c1..1d5edd992ae7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Improvements * [\#10327](https://github.com/cosmos/cosmos-sdk/pull/10327) Add null guard for possible nil `Amount` in tx fee `Coins` +* [\#10339](https://github.com/cosmos/cosmos-sdk/pull/10339) Improve performance of `removeZeroCoins` by only allocating memory when necessary ### Bug Fixes diff --git a/types/coin.go b/types/coin.go index 2749edadc7fb..bcc8cd78ee13 100644 --- a/types/coin.go +++ b/types/coin.go @@ -579,7 +579,18 @@ func (coins Coins) negative() Coins { // removeZeroCoins removes all zero coins from the given coin set in-place. func removeZeroCoins(coins Coins) Coins { - result := make([]Coin, 0, len(coins)) + for i := 0; i < len(coins); i++ { + if coins[i].IsZero() { + break + } else if i == len(coins)-1 { + return coins + } + } + + var result []Coin + if len(coins) > 0 { + result = make([]Coin, 0, len(coins)-1) + } for _, coin := range coins { if !coin.IsZero() { From 2ba1471976f166c981d40f844b8366e1aa637fd8 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 15 Oct 2021 18:20:16 +0200 Subject: [PATCH 16/98] build(deps): bump github.com/tendermint/tendermint from 0.34.13 to 0.34.14 (backport #10357) (#10376) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * build(deps): bump github.com/tendermint/tendermint from 0.34.13 to 0.34.14 (#10357) Bumps [github.com/tendermint/tendermint](https://github.com/tendermint/tendermint) from 0.34.13 to 0.34.14.
Release notes

Sourced from github.com/tendermint/tendermint's releases.

0.34.14 (WARNING: BETA SOFTWARE)

https://github.com/tendermint/tendermint/blob/v0.34.14/CHANGELOG.md#v0.34.14

Changelog

Sourced from github.com/tendermint/tendermint's changelog.

v0.34.14

This release backports the rollback feature to allow recovery in the event of an incorrect app hash.

FEATURES

  • #6982 The tendermint binary now has built-in suppport for running the end-to-end test application (with state sync support) (@​cmwaters).
  • [cli] #7033 Add a rollback command to rollback to the previous tendermint state. This may be useful in the event of non-determinstic app hash or when reverting an upgrade. @​cmwaters

IMPROVEMENTS

BUG FIXES

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/tendermint/tendermint&package-manager=go_modules&previous-version=0.34.13&new-version=0.34.14)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
(cherry picked from commit e85964683a0265f78a81861f37813febf15a3225) # Conflicts: # go.mod * fix conflict * changelog entry Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: marbar3778 --- CHANGELOG.md | 1 + go.mod | 2 +- go.sum | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d5edd992ae7..554c72a36fcc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [\#10327](https://github.com/cosmos/cosmos-sdk/pull/10327) Add null guard for possible nil `Amount` in tx fee `Coins` * [\#10339](https://github.com/cosmos/cosmos-sdk/pull/10339) Improve performance of `removeZeroCoins` by only allocating memory when necessary +* (deps) [\#10376](https://github.com/cosmos/cosmos-sdk/pull/10376) Bump Tendermint to [v0.34.14](https://github.com/tendermint/tendermint/releases/tag/v0.34.14). ### Bug Fixes diff --git a/go.mod b/go.mod index dcae062fd368..5e28d86b31e1 100644 --- a/go.mod +++ b/go.mod @@ -48,7 +48,7 @@ require ( github.com/tendermint/btcd v0.1.1 github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 github.com/tendermint/go-amino v0.16.0 - github.com/tendermint/tendermint v0.34.13 + github.com/tendermint/tendermint v0.34.14 github.com/tendermint/tm-db v0.6.4 golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f diff --git a/go.sum b/go.sum index b48ef0649559..c06bace7b6ee 100644 --- a/go.sum +++ b/go.sum @@ -616,8 +616,9 @@ github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoM github.com/tendermint/tendermint v0.34.0-rc4/go.mod h1:yotsojf2C1QBOw4dZrTcxbyxmPUrT4hNuOQWX9XUwB4= github.com/tendermint/tendermint v0.34.0-rc6/go.mod h1:ugzyZO5foutZImv0Iyx/gOFCX6mjJTgbLHTwi17VDVg= github.com/tendermint/tendermint v0.34.0/go.mod h1:Aj3PIipBFSNO21r+Lq3TtzQ+uKESxkbA3yo/INM4QwQ= -github.com/tendermint/tendermint v0.34.13 h1:fu+tsHudbOr5PvepjH0q47Jae59hQAvn3IqAHv2EbC8= github.com/tendermint/tendermint v0.34.13/go.mod h1:6RVVRBqwtKhA+H59APKumO+B7Nye4QXSFc6+TYxAxCI= +github.com/tendermint/tendermint v0.34.14 h1:GCXmlS8Bqd2Ix3TQCpwYLUNHe+Y+QyJsm5YE+S/FkPo= +github.com/tendermint/tendermint v0.34.14/go.mod h1:FrwVm3TvsVicI9Z7FlucHV6Znfd5KBc/Lpp69cCwtk0= github.com/tendermint/tm-db v0.6.2/go.mod h1:GYtQ67SUvATOcoY8/+x6ylk8Qo02BQyLrAs+yAcLvGI= github.com/tendermint/tm-db v0.6.3/go.mod h1:lfA1dL9/Y/Y8wwyPp2NMLyn5P5Ptr/gvDFNWtrCWSf8= github.com/tendermint/tm-db v0.6.4 h1:3N2jlnYQkXNQclQwd/eKV/NzlqPlfK21cpRRIx80XXQ= From 2a1409b68fbbfb4d42852dbc1779df51431e932c Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 13:48:45 +0100 Subject: [PATCH 17/98] fix: unmarshalling issue with multisig keys in master (backport #10061) (#10113) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: unmarshalling issue with multisig keys in master (#10061) (cherry picked from commit 3d3bc7c43218c37c6d0033d578cc7b24968a9be2) # Conflicts: # CHANGELOG.md # crypto/keys/multisig/multisig_test.go * fix conflicts * fix conflicts * Update crypto/keys/multisig/multisig_test.go * Removed unused imports * fix changelog * Update CHANGELOG.md * Fix TestLegacyMultisig test (#10275) Co-authored-by: Henrik Aasted Sørensen Co-authored-by: Aleksandr Bezobchuk Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> Co-authored-by: Robert Zaremba Co-authored-by: Mario Karagiorgas --- CHANGELOG.md | 3 ++- crypto/keys/multisig/amino.go | 23 ++++++++++++++-- crypto/keys/multisig/multisig_test.go | 38 ++++++++++++++++++++++++++- 3 files changed, 60 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 554c72a36fcc..c9f009c0a82e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,6 +57,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Bug Fixes * [\#9969](https://github.com/cosmos/cosmos-sdk/pull/9969) fix: use keyring in config for add-genesis-account cmd. +* [\#10061](https://github.com/cosmos/cosmos-sdk/pull/10061) Ensure that `LegacyAminoPubKey` struct correctly unmarshals from JSON ### Client Breaking Changes @@ -64,7 +65,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### API Breaking Changes -* [\#10077](https://github.com/cosmos/cosmos-sdk/pull/10077) Remove telemetry on `GasKV` and `CacheKV` store Get/Set operations, significantly improving their performance. ++ [\#10077](https://github.com/cosmos/cosmos-sdk/pull/10077) Remove telemetry on `GasKV` and `CacheKV` store Get/Set operations, significantly improving their performance. ## [v0.42.9](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.42.9) - 2021-08-04 diff --git a/crypto/keys/multisig/amino.go b/crypto/keys/multisig/amino.go index 4849a23173d2..641fe1f691a7 100644 --- a/crypto/keys/multisig/amino.go +++ b/crypto/keys/multisig/amino.go @@ -78,9 +78,28 @@ func (m *LegacyAminoPubKey) UnmarshalAminoJSON(tmPk tmMultisig) error { // Instead of just doing `*m = *protoPk`, we prefer to modify in-place the // existing Anys inside `m` (instead of allocating new Anys), as so not to // break the `.compat` fields in the existing Anys. + if m.PubKeys == nil { + m.PubKeys = make([]*types.Any, len(tmPk.PubKeys)) + } for i := range m.PubKeys { - m.PubKeys[i].TypeUrl = protoPk.PubKeys[i].TypeUrl - m.PubKeys[i].Value = protoPk.PubKeys[i].Value + if m.PubKeys[i] == nil { + // create the compat jsonBz value + bz, err := AminoCdc.MarshalJSON(tmPk.PubKeys[i]) + if err != nil { + return err + } + + m.PubKeys[i] = protoPk.PubKeys[i] + // UnmarshalJSON(): + // just sets the compat.jsonBz value. + // always succeeds: err == nil + if err := m.PubKeys[i].UnmarshalJSON(bz); err != nil { + return err + } + } else { + m.PubKeys[i].TypeUrl = protoPk.PubKeys[i].TypeUrl + m.PubKeys[i].Value = protoPk.PubKeys[i].Value + } } m.Threshold = protoPk.Threshold diff --git a/crypto/keys/multisig/multisig_test.go b/crypto/keys/multisig/multisig_test.go index 1284c6c88476..0285ae0ef9ae 100644 --- a/crypto/keys/multisig/multisig_test.go +++ b/crypto/keys/multisig/multisig_test.go @@ -17,6 +17,15 @@ import ( "github.com/cosmos/cosmos-sdk/x/auth/legacy/legacytx" ) +func generatePubKeys(n int) []cryptotypes.PubKey { + pks := make([]cryptotypes.PubKey, n) + for i := 0; i < n; i++ { + pks[i] = secp256k1.GenPrivKey().PubKey() + } + + return pks +} + func TestAddress(t *testing.T) { msg := []byte{1, 2, 3, 4} pubKeys, _ := generatePubKeysAndSignatures(5, msg) @@ -379,5 +388,32 @@ func TestAminoUnmarshalJSON(t *testing.T) { var pk cryptotypes.PubKey err := cdc.UnmarshalJSON([]byte(pkJSON), &pk) require.NoError(t, err) - require.Equal(t, uint32(3), pk.(*kmultisig.LegacyAminoPubKey).Threshold) + lpk := pk.(*kmultisig.LegacyAminoPubKey) + require.Equal(t, uint32(3), lpk.Threshold) + require.Equal(t, 5, len(pk.(*kmultisig.LegacyAminoPubKey).PubKeys)) + + for _, key := range pk.(*kmultisig.LegacyAminoPubKey).PubKeys { + require.NotNil(t, key) + pk := secp256k1.PubKey{} + err := pk.Unmarshal(key.Value) + require.NoError(t, err) + } +} + +func TestProtoMarshalJSON(t *testing.T) { + require := require.New(t) + pubkeys := generatePubKeys(3) + msig := kmultisig.NewLegacyAminoPubKey(2, pubkeys) + + registry := types.NewInterfaceRegistry() + cryptocodec.RegisterInterfaces(registry) + cdc := codec.NewProtoCodec(registry) + + bz, err := cdc.MarshalInterfaceJSON(msig) + require.NoError(err) + + var pk2 cryptotypes.PubKey + err = cdc.UnmarshalInterfaceJSON(bz, &pk2) + require.NoError(err) + require.True(pk2.Equals(msig)) } From 05fb0ee60b02c594577df0ad2d98b82379be71a7 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 12 Nov 2021 11:15:15 -0500 Subject: [PATCH 18/98] fix: query account balance by ibc denom (backport #10394) (#10524) * fix: query account balance by ibc denom (#10394) ## Description Closes: #10381 --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing) - [ ] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) (cherry picked from commit 99c5230fad0ca2ede83835cb9ee44f013b2d33ef) # Conflicts: # CHANGELOG.md # docs/core/proto-docs.md # proto/cosmos/bank/v1beta1/query.proto # x/bank/types/query.pb.go # x/bank/types/query.pb.gw.go * solve conflicts * solve conflicts Co-authored-by: Sai Kumar <17549398+gsk967@users.noreply.github.com> Co-authored-by: marbar3778 --- CHANGELOG.md | 1 + docs/core/proto-docs.md | 1 - proto/cosmos/bank/v1beta1/query.proto | 2 +- x/bank/client/rest/grpc_query_test.go | 4 ++-- x/bank/types/query.pb.gw.go | 28 ++++++++++++--------------- 5 files changed, 16 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9f009c0a82e..c57ebaba359f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Bug Fixes * (client) [#10226](https://github.com/cosmos/cosmos-sdk/pull/10226) Fix --home flag parsing. +* [\#10394](https://github.com/cosmos/cosmos-sdk/issues/10394) Fixes issue related to grpc-gateway of account balance by ibc-denom. ## [v0.42.10](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.42.10) - 2021-09-28 diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index fa4a816e1cc8..3ea030940de5 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -9999,4 +9999,3 @@ that implements Misbehaviour interface expected by ICS-02 | bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | | string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | | bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | - diff --git a/proto/cosmos/bank/v1beta1/query.proto b/proto/cosmos/bank/v1beta1/query.proto index bc5e29137a95..ddf146d9d913 100644 --- a/proto/cosmos/bank/v1beta1/query.proto +++ b/proto/cosmos/bank/v1beta1/query.proto @@ -13,7 +13,7 @@ option go_package = "github.com/cosmos/cosmos-sdk/x/bank/types"; service Query { // Balance queries the balance of a single coin for a single account. rpc Balance(QueryBalanceRequest) returns (QueryBalanceResponse) { - option (google.api.http).get = "/cosmos/bank/v1beta1/balances/{address}/{denom}"; + option (google.api.http).get = "/cosmos/bank/v1beta1/balances/{address}/by_denom"; } // AllBalances queries the balance of all coins for a single account. diff --git a/x/bank/client/rest/grpc_query_test.go b/x/bank/client/rest/grpc_query_test.go index d6290a1fef94..37dc8eaa9d8e 100644 --- a/x/bank/client/rest/grpc_query_test.go +++ b/x/bank/client/rest/grpc_query_test.go @@ -227,7 +227,7 @@ func (s *IntegrationTestSuite) TestBalancesGRPCHandler() { }, { "gPRC account balance of a denom", - fmt.Sprintf("%s/cosmos/bank/v1beta1/balances/%s/%s", baseURL, val.Address.String(), s.cfg.BondDenom), + fmt.Sprintf("%s/cosmos/bank/v1beta1/balances/%s/by_denom?denom=%s", baseURL, val.Address.String(), s.cfg.BondDenom), &types.QueryBalanceResponse{}, &types.QueryBalanceResponse{ Balance: &sdk.Coin{ @@ -238,7 +238,7 @@ func (s *IntegrationTestSuite) TestBalancesGRPCHandler() { }, { "gPRC account balance of a bogus denom", - fmt.Sprintf("%s/cosmos/bank/v1beta1/balances/%s/foobar", baseURL, val.Address.String()), + fmt.Sprintf("%s/cosmos/bank/v1beta1/balances/%s/by_denom?denom=foobar", baseURL, val.Address.String()), &types.QueryBalanceResponse{}, &types.QueryBalanceResponse{ Balance: &sdk.Coin{ diff --git a/x/bank/types/query.pb.gw.go b/x/bank/types/query.pb.gw.go index 06c7e2d04aa5..7c846ca7441a 100644 --- a/x/bank/types/query.pb.gw.go +++ b/x/bank/types/query.pb.gw.go @@ -31,6 +31,10 @@ var _ = runtime.String var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage +var ( + filter_Query_Balance_0 = &utilities.DoubleArray{Encoding: map[string]int{"address": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + func request_Query_Balance_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq QueryBalanceRequest var metadata runtime.ServerMetadata @@ -53,15 +57,11 @@ func request_Query_Balance_0(ctx context.Context, marshaler runtime.Marshaler, c return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } - val, ok = pathParams["denom"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "denom") + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - - protoReq.Denom, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "denom", err) + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Balance_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := client.Balance(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -91,15 +91,11 @@ func local_request_Query_Balance_0(ctx context.Context, marshaler runtime.Marsha return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } - val, ok = pathParams["denom"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "denom") + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - - protoReq.Denom, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "denom", err) + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Balance_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } msg, err := server.Balance(ctx, &protoReq) From 8ee89b19515f3b7bb4a49f90aaf61d830d99707a Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 16 Nov 2021 14:12:18 +0100 Subject: [PATCH 19/98] chore: Iavl iterator (backport #10544) (#10546) * chore: Iavl iterator (#10544) ## Description Closes: #10335 This PR adds a custom version of cosmos/iavl(cosmos/iavl#440) that removes the usage of channel-based approach on iterating IAVL tree. replaces https://github.com/cosmos/cosmos-sdk/pull/10404 --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing) - [ ] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) (cherry picked from commit b5dd3525bb44da711e81e6f52a6b231aa009c30a) # Conflicts: # go.mod # go.sum * solve conflicts Co-authored-by: Marko --- go.mod | 5 +- go.sum | 45 ++----------- store/iavl/store.go | 161 +------------------------------------------- 3 files changed, 9 insertions(+), 202 deletions(-) diff --git a/go.mod b/go.mod index 5e28d86b31e1..6cbb2da5a438 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/btcsuite/btcutil v1.0.2 github.com/confio/ics23/go v0.6.6 github.com/cosmos/go-bip39 v1.0.0 - github.com/cosmos/iavl v0.17.1 + github.com/cosmos/iavl v0.17.2 github.com/cosmos/ledger-cosmos-go v0.11.1 github.com/dgraph-io/ristretto v0.0.3 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect @@ -52,10 +52,11 @@ require ( github.com/tendermint/tm-db v0.6.4 golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f - google.golang.org/grpc v1.40.0 + google.golang.org/grpc v1.42.0 google.golang.org/protobuf v1.26.0 gopkg.in/ini.v1 v1.61.0 // indirect gopkg.in/yaml.v2 v2.4.0 + ) replace google.golang.org/grpc => google.golang.org/grpc v1.33.2 diff --git a/go.sum b/go.sum index c06bace7b6ee..c9c3278e3082 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,3 @@ -bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= @@ -98,14 +97,11 @@ github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4 github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/confio/ics23/go v0.0.0-20200817220745-f173e6211efb/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= -github.com/confio/ics23/go v0.6.3/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/confio/ics23/go v0.6.6 h1:pkOy18YxxJ/r0XFDCnrl4Bjv6h4LkBSpLS6F38mrKL8= github.com/confio/ics23/go v0.6.6/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= +github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6 h1:NmTXa/uVnDyp0TY5MKi197+3HWcnYWfnHGyaFthlnGw= github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.1.0 h1:UFRRY5JemiAhPZrr/uE0n8fMTLcZsUvySPr1+D7pgr8= -github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -120,11 +116,8 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= -github.com/cosmos/iavl v0.15.0-rc3.0.20201009144442-230e9bdf52cd/go.mod h1:3xOIaNNX19p0QrX0VqWa6voPRoJRGGYtny+DH8NEPvE= -github.com/cosmos/iavl v0.15.0-rc5/go.mod h1:WqoPL9yPTQ85QBMT45OOUzPxG/U/JcJoN7uMjgxke/I= -github.com/cosmos/iavl v0.15.3/go.mod h1:OLjQiAQ4fGD2KDZooyJG9yz+p2ao2IAYSbke8mVvSA4= -github.com/cosmos/iavl v0.17.1 h1:b/Cl8h1PRMvsu24+TYNlKchIu7W6tmxIBGe6E9u2Ybw= -github.com/cosmos/iavl v0.17.1/go.mod h1:7aisPZK8yCpQdy3PMvKeO+bhq1NwDjUwjzxwwROUxFk= +github.com/cosmos/iavl v0.17.2 h1:BT2u7DUvLLB+RYz9RItn/8n7Bt5xe5rj8QRTkk/PQU0= +github.com/cosmos/iavl v0.17.2/go.mod h1:prJoErZFABYZGDHka1R6Oay4z9PrNeFFiMKHDAMOi4w= github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 h1:DdzS1m6o/pCqeZ8VOAit/gyATedRgjvkVI+UCrLpyuU= github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76/go.mod h1:0mkLWIoZuQ7uBoospo5Q9zIpqq6rYCPJDSUdeCJvPM8= github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4= @@ -143,7 +136,6 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs 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= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= -github.com/dgraph-io/badger/v2 v2.2007.1/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= github.com/dgraph-io/badger/v2 v2.2007.2 h1:EjjK0KqwaFMlPin1ajhP943VPENHJdEz1KLIegjaI3k= github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= @@ -190,7 +182,6 @@ github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= 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-20200222043503-6f7a984d4dc4/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/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= @@ -271,21 +262,17 @@ github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.2.1/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= -github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.14.7/go.mod h1:oYZKL012gGh6LMyg/xA7Q2yq6j8bu0wa+9w14EEthWU= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= @@ -432,9 +419,8 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= @@ -540,7 +526,6 @@ github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZqiDbRupzT10= github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa h1:0U2s5loxrTy6/VgfVoLuVLFJcURKLH49ie0zSch7gh4= github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= @@ -571,7 +556,6 @@ github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= @@ -583,7 +567,6 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn 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.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= @@ -613,20 +596,13 @@ github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 h1:hqAk8riJvK4RM github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tendermint v0.34.0-rc4/go.mod h1:yotsojf2C1QBOw4dZrTcxbyxmPUrT4hNuOQWX9XUwB4= -github.com/tendermint/tendermint v0.34.0-rc6/go.mod h1:ugzyZO5foutZImv0Iyx/gOFCX6mjJTgbLHTwi17VDVg= -github.com/tendermint/tendermint v0.34.0/go.mod h1:Aj3PIipBFSNO21r+Lq3TtzQ+uKESxkbA3yo/INM4QwQ= -github.com/tendermint/tendermint v0.34.13/go.mod h1:6RVVRBqwtKhA+H59APKumO+B7Nye4QXSFc6+TYxAxCI= github.com/tendermint/tendermint v0.34.14 h1:GCXmlS8Bqd2Ix3TQCpwYLUNHe+Y+QyJsm5YE+S/FkPo= github.com/tendermint/tendermint v0.34.14/go.mod h1:FrwVm3TvsVicI9Z7FlucHV6Znfd5KBc/Lpp69cCwtk0= -github.com/tendermint/tm-db v0.6.2/go.mod h1:GYtQ67SUvATOcoY8/+x6ylk8Qo02BQyLrAs+yAcLvGI= -github.com/tendermint/tm-db v0.6.3/go.mod h1:lfA1dL9/Y/Y8wwyPp2NMLyn5P5Ptr/gvDFNWtrCWSf8= github.com/tendermint/tm-db v0.6.4 h1:3N2jlnYQkXNQclQwd/eKV/NzlqPlfK21cpRRIx80XXQ= github.com/tendermint/tm-db v0.6.4/go.mod h1:dptYhIpJ2M5kUuenLr+Yyf3zQOv1SgBZcl8/BmWlMBw= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= @@ -672,8 +648,6 @@ golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= @@ -682,7 +656,6 @@ golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= 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/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -696,7 +669,6 @@ golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCc 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= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= 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/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -713,16 +685,13 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 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-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= 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-20190813141303-74dc4d7220e7/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-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -767,7 +736,6 @@ golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/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-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -778,7 +746,6 @@ golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/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= @@ -828,7 +795,6 @@ golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= @@ -862,8 +828,6 @@ google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201111145450-ac7456db90a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f h1:izedQ6yVIc5mZsRuXzmSreCOlzI0lCU1HpG8yEdMiKw= google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -886,7 +850,6 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks 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/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= diff --git a/store/iavl/store.go b/store/iavl/store.go index e3a3f897d70f..b10b36896fd2 100644 --- a/store/iavl/store.go +++ b/store/iavl/store.go @@ -4,7 +4,6 @@ import ( "errors" "fmt" "io" - "sync" "time" ics23 "github.com/confio/ics23/go" @@ -17,7 +16,6 @@ import ( "github.com/cosmos/cosmos-sdk/store/tracekv" "github.com/cosmos/cosmos-sdk/store/types" "github.com/cosmos/cosmos-sdk/telemetry" - sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/types/kv" ) @@ -372,29 +370,7 @@ func getProofFromTree(tree *iavl.MutableTree, key []byte, exists bool) *tmcrypto // Implements types.Iterator. type iavlIterator struct { - // Domain - start, end []byte - - key []byte // The current key (mutable) - value []byte // The current value (mutable) - - // Underlying store - tree *iavl.ImmutableTree - - // Channel to push iteration values. - iterCh chan kv.Pair - - // Close this to release goroutine. - quitCh chan struct{} - - // Close this to signal that state is initialized. - initCh chan struct{} - - mtx sync.Mutex - - ascending bool // Iteration order - - invalid bool // True once, true forever (mutable) + *iavl.Iterator } var _ types.Iterator = (*iavlIterator)(nil) @@ -404,140 +380,7 @@ var _ types.Iterator = (*iavlIterator)(nil) // goroutine. func newIAVLIterator(tree *iavl.ImmutableTree, start, end []byte, ascending bool) *iavlIterator { iter := &iavlIterator{ - tree: tree, - start: sdk.CopyBytes(start), - end: sdk.CopyBytes(end), - ascending: ascending, - iterCh: make(chan kv.Pair), // Set capacity > 0? - quitCh: make(chan struct{}), - initCh: make(chan struct{}), + Iterator: tree.Iterator(start, end, ascending), } - go iter.iterateRoutine() - go iter.initRoutine() return iter } - -// Run this to funnel items from the tree to iterCh. -func (iter *iavlIterator) iterateRoutine() { - iter.tree.IterateRange( - iter.start, iter.end, iter.ascending, - func(key, value []byte) bool { - select { - case <-iter.quitCh: - return true // done with iteration. - case iter.iterCh <- kv.Pair{Key: key, Value: value}: - return false // yay. - } - }, - ) - close(iter.iterCh) // done. -} - -// Run this to fetch the first item. -func (iter *iavlIterator) initRoutine() { - iter.receiveNext() - close(iter.initCh) -} - -// Implements types.Iterator. -func (iter *iavlIterator) Domain() (start, end []byte) { - return iter.start, iter.end -} - -// Implements types.Iterator. -func (iter *iavlIterator) Valid() bool { - iter.waitInit() - iter.mtx.Lock() - - validity := !iter.invalid - iter.mtx.Unlock() - return validity -} - -// Implements types.Iterator. -func (iter *iavlIterator) Next() { - iter.waitInit() - iter.mtx.Lock() - iter.assertIsValid(true) - - iter.receiveNext() - iter.mtx.Unlock() -} - -// Implements types.Iterator. -func (iter *iavlIterator) Key() []byte { - iter.waitInit() - iter.mtx.Lock() - iter.assertIsValid(true) - - key := iter.key - iter.mtx.Unlock() - return key -} - -// Implements types.Iterator. -func (iter *iavlIterator) Value() []byte { - iter.waitInit() - iter.mtx.Lock() - iter.assertIsValid(true) - - val := iter.value - iter.mtx.Unlock() - return val -} - -// Close closes the IAVL iterator by closing the quit channel and waiting for -// the iterCh to finish/close. -func (iter *iavlIterator) Close() error { - close(iter.quitCh) - // wait iterCh to close - for range iter.iterCh { - } - - return nil -} - -// Error performs a no-op. -func (iter *iavlIterator) Error() error { - return nil -} - -//---------------------------------------- - -func (iter *iavlIterator) setNext(key, value []byte) { - iter.assertIsValid(false) - - iter.key = key - iter.value = value -} - -func (iter *iavlIterator) setInvalid() { - iter.assertIsValid(false) - - iter.invalid = true -} - -func (iter *iavlIterator) waitInit() { - <-iter.initCh -} - -func (iter *iavlIterator) receiveNext() { - kvPair, ok := <-iter.iterCh - if ok { - iter.setNext(kvPair.Key, kvPair.Value) - } else { - iter.setInvalid() - } -} - -// assertIsValid panics if the iterator is invalid. If unlockMutex is true, -// it also unlocks the mutex before panicing, to prevent deadlocks in code that -// recovers from panics -func (iter *iavlIterator) assertIsValid(unlockMutex bool) { - if iter.invalid { - if unlockMutex { - iter.mtx.Unlock() - } - panic("invalid iterator") - } -} From 95a022a73b9907839ce5350d796056dc25ba73ca Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 2 Dec 2021 16:23:15 +0100 Subject: [PATCH 20/98] build(deps): Bump github.com/cosmos/iavl from 0.17.2 to 0.17.3 (backport #10654) (#10664) * build(deps): Bump github.com/cosmos/iavl from 0.17.2 to 0.17.3 (#10654) Bumps [github.com/cosmos/iavl](https://github.com/cosmos/iavl) from 0.17.2 to 0.17.3. - [Release notes](https://github.com/cosmos/iavl/releases) - [Changelog](https://github.com/cosmos/iavl/blob/v0.17.3/CHANGELOG.md) - [Commits](https://github.com/cosmos/iavl/compare/v0.17.2...v0.17.3) --- updated-dependencies: - dependency-name: github.com/cosmos/iavl dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 25f3af2f0afaab2b826b950b8872b70ee836a755) * add changelog entry Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: marbar3778 --- CHANGELOG.md | 1 + go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c57ebaba359f..1d67a97aea9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [\#10327](https://github.com/cosmos/cosmos-sdk/pull/10327) Add null guard for possible nil `Amount` in tx fee `Coins` * [\#10339](https://github.com/cosmos/cosmos-sdk/pull/10339) Improve performance of `removeZeroCoins` by only allocating memory when necessary * (deps) [\#10376](https://github.com/cosmos/cosmos-sdk/pull/10376) Bump Tendermint to [v0.34.14](https://github.com/tendermint/tendermint/releases/tag/v0.34.14). +* (deps) [\#10654](https://github.com/cosmos/cosmos-sdk/pull/10654) Bump IAVL version to 0.17.3. ### Bug Fixes diff --git a/go.mod b/go.mod index 6cbb2da5a438..2c4c8df5d9de 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/btcsuite/btcutil v1.0.2 github.com/confio/ics23/go v0.6.6 github.com/cosmos/go-bip39 v1.0.0 - github.com/cosmos/iavl v0.17.2 + github.com/cosmos/iavl v0.17.3 github.com/cosmos/ledger-cosmos-go v0.11.1 github.com/dgraph-io/ristretto v0.0.3 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect diff --git a/go.sum b/go.sum index c9c3278e3082..63cbbcfeaa7f 100644 --- a/go.sum +++ b/go.sum @@ -116,8 +116,8 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= -github.com/cosmos/iavl v0.17.2 h1:BT2u7DUvLLB+RYz9RItn/8n7Bt5xe5rj8QRTkk/PQU0= -github.com/cosmos/iavl v0.17.2/go.mod h1:prJoErZFABYZGDHka1R6Oay4z9PrNeFFiMKHDAMOi4w= +github.com/cosmos/iavl v0.17.3 h1:s2N819a2olOmiauVa0WAhoIJq9EhSXE9HDBAoR9k+8Y= +github.com/cosmos/iavl v0.17.3/go.mod h1:prJoErZFABYZGDHka1R6Oay4z9PrNeFFiMKHDAMOi4w= github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 h1:DdzS1m6o/pCqeZ8VOAit/gyATedRgjvkVI+UCrLpyuU= github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76/go.mod h1:0mkLWIoZuQ7uBoospo5Q9zIpqq6rYCPJDSUdeCJvPM8= github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4= From 769766c0e615e7fc767c8802cfc8e63905d94b76 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 2 Dec 2021 16:44:44 +0100 Subject: [PATCH 21/98] fix: Add Events to TxResponse (backport #10630) (#10644) * fix: Add Events to TxResponse (#10630) (cherry picked from commit c4bedf8a5677c11cf6c81d920c7668ef4b435f5d) # Conflicts: # CHANGELOG.md # go.sum # types/abci.pb.go # types/result.go * Michael sucks * Who Let the Bugs Out?? * Reinventing the wheel. Again. * No changes made Co-authored-by: Aleksandr Bezobchuk Co-authored-by: Aleksandr Bezobchuk --- CHANGELOG.md | 1 + proto/cosmos/base/abci/v1beta1/abci.proto | 7 + types/abci.pb.go | 180 +++++++++++++++------- types/result.go | 51 +----- types/result_test.go | 64 ++++++-- 5 files changed, 186 insertions(+), 117 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d67a97aea9e..6a88a274116c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Improvements +* (types) [\#10630](https://github.com/cosmos/cosmos-sdk/pull/10630) Add an `Events` field to the `TxResponse` type that captures _all_ events emitted by a transaction, unlike `Logs` which only contains events emitted during message execution. * [\#10327](https://github.com/cosmos/cosmos-sdk/pull/10327) Add null guard for possible nil `Amount` in tx fee `Coins` * [\#10339](https://github.com/cosmos/cosmos-sdk/pull/10339) Improve performance of `removeZeroCoins` by only allocating memory when necessary * (deps) [\#10376](https://github.com/cosmos/cosmos-sdk/pull/10376) Bump Tendermint to [v0.34.14](https://github.com/tendermint/tendermint/releases/tag/v0.34.14). diff --git a/proto/cosmos/base/abci/v1beta1/abci.proto b/proto/cosmos/base/abci/v1beta1/abci.proto index 72da2aacc36e..e24ae7bd5e97 100644 --- a/proto/cosmos/base/abci/v1beta1/abci.proto +++ b/proto/cosmos/base/abci/v1beta1/abci.proto @@ -39,6 +39,13 @@ message TxResponse { // the timestamps of the valid votes in the block.LastCommit. For height == 1, // it's genesis time. string timestamp = 12; + // Events defines all the events emitted by processing a transaction. Note, + // these events include those emitted by processing all the messages and those + // emitted from the ante handler. Whereas Logs contains the events, with + // additional metadata, emitted only by processing the messages. + // + // Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 + repeated tendermint.abci.Event events = 13 [(gogoproto.nullable) = false]; } // ABCIMessageLog defines a structure containing an indexed tx ABCI message log. diff --git a/types/abci.pb.go b/types/abci.pb.go index 44b35c3536d8..2e5a4604a7a4 100644 --- a/types/abci.pb.go +++ b/types/abci.pb.go @@ -57,6 +57,13 @@ type TxResponse struct { // the timestamps of the valid votes in the block.LastCommit. For height == 1, // it's genesis time. Timestamp string `protobuf:"bytes,12,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // Events defines all the events emitted by processing a transaction. Note, + // these events include those emitted by processing all the messages and those + // emitted from the ante handler. Whereas Logs contains the events, with + // additional metadata, emitted only by processing the messages. + // + // Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 + Events []types1.Event `protobuf:"bytes,13,rep,name=events,proto3" json:"events"` } func (m *TxResponse) Reset() { *m = TxResponse{} } @@ -609,65 +616,66 @@ func init() { } var fileDescriptor_4e37629bc7eb0df8 = []byte{ - // 922 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x55, 0x31, 0x73, 0x1b, 0x45, - 0x14, 0xd6, 0x49, 0xca, 0xc9, 0x7a, 0x72, 0x30, 0x2c, 0x26, 0x39, 0x27, 0xa0, 0x13, 0xe7, 0x64, - 0x46, 0x0d, 0xa7, 0x89, 0x13, 0x18, 0xc6, 0x05, 0x43, 0x2e, 0x10, 0xe2, 0x99, 0x84, 0x62, 0xad, - 0x0c, 0x33, 0x34, 0x9a, 0x95, 0xb4, 0x59, 0x1d, 0xd1, 0xdd, 0x6a, 0x6e, 0x57, 0xb6, 0xd4, 0x51, - 0x52, 0x52, 0xa5, 0xa0, 0xa2, 0xe6, 0x97, 0xa4, 0xc3, 0x65, 0x0a, 0x46, 0x80, 0xdd, 0xa5, 0xf4, - 0x2f, 0x60, 0xf6, 0xed, 0x59, 0x3a, 0x93, 0x91, 0x2b, 0xed, 0xfb, 0xde, 0xdb, 0xb7, 0x6f, 0xbf, - 0xef, 0xd3, 0x1e, 0xec, 0x0e, 0xa4, 0x4a, 0xa4, 0xea, 0xf4, 0x99, 0xe2, 0x1d, 0xd6, 0x1f, 0xc4, - 0x9d, 0xa3, 0x7b, 0x7d, 0xae, 0xd9, 0x3d, 0x0c, 0xc2, 0x49, 0x26, 0xb5, 0x24, 0x9e, 0x2d, 0x0a, - 0x4d, 0x51, 0x88, 0x78, 0x5e, 0x74, 0x6b, 0x5b, 0x48, 0x21, 0xb1, 0xa8, 0x63, 0x56, 0xb6, 0xfe, - 0xd6, 0x6d, 0xcd, 0xd3, 0x21, 0xcf, 0x92, 0x38, 0xd5, 0xb6, 0xa7, 0x9e, 0x4f, 0xb8, 0xca, 0x93, - 0x3b, 0x42, 0x4a, 0x31, 0xe6, 0x1d, 0x8c, 0xfa, 0xd3, 0x17, 0x1d, 0x96, 0xce, 0x6d, 0x2a, 0x78, - 0x55, 0x01, 0xe8, 0xce, 0x28, 0x57, 0x13, 0x99, 0x2a, 0x4e, 0x6e, 0x80, 0x3b, 0xe2, 0xb1, 0x18, - 0x69, 0xcf, 0x69, 0x39, 0xed, 0x0a, 0xcd, 0x23, 0x12, 0x80, 0xab, 0x67, 0x23, 0xa6, 0x46, 0x5e, - 0xb9, 0xe5, 0xb4, 0xeb, 0x11, 0x9c, 0x2e, 0x7c, 0xb7, 0x3b, 0x7b, 0xc2, 0xd4, 0x88, 0xe6, 0x19, - 0xf2, 0x31, 0xd4, 0x07, 0x72, 0xc8, 0xd5, 0x84, 0x0d, 0xb8, 0x57, 0x31, 0x65, 0x74, 0x05, 0x10, - 0x02, 0x55, 0x13, 0x78, 0xd5, 0x96, 0xd3, 0xbe, 0x4e, 0x71, 0x6d, 0xb0, 0x21, 0xd3, 0xcc, 0xbb, - 0x86, 0xc5, 0xb8, 0x26, 0x37, 0xa1, 0x96, 0xb1, 0xe3, 0xde, 0x58, 0x0a, 0xcf, 0x45, 0xd8, 0xcd, - 0xd8, 0xf1, 0x53, 0x29, 0xc8, 0x73, 0xa8, 0x8e, 0xa5, 0x50, 0x5e, 0xad, 0x55, 0x69, 0x37, 0xf6, - 0xda, 0xe1, 0x3a, 0x82, 0xc2, 0x87, 0xd1, 0xa3, 0x83, 0x67, 0x5c, 0x29, 0x26, 0xf8, 0x53, 0x29, - 0xa2, 0x9b, 0xaf, 0x17, 0x7e, 0xe9, 0x8f, 0xbf, 0xfd, 0xad, 0xcb, 0xb8, 0xa2, 0xd8, 0xce, 0xcc, - 0x10, 0xa7, 0x2f, 0xa4, 0xb7, 0x61, 0x67, 0x30, 0x6b, 0xf2, 0x09, 0x80, 0x60, 0xaa, 0x77, 0xcc, - 0x52, 0xcd, 0x87, 0x5e, 0x1d, 0x99, 0xa8, 0x0b, 0xa6, 0x7e, 0x40, 0x80, 0xec, 0xc0, 0x86, 0x49, - 0x4f, 0x15, 0x1f, 0x7a, 0x80, 0xc9, 0x9a, 0x60, 0xea, 0xb9, 0xe2, 0x43, 0x72, 0x07, 0xca, 0x7a, - 0xe6, 0x35, 0x5a, 0x4e, 0xbb, 0xb1, 0xb7, 0x1d, 0x5a, 0xda, 0xc3, 0x0b, 0xda, 0xc3, 0x87, 0xe9, - 0x9c, 0x96, 0xf5, 0xcc, 0x30, 0xa5, 0xe3, 0x84, 0x2b, 0xcd, 0x92, 0x89, 0xb7, 0x69, 0x99, 0x5a, - 0x02, 0xfb, 0xd5, 0x5f, 0x7e, 0xf7, 0x4b, 0xc1, 0x6f, 0x0e, 0xbc, 0x77, 0x79, 0x62, 0x72, 0x1b, - 0xea, 0x89, 0x12, 0xbd, 0x38, 0x1d, 0xf2, 0x19, 0xea, 0x73, 0x9d, 0x6e, 0x24, 0x4a, 0x1c, 0x98, - 0x98, 0xbc, 0x0f, 0x15, 0xc3, 0x19, 0xca, 0x43, 0xcd, 0x92, 0x1c, 0x82, 0xcb, 0x8f, 0x78, 0xaa, - 0x95, 0x57, 0x41, 0xca, 0xee, 0xae, 0xa7, 0xec, 0x50, 0x67, 0x71, 0x2a, 0xbe, 0x35, 0xd5, 0xd1, - 0x76, 0xce, 0xd7, 0x66, 0x01, 0x54, 0x34, 0x6f, 0xb5, 0x5f, 0xfd, 0xf9, 0xaf, 0x96, 0x13, 0x64, - 0xd0, 0x28, 0x64, 0x0d, 0x87, 0xc6, 0x6e, 0x38, 0x53, 0x9d, 0xe2, 0x9a, 0x1c, 0x00, 0x30, 0xad, - 0xb3, 0xb8, 0x3f, 0xd5, 0x5c, 0x79, 0x65, 0x9c, 0x60, 0xf7, 0x0a, 0xd1, 0x2e, 0x6a, 0xa3, 0xaa, - 0x39, 0x9f, 0x16, 0x36, 0xe7, 0x67, 0xde, 0x87, 0xfa, 0xb2, 0xc8, 0xdc, 0xf6, 0x25, 0x9f, 0xe7, - 0x07, 0x9a, 0x25, 0xd9, 0x86, 0x6b, 0x47, 0x6c, 0x3c, 0xe5, 0x39, 0x03, 0x36, 0x08, 0x24, 0xd4, - 0xbe, 0x63, 0xea, 0xc0, 0x88, 0xfa, 0xe0, 0x92, 0xa8, 0x66, 0x67, 0x35, 0xfa, 0xe8, 0x7c, 0xe1, - 0x7f, 0x30, 0x67, 0xc9, 0x78, 0x3f, 0x58, 0xe5, 0x82, 0xa2, 0xd6, 0x61, 0x41, 0xeb, 0x32, 0xee, - 0xf9, 0xf0, 0x7c, 0xe1, 0x6f, 0xad, 0xf6, 0x98, 0x4c, 0xb0, 0x34, 0x40, 0xf0, 0x13, 0xb8, 0x94, - 0xab, 0xe9, 0x58, 0x2f, 0xcd, 0x6d, 0x4e, 0xda, 0xcc, 0xcd, 0xfd, 0xae, 0x48, 0x0f, 0xfe, 0x27, - 0xd2, 0x8d, 0x70, 0xf5, 0x47, 0xb6, 0x0c, 0x59, 0x55, 0x2c, 0x2b, 0x4b, 0x15, 0xd0, 0x22, 0xaf, - 0x1c, 0x20, 0x87, 0x71, 0x32, 0x1d, 0x33, 0x1d, 0xcb, 0x74, 0xf9, 0x1f, 0x7e, 0x6c, 0x47, 0x46, - 0x57, 0x3b, 0xe8, 0xc4, 0x4f, 0xd7, 0xf3, 0x9e, 0xb3, 0x13, 0x6d, 0x98, 0xfe, 0x27, 0x0b, 0xdf, - 0xc1, 0xab, 0x20, 0x61, 0x5f, 0x82, 0x9b, 0xe1, 0x55, 0x70, 0xde, 0xc6, 0x5e, 0x6b, 0x7d, 0x17, - 0x7b, 0x65, 0x9a, 0xd7, 0x07, 0x5f, 0x41, 0xed, 0x99, 0x12, 0xdf, 0x98, 0x1b, 0xef, 0x80, 0xb1, - 0x68, 0xaf, 0x60, 0x8f, 0x5a, 0xa2, 0x44, 0xd7, 0x38, 0xe4, 0x82, 0xa0, 0xf2, 0x8a, 0xa0, 0x5c, - 0xea, 0x27, 0x50, 0xef, 0xce, 0x2e, 0x3a, 0x7c, 0xbe, 0xe4, 0xb1, 0x72, 0xf5, 0x55, 0xf2, 0x0d, - 0x97, 0x3a, 0xfd, 0x59, 0x86, 0xad, 0x43, 0xce, 0xb2, 0xc1, 0xa8, 0x3b, 0x53, 0xb9, 0x30, 0x8f, - 0xa1, 0xa1, 0xa5, 0x66, 0xe3, 0xde, 0x40, 0x4e, 0x53, 0x9d, 0x3b, 0xe1, 0xee, 0xdb, 0x85, 0x5f, - 0x84, 0xcf, 0x17, 0x3e, 0xb1, 0x22, 0x17, 0xc0, 0x80, 0x02, 0x46, 0x8f, 0x4c, 0x60, 0x1c, 0x67, - 0x3b, 0xa0, 0x2f, 0xa8, 0x0d, 0x4c, 0xf7, 0x09, 0x13, 0xbc, 0x97, 0x4e, 0x93, 0x3e, 0xcf, 0xf0, - 0x1d, 0xcc, 0xbb, 0x17, 0xe0, 0x55, 0xf7, 0x02, 0x18, 0x50, 0x30, 0xd1, 0xf7, 0x18, 0x90, 0x08, - 0x30, 0xea, 0xe1, 0x81, 0xf8, 0x6a, 0x56, 0xa3, 0xdd, 0xb7, 0x0b, 0xbf, 0x80, 0xae, 0xcc, 0xbb, - 0xc2, 0x02, 0x5a, 0x37, 0x41, 0xd7, 0xac, 0xcd, 0x84, 0xe3, 0x38, 0x89, 0x35, 0x3e, 0xb0, 0x55, - 0x6a, 0x03, 0xf2, 0x05, 0x54, 0xf4, 0x4c, 0x79, 0x2e, 0xf2, 0x79, 0x67, 0x3d, 0x9f, 0xab, 0xcf, - 0x02, 0x35, 0x1b, 0x2c, 0xa3, 0xd1, 0xd7, 0x6f, 0xfe, 0x6d, 0x96, 0x5e, 0x9f, 0x36, 0x9d, 0x93, - 0xd3, 0xa6, 0xf3, 0xcf, 0x69, 0xd3, 0xf9, 0xf5, 0xac, 0x59, 0x3a, 0x39, 0x6b, 0x96, 0xde, 0x9c, - 0x35, 0x4b, 0x3f, 0x06, 0x22, 0xd6, 0xa3, 0x69, 0x3f, 0x1c, 0xc8, 0xa4, 0x93, 0x7f, 0xe6, 0xec, - 0xcf, 0x67, 0x6a, 0xf8, 0xd2, 0x7e, 0x93, 0xfa, 0x2e, 0xbe, 0x87, 0xf7, 0xff, 0x0b, 0x00, 0x00, - 0xff, 0xff, 0xd8, 0xa9, 0x21, 0xb7, 0x08, 0x07, 0x00, 0x00, + // 929 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x55, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xf6, 0xda, 0xee, 0x3a, 0x7e, 0x4e, 0x08, 0x0c, 0xa1, 0xdd, 0xb4, 0xe0, 0x35, 0x9b, 0x56, + 0xf2, 0x85, 0xb5, 0x9a, 0x06, 0x84, 0x7a, 0x40, 0xd4, 0x85, 0xd2, 0x48, 0x2d, 0x87, 0x89, 0x2b, + 0x24, 0x2e, 0xd6, 0xd8, 0x9e, 0x8e, 0x97, 0x7a, 0x77, 0xac, 0x9d, 0xd9, 0x64, 0x7d, 0xe3, 0xc8, + 0x91, 0x13, 0x07, 0x4e, 0x9c, 0xf9, 0x4b, 0x7a, 0x40, 0x22, 0xc7, 0x1e, 0x90, 0x81, 0xe4, 0xd6, + 0x63, 0xfe, 0x02, 0x34, 0x3f, 0xe2, 0xdd, 0x80, 0x5c, 0x89, 0x93, 0xdf, 0xfb, 0xde, 0x9b, 0x37, + 0xef, 0x7d, 0xef, 0xdb, 0x31, 0xec, 0x8d, 0xb9, 0x88, 0xb9, 0xe8, 0x8d, 0x88, 0xa0, 0x3d, 0x32, + 0x1a, 0x47, 0xbd, 0xe3, 0xbb, 0x23, 0x2a, 0xc9, 0x5d, 0xed, 0x84, 0xf3, 0x94, 0x4b, 0x8e, 0x3c, + 0x93, 0x14, 0xaa, 0xa4, 0x50, 0xe3, 0x36, 0xe9, 0xe6, 0x0e, 0xe3, 0x8c, 0xeb, 0xa4, 0x9e, 0xb2, + 0x4c, 0xfe, 0xcd, 0x5b, 0x92, 0x26, 0x13, 0x9a, 0xc6, 0x51, 0x22, 0x4d, 0x4d, 0xb9, 0x98, 0x53, + 0x61, 0x83, 0xbb, 0x8c, 0x73, 0x36, 0xa3, 0x3d, 0xed, 0x8d, 0xb2, 0xe7, 0x3d, 0x92, 0x2c, 0x4c, + 0x28, 0xf8, 0xad, 0x06, 0x30, 0xc8, 0x31, 0x15, 0x73, 0x9e, 0x08, 0x8a, 0xae, 0x83, 0x3b, 0xa5, + 0x11, 0x9b, 0x4a, 0xcf, 0xe9, 0x38, 0xdd, 0x1a, 0xb6, 0x1e, 0x0a, 0xc0, 0x95, 0xf9, 0x94, 0x88, + 0xa9, 0x57, 0xed, 0x38, 0xdd, 0x66, 0x1f, 0xce, 0x96, 0xbe, 0x3b, 0xc8, 0x1f, 0x13, 0x31, 0xc5, + 0x36, 0x82, 0xde, 0x87, 0xe6, 0x98, 0x4f, 0xa8, 0x98, 0x93, 0x31, 0xf5, 0x6a, 0x2a, 0x0d, 0x17, + 0x00, 0x42, 0x50, 0x57, 0x8e, 0x57, 0xef, 0x38, 0xdd, 0x2d, 0xac, 0x6d, 0x85, 0x4d, 0x88, 0x24, + 0xde, 0x35, 0x9d, 0xac, 0x6d, 0x74, 0x03, 0x1a, 0x29, 0x39, 0x19, 0xce, 0x38, 0xf3, 0x5c, 0x0d, + 0xbb, 0x29, 0x39, 0x79, 0xc2, 0x19, 0x7a, 0x06, 0xf5, 0x19, 0x67, 0xc2, 0x6b, 0x74, 0x6a, 0xdd, + 0xd6, 0x7e, 0x37, 0x5c, 0x47, 0x50, 0xf8, 0xa0, 0xff, 0xf0, 0xf0, 0x29, 0x15, 0x82, 0x30, 0xfa, + 0x84, 0xb3, 0xfe, 0x8d, 0x97, 0x4b, 0xbf, 0xf2, 0xeb, 0x9f, 0xfe, 0xf6, 0x55, 0x5c, 0x60, 0x5d, + 0x4e, 0xf5, 0x10, 0x25, 0xcf, 0xb9, 0xb7, 0x61, 0x7a, 0x50, 0x36, 0xfa, 0x00, 0x80, 0x11, 0x31, + 0x3c, 0x21, 0x89, 0xa4, 0x13, 0xaf, 0xa9, 0x99, 0x68, 0x32, 0x22, 0xbe, 0xd1, 0x00, 0xda, 0x85, + 0x0d, 0x15, 0xce, 0x04, 0x9d, 0x78, 0xa0, 0x83, 0x0d, 0x46, 0xc4, 0x33, 0x41, 0x27, 0xe8, 0x36, + 0x54, 0x65, 0xee, 0xb5, 0x3a, 0x4e, 0xb7, 0xb5, 0xbf, 0x13, 0x1a, 0xda, 0xc3, 0x4b, 0xda, 0xc3, + 0x07, 0xc9, 0x02, 0x57, 0x65, 0xae, 0x98, 0x92, 0x51, 0x4c, 0x85, 0x24, 0xf1, 0xdc, 0xdb, 0x34, + 0x4c, 0xad, 0x00, 0x74, 0x00, 0x2e, 0x3d, 0xa6, 0x89, 0x14, 0xde, 0x96, 0x1e, 0xf5, 0x7a, 0x58, + 0xec, 0xd6, 0x4c, 0xfa, 0xa5, 0x0a, 0xf7, 0xeb, 0x6a, 0x30, 0x6c, 0x73, 0xef, 0xd7, 0x7f, 0xf8, + 0xc5, 0xaf, 0x04, 0x3f, 0x3b, 0xf0, 0xd6, 0xd5, 0x39, 0xd1, 0x2d, 0x68, 0xc6, 0x82, 0x0d, 0xa3, + 0x64, 0x42, 0x73, 0xbd, 0xd5, 0x2d, 0xbc, 0x11, 0x0b, 0x76, 0xa8, 0x7c, 0xf4, 0x36, 0xd4, 0x14, + 0xd3, 0x7a, 0xa9, 0x58, 0x99, 0xe8, 0x68, 0x75, 0x7b, 0x4d, 0xdf, 0x7e, 0x67, 0x3d, 0xd1, 0x47, + 0x32, 0x8d, 0x12, 0x66, 0x9a, 0xd9, 0xb1, 0x2c, 0x6f, 0x96, 0x40, 0x51, 0x34, 0xf7, 0xfd, 0x1f, + 0x1d, 0x27, 0x48, 0xa1, 0x55, 0x8a, 0x2a, 0xe6, 0x95, 0x48, 0x75, 0x4f, 0x4d, 0xac, 0x6d, 0x74, + 0x08, 0x40, 0xa4, 0x4c, 0xa3, 0x51, 0x26, 0xa9, 0xf0, 0xaa, 0xba, 0x83, 0xbd, 0x37, 0xac, 0xfa, + 0x32, 0xd7, 0x92, 0x51, 0x3a, 0x6c, 0xef, 0xbc, 0x07, 0xcd, 0x55, 0x92, 0x9a, 0xf6, 0x05, 0x5d, + 0xd8, 0x0b, 0x95, 0x89, 0x76, 0xe0, 0xda, 0x31, 0x99, 0x65, 0xd4, 0x32, 0x60, 0x9c, 0x80, 0x43, + 0xe3, 0x2b, 0x22, 0x0e, 0x95, 0x14, 0x0e, 0xae, 0x48, 0x41, 0x9d, 0xac, 0xf7, 0xdf, 0xbb, 0x58, + 0xfa, 0xef, 0x2c, 0x48, 0x3c, 0xbb, 0x1f, 0x14, 0xb1, 0xa0, 0xac, 0x90, 0xb0, 0xa4, 0x90, 0xaa, + 0x3e, 0xf3, 0xee, 0xc5, 0xd2, 0xdf, 0x2e, 0xce, 0xa8, 0x48, 0xb0, 0x92, 0x4d, 0xf0, 0x1d, 0xb8, + 0x98, 0x8a, 0x6c, 0x26, 0x57, 0x9f, 0x84, 0xba, 0x69, 0xd3, 0x7e, 0x12, 0xff, 0x5d, 0xd2, 0xc1, + 0xbf, 0x96, 0xf4, 0x7f, 0x24, 0xf2, 0x93, 0x03, 0xe8, 0x28, 0x8a, 0xb3, 0x19, 0x91, 0x11, 0x4f, + 0x56, 0x5f, 0xfe, 0x23, 0xd3, 0xb2, 0xfe, 0x16, 0x1c, 0xad, 0xdf, 0x0f, 0xd7, 0xf3, 0x6e, 0xd9, + 0xe9, 0x6f, 0xa8, 0xfa, 0xa7, 0x4b, 0xdf, 0xd1, 0xa3, 0x68, 0xc2, 0x3e, 0x05, 0x37, 0xd5, 0xa3, + 0xe8, 0x7e, 0x5b, 0xfb, 0x9d, 0xf5, 0x55, 0xcc, 0xc8, 0xd8, 0xe6, 0x07, 0x9f, 0x41, 0xe3, 0xa9, + 0x60, 0x5f, 0xa8, 0x89, 0x77, 0x41, 0x49, 0x74, 0x58, 0x92, 0x47, 0x23, 0x16, 0x6c, 0xa0, 0x14, + 0x72, 0x49, 0x50, 0xb5, 0x20, 0xc8, 0xae, 0xfa, 0x31, 0x34, 0x07, 0xf9, 0x65, 0x85, 0x8f, 0x57, + 0x3c, 0xd6, 0xde, 0x3c, 0x8a, 0x3d, 0x70, 0xa5, 0xd2, 0xef, 0x55, 0xd8, 0x3e, 0xa2, 0x24, 0x1d, + 0x4f, 0x07, 0xb9, 0xb0, 0x8b, 0x79, 0x04, 0x2d, 0xc9, 0x25, 0x99, 0x0d, 0xc7, 0x3c, 0x4b, 0xa4, + 0x55, 0xc2, 0x9d, 0xd7, 0x4b, 0xbf, 0x0c, 0x5f, 0x2c, 0x7d, 0x64, 0x96, 0x5c, 0x02, 0x03, 0x0c, + 0xda, 0x7b, 0xa8, 0x1c, 0xa5, 0x38, 0x53, 0x41, 0xeb, 0x02, 0x1b, 0x47, 0x55, 0x9f, 0x13, 0x46, + 0x87, 0x49, 0x16, 0x8f, 0x68, 0xaa, 0x5f, 0x4f, 0x5b, 0xbd, 0x04, 0x17, 0xd5, 0x4b, 0x60, 0x80, + 0x41, 0x79, 0x5f, 0x6b, 0x07, 0xf5, 0x41, 0x7b, 0x43, 0x7d, 0xa1, 0x7e, 0x6b, 0xeb, 0xfd, 0xbd, + 0xd7, 0x4b, 0xbf, 0x84, 0x16, 0xe2, 0x2d, 0xb0, 0x00, 0x37, 0x95, 0x33, 0x50, 0xb6, 0xea, 0x70, + 0x16, 0xc5, 0x91, 0xd4, 0xcf, 0x72, 0x1d, 0x1b, 0x07, 0x7d, 0x02, 0x35, 0x99, 0x0b, 0xcf, 0xd5, + 0x7c, 0xde, 0x5e, 0xcf, 0x67, 0xf1, 0x67, 0x82, 0xd5, 0x01, 0xc3, 0x68, 0xff, 0xf3, 0x57, 0x7f, + 0xb7, 0x2b, 0x2f, 0xcf, 0xda, 0xce, 0xe9, 0x59, 0xdb, 0xf9, 0xeb, 0xac, 0xed, 0xfc, 0x78, 0xde, + 0xae, 0x9c, 0x9e, 0xb7, 0x2b, 0xaf, 0xce, 0xdb, 0x95, 0x6f, 0x03, 0x16, 0xc9, 0x69, 0x36, 0x0a, + 0xc7, 0x3c, 0xee, 0xd9, 0x3f, 0x47, 0xf3, 0xf3, 0x91, 0x98, 0xbc, 0x30, 0xff, 0x64, 0x23, 0x57, + 0xbf, 0xa2, 0xf7, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0x03, 0x85, 0x77, 0x9d, 0x3e, 0x07, 0x00, + 0x00, } func (m *TxResponse) Marshal() (dAtA []byte, err error) { @@ -690,6 +698,20 @@ func (m *TxResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Events) > 0 { + for iNdEx := len(m.Events) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Events[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintAbci(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x6a + } + } if len(m.Timestamp) > 0 { i -= len(m.Timestamp) copy(dAtA[i:], m.Timestamp) @@ -1239,6 +1261,12 @@ func (m *TxResponse) Size() (n int) { if l > 0 { n += 1 + l + sovAbci(uint64(l)) } + if len(m.Events) > 0 { + for _, e := range m.Events { + l = e.Size() + n += 1 + l + sovAbci(uint64(l)) + } + } return n } @@ -1875,6 +1903,40 @@ func (m *TxResponse) Unmarshal(dAtA []byte) error { } m.Timestamp = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Events", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAbci + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAbci + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAbci + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Events = append(m.Events, types1.Event{}) + if err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAbci(dAtA[iNdEx:]) diff --git a/types/result.go b/types/result.go index 6a50ecffbacd..88aa24e34cbd 100644 --- a/types/result.go +++ b/types/result.go @@ -3,14 +3,10 @@ package types import ( "encoding/hex" "encoding/json" - "fmt" "math" "strings" "github.com/gogo/protobuf/proto" - - yaml "gopkg.in/yaml.v2" - abci "github.com/tendermint/tendermint/abci/types" ctypes "github.com/tendermint/tendermint/rpc/core/types" @@ -21,12 +17,12 @@ import ( var cdc = codec.NewLegacyAmino() func (gi GasInfo) String() string { - bz, _ := yaml.Marshal(gi) + bz, _ := codec.MarshalYAML(codec.NewProtoCodec(nil), &gi) return string(bz) } func (r Result) String() string { - bz, _ := yaml.Marshal(r) + bz, _ := codec.MarshalYAML(codec.NewProtoCodec(nil), &r) return string(bz) } @@ -83,6 +79,7 @@ func NewResponseResultTx(res *ctypes.ResultTx, anyTx *codectypes.Any, timestamp GasUsed: res.TxResult.GasUsed, Tx: anyTx, Timestamp: timestamp, + Events: res.TxResult.Events, } } @@ -123,6 +120,7 @@ func newTxResponseCheckTx(res *ctypes.ResultBroadcastTxCommit) *TxResponse { Info: res.CheckTx.Info, GasWanted: res.CheckTx.GasWanted, GasUsed: res.CheckTx.GasUsed, + Events: res.CheckTx.Events, } } @@ -149,6 +147,7 @@ func newTxResponseDeliverTx(res *ctypes.ResultBroadcastTxCommit) *TxResponse { Info: res.DeliverTx.Info, GasWanted: res.DeliverTx.GasWanted, GasUsed: res.DeliverTx.GasUsed, + Events: res.DeliverTx.Events, } } @@ -171,44 +170,8 @@ func NewResponseFormatBroadcastTx(res *ctypes.ResultBroadcastTx) *TxResponse { } func (r TxResponse) String() string { - var sb strings.Builder - sb.WriteString("Response:\n") - - if r.Height > 0 { - sb.WriteString(fmt.Sprintf(" Height: %d\n", r.Height)) - } - if r.TxHash != "" { - sb.WriteString(fmt.Sprintf(" TxHash: %s\n", r.TxHash)) - } - if r.Code > 0 { - sb.WriteString(fmt.Sprintf(" Code: %d\n", r.Code)) - } - if r.Data != "" { - sb.WriteString(fmt.Sprintf(" Data: %s\n", r.Data)) - } - if r.RawLog != "" { - sb.WriteString(fmt.Sprintf(" Raw Log: %s\n", r.RawLog)) - } - if r.Logs != nil { - sb.WriteString(fmt.Sprintf(" Logs: %s\n", r.Logs)) - } - if r.Info != "" { - sb.WriteString(fmt.Sprintf(" Info: %s\n", r.Info)) - } - if r.GasWanted != 0 { - sb.WriteString(fmt.Sprintf(" GasWanted: %d\n", r.GasWanted)) - } - if r.GasUsed != 0 { - sb.WriteString(fmt.Sprintf(" GasUsed: %d\n", r.GasUsed)) - } - if r.Codespace != "" { - sb.WriteString(fmt.Sprintf(" Codespace: %s\n", r.Codespace)) - } - if r.Timestamp != "" { - sb.WriteString(fmt.Sprintf(" Timestamp: %s\n", r.Timestamp)) - } - - return strings.TrimSpace(sb.String()) + bz, _ := codec.MarshalYAML(codec.NewProtoCodec(nil), &r) + return string(bz) } // Empty returns true if the response is empty diff --git a/types/result_test.go b/types/result_test.go index 6ca9731f8cc4..ab47b544a279 100644 --- a/types/result_test.go +++ b/types/result_test.go @@ -7,10 +7,8 @@ import ( "testing" "github.com/golang/protobuf/proto" - "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - abci "github.com/tendermint/tendermint/abci/types" "github.com/tendermint/tendermint/libs/bytes" ctypes "github.com/tendermint/tendermint/rpc/core/types" @@ -101,18 +99,20 @@ func (s *resultTestSuite) TestResponseResultTx() { s.Require().Equal(want, sdk.NewResponseResultTx(resultTx, nil, "timestamp")) s.Require().Equal((*sdk.TxResponse)(nil), sdk.NewResponseResultTx(nil, nil, "timestamp")) - s.Require().Equal(`Response: - Height: 10 - TxHash: 74657374 - Code: 1 - Data: 64617461 - Raw Log: [] - Logs: [] - Info: info - GasWanted: 100 - GasUsed: 90 - Codespace: codespace - Timestamp: timestamp`, sdk.NewResponseResultTx(resultTx, nil, "timestamp").String()) + s.Require().Equal(`code: 1 +codespace: codespace +data: "64617461" +events: [] +gas_used: "90" +gas_wanted: "100" +height: "10" +info: info +logs: [] +raw_log: '[]' +timestamp: timestamp +tx: null +txhash: "74657374" +`, sdk.NewResponseResultTx(resultTx, nil, "timestamp").String()) s.Require().True(sdk.TxResponse{}.Empty()) s.Require().False(want.Empty()) @@ -154,6 +154,18 @@ func (s *resultTestSuite) TestResponseFormatBroadcastTxCommit() { GasWanted: 99, GasUsed: 100, Codespace: "codespace", + Events: []abci.Event{ + { + Type: "message", + Attributes: []abci.EventAttribute{ + { + Key: []byte("action"), + Value: []byte("foo"), + Index: true, + }, + }, + }, + }, }, } deliverTxResult := &ctypes.ResultBroadcastTxCommit{ @@ -167,6 +179,18 @@ func (s *resultTestSuite) TestResponseFormatBroadcastTxCommit() { GasWanted: 99, GasUsed: 100, Codespace: "codespace", + Events: []abci.Event{ + { + Type: "message", + Attributes: []abci.EventAttribute{ + { + Key: []byte("action"), + Value: []byte("foo"), + Index: true, + }, + }, + }, + }, }, } want := &sdk.TxResponse{ @@ -180,6 +204,18 @@ func (s *resultTestSuite) TestResponseFormatBroadcastTxCommit() { Info: "info", GasWanted: 99, GasUsed: 100, + Events: []abci.Event{ + { + Type: "message", + Attributes: []abci.EventAttribute{ + { + Key: []byte("action"), + Value: []byte("foo"), + Index: true, + }, + }, + }, + }, } s.Require().Equal(want, sdk.NewResponseFormatBroadcastTxCommit(checkTxResult)) From 027b8f1b3b73c16f99730563294035abdc0f1492 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 2 Dec 2021 16:50:16 +0100 Subject: [PATCH 22/98] fix: bech32 address test to satisfy the specification (#10163) (#10164) (#10665) ## Description Closes: #10163 --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [x] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting)) - [x] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing) - [ ] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) (cherry picked from commit a0ecfe54ea9daf09556a0492667d1049123c760a) Co-authored-by: Jeeyong Um --- types/address_test.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/types/address_test.go b/types/address_test.go index 5796c891acb0..97fef6e5063c 100644 --- a/types/address_test.go +++ b/types/address_test.go @@ -407,12 +407,12 @@ func (s *addressTestSuite) TestBech32ifyAddressBytes() { want string wantErr bool }{ - {"empty address", args{"prefixA", []byte{}}, "", false}, + {"empty address", args{"prefixa", []byte{}}, "", false}, {"empty prefix", args{"", addr20byte}, "", true}, - {"10-byte address", args{"prefixA", addr10byte}, "prefixA1qqqsyqcyq5rqwzqfwvmuzx", false}, - {"10-byte address", args{"prefixB", addr10byte}, "prefixB1qqqsyqcyq5rqwzqf4xftmx", false}, - {"20-byte address", args{"prefixA", addr20byte}, "prefixA1qqqsyqcyq5rqwzqfpg9scrgwpugpzysn6j4npq", false}, - {"20-byte address", args{"prefixB", addr20byte}, "prefixB1qqqsyqcyq5rqwzqfpg9scrgwpugpzysn8e9wka", false}, + {"10-byte address", args{"prefixa", addr10byte}, "prefixa1qqqsyqcyq5rqwzqf3953cc", false}, + {"10-byte address", args{"prefixb", addr10byte}, "prefixb1qqqsyqcyq5rqwzqf20xxpc", false}, + {"20-byte address", args{"prefixa", addr20byte}, "prefixa1qqqsyqcyq5rqwzqfpg9scrgwpugpzysn7hzdtn", false}, + {"20-byte address", args{"prefixb", addr20byte}, "prefixb1qqqsyqcyq5rqwzqfpg9scrgwpugpzysnrujsuw", false}, } for _, tt := range tests { tt := tt @@ -440,12 +440,12 @@ func (s *addressTestSuite) TestMustBech32ifyAddressBytes() { want string wantPanic bool }{ - {"empty address", args{"prefixA", []byte{}}, "", false}, + {"empty address", args{"prefixa", []byte{}}, "", false}, {"empty prefix", args{"", addr20byte}, "", true}, - {"10-byte address", args{"prefixA", addr10byte}, "prefixA1qqqsyqcyq5rqwzqfwvmuzx", false}, - {"10-byte address", args{"prefixB", addr10byte}, "prefixB1qqqsyqcyq5rqwzqf4xftmx", false}, - {"20-byte address", args{"prefixA", addr20byte}, "prefixA1qqqsyqcyq5rqwzqfpg9scrgwpugpzysn6j4npq", false}, - {"20-byte address", args{"prefixB", addr20byte}, "prefixB1qqqsyqcyq5rqwzqfpg9scrgwpugpzysn8e9wka", false}, + {"10-byte address", args{"prefixa", addr10byte}, "prefixa1qqqsyqcyq5rqwzqf3953cc", false}, + {"10-byte address", args{"prefixb", addr10byte}, "prefixb1qqqsyqcyq5rqwzqf20xxpc", false}, + {"20-byte address", args{"prefixa", addr20byte}, "prefixa1qqqsyqcyq5rqwzqfpg9scrgwpugpzysn7hzdtn", false}, + {"20-byte address", args{"prefixb", addr20byte}, "prefixb1qqqsyqcyq5rqwzqfpg9scrgwpugpzysnrujsuw", false}, } for _, tt := range tests { tt := tt From ae9c4ea046dfc6cbbc0c14c97bc7d58608dee151 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 6 Dec 2021 10:23:41 +0100 Subject: [PATCH 23/98] build(deps): Use self-maintained btcutil (#10082) (backport #10201) (#10622) * build(deps): Use self-maintained btcutil (#10082) (#10201) ## Description Closes: #10082 --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [x] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [x] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting)) - [x] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing) - [ ] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) (cherry picked from commit 623d0841c48041e5c22b7c335f643eb032737849) # Conflicts: # go.mod # go.sum # x/authz/client/testutil/grpc.go # x/group/go.mod # x/group/go.sum * remove unneeded files * add changelog entry Co-authored-by: Jeeyong Um Co-authored-by: marbar3778 --- CHANGELOG.md | 2 ++ client/keys/show_test.go | 2 +- crypto/keys/secp256k1/secp256k1_test.go | 2 +- go.mod | 7 +++---- go.sum | 15 ++++++++------- types/bech32/bech32.go | 2 +- 6 files changed, 16 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a88a274116c..a95ff27096ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,8 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [\#10339](https://github.com/cosmos/cosmos-sdk/pull/10339) Improve performance of `removeZeroCoins` by only allocating memory when necessary * (deps) [\#10376](https://github.com/cosmos/cosmos-sdk/pull/10376) Bump Tendermint to [v0.34.14](https://github.com/tendermint/tendermint/releases/tag/v0.34.14). * (deps) [\#10654](https://github.com/cosmos/cosmos-sdk/pull/10654) Bump IAVL version to 0.17.3. +* (deps) [\#10201](https://github.com/cosmos/cosmos-sdk/pull/10201) Migrate from `enigmampc/btcutil` to `cosmos/btcutil`. + ### Bug Fixes diff --git a/client/keys/show_test.go b/client/keys/show_test.go index 7f43450b81c2..68b78303f69d 100644 --- a/client/keys/show_test.go +++ b/client/keys/show_test.go @@ -121,7 +121,7 @@ func Test_runShowCmd(t *testing.T) { require.EqualError(t, cmd.ExecuteContext(ctx), "invalid is not a valid name or address: decoding bech32 failed: invalid bech32 string length 7") cmd.SetArgs([]string{"invalid1", "invalid2"}) - require.EqualError(t, cmd.ExecuteContext(ctx), "invalid1 is not a valid name or address: decoding bech32 failed: invalid index of 1") + require.EqualError(t, cmd.ExecuteContext(ctx), "invalid1 is not a valid name or address: decoding bech32 failed: invalid separator index 7") fakeKeyName1 := "runShowCmd_Key1" fakeKeyName2 := "runShowCmd_Key2" diff --git a/crypto/keys/secp256k1/secp256k1_test.go b/crypto/keys/secp256k1/secp256k1_test.go index 56c67f594b0b..1994e5057fec 100644 --- a/crypto/keys/secp256k1/secp256k1_test.go +++ b/crypto/keys/secp256k1/secp256k1_test.go @@ -8,7 +8,7 @@ import ( "testing" btcSecp256k1 "github.com/btcsuite/btcd/btcec" - "github.com/btcsuite/btcutil/base58" + "github.com/cosmos/btcutil/base58" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/tendermint/tendermint/crypto" diff --git a/go.mod b/go.mod index 2c4c8df5d9de..3baa1b3f36bd 100644 --- a/go.mod +++ b/go.mod @@ -7,15 +7,14 @@ require ( github.com/DataDog/zstd v1.4.5 // indirect github.com/armon/go-metrics v0.3.8 github.com/bgentry/speakeasy v0.1.0 - github.com/btcsuite/btcd v0.21.0-beta - github.com/btcsuite/btcutil v1.0.2 + github.com/btcsuite/btcd v0.22.0-beta github.com/confio/ics23/go v0.6.6 + github.com/cosmos/btcutil v1.0.4 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/iavl v0.17.3 github.com/cosmos/ledger-cosmos-go v0.11.1 github.com/dgraph-io/ristretto v0.0.3 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect - github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25 github.com/gogo/gateway v1.1.0 github.com/gogo/protobuf v1.3.3 github.com/golang/mock v1.4.4 @@ -53,7 +52,7 @@ require ( golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f google.golang.org/grpc v1.42.0 - google.golang.org/protobuf v1.26.0 + google.golang.org/protobuf v1.27.0 gopkg.in/ini.v1 v1.61.0 // indirect gopkg.in/yaml.v2 v2.4.0 diff --git a/go.sum b/go.sum index 63cbbcfeaa7f..67e9bb3a4ac1 100644 --- a/go.sum +++ b/go.sum @@ -67,13 +67,15 @@ github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edY github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btcd v0.21.0-beta h1:At9hIZdJW0s9E/fAz28nrz6AmcNlSVucCH796ZteX1M= github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= +github.com/btcsuite/btcd v0.22.0-beta h1:LTDpDKUM5EeOFBPM8IXpinEcmZ6FWfNZbE3lfrfdnWo= +github.com/btcsuite/btcd v0.22.0-beta/go.mod h1:9n5ntfhhHQBIhUvlhDvD3Qg6fRUj4jkN0VB8L8svzOA= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v1.0.2 h1:9iZ1Terx9fMIOtq1VrwdqfsATL9MC2l8ZrUY6YZ2uts= github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= +github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ= +github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= @@ -113,6 +115,8 @@ github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7 github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cosmos/btcutil v1.0.4 h1:n7C2ngKXo7UC9gNyMNLbzqz7Asuf+7Qv4gnX/rOdQ44= +github.com/cosmos/btcutil v1.0.4/go.mod h1:Ffqc8Hn6TJUdDgHBwIZLtrLQC1KdJ9jGJl/TvgUaxbU= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= @@ -159,8 +163,6 @@ github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25 h1:2vLKys4RBU4pn2T/hjXMbvwTr1Cvy5THHrQkbeY9HRk= -github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25/go.mod h1:hTr8+TLQmkUkgcuh3mcr5fjrT9c64ZzsBCdCEC6UppY= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51 h1:0JZ+dUmQeA8IIVUMzysrX4/AKuQwWhV2dYQuPZdvdSQ= @@ -340,7 +342,6 @@ github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNr 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/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/kkdai/bstream v1.0.0/go.mod h1:FDnDOHt5Yx4p3FaHcioFT0QjDOtgUpvjeZqAs+NVZZA= 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= @@ -646,7 +647,6 @@ golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY= @@ -844,8 +844,9 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= 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 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.0 h1:KhgSLlr/moiqjv0qUsSnLvdUL7NH7PHW8aZGn7Jpjko= +google.golang.org/protobuf v1.27.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= 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= diff --git a/types/bech32/bech32.go b/types/bech32/bech32.go index 22a177663eae..59bd8b9541df 100644 --- a/types/bech32/bech32.go +++ b/types/bech32/bech32.go @@ -3,7 +3,7 @@ package bech32 import ( "fmt" - "github.com/enigmampc/btcutil/bech32" + "github.com/cosmos/btcutil/bech32" ) // ConvertAndEncode converts from a base64 encoded byte string to base32 encoded byte string and then to bech32. From 01fac6435a0b1e7a49c64932e3081d5e2cbb7ed0 Mon Sep 17 00:00:00 2001 From: Amaury <1293565+amaurym@users.noreply.github.com> Date: Tue, 7 Dec 2021 13:22:40 +0100 Subject: [PATCH 24/98] chore: v0.42.11 changelog and release notes (#10695) --- CHANGELOG.md | 7 ++++++- RELEASE_NOTES.md | 22 +++++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a95ff27096ca..466e3ad83658 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,8 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## Unreleased +## [v0.42.11](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.42.11) - 2021-12-07 + ### Improvements * (types) [\#10630](https://github.com/cosmos/cosmos-sdk/pull/10630) Add an `Events` field to the `TxResponse` type that captures _all_ events emitted by a transaction, unlike `Logs` which only contains events emitted during message execution. @@ -49,7 +51,10 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Bug Fixes * (client) [#10226](https://github.com/cosmos/cosmos-sdk/pull/10226) Fix --home flag parsing. -* [\#10394](https://github.com/cosmos/cosmos-sdk/issues/10394) Fixes issue related to grpc-gateway of account balance by ibc-denom. + +### Client Breaking Changes + +* [\#10394](https://github.com/cosmos/cosmos-sdk/issues/10394) Fixes issue related to grpc-gateway of account balance by ibc-denom. Please use `/cosmos/bank/v1beta1/balances/{address}/by_denom?denom={DENOM or IBC-DENOM}` for querying balances by denom. ## [v0.42.10](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.42.10) - 2021-09-28 diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 9a2a97f9b0af..b6e995e99bad 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,15 +1,19 @@ -# Cosmos SDK v0.42.10 "Stargate" Release Notes +# Cosmos SDK v0.42.11 "Stargate" Release Notes -This release includes a new `AnteHandler` that rejects redundant IBC transactions to save relayers fees. This is a backport of [ibc-go \#235](https://github.com/cosmos/ibc-go/pull/235). +This release includes a client-breaking change for HTTP users querying account balances by denom: -v0.42.10 also includes multiple performance improvements, such as: +```diff +- /cosmos/bank/v1beta1/balances/
/ ++ /cosmos/bank/v1beta1/balances/
/by_denom?denom= +``` -- improve ABCI performance under concurrent load via [Tendermint v0.34.13](https://github.com/tendermint/tendermint/blob/master/CHANGELOG.md#v03413), -- improve CacheKVStore datastructures / algorithms, to no longer take O(N^2) time when interleaving iterators and insertions. -- bump IAVL to v0.17.1 which includes performance improvements on a batch load. +This change was made to fix querying IBC denoms via HTTP. -We fixed the keyring to use pre-configured data for `add-genesis-account` command. +v0.42.11 also includes multiple bugfixes and performance improvements, such as: -Finally, when using the `client.Context`, we modified ABCI queries to use `abci.QueryRequest`'s `Height` field if it is non-zero, otherwise continue using `client.Context`'s height. This is a minor client-breaking change for users of the `client.Context`. +- Upgrade IAVL to 0.17.3 to solve race condition bug in IAVL. +- Bump Tendermint to [v0.34.14](https://github.com/tendermint/tendermint/releases/tag/v0.34.14). -See the [Cosmos SDK v0.42.10 milestone](https://github.com/cosmos/cosmos-sdk/milestone/55?closed=1) on our issue tracker for the exhaustive list of all changes. +Finally, when querying for transactions, we added an `Events` field to the `TxResponse` type that captures _all_ events emitted by a transaction, unlike `Logs` which only contains events emitted during message execution. `Logs` and `Events` may currently contain duplicate data, but `Logs` will be deprecated in a future version. + +See our [CHANGELOG](./CHANGELOG.md) for the exhaustive list of all changes, or a full [commit diff](https://github.com/cosmos/cosmos-sdk/compare/v0.42.09...v0.42.10). From c81d3d6663467efbdc0803bb220519cb92a6da66 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 13 Dec 2021 11:58:13 +0100 Subject: [PATCH 25/98] perf: Speedup cachekv iterator on large deletions & IBC v2 upgrade logic (backport #10741) (#10746) * perf: Speedup cachekv iterator on large deletions & IBC v2 upgrade logic (#10741) (cherry picked from commit 314e1d52c248e61847e0d78be165fc9d843ef812) # Conflicts: # CHANGELOG.md # store/cachekv/store_bench_test.go * fix conflicts Co-authored-by: Dev Ojha Co-authored-by: marbar3778 --- CHANGELOG.md | 1 + store/cachekv/bench_helper_test.go | 44 +++++++++ store/cachekv/memiterator.go | 20 ++-- store/cachekv/store_bench_test.go | 144 ++++++++++++++++++++++++----- 4 files changed, 179 insertions(+), 30 deletions(-) create mode 100644 store/cachekv/bench_helper_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 466e3ad83658..303c5366189b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -46,6 +46,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (deps) [\#10376](https://github.com/cosmos/cosmos-sdk/pull/10376) Bump Tendermint to [v0.34.14](https://github.com/tendermint/tendermint/releases/tag/v0.34.14). * (deps) [\#10654](https://github.com/cosmos/cosmos-sdk/pull/10654) Bump IAVL version to 0.17.3. * (deps) [\#10201](https://github.com/cosmos/cosmos-sdk/pull/10201) Migrate from `enigmampc/btcutil` to `cosmos/btcutil`. +* (store) [\#10741](https://github.com/cosmos/cosmos-sdk/pull/10741) Significantly speedup iterator creation after delete heavy workloads. Significantly improves IBC migration times. ### Bug Fixes diff --git a/store/cachekv/bench_helper_test.go b/store/cachekv/bench_helper_test.go new file mode 100644 index 000000000000..fe5be27fabc9 --- /dev/null +++ b/store/cachekv/bench_helper_test.go @@ -0,0 +1,44 @@ +package cachekv_test + +import "crypto/rand" + +func randSlice(sliceSize int) []byte { + bz := make([]byte, sliceSize) + _, _ = rand.Read(bz) + return bz +} + +func incrementByteSlice(bz []byte) { + for index := len(bz) - 1; index >= 0; index-- { + if bz[index] < 255 { + bz[index]++ + break + } else { + bz[index] = 0 + } + } +} + +// Generate many keys starting at startKey, and are in sequential order +func generateSequentialKeys(startKey []byte, numKeys int) [][]byte { + toReturn := make([][]byte, 0, numKeys) + cur := make([]byte, len(startKey)) + copy(cur, startKey) + for i := 0; i < numKeys; i++ { + newKey := make([]byte, len(startKey)) + copy(newKey, cur) + toReturn = append(toReturn, newKey) + incrementByteSlice(cur) + } + return toReturn +} + +// Generate many random, unsorted keys +func generateRandomKeys(keySize int, numKeys int) [][]byte { + toReturn := make([][]byte, 0, numKeys) + for i := 0; i < numKeys; i++ { + newKey := randSlice(keySize) + toReturn = append(toReturn, newKey) + } + return toReturn +} diff --git a/store/cachekv/memiterator.go b/store/cachekv/memiterator.go index 0a4bc57a6406..04df40ff56aa 100644 --- a/store/cachekv/memiterator.go +++ b/store/cachekv/memiterator.go @@ -1,6 +1,8 @@ package cachekv import ( + "bytes" + dbm "github.com/tendermint/tm-db" "github.com/cosmos/cosmos-sdk/store/types" @@ -12,6 +14,7 @@ import ( type memIterator struct { types.Iterator + lastKey []byte deleted map[string]struct{} } @@ -29,22 +32,25 @@ func newMemIterator(start, end []byte, items *dbm.MemDB, deleted map[string]stru panic(err) } - newDeleted := make(map[string]struct{}) - for k, v := range deleted { - newDeleted[k] = v - } - return &memIterator{ Iterator: iter, - deleted: newDeleted, + lastKey: nil, + deleted: deleted, } } func (mi *memIterator) Value() []byte { key := mi.Iterator.Key() - if _, ok := mi.deleted[string(key)]; ok { + // We need to handle the case where deleted is modified and includes our current key + // We handle this by maintaining a lastKey object in the iterator. + // If the current key is the same as the last key (and last key is not nil / the start) + // then we are calling value on the same thing as last time. + // Therefore we don't check the mi.deleted to see if this key is included in there. + reCallingOnOldLastKey := (mi.lastKey != nil) && bytes.Equal(key, mi.lastKey) + if _, ok := mi.deleted[string(key)]; ok && !reCallingOnOldLastKey { return nil } + mi.lastKey = key return mi.Iterator.Value() } diff --git a/store/cachekv/store_bench_test.go b/store/cachekv/store_bench_test.go index 4902819834d8..88c86eff564a 100644 --- a/store/cachekv/store_bench_test.go +++ b/store/cachekv/store_bench_test.go @@ -1,8 +1,6 @@ package cachekv_test import ( - "crypto/rand" - "sort" "testing" dbm "github.com/tendermint/tm-db" @@ -11,36 +9,136 @@ import ( "github.com/cosmos/cosmos-sdk/store/dbadapter" ) -func benchmarkCacheKVStoreIterator(numKVs int, b *testing.B) { +var sink interface{} + +const defaultValueSizeBz = 1 << 12 + +// This benchmark measures the time of iterator.Next() when the parent store is blank +func benchmarkBlankParentIteratorNext(b *testing.B, keysize int) { + mem := dbadapter.Store{DB: dbm.NewMemDB()} + kvstore := cachekv.NewStore(mem) + // Use a singleton for value, to not waste time computing it + value := randSlice(defaultValueSizeBz) + // Use simple values for keys, pick a random start, + // and take next b.N keys sequentially after.] + startKey := randSlice(32) + + // Add 1 to avoid issues when b.N = 1 + keys := generateSequentialKeys(startKey, b.N+1) + for _, k := range keys { + kvstore.Set(k, value) + } + + b.ReportAllocs() + b.ResetTimer() + + iter := kvstore.Iterator(keys[0], keys[b.N]) + defer iter.Close() + + for _ = iter.Key(); iter.Valid(); iter.Next() { + // deadcode elimination stub + sink = iter + } +} + +// Benchmark setting New keys to a store, where the new keys are in sequence. +func benchmarkBlankParentAppend(b *testing.B, keysize int) { + mem := dbadapter.Store{DB: dbm.NewMemDB()} + kvstore := cachekv.NewStore(mem) + + // Use a singleton for value, to not waste time computing it + value := randSlice(32) + // Use simple values for keys, pick a random start, + // and take next b.N keys sequentially after. + startKey := randSlice(32) + + keys := generateSequentialKeys(startKey, b.N) + + b.ReportAllocs() + b.ResetTimer() + + for _, k := range keys { + kvstore.Set(k, value) + } +} + +// Benchmark setting New keys to a store, where the new keys are random. +// the speed of this function does not depend on the values in the parent store +func benchmarkRandomSet(b *testing.B, keysize int) { mem := dbadapter.Store{DB: dbm.NewMemDB()} - cstore := cachekv.NewStore(mem) - keys := make([]string, numKVs) + kvstore := cachekv.NewStore(mem) - for i := 0; i < numKVs; i++ { - key := make([]byte, 32) - value := make([]byte, 32) + // Use a singleton for value, to not waste time computing it + value := randSlice(defaultValueSizeBz) + keys := generateRandomKeys(keysize, b.N) - _, _ = rand.Read(key) - _, _ = rand.Read(value) + b.ReportAllocs() + b.ResetTimer() - keys[i] = string(key) - cstore.Set(key, value) + for _, k := range keys { + kvstore.Set(k, value) } - sort.Strings(keys) + iter := kvstore.Iterator(keys[0], keys[b.N]) + defer iter.Close() - for n := 0; n < b.N; n++ { - iter := cstore.Iterator([]byte(keys[0]), []byte(keys[numKVs-1])) + for _ = iter.Key(); iter.Valid(); iter.Next() { + // deadcode elimination stub + sink = iter + } +} - for _ = iter.Key(); iter.Valid(); iter.Next() { - } +// Benchmark creating an iterator on a parent with D entries, +// that are all deleted in the cacheKV store. +// We essentially are benchmarking the cacheKV iterator creation & iteration times +// with the number of entries deleted in the parent. +func benchmarkIteratorOnParentWithManyDeletes(b *testing.B, numDeletes int) { + mem := dbadapter.Store{DB: dbm.NewMemDB()} - iter.Close() + // Use a singleton for value, to not waste time computing it + value := randSlice(32) + // Use simple values for keys, pick a random start, + // and take next D keys sequentially after. + startKey := randSlice(32) + keys := generateSequentialKeys(startKey, numDeletes) + // setup parent db with D keys. + for _, k := range keys { + mem.Set(k, value) } + kvstore := cachekv.NewStore(mem) + // Delete all keys from the cache KV store. + // The keys[1:] is to keep at least one entry in parent, due to a bug in the SDK iterator design. + // Essentially the iterator will never be valid, in that it should never run. + // However, this is incompatible with the for loop structure the SDK uses, hence + // causes a panic. Thus we do keys[1:]. + for _, k := range keys[1:] { + kvstore.Delete(k) + } + + b.ReportAllocs() + b.ResetTimer() + + iter := kvstore.Iterator(keys[0], keys[b.N]) + defer iter.Close() + + for _ = iter.Key(); iter.Valid(); iter.Next() { + // deadcode elimination stub + sink = iter + } +} + +func BenchmarkBlankParentIteratorNextKeySize32(b *testing.B) { + benchmarkBlankParentIteratorNext(b, 32) +} + +func BenchmarkBlankParentAppendKeySize32(b *testing.B) { + benchmarkBlankParentAppend(b, 32) +} + +func BenchmarkSetKeySize32(b *testing.B) { + benchmarkRandomSet(b, 32) } -func BenchmarkCacheKVStoreIterator500(b *testing.B) { benchmarkCacheKVStoreIterator(500, b) } -func BenchmarkCacheKVStoreIterator1000(b *testing.B) { benchmarkCacheKVStoreIterator(1000, b) } -func BenchmarkCacheKVStoreIterator10000(b *testing.B) { benchmarkCacheKVStoreIterator(10000, b) } -func BenchmarkCacheKVStoreIterator50000(b *testing.B) { benchmarkCacheKVStoreIterator(50000, b) } -func BenchmarkCacheKVStoreIterator100000(b *testing.B) { benchmarkCacheKVStoreIterator(100000, b) } +func BenchmarkIteratorOnParentWith1MDeletes(b *testing.B) { + benchmarkIteratorOnParentWithManyDeletes(b, 1_000_000) +} From 26d573e3dab889bb5527a454b1a6437a8760c263 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 16 Dec 2021 11:31:17 +0100 Subject: [PATCH 26/98] fix: populate ctx.ConsensusParams for begin blockers (backport #10725) (#10782) * fix: populate ctx.ConsensusParams for begin blockers (#10725) Closes: #10724 ## Description --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing) - [ ] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) (cherry picked from commit 675be9d6dbef2d82dd1ca8ee790314b30b1bfe3a) # Conflicts: # CHANGELOG.md * fix cl Co-authored-by: yihuang Co-authored-by: Amaury M <1293565+amaurym@users.noreply.github.com> --- CHANGELOG.md | 4 ++++ baseapp/abci.go | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 303c5366189b..040a2d895b26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,10 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## Unreleased +### Bug Fixes + +* [#10725](https://github.com/cosmos/cosmos-sdk/pull/10725) populate `ctx.ConsensusParams` for begin/end blockers. + ## [v0.42.11](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.42.11) - 2021-12-07 ### Improvements diff --git a/baseapp/abci.go b/baseapp/abci.go index 46e258f48111..6ec5b800b760 100644 --- a/baseapp/abci.go +++ b/baseapp/abci.go @@ -177,7 +177,8 @@ func (app *BaseApp) BeginBlock(req abci.RequestBeginBlock) (res abci.ResponseBeg app.deliverState.ctx = app.deliverState.ctx. WithBlockGasMeter(gasMeter). - WithHeaderHash(req.Hash) + WithHeaderHash(req.Hash). + WithConsensusParams(app.GetConsensusParams(app.deliverState.ctx)) // we also set block gas meter to checkState in case the application needs to // verify gas consumption during (Re)CheckTx From 165a76c924e9864239241c027512aa20f0b13dbc Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Tue, 27 Dec 2022 17:38:28 +0700 Subject: [PATCH 27/98] cosmos-sdk v0.42.x, modernized for easier migrations --- .github/workflows/lint.yml | 11 +- .golangci.yml | 15 +- Makefile | 2 +- baseapp/baseapp.go | 6 +- baseapp/baseapp_test.go | 4 +- baseapp/msg_service_router.go | 6 +- client/broadcast_test.go | 1 - client/config/config_test.go | 6 +- client/config/toml.go | 3 +- client/context_test.go | 8 +- client/debug/main.go | 2 - client/grpc/reflection/reflection_test.go | 2 +- client/grpc/tmservice/service.go | 7 +- client/grpc/tmservice/service_test.go | 5 +- client/grpc_query_test.go | 1 + client/keys/add.go | 11 +- client/keys/add_ledger_test.go | 3 +- client/keys/add_test.go | 3 +- client/keys/codec_test.go | 2 +- client/keys/export_test.go | 3 +- client/keys/import.go | 4 +- client/keys/import_test.go | 6 +- client/keys/list_test.go | 4 +- client/keys/migrate.go | 3 +- client/keys/migrate_test.go | 4 +- client/keys/show_test.go | 5 +- client/query_test.go | 1 + client/rest/rest.go | 1 - client/tx/legacy.go | 1 - client/tx/tx_test.go | 80 +- codec/amino_codec.go | 10 +- codec/codec_common_test.go | 6 +- codec/proto_codec.go | 16 +- codec/proto_codec_test.go | 4 +- codec/types/any.go | 8 +- codec/unknownproto/benchmarks_test.go | 3 + codec/unknownproto/doc.go | 12 +- codec/unknownproto/unknown_fields.go | 16 +- cosmovisor/process_test.go | 1 + cosmovisor/scanner.go | 12 +- cosmovisor/upgrade.go | 5 +- cosmovisor/upgrade_test.go | 1 + crypto/armor.go | 1 - crypto/hd/algo.go | 17 +- crypto/hd/doc.go | 5 +- crypto/hd/fundraiser_test.go | 6 +- crypto/hd/hdpath.go | 2 +- crypto/hd/hdpath_test.go | 17 +- crypto/keyring/doc.go | 42 +- crypto/keyring/keyring.go | 5 +- crypto/keyring/keyring_ledger_test.go | 3 +- crypto/keyring/legacy.go | 8 +- crypto/keyring/signing_algorithms_test.go | 3 +- crypto/keyring/types_test.go | 2 +- crypto/keys/ed25519/ed25519.go | 12 +- crypto/keys/internal/benchmarking/bench.go | 1 - crypto/keys/multisig/multisig.go | 6 +- .../secp256k1/internal/secp256k1/curve.go | 42 +- crypto/keys/secp256k1/secp256k1.go | 14 +- crypto/keys/secp256k1/secp256k1_cgo.go | 1 + crypto/keys/secp256k1/secp256k1_cgo_test.go | 1 + .../keys/secp256k1/secp256k1_internal_test.go | 3 +- crypto/keys/secp256k1/secp256k1_nocgo.go | 5 +- crypto/keys/secp256k1/secp256k1_nocgo_test.go | 1 + crypto/keys/secp256k1/secp256k1_test.go | 4 +- crypto/ledger/encode_test.go | 4 +- crypto/ledger/ledger_mock.go | 1 + crypto/ledger/ledger_notavail.go | 2 + crypto/ledger/ledger_real.go | 1 + crypto/ledger/ledger_secp256k1.go | 11 +- crypto/types/compact_bit_array_test.go | 2 - go.mod | 43 +- go.sum | 2467 ++++++++++++++++- server/config/toml.go | 2 +- server/export.go | 3 +- server/export_test.go | 3 +- server/grpc/server_test.go | 1 + server/mock/app.go | 6 +- server/mock/app_test.go | 2 +- server/mock/helpers.go | 3 +- server/tm_cmds.go | 16 - server/util.go | 3 +- server/util_test.go | 2 +- simapp/app.go | 3 +- simapp/export.go | 3 +- simapp/params/amino.go | 1 + simapp/params/proto.go | 1 + simapp/sim_test.go | 6 +- simapp/simd/cmd/genaccounts_test.go | 6 +- simapp/simd/cmd/root.go | 4 +- simapp/simd/cmd/testnet.go | 9 +- simapp/simd/cmd/testnet_test.go | 7 +- simapp/state.go | 7 +- simapp/test_helpers.go | 1 - simapp/utils.go | 10 +- snapshots/helpers_test.go | 6 +- snapshots/manager.go | 15 +- snapshots/manager_test.go | 3 +- snapshots/store.go | 8 +- snapshots/store_test.go | 33 +- snapshots/util_test.go | 4 +- store/cachekv/store_test.go | 4 +- store/cachemulti/store.go | 1 - store/cachemulti/store_test.go | 3 +- store/iavl/store_test.go | 2 +- store/iavl/tree_test.go | 4 +- store/internal/maps/maps_test.go | 2 + store/mem/store.go | 2 +- store/rootmulti/store.go | 3 +- store/rootmulti/store_test.go | 1 - store/tracekv/store_test.go | 2 +- store/transient/store.go | 6 +- store/types/errors.go | 4 +- store/types/iterator.go | 1 - store/types/store.go | 1 - tests/mocks/account_retriever.go | 135 +- tests/mocks/grpc_server.go | 15 +- .../tendermint_tendermint_libs_log_DB.go | 27 +- tests/mocks/tendermint_tm_db_DB.go | 59 +- tests/mocks/types_handler.go | 15 +- tests/mocks/types_invariant.go | 15 +- tests/mocks/types_module_module.go | 531 ++-- tests/mocks/types_router.go | 35 +- testutil/ioutil_test.go | 3 +- testutil/network/network.go | 7 +- testutil/network/network_test.go | 1 + testutil/network/util.go | 5 +- testutil/rest.go | 4 +- third_party/proto/tendermint/abci/types.proto | 34 +- .../proto/tendermint/types/evidence.proto | 18 +- .../proto/tendermint/types/types.proto | 8 +- types/address.go | 17 +- types/address_test.go | 1 - types/coin_test.go | 5 +- types/config.go | 3 +- types/context.go | 16 +- types/dec_coin_test.go | 3 +- types/decimal.go | 13 +- types/decimal_test.go | 37 +- types/errors/abci_test.go | 2 +- types/errors/doc.go | 19 +- types/errors/errors_test.go | 21 +- types/errors/stacktrace.go | 3 +- types/handler.go | 31 +- types/handler_test.go | 16 +- types/int.go | 3 +- types/int_test.go | 1 - types/kv/list.go | 2 +- types/module/module.go | 9 +- types/module/module_test.go | 6 +- types/module/simulation.go | 1 - types/query/filtered_pagination.go | 1 - types/query/filtered_pagination_test.go | 1 - types/query/pagination.go | 1 - types/rest/rest.go | 12 +- types/rest/rest_test.go | 20 +- types/simulation/rand_util.go | 4 +- types/store_test.go | 4 +- types/tx/signing/signature.go | 1 - types/tx/types.go | 6 +- types/uint_internal_test.go | 1 - types/utils_test.go | 30 +- version/version.go | 12 +- x/auth/ante/ante_test.go | 5 +- x/auth/ante/basic_test.go | 2 - x/auth/ante/setup.go | 4 +- x/auth/ante/setup_test.go | 2 +- x/auth/ante/sigverify.go | 1 - x/auth/client/cli/cli_test.go | 5 +- x/auth/client/cli/tx_multisign.go | 9 +- x/auth/client/cli/tx_sign.go | 4 +- x/auth/client/query.go | 2 +- x/auth/client/rest/broadcast.go | 4 +- x/auth/client/rest/decode.go | 4 +- x/auth/client/rest/encode.go | 4 +- x/auth/client/rest/query.go | 2 - x/auth/client/rest/rest_test.go | 1 + x/auth/client/tx.go | 9 +- x/auth/client/tx_test.go | 2 +- x/auth/keeper/grpc_query.go | 1 - x/auth/keeper/grpc_query_test.go | 4 +- x/auth/keeper/keeper.go | 3 +- x/auth/legacy/legacytx/stdtx_builder.go | 2 +- x/auth/legacy/legacytx/stdtx_test.go | 2 +- x/auth/legacy/v038/types.go | 2 - x/auth/legacy/v039/types.go | 2 - x/auth/legacy/v040/migrate.go | 3 +- x/auth/testutil/suite.go | 6 +- x/auth/tx/encoder.go | 1 - x/auth/tx/xauthclient.go | 2 +- x/auth/types/account.go | 2 +- x/auth/types/common_test.go | 2 +- x/auth/types/genesis_test.go | 4 +- x/auth/types/permissions_test.go | 1 - x/auth/vesting/client/cli/cli_test.go | 1 + x/auth/vesting/types/msgs.go | 1 + x/auth/vesting/types/vesting_account.go | 18 +- x/auth/vesting/types/vesting_account_test.go | 9 +- x/bank/client/cli/cli_test.go | 3 +- x/bank/client/rest/grpc_query_test.go | 1 + x/bank/client/rest/query_test.go | 1 + x/bank/client/rest/tx_test.go | 1 + x/bank/handler_test.go | 1 + x/bank/keeper/genesis_test.go | 1 - x/bank/keeper/grpc_query.go | 2 - x/bank/keeper/grpc_query_test.go | 1 + x/bank/keeper/keeper.go | 6 - x/bank/keeper/keeper_test.go | 39 +- x/bank/keeper/send.go | 1 - x/bank/simulation/operations.go | 5 - x/bank/types/balance_test.go | 1 - x/bank/types/genesis_test.go | 2 - x/bank/types/metadata.go | 10 +- x/bank/types/metadata_test.go | 25 +- x/bank/types/msgs.go | 3 + x/bank/types/msgs_test.go | 47 +- x/bank/types/querier.go | 2 + x/capability/keeper/keeper.go | 2 - x/capability/types/genesis_test.go | 6 - x/crisis/client/cli/cli_test.go | 1 + x/crisis/handler_test.go | 2 +- x/crisis/keeper/keeper.go | 1 - x/crisis/types/msgs.go | 1 + x/crisis/types/params.go | 6 +- x/distribution/client/cli/cli_test.go | 1 + x/distribution/client/cli/tx.go | 1 - x/distribution/client/cli/utils.go | 4 +- x/distribution/client/rest/query.go | 5 +- x/distribution/keeper/allocation.go | 1 - x/distribution/keeper/delegation.go | 3 +- x/distribution/keeper/grpc_query.go | 2 - x/distribution/keeper/invariants.go | 3 - x/distribution/keeper/keeper.go | 1 - x/distribution/keeper/store.go | 3 +- x/distribution/legacy/v036/types.go | 1 - x/distribution/legacy/v038/types.go | 1 - x/distribution/simulation/operations.go | 3 - x/distribution/simulation/operations_test.go | 2 - x/distribution/types/common_test.go | 2 +- x/distribution/types/fee_pool_test.go | 2 - x/distribution/types/genesis.go | 1 - x/distribution/types/proposal.go | 1 + x/distribution/types/query.go | 7 +- x/evidence/client/cli/query.go | 1 - x/evidence/keeper/grpc_query.go | 1 - x/evidence/keeper/grpc_query_test.go | 4 +- x/evidence/keeper/keeper.go | 1 - x/evidence/legacy/v040/migrate.go | 2 +- x/evidence/types/genesis_test.go | 7 +- x/evidence/types/msgs.go | 1 + x/genaccounts/legacy/v036/migrate.go | 2 +- x/genaccounts/legacy/v036/migrate_test.go | 1 - x/genaccounts/legacy/v036/types.go | 1 - x/genutil/client/cli/gentx.go | 7 +- x/genutil/client/cli/gentx_test.go | 4 +- x/genutil/client/cli/init.go | 3 +- x/genutil/client/cli/init_test.go | 3 +- x/genutil/client/cli/validate_genesis_test.go | 1 - x/genutil/collect.go | 3 +- x/genutil/collect_test.go | 5 +- x/genutil/doc.go | 10 +- x/genutil/gentx.go | 3 - x/genutil/gentx_test.go | 1 - x/genutil/module.go | 1 - x/genutil/types/genesis_state.go | 2 - x/genutil/types/genesis_state_test.go | 1 - x/genutil/utils.go | 5 +- x/genutil/utils_test.go | 2 +- x/gov/client/cli/cli_test.go | 1 + x/gov/client/cli/parse.go | 4 +- x/gov/client/cli/query.go | 4 - x/gov/client/rest/grpc_query_test.go | 1 + x/gov/client/rest/rest_test.go | 1 + x/gov/client/testutil/cli_test.go | 1 + x/gov/client/testutil/deposits.go | 7 +- x/gov/client/utils/query.go | 1 - x/gov/client/utils/query_test.go | 9 +- x/gov/common_test.go | 12 +- x/gov/keeper/common_test.go | 4 +- x/gov/keeper/grpc_query.go | 3 - x/gov/keeper/keeper.go | 1 - x/gov/keeper/querier.go | 12 +- x/gov/keeper/querier_test.go | 4 +- x/gov/keeper/tally.go | 1 - x/gov/legacy/v034/types.go | 4 +- x/gov/legacy/v036/types.go | 5 +- x/gov/simulation/operations.go | 7 +- x/gov/simulation/operations_test.go | 3 - x/gov/types/deposit.go | 1 + x/gov/types/keys_test.go | 2 - x/gov/types/msgs.go | 3 + x/gov/types/tally.go | 4 +- x/gov/types/vote.go | 1 + .../transfer/keeper/grpc_query.go | 1 - x/ibc/applications/transfer/keeper/keeper.go | 1 - .../transfer/keeper/mbt_relay_test.go | 5 +- x/ibc/applications/transfer/keeper/relay.go | 1 - .../transfer/keeper/relay_test.go | 84 +- x/ibc/applications/transfer/module_test.go | 6 - .../transfer/simulation/genesis_test.go | 1 - x/ibc/applications/transfer/types/coin.go | 1 - x/ibc/applications/transfer/types/msgs.go | 1 + x/ibc/applications/transfer/types/trace.go | 12 +- x/ibc/core/02-client/keeper/client.go | 4 +- x/ibc/core/02-client/keeper/client_test.go | 7 - x/ibc/core/02-client/keeper/grpc_query.go | 2 - .../core/02-client/keeper/grpc_query_test.go | 6 +- x/ibc/core/02-client/keeper/proposal_test.go | 1 - x/ibc/core/02-client/proposal_handler_test.go | 1 - x/ibc/core/02-client/types/client_test.go | 4 +- x/ibc/core/02-client/types/codec_test.go | 1 - x/ibc/core/02-client/types/encoding_test.go | 2 - x/ibc/core/02-client/types/genesis.go | 1 - x/ibc/core/02-client/types/height_test.go | 1 - x/ibc/core/02-client/types/msgs.go | 9 +- x/ibc/core/02-client/types/msgs_test.go | 2 - x/ibc/core/03-connection/client/cli/tx.go | 6 +- .../core/03-connection/client/utils/utils.go | 10 +- x/ibc/core/03-connection/keeper/grpc_query.go | 2 - .../03-connection/keeper/grpc_query_test.go | 12 +- x/ibc/core/03-connection/keeper/handshake.go | 4 +- x/ibc/core/03-connection/types/codec.go | 14 +- .../core/03-connection/types/genesis_test.go | 1 - x/ibc/core/03-connection/types/msgs.go | 4 + x/ibc/core/03-connection/types/msgs_test.go | 9 +- .../core/03-connection/types/version_test.go | 1 - x/ibc/core/04-channel/client/utils/utils.go | 2 - x/ibc/core/04-channel/keeper/grpc_query.go | 8 +- .../core/04-channel/keeper/grpc_query_test.go | 21 +- x/ibc/core/04-channel/keeper/handshake.go | 3 +- x/ibc/core/04-channel/keeper/packet_test.go | 2 - x/ibc/core/04-channel/keeper/timeout_test.go | 1 - x/ibc/core/04-channel/types/channel_test.go | 1 - x/ibc/core/04-channel/types/msgs.go | 20 +- x/ibc/core/23-commitment/types/merkle.go | 6 +- x/ibc/core/23-commitment/types/merkle_test.go | 10 +- x/ibc/core/ante/ante.go | 1 - x/ibc/core/keeper/msg_server.go | 8 +- x/ibc/core/keeper/msg_server_test.go | 13 +- .../06-solomachine/client/cli/tx.go | 8 +- .../06-solomachine/types/client_state_test.go | 3 - .../06-solomachine/types/codec_test.go | 4 - .../types/consensus_state_test.go | 1 - .../06-solomachine/types/misbehaviour.go | 4 +- .../types/misbehaviour_handle.go | 3 - .../types/misbehaviour_handle_test.go | 1 - .../06-solomachine/types/misbehaviour_test.go | 1 - .../06-solomachine/types/proof.go | 19 +- .../06-solomachine/types/proposal_handle.go | 1 - .../06-solomachine/types/update_test.go | 1 - .../07-tendermint/client/cli/tx.go | 11 +- .../07-tendermint/types/client_state_test.go | 5 +- .../types/consensus_state_test.go | 30 +- .../07-tendermint/types/header_test.go | 4 +- .../types/misbehaviour_handle.go | 1 - .../07-tendermint/types/proposal_handle.go | 7 +- .../types/proposal_handle_test.go | 6 +- .../07-tendermint/types/upgrade.go | 8 +- .../07-tendermint/types/upgrade_test.go | 11 - .../09-localhost/types/client_state_test.go | 3 - .../09-localhost/types/localhost_test.go | 4 +- x/ibc/testing/chain.go | 6 +- x/ibc/testing/coordinator.go | 8 - x/mint/client/cli/cli_test.go | 1 + x/mint/client/cli/query.go | 3 - x/mint/client/rest/grpc_query_test.go | 1 + x/mint/module.go | 1 - x/mint/simulation/params_test.go | 1 - x/mint/types/codec.go | 4 +- x/mint/types/minter_test.go | 14 +- x/mint/types/params.go | 2 - x/params/client/cli/cli_test.go | 1 + x/params/client/utils/utils.go | 4 +- x/params/simulation/operations.go | 1 - x/params/types/subspace_test.go | 2 +- x/simulation/doc.go | 111 +- x/simulation/event_stats.go | 4 +- x/simulation/log.go | 1 - x/simulation/mock_tendermint.go | 5 +- x/simulation/params_test.go | 3 +- x/simulation/simulate.go | 12 +- x/simulation/util.go | 6 +- x/slashing/client/cli/cli_test.go | 1 + x/slashing/client/cli/query.go | 1 - x/slashing/init_test.go | 4 +- x/slashing/keeper/common_test.go | 4 +- x/slashing/keeper/grpc_query_test.go | 2 +- x/slashing/keeper/keeper_test.go | 1 - x/slashing/keeper/signing_info.go | 8 +- x/slashing/legacy/v039/types.go | 1 - x/slashing/legacy/v040/migrate.go | 6 +- x/slashing/simulation/decoder_test.go | 2 +- x/slashing/simulation/genesis_test.go | 1 - x/slashing/simulation/operations.go | 2 - x/slashing/types/genesis.go | 1 - x/slashing/types/msg.go | 1 + x/slashing/types/params.go | 1 - x/slashing/types/signing_info.go | 2 +- x/staking/app_test.go | 1 - x/staking/client/cli/cli_test.go | 1 + x/staking/client/cli/query.go | 1 - x/staking/client/cli/tx.go | 2 - x/staking/client/rest/grpc_query_test.go | 5 +- x/staking/client/rest/rest_test.go | 1 + x/staking/client/testutil/test_helpers.go | 8 +- x/staking/common_test.go | 2 +- x/staking/handler_test.go | 4 +- x/staking/keeper/alias_functions.go | 3 +- x/staking/keeper/common_test.go | 4 +- x/staking/keeper/delegation.go | 36 +- x/staking/keeper/delegation_test.go | 20 +- x/staking/keeper/grpc_query.go | 10 +- x/staking/keeper/grpc_query_test.go | 145 +- x/staking/keeper/historical_info.go | 4 +- x/staking/keeper/keeper_test.go | 5 +- x/staking/keeper/querier.go | 1 - x/staking/keeper/slash.go | 25 +- x/staking/keeper/validator.go | 12 +- x/staking/keeper/validator_bench_test.go | 4 +- x/staking/keeper/validator_test.go | 8 +- x/staking/legacy/v036/types.go | 1 - x/staking/legacy/v038/types.go | 1 - x/staking/simulation/genesis_test.go | 3 +- x/staking/simulation/operations_test.go | 7 +- x/staking/types/delegation.go | 7 +- x/staking/types/hooks.go | 9 + x/staking/types/keys_test.go | 36 +- x/staking/types/msg.go | 4 + x/staking/types/validator.go | 6 +- x/staking/types/validator_test.go | 1 - x/upgrade/abci_test.go | 7 +- x/upgrade/client/proposal_handler.go | 6 +- x/upgrade/client/rest/tx.go | 3 +- x/upgrade/doc.go | 25 +- x/upgrade/keeper/keeper.go | 5 +- x/upgrade/keeper/keeper_test.go | 5 +- x/upgrade/legacy/v038/types.go | 1 + x/upgrade/types/plan_test.go | 1 - x/upgrade/types/proposal.go | 7 +- x/upgrade/types/proposal_test.go | 1 - x/upgrade/types/storeloader_test.go | 3 +- 441 files changed, 4216 insertions(+), 1866 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index e49fa0bce8c4..9061ac1190ec 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -13,17 +13,10 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 6 steps: - - uses: actions/checkout@v2 - - uses: technote-space/get-diff-action@v4 - with: - PATTERNS: | - **/**.go - go.mod - go.sum + - uses: actions/checkout@v3 - uses: golangci/golangci-lint-action@master with: # Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version. - version: v1.39 + version: latest args: --timeout 10m github-token: ${{ secrets.github_token }} - if: env.GIT_DIFF diff --git a/.golangci.yml b/.golangci.yml index 1cbfa6a6c097..41bba262e2e6 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,40 +1,35 @@ run: - tests: false -# # timeout for analysis, e.g. 30s, 5m, default is 1m -# timeout: 5m + tests: true + timeout: 5m + concurrency: 4 linters: disable-all: true enable: - bodyclose - - deadcode - depguard - dogsled - # - errcheck + - errcheck - goconst - gocritic - - gofmt - - goimports + - gofumpt - golint - gosec - gosimple - govet - ineffassign - interfacer - - maligned - misspell - nakedret - prealloc - scopelint - staticcheck - - structcheck - stylecheck - typecheck - unconvert - unused - unparam - misspell - # - wsl - nolintlint issues: diff --git a/Makefile b/Makefile index a8a0910f8c47..7653c1f9e26c 100644 --- a/Makefile +++ b/Makefile @@ -402,7 +402,7 @@ proto-check-breaking: @$(DOCKER_BUF) check breaking --against-input $(HTTPS_GIT)#branch=master -TM_URL = https://raw.githubusercontent.com/tendermint/tendermint/v0.34.0-rc6/proto/tendermint +TM_URL = https://raw.githubusercontent.com/tendermint/tendermint/v0.34.24/proto/tendermint GOGO_PROTO_URL = https://raw.githubusercontent.com/regen-network/protobuf/cosmos COSMOS_PROTO_URL = https://raw.githubusercontent.com/regen-network/cosmos-proto/master CONFIO_URL = https://raw.githubusercontent.com/confio/ics23/v0.6.3 diff --git a/baseapp/baseapp.go b/baseapp/baseapp.go index f52f377eda30..8ca82d815bd7 100644 --- a/baseapp/baseapp.go +++ b/baseapp/baseapp.go @@ -28,9 +28,7 @@ const ( runTxModeDeliver // Deliver a transaction ) -var ( - _ abci.Application = (*BaseApp)(nil) -) +var _ abci.Application = (*BaseApp)(nil) type ( // Enum mode for app.runTx @@ -44,7 +42,7 @@ type ( ) // BaseApp reflects the ABCI application implementation. -type BaseApp struct { // nolint: maligned +type BaseApp struct { //nolint: maligned // initialized on creation logger log.Logger name string // application name from abci.Info diff --git a/baseapp/baseapp_test.go b/baseapp/baseapp_test.go index 37c37fdce2a9..2a286e383b3f 100644 --- a/baseapp/baseapp_test.go +++ b/baseapp/baseapp_test.go @@ -5,7 +5,6 @@ import ( "encoding/binary" "encoding/json" "fmt" - "io/ioutil" "math/rand" "os" "strings" @@ -134,7 +133,7 @@ func setupBaseAppWithSnapshots(t *testing.T, blocks uint, blockTxs int, options snapshotInterval := uint64(2) snapshotTimeout := 1 * time.Minute - snapshotDir, err := ioutil.TempDir("", "baseapp") + snapshotDir, err := os.MkdirTemp("", "baseapp") require.NoError(t, err) snapshotStore, err := snapshots.NewStore(dbm.NewMemDB(), snapshotDir) require.NoError(t, err) @@ -1292,7 +1291,6 @@ func TestTxGasLimits(t *testing.T) { return newCtx, nil }) - } routerOpt := func(bapp *BaseApp) { diff --git a/baseapp/msg_service_router.go b/baseapp/msg_service_router.go index ea2ed4b4eb6a..9d96d6a531d4 100644 --- a/baseapp/msg_service_router.go +++ b/baseapp/msg_service_router.go @@ -41,9 +41,9 @@ func (msr *MsgServiceRouter) Handler(methodName string) MsgServiceHandler { // service description, handler is an object which implements that gRPC service. // // This function PANICs: -// - if it is called before the service `Msg`s have been registered using -// RegisterInterfaces, -// - or if a service is being registered twice. +// - if it is called before the service `Msg`s have been registered using +// RegisterInterfaces, +// - or if a service is being registered twice. func (msr *MsgServiceRouter) RegisterService(sd *grpc.ServiceDesc, handler interface{}) { // Adds a top-level query handler based on the gRPC service name. for _, method := range sd.Methods { diff --git a/client/broadcast_test.go b/client/broadcast_test.go index 5ac6e47c24b1..fb7a8d48b769 100644 --- a/client/broadcast_test.go +++ b/client/broadcast_test.go @@ -67,5 +67,4 @@ func TestBroadcastError(t *testing.T) { require.Equal(t, txHash, resp.TxHash) } } - } diff --git a/client/config/config_test.go b/client/config/config_test.go index c058edf8301a..49115aa543a5 100644 --- a/client/config/config_test.go +++ b/client/config/config_test.go @@ -3,7 +3,7 @@ package config_test import ( "bytes" "fmt" - "io/ioutil" + "io" "os" "testing" @@ -53,12 +53,12 @@ func TestConfigCmd(t *testing.T) { _, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, args) require.NoError(t, err) - //./build/simd config node //http://localhost:1 + // ./build/simd config node //http://localhost:1 b := bytes.NewBufferString("") cmd.SetOut(b) cmd.SetArgs([]string{"node"}) cmd.Execute() - out, err := ioutil.ReadAll(b) + out, err := io.ReadAll(b) require.NoError(t, err) require.Equal(t, string(out), testNode1+"\n") } diff --git a/client/config/toml.go b/client/config/toml.go index 0393a5b6acc8..97c8b00b42c5 100644 --- a/client/config/toml.go +++ b/client/config/toml.go @@ -2,7 +2,6 @@ package config import ( "bytes" - "io/ioutil" "os" "text/template" @@ -43,7 +42,7 @@ func writeConfigToFile(configFilePath string, config *ClientConfig) error { return err } - return ioutil.WriteFile(configFilePath, buffer.Bytes(), 0600) + return os.WriteFile(configFilePath, buffer.Bytes(), 0o600) } // ensureConfigPath creates a directory configPath if it does not exist diff --git a/client/context_test.go b/client/context_test.go index 978f31732c1c..f1c01e765810 100644 --- a/client/context_test.go +++ b/client/context_test.go @@ -51,7 +51,7 @@ func TestContext_PrintObject(t *testing.T) { require.NoError(t, err) require.Equal(t, `{"animal":{"@type":"/testdata.Dog","size":"big","name":"Spot"},"x":"10"} -`, string(buf.Bytes())) +`, buf.String()) // yaml buf = &bytes.Buffer{} @@ -65,7 +65,7 @@ func TestContext_PrintObject(t *testing.T) { name: Spot size: big x: "10" -`, string(buf.Bytes())) +`, buf.String()) // // amino @@ -81,7 +81,7 @@ x: "10" require.NoError(t, err) require.Equal(t, `{"type":"testdata/HasAnimal","value":{"animal":{"type":"testdata/Dog","value":{"size":"big","name":"Spot"}},"x":"10"}} -`, string(buf.Bytes())) +`, buf.String()) // yaml buf = &bytes.Buffer{} @@ -98,7 +98,7 @@ value: name: Spot size: big x: "10" -`, string(buf.Bytes())) +`, buf.String()) } func TestCLIQueryConn(t *testing.T) { diff --git a/client/debug/main.go b/client/debug/main.go index 54b75e712b64..8df44441ebb1 100644 --- a/client/debug/main.go +++ b/client/debug/main.go @@ -131,7 +131,6 @@ $ %s debug addr cosmos1e0jnq2sun3dzjh8p2xq95kk0expwmd7shwjpfg `, version.AppName), Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { - addrString := args[0] var addr []byte @@ -147,7 +146,6 @@ $ %s debug addr cosmos1e0jnq2sun3dzjh8p2xq95kk0expwmd7shwjpfg if err3 != nil { return fmt.Errorf("expected hex or bech32. Got errors: hex: %v, bech32 acc: %v, bech32 val: %v", err, err2, err3) - } } } diff --git a/client/grpc/reflection/reflection_test.go b/client/grpc/reflection/reflection_test.go index 211fc397ad3e..5fff8d541f69 100644 --- a/client/grpc/reflection/reflection_test.go +++ b/client/grpc/reflection/reflection_test.go @@ -29,7 +29,7 @@ func (s *IntegrationTestSuite) SetupSuite() { func (s IntegrationTestSuite) TestSimulateService() { // We will test the following interface for testing. - var iface = "cosmos.evidence.v1beta1.Evidence" + iface := "cosmos.evidence.v1beta1.Evidence" // Test that "cosmos.evidence.v1beta1.Evidence" is included in the // interfaces. diff --git a/client/grpc/tmservice/service.go b/client/grpc/tmservice/service.go index 34378d9ef128..114dcfe6e18e 100644 --- a/client/grpc/tmservice/service.go +++ b/client/grpc/tmservice/service.go @@ -22,8 +22,10 @@ type queryServer struct { interfaceRegistry codectypes.InterfaceRegistry } -var _ ServiceServer = queryServer{} -var _ codectypes.UnpackInterfacesMessage = &GetLatestValidatorSetResponse{} +var ( + _ ServiceServer = queryServer{} + _ codectypes.UnpackInterfacesMessage = &GetLatestValidatorSetResponse{} +) // NewQueryServer creates a new tendermint query server. func NewQueryServer(clientCtx client.Context, interfaceRegistry codectypes.InterfaceRegistry) ServiceServer { @@ -148,7 +150,6 @@ func (s queryServer) GetValidatorSetByHeight(ctx context.Context, req *GetValida } validatorsRes, err := rpc.GetValidators(s.clientCtx, &req.Height, &page, &limit) - if err != nil { return nil, err } diff --git a/client/grpc/tmservice/service_test.go b/client/grpc/tmservice/service_test.go index dd8f0dd50ee1..54256e76a6f6 100644 --- a/client/grpc/tmservice/service_test.go +++ b/client/grpc/tmservice/service_test.go @@ -109,7 +109,7 @@ func (s IntegrationTestSuite) TestQueryLatestValidatorSet() { s.Require().Equal(true, ok) s.Require().Equal(content, val.PubKey) - //with pagination + _, err = s.queryClient.GetLatestValidatorSet(context.Background(), &tmservice.GetLatestValidatorSetRequest{Pagination: &qtypes.PageRequest{ Offset: 0, Limit: 10, @@ -146,7 +146,8 @@ func (s IntegrationTestSuite) TestQueryValidatorSetByHeight() { Pagination: &qtypes.PageRequest{ Offset: 0, Limit: 10, - }}) + }, + }) s.Require().NoError(err) // no pagination rest diff --git a/client/grpc_query_test.go b/client/grpc_query_test.go index c4d2f024a07b..db7c487276e3 100644 --- a/client/grpc_query_test.go +++ b/client/grpc_query_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package client_test diff --git a/client/keys/add.go b/client/keys/add.go index 1e8783550098..6da06415f273 100644 --- a/client/keys/add.go +++ b/client/keys/add.go @@ -94,12 +94,13 @@ func runAddCmdPrepare(cmd *cobra.Command, args []string) error { /* input - - bip39 mnemonic - - bip39 passphrase - - bip44 path - - local encryption password + - bip39 mnemonic + - bip39 passphrase + - bip44 path + - local encryption password + output - - armor encrypted private key (saved to file) + - armor encrypted private key (saved to file) */ func RunAddCmd(ctx client.Context, cmd *cobra.Command, args []string, inBuf *bufio.Reader) error { var err error diff --git a/client/keys/add_ledger_test.go b/client/keys/add_ledger_test.go index b8ba1ec7f59e..5b780e8e452e 100644 --- a/client/keys/add_ledger_test.go +++ b/client/keys/add_ledger_test.go @@ -1,4 +1,5 @@ -//+build ledger test_ledger_mock +//go:build ledger || test_ledger_mock +// +build ledger test_ledger_mock package keys diff --git a/client/keys/add_test.go b/client/keys/add_test.go index 6c8af3867da6..326f7e9493e9 100644 --- a/client/keys/add_test.go +++ b/client/keys/add_test.go @@ -9,13 +9,14 @@ import ( "github.com/tendermint/tendermint/libs/cli" + bip39 "github.com/cosmos/go-bip39" + "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/crypto/hd" "github.com/cosmos/cosmos-sdk/crypto/keyring" "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" - bip39 "github.com/cosmos/go-bip39" ) func Test_runAddCmdBasic(t *testing.T) { diff --git a/client/keys/codec_test.go b/client/keys/codec_test.go index 33f6103d1888..47db1f637bae 100644 --- a/client/keys/codec_test.go +++ b/client/keys/codec_test.go @@ -18,7 +18,7 @@ type testCases struct { func getTestCases() testCases { return testCases{ - // nolint:govet + //nolint:govet []keyring.KeyOutput{ {"A", "B", "C", "D", "E", 0, nil}, {"A", "B", "C", "D", "", 0, nil}, diff --git a/client/keys/export_test.go b/client/keys/export_test.go index 7b07bbc6dbd5..eed80b22ec08 100644 --- a/client/keys/export_test.go +++ b/client/keys/export_test.go @@ -66,6 +66,7 @@ func Test_runExportCmd(t *testing.T) { } for _, tc := range testCases { + tc := tc t.Run(tc.name, func(t *testing.T) { kbHome := t.TempDir() defaultArgs := []string{ @@ -87,7 +88,7 @@ func Test_runExportCmd(t *testing.T) { kb, err := keyring.New(sdk.KeyringServiceName(), tc.keyringBackend, kbHome, bufio.NewReader(mockInBuf)) require.NoError(t, err) t.Cleanup(func() { - kb.Delete("keyname1") // nolint:errcheck + kb.Delete("keyname1") //nolint:errcheck }) path := sdk.GetConfig().GetFullFundraiserPath() diff --git a/client/keys/import.go b/client/keys/import.go index 36662a8dd2e6..a9d5c185acb7 100644 --- a/client/keys/import.go +++ b/client/keys/import.go @@ -2,7 +2,7 @@ package keys import ( "bufio" - "io/ioutil" + "os" "github.com/spf13/cobra" @@ -24,7 +24,7 @@ func ImportKeyCommand() *cobra.Command { } buf := bufio.NewReader(clientCtx.Input) - bz, err := ioutil.ReadFile(args[1]) + bz, err := os.ReadFile(args[1]) if err != nil { return err } diff --git a/client/keys/import_test.go b/client/keys/import_test.go index ac05ed567daa..c97e4b67ae3b 100644 --- a/client/keys/import_test.go +++ b/client/keys/import_test.go @@ -3,7 +3,6 @@ package keys import ( "context" "fmt" - "io/ioutil" "os" "path/filepath" "testing" @@ -73,6 +72,7 @@ HbP+c6JmeJy9JXe2rbbF1QtCX1gLqGcDQPBXiCtFvP7/8wTZtVOPj8vREzhZ9ElO ` for _, tc := range testCases { + tc := tc t.Run(tc.name, func(t *testing.T) { cmd := ImportKeyCommand() cmd.Flags().AddFlagSet(Commands("home").PersistentFlags()) @@ -90,12 +90,12 @@ HbP+c6JmeJy9JXe2rbbF1QtCX1gLqGcDQPBXiCtFvP7/8wTZtVOPj8vREzhZ9ElO require.NoError(t, err) t.Cleanup(func() { - kb.Delete("keyname1") // nolint:errcheck + kb.Delete("keyname1") //nolint:errcheck }) keyfile := filepath.Join(kbHome, "key.asc") - require.NoError(t, ioutil.WriteFile(keyfile, []byte(armoredKey), 0644)) + require.NoError(t, os.WriteFile(keyfile, []byte(armoredKey), 0o600)) defer func() { _ = os.RemoveAll(kbHome) diff --git a/client/keys/list_test.go b/client/keys/list_test.go index 7e3760384c8d..a05127bfdf64 100644 --- a/client/keys/list_test.go +++ b/client/keys/list_test.go @@ -30,12 +30,12 @@ func Test_runListCmd(t *testing.T) { clientCtx := client.Context{}.WithKeyring(kb) ctx := context.WithValue(context.Background(), client.ClientContextKey, &clientCtx) - path := "" //sdk.GetConfig().GetFullFundraiserPath() + path := "" // sdk.GetConfig().GetFullBIP44Path() _, err = kb.NewAccount("something", testutil.TestMnemonic, "", path, hd.Secp256k1) require.NoError(t, err) t.Cleanup(func() { - kb.Delete("something") // nolint:errcheck + kb.Delete("something") //nolint:errcheck }) type args struct { diff --git a/client/keys/migrate.go b/client/keys/migrate.go index 4816381e8c6f..bb676643073e 100644 --- a/client/keys/migrate.go +++ b/client/keys/migrate.go @@ -3,7 +3,6 @@ package keys import ( "bufio" "fmt" - "io/ioutil" "os" "github.com/pkg/errors" @@ -68,7 +67,7 @@ func runMigrateCmd(cmd *cobra.Command, args []string) error { ) if dryRun, _ := cmd.Flags().GetBool(flags.FlagDryRun); dryRun { - tmpDir, err = ioutil.TempDir("", "migrator-migrate-dryrun") + tmpDir, err = os.MkdirTemp("", "migrator-migrate-dryrun") if err != nil { return errors.Wrap(err, "failed to create temporary directory for dryrun migration") } diff --git a/client/keys/migrate_test.go b/client/keys/migrate_test.go index 32746291c882..80e146243d6e 100644 --- a/client/keys/migrate_test.go +++ b/client/keys/migrate_test.go @@ -26,12 +26,12 @@ func Test_runMigrateCmd(t *testing.T) { cmd := MigrateCommand() cmd.Flags().AddFlagSet(Commands("home").PersistentFlags()) - //mockIn := testutil.ApplyMockIODiscardOutErr(cmd) + mockIn, mockOut := testutil.ApplyMockIO(cmd) cmd.SetArgs([]string{ kbHome, - //fmt.Sprintf("--%s=%s", flags.FlagHome, kbHome), + fmt.Sprintf("--%s=true", flags.FlagDryRun), fmt.Sprintf("--%s=%s", flags.FlagKeyringBackend, keyring.BackendTest), }) diff --git a/client/keys/show_test.go b/client/keys/show_test.go index 68b78303f69d..c2013cc51d0d 100644 --- a/client/keys/show_test.go +++ b/client/keys/show_test.go @@ -8,6 +8,8 @@ import ( "github.com/stretchr/testify/require" + tmcli "github.com/tendermint/tendermint/libs/cli" + "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/crypto/hd" @@ -18,7 +20,6 @@ import ( "github.com/cosmos/cosmos-sdk/testutil" clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" sdk "github.com/cosmos/cosmos-sdk/types" - tmcli "github.com/tendermint/tendermint/libs/cli" ) func Test_multiSigKey_Properties(t *testing.T) { @@ -279,7 +280,7 @@ func Test_getBechKeyOut(t *testing.T) { // TODO: Still not possible to compare functions // Maybe in next release: https://github.com/stretchr/testify/issues/182 - //if &got != &tt.want { + // if &got != &tt.want { // t.Errorf("getBechKeyOut() = %v, want %v", got, tt.want) //} }) diff --git a/client/query_test.go b/client/query_test.go index a8e2725860ec..12eb9de2d194 100644 --- a/client/query_test.go +++ b/client/query_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package client_test diff --git a/client/rest/rest.go b/client/rest/rest.go index 1fd715a642e1..ac05891e04c7 100644 --- a/client/rest/rest.go +++ b/client/rest/rest.go @@ -22,7 +22,6 @@ func addHTTPDeprecationHeaders(h http.Handler) http.Handler { }) } -// nolint // WithHTTPDeprecationHeaders returns a new *mux.Router, identical to its input // but with the addition of HTTP Deprecation headers. This is used to mark legacy // amino REST endpoints as deprecated in the REST API. diff --git a/client/tx/legacy.go b/client/tx/legacy.go index b551ecebb81c..9bf08ed9ddc2 100644 --- a/client/tx/legacy.go +++ b/client/tx/legacy.go @@ -21,7 +21,6 @@ func ConvertTxToStdTx(codec *codec.LegacyAmino, tx signing.Tx) (legacytx.StdTx, err := CopyTx(tx, builder, true) if err != nil { - return legacytx.StdTx{}, err } diff --git a/client/tx/tx_test.go b/client/tx/tx_test.go index 3c7a4bebef0e..e4455f3bb142 100644 --- a/client/tx/tx_test.go +++ b/client/tx/tx_test.go @@ -128,8 +128,8 @@ func TestSign(t *testing.T) { kr, err := keyring.New(t.Name(), "test", t.TempDir(), nil) requireT.NoError(err) - var from1 = "test_key1" - var from2 = "test_key2" + from1 := "test_key1" + from2 := "test_key2" // create a new key using a mnemonic generator and test if we can reuse seed to recreate that account _, seed, err := kr.NewMnemonic(from1, keyring.English, path, hd.Secp256k1) @@ -176,31 +176,67 @@ func TestSign(t *testing.T) { expectedPKs []cryptotypes.PubKey matchingSigs []int // if not nil, check matching signature against old ones. }{ - {"should fail if txf without keyring", - txfNoKeybase, txb, from1, true, nil, nil}, - {"should fail for non existing key", - txfAmino, txb, "unknown", true, nil, nil}, - {"amino: should succeed with keyring", - txfAmino, txbSimple, from1, true, []cryptotypes.PubKey{pubKey1}, nil}, - {"direct: should succeed with keyring", - txfDirect, txbSimple, from1, true, []cryptotypes.PubKey{pubKey1}, nil}, + { + "should fail if txf without keyring", + txfNoKeybase, txb, from1, true, nil, nil, + }, + { + "should fail for non existing key", + txfAmino, txb, "unknown", true, nil, nil, + }, + { + "amino: should succeed with keyring", + txfAmino, txbSimple, from1, true, + []cryptotypes.PubKey{pubKey1}, + nil, + }, + { + "direct: should succeed with keyring", + txfDirect, txbSimple, from1, true, + []cryptotypes.PubKey{pubKey1}, + nil, + }, /**** test double sign Amino mode ****/ - {"amino: should sign multi-signers tx", - txfAmino, txb, from1, true, []cryptotypes.PubKey{pubKey1}, nil}, - {"amino: should append a second signature and not overwrite", - txfAmino, txb, from2, false, []cryptotypes.PubKey{pubKey1, pubKey2}, []int{0, 0}}, - {"amino: should overwrite a signature", - txfAmino, txb, from2, true, []cryptotypes.PubKey{pubKey2}, []int{1, 0}}, + { + "amino: should sign multi-signers tx", + txfAmino, txb, from1, true, + []cryptotypes.PubKey{pubKey1}, + nil, + }, + { + "amino: should append a second signature and not overwrite", + txfAmino, txb, from2, false, + []cryptotypes.PubKey{pubKey1, pubKey2}, + []int{0, 0}, + }, + { + "amino: should overwrite a signature", + txfAmino, txb, from2, true, + []cryptotypes.PubKey{pubKey2}, + []int{1, 0}, + }, /**** test double sign Direct mode signing transaction with more than 2 signers should fail in DIRECT mode ****/ - {"direct: should fail to append a signature with different mode", - txfDirect, txb, from1, false, []cryptotypes.PubKey{}, nil}, - {"direct: should fail to sign multi-signers tx", - txfDirect, txb2, from1, false, []cryptotypes.PubKey{}, nil}, - {"direct: should fail to overwrite multi-signers tx", - txfDirect, txb2, from1, true, []cryptotypes.PubKey{}, nil}, + { + "direct: should fail to append a signature with different mode", + txfDirect, txb, from1, false, + []cryptotypes.PubKey{}, + nil, + }, + { + "direct: should fail to sign multi-signers tx", + txfDirect, txb2, from1, false, + []cryptotypes.PubKey{}, + nil, + }, + { + "direct: should fail to overwrite multi-signers tx", + txfDirect, txb2, from1, true, + []cryptotypes.PubKey{}, + nil, + }, } var prevSigs []signingtypes.SignatureV2 for _, tc := range testCases { diff --git a/codec/amino_codec.go b/codec/amino_codec.go index 3ba7a2feb9b7..e9a81a0d7ca7 100644 --- a/codec/amino_codec.go +++ b/codec/amino_codec.go @@ -96,8 +96,9 @@ func (ac *AminoCodec) MarshalInterface(i proto.Message) ([]byte, error) { // NOTE: to unmarshal a concrete type, you should use UnmarshalBinaryBare instead // // Example: -// var x MyInterface -// err := cdc.UnmarshalInterface(bz, &x) +// +// var x MyInterface +// err := cdc.UnmarshalInterface(bz, &x) func (ac *AminoCodec) UnmarshalInterface(bz []byte, ptr interface{}) error { return ac.LegacyAmino.UnmarshalBinaryBare(bz, ptr) } @@ -117,8 +118,9 @@ func (ac *AminoCodec) MarshalInterfaceJSON(i proto.Message) ([]byte, error) { // NOTE: to unmarshal a concrete type, you should use UnmarshalJSON instead // // Example: -// var x MyInterface -// err := cdc.UnmarshalInterfaceJSON(bz, &x) +// +// var x MyInterface +// err := cdc.UnmarshalInterfaceJSON(bz, &x) func (ac *AminoCodec) UnmarshalInterfaceJSON(bz []byte, ptr interface{}) error { return ac.LegacyAmino.UnmarshalJSON(bz, ptr) } diff --git a/codec/codec_common_test.go b/codec/codec_common_test.go index 12e9bd2224e1..b2624b444ce6 100644 --- a/codec/codec_common_test.go +++ b/codec/codec_common_test.go @@ -104,7 +104,8 @@ func testMarshaling(t *testing.T, cdc codec.Marshaler) { &testdata.Cat{}, false, true, - }} + }, + } if _, ok := cdc.(*codec.AminoCodec); ok { testCases = append(testCases, testCase{ "any marshaling", @@ -123,7 +124,8 @@ func testMarshaling(t *testing.T, cdc codec.Marshaler) { func(i codec.ProtoMarshaler) ([]byte, error) { return cdc.MarshalJSON(i) }, func(i codec.ProtoMarshaler) []byte { return cdc.MustMarshalJSON(i) }, func(bz []byte, ptr codec.ProtoMarshaler) error { return cdc.UnmarshalJSON(bz, ptr) }, - func(bz []byte, ptr codec.ProtoMarshaler) { cdc.MustUnmarshalJSON(bz, ptr) }} + func(bz []byte, ptr codec.ProtoMarshaler) { cdc.MustUnmarshalJSON(bz, ptr) }, + } t.Run(tc.name+"_BinaryBare", func(t *testing.T) { testMarshalingTestCase(require.New(t), tc, m1) }) diff --git a/codec/proto_codec.go b/codec/proto_codec.go index 38f60ba3ae30..a2d0089c56e3 100644 --- a/codec/proto_codec.go +++ b/codec/proto_codec.go @@ -25,8 +25,10 @@ type ProtoCodec struct { interfaceRegistry types.InterfaceRegistry } -var _ Marshaler = &ProtoCodec{} -var _ ProtoCodecMarshaler = &ProtoCodec{} +var ( + _ Marshaler = &ProtoCodec{} + _ ProtoCodecMarshaler = &ProtoCodec{} +) // NewProtoCodec returns a reference to a new ProtoCodec func NewProtoCodec(interfaceRegistry types.InterfaceRegistry) *ProtoCodec { @@ -182,8 +184,9 @@ func (pc *ProtoCodec) MarshalInterface(i proto.Message) ([]byte, error) { // NOTE: to unmarshal a concrete type, you should use UnmarshalBinaryBare instead // // Example: -// var x MyInterface -// err := cdc.UnmarshalInterface(bz, &x) +// +// var x MyInterface +// err := cdc.UnmarshalInterface(bz, &x) func (pc *ProtoCodec) UnmarshalInterface(bz []byte, ptr interface{}) error { any := &types.Any{} err := pc.UnmarshalBinaryBare(bz, any) @@ -211,8 +214,9 @@ func (pc *ProtoCodec) MarshalInterfaceJSON(x proto.Message) ([]byte, error) { // NOTE: to unmarshal a concrete type, you should use UnmarshalJSON instead // // Example: -// var x MyInterface // must implement proto.Message -// err := cdc.UnmarshalInterfaceJSON(&x, bz) +// +// var x MyInterface // must implement proto.Message +// err := cdc.UnmarshalInterfaceJSON(&x, bz) func (pc *ProtoCodec) UnmarshalInterfaceJSON(bz []byte, iface interface{}) error { any := &types.Any{} err := pc.UnmarshalJSON(bz, any) diff --git a/codec/proto_codec_test.go b/codec/proto_codec_test.go index 706d025d5994..d2855e557232 100644 --- a/codec/proto_codec_test.go +++ b/codec/proto_codec_test.go @@ -99,8 +99,8 @@ func mustAny(msg proto.Message) *types.Any { } func BenchmarkProtoCodecMarshalBinaryLengthPrefixed(b *testing.B) { - var pCdc = codec.NewProtoCodec(types.NewInterfaceRegistry()) - var msg = &testdata.HasAnimal{ + pCdc := codec.NewProtoCodec(types.NewInterfaceRegistry()) + msg := &testdata.HasAnimal{ X: 1000, Animal: mustAny(&testdata.HasAnimal{ X: 2000, diff --git a/codec/types/any.go b/codec/types/any.go index faa8693d731a..e83da5344493 100644 --- a/codec/types/any.go +++ b/codec/types/any.go @@ -35,18 +35,18 @@ type Any struct { // Schemes other than `http`, `https` (or the empty scheme) might be // used with implementation specific semantics. - // nolint + //nolint TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"` // Must be a valid serialized protocol buffer of the above specified type. Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - // nolint + //nolint XXX_NoUnkeyedLiteral struct{} `json:"-"` - // nolint + //nolint XXX_unrecognized []byte `json:"-"` - // nolint + //nolint XXX_sizecache int32 `json:"-"` cachedValue interface{} diff --git a/codec/unknownproto/benchmarks_test.go b/codec/unknownproto/benchmarks_test.go index 373dda7acfd5..c38f5c47a2b8 100644 --- a/codec/unknownproto/benchmarks_test.go +++ b/codec/unknownproto/benchmarks_test.go @@ -45,6 +45,7 @@ func init() { func BenchmarkRejectUnknownFields_serial(b *testing.B) { benchmarkRejectUnknownFields(b, false) } + func BenchmarkRejectUnknownFields_parallel(b *testing.B) { benchmarkRejectUnknownFields(b, true) } @@ -82,9 +83,11 @@ func benchmarkRejectUnknownFields(b *testing.B, parallel bool) { func BenchmarkProtoUnmarshal_serial(b *testing.B) { benchmarkProtoUnmarshal(b, false) } + func BenchmarkProtoUnmarshal_parallel(b *testing.B) { benchmarkProtoUnmarshal(b, true) } + func benchmarkProtoUnmarshal(b *testing.B, parallel bool) { b.ReportAllocs() diff --git a/codec/unknownproto/doc.go b/codec/unknownproto/doc.go index 0e0a46342291..cef3f8f253e9 100644 --- a/codec/unknownproto/doc.go +++ b/codec/unknownproto/doc.go @@ -8,17 +8,17 @@ b) Mismatched wire types for a field -- this is indicative of mismatched service Its API signature is similar to proto.Unmarshal([]byte, proto.Message) in the strict case - if err := RejectUnknownFieldsStrict(protoBlob, protoMessage, false); err != nil { - // Handle the error. - } + if err := RejectUnknownFieldsStrict(protoBlob, protoMessage, false); err != nil { + // Handle the error. + } and ideally should be added before invoking proto.Unmarshal, if you'd like to enforce the features mentioned above. By default, for security we report every single field that's unknown, whether a non-critical field or not. To customize this behavior, please set the boolean parameter allowUnknownNonCriticals to true to RejectUnknownFields: - if err := RejectUnknownFields(protoBlob, protoMessage, true); err != nil { - // Handle the error. - } + if err := RejectUnknownFields(protoBlob, protoMessage, true); err != nil { + // Handle the error. + } */ package unknownproto diff --git a/codec/unknownproto/unknown_fields.go b/codec/unknownproto/unknown_fields.go index b9db6429628b..3af40ffed15b 100644 --- a/codec/unknownproto/unknown_fields.go +++ b/codec/unknownproto/unknown_fields.go @@ -5,7 +5,7 @@ import ( "compress/gzip" "errors" "fmt" - "io/ioutil" + "io" "reflect" "strings" "sync" @@ -162,8 +162,10 @@ func RejectUnknownFields(bz []byte, msg proto.Message, allowUnknownNonCriticals return hasUnknownNonCriticals, nil } -var protoMessageForTypeNameMu sync.RWMutex -var protoMessageForTypeNameCache = make(map[string]proto.Message) +var ( + protoMessageForTypeNameMu sync.RWMutex + protoMessageForTypeNameCache = make(map[string]proto.Message) +) // protoMessageForTypeName takes in a fully qualified name e.g. testdata.TestVersionFD1 // and returns a corresponding empty protobuf message that serves the prototype for typechecking. @@ -358,7 +360,7 @@ func extractFileDescMessageDesc(desc descriptorIface) (*descriptor.FileDescripto if err != nil { return nil, nil, err } - protoBlob, err := ioutil.ReadAll(gzr) + protoBlob, err := io.ReadAll(gzr) if err != nil { return nil, nil, err } @@ -382,8 +384,10 @@ type descriptorMatch struct { desc *descriptor.DescriptorProto } -var descprotoCacheMu sync.RWMutex -var descprotoCache = make(map[reflect.Type]*descriptorMatch) +var ( + descprotoCacheMu sync.RWMutex + descprotoCache = make(map[reflect.Type]*descriptorMatch) +) // getDescriptorInfo retrieves the mapping of field numbers to their respective field descriptors. func getDescriptorInfo(desc descriptorIface, msg proto.Message) (map[int32]*descriptor.FieldDescriptorProto, *descriptor.DescriptorProto, error) { diff --git a/cosmovisor/process_test.go b/cosmovisor/process_test.go index 6dc964f21ee0..3b9a553ed638 100644 --- a/cosmovisor/process_test.go +++ b/cosmovisor/process_test.go @@ -1,3 +1,4 @@ +//go:build linux // +build linux package cosmovisor_test diff --git a/cosmovisor/scanner.go b/cosmovisor/scanner.go index 81bca0717a4e..fb5fa22e1e38 100644 --- a/cosmovisor/scanner.go +++ b/cosmovisor/scanner.go @@ -7,13 +7,15 @@ import ( // Trim off whitespace around the info - match least greedy, grab as much space on both sides // Defined here: https://github.com/cosmos/cosmos-sdk/blob/release/v0.38.2/x/upgrade/abci.go#L38 -// fmt.Sprintf("UPGRADE \"%s\" NEEDED at %s: %s", plan.Name, plan.DueAt(), plan.Info) +// +// fmt.Sprintf("UPGRADE \"%s\" NEEDED at %s: %s", plan.Name, plan.DueAt(), plan.Info) +// // DueAt defined here: https://github.com/cosmos/cosmos-sdk/blob/release/v0.38.2/x/upgrade/internal/types/plan.go#L73-L78 // -// if !p.Time.IsZero() { -// return fmt.Sprintf("time: %s", p.Time.UTC().Format(time.RFC3339)) -// } -// return fmt.Sprintf("height: %d", p.Height) +// if !p.Time.IsZero() { +// return fmt.Sprintf("time: %s", p.Time.UTC().Format(time.RFC3339)) +// } +// return fmt.Sprintf("height: %d", p.Height) var upgradeRegex = regexp.MustCompile(`UPGRADE "(.*)" NEEDED at ((height): (\d+)|(time): (\S+)):\s+(\S*)`) // UpgradeInfo is the details from the regexp diff --git a/cosmovisor/upgrade.go b/cosmovisor/upgrade.go index 3057597f7df1..f943e46f64b9 100644 --- a/cosmovisor/upgrade.go +++ b/cosmovisor/upgrade.go @@ -4,7 +4,6 @@ import ( "encoding/json" "errors" "fmt" - "io/ioutil" "net/url" "os" "path/filepath" @@ -96,7 +95,7 @@ func GetDownloadURL(info *UpgradeInfo) (string, error) { doc := strings.TrimSpace(info.Info) // if this is a url, then we download that and try to get a new doc with the real info if _, err := url.Parse(doc); err == nil { - tmpDir, err := ioutil.TempDir("", "upgrade-manager-reference") + tmpDir, err := os.MkdirTemp("", "upgrade-manager-reference") if err != nil { return "", fmt.Errorf("create tempdir for reference file: %w", err) } @@ -107,7 +106,7 @@ func GetDownloadURL(info *UpgradeInfo) (string, error) { return "", fmt.Errorf("downloading reference link %s: %w", doc, err) } - refBytes, err := ioutil.ReadFile(refPath) + refBytes, err := os.ReadFile(refPath) if err != nil { return "", fmt.Errorf("reading downloaded reference: %w", err) } diff --git a/cosmovisor/upgrade_test.go b/cosmovisor/upgrade_test.go index 2123df8e4035..371db1ef3c93 100644 --- a/cosmovisor/upgrade_test.go +++ b/cosmovisor/upgrade_test.go @@ -1,3 +1,4 @@ +//go:build linux // +build linux package cosmovisor_test diff --git a/crypto/armor.go b/crypto/armor.go index 35deb107798f..227b7ffe4072 100644 --- a/crypto/armor.go +++ b/crypto/armor.go @@ -146,7 +146,6 @@ func EncryptArmorPrivKey(privKey cryptotypes.PrivKey, passphrase string, algo st func encryptPrivKey(privKey cryptotypes.PrivKey, passphrase string) (saltBytes []byte, encBytes []byte) { saltBytes = crypto.CRandBytes(16) key, err := bcrypt.GenerateFromPassword(saltBytes, []byte(passphrase), BcryptSecurityParameter) - if err != nil { panic(sdkerrors.Wrap(err, "error generating bcrypt key from passphrase")) } diff --git a/crypto/hd/algo.go b/crypto/hd/algo.go index f934ad08aece..365d36f00e9d 100644 --- a/crypto/hd/algo.go +++ b/crypto/hd/algo.go @@ -22,21 +22,20 @@ const ( Sr25519Type = PubKeyType("sr25519") ) -var ( - // Secp256k1 uses the Bitcoin secp256k1 ECDSA parameters. - Secp256k1 = secp256k1Algo{} -) +// Secp256k1 uses the Bitcoin secp256k1 ECDSA parameters. +var Secp256k1 = secp256k1Algo{} -type DeriveFn func(mnemonic string, bip39Passphrase, hdPath string) ([]byte, error) -type GenerateFn func(bz []byte) types.PrivKey +type ( + DeriveFn func(mnemonic string, bip39Passphrase, hdPath string) ([]byte, error) + GenerateFn func(bz []byte) types.PrivKey +) type WalletGenerator interface { Derive(mnemonic string, bip39Passphrase, hdPath string) ([]byte, error) Generate(bz []byte) types.PrivKey } -type secp256k1Algo struct { -} +type secp256k1Algo struct{} func (s secp256k1Algo) Name() PubKeyType { return Secp256k1Type @@ -63,7 +62,7 @@ func (s secp256k1Algo) Derive() DeriveFn { // Generate generates a secp256k1 private key from the given bytes. func (s secp256k1Algo) Generate() GenerateFn { return func(bz []byte) types.PrivKey { - var bzArr = make([]byte, secp256k1.PrivKeySize) + bzArr := make([]byte, secp256k1.PrivKeySize) copy(bzArr, bz) return &secp256k1.PrivKey{Key: bzArr} diff --git a/crypto/hd/doc.go b/crypto/hd/doc.go index 38d65213c177..85b6369e75e3 100644 --- a/crypto/hd/doc.go +++ b/crypto/hd/doc.go @@ -1,8 +1,9 @@ // Package hd provides support for hierarchical deterministic wallets generation and derivation. // // The user must understand the overall concept of the BIP 32 and the BIP 44 specs: -// https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki -// https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki +// +// https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki +// https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki // // In combination with the bip39 package in go-crypto this package provides the functionality for // deriving keys using a BIP 44 HD path, or, more general, by passing a BIP 32 path. diff --git a/crypto/hd/fundraiser_test.go b/crypto/hd/fundraiser_test.go index 4afbfc5a9ced..87f2b37b8d18 100644 --- a/crypto/hd/fundraiser_test.go +++ b/crypto/hd/fundraiser_test.go @@ -4,7 +4,7 @@ import ( "encoding/hex" "encoding/json" "fmt" - "io/ioutil" + "os" "testing" "github.com/stretchr/testify/require" @@ -35,7 +35,7 @@ func initFundraiserTestVectors(t *testing.T) []addrData { // var hdPath string = "m/44'/118'/0'/0/0" var hdToAddrTable []addrData - b, err := ioutil.ReadFile("testdata/test.json") + b, err := os.ReadFile("testdata/test.json") if err != nil { t.Fatalf("could not read fundraiser test vector file (testdata/test.json): %s", err) } @@ -77,7 +77,7 @@ func TestFundraiserCompatibility(t *testing.T) { require.Equal(t, seedB, seed) require.Equal(t, master[:], masterB, fmt.Sprintf("Expected masters to match for %d", i)) - require.Equal(t, priv[:], privB, "Expected priv keys to match") + require.Equal(t, priv, privB, "Expected priv keys to match") pubBFixed := make([]byte, secp256k1.PubKeySize) copy(pubBFixed, pubB) require.Equal(t, pub, &secp256k1.PubKey{Key: pubBFixed}, fmt.Sprintf("Expected pub keys to match for %d", i)) diff --git a/crypto/hd/hdpath.go b/crypto/hd/hdpath.go index 058ddcc45667..a4683a97c6e7 100644 --- a/crypto/hd/hdpath.go +++ b/crypto/hd/hdpath.go @@ -227,7 +227,7 @@ func DerivePrivateKeyForPath(privKeyBytes, chainCode [32]byte, path string) ([]b // If harden is true, the derivation is 'hardened'. // It returns the new private key and new chain code. // For more information on hardened keys see: -// - https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki +// - https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki func derivePrivateKey(privKeyBytes [32]byte, chainCode [32]byte, index uint32, harden bool) ([32]byte, [32]byte) { var data []byte diff --git a/crypto/hd/hdpath_test.go b/crypto/hd/hdpath_test.go index 8b1c40692c82..d8f2e44f002a 100644 --- a/crypto/hd/hdpath_test.go +++ b/crypto/hd/hdpath_test.go @@ -89,7 +89,6 @@ func TestParamsFromPath(t *testing.T) { require.Nil(t, params, errStr) require.Error(t, err, errStr) } - } func TestCreateHDPath(t *testing.T) { @@ -207,34 +206,34 @@ func ExampleSomeBIP32TestVecs() { if err != nil { fmt.Println("INVALID") } else { - fmt.Println(hex.EncodeToString(priv[:])) + fmt.Println(hex.EncodeToString(priv)) } // bitcoin priv, err = hd.DerivePrivateKeyForPath(master, ch, "44'/0'/0'/0/0") if err != nil { fmt.Println("INVALID") } else { - fmt.Println(hex.EncodeToString(priv[:])) + fmt.Println(hex.EncodeToString(priv)) } // ether priv, err = hd.DerivePrivateKeyForPath(master, ch, "44'/60'/0'/0/0") if err != nil { fmt.Println("INVALID") } else { - fmt.Println(hex.EncodeToString(priv[:])) + fmt.Println(hex.EncodeToString(priv)) } // INVALID priv, err = hd.DerivePrivateKeyForPath(master, ch, "X/0'/0'/0/0") if err != nil { fmt.Println("INVALID") } else { - fmt.Println(hex.EncodeToString(priv[:])) + fmt.Println(hex.EncodeToString(priv)) } priv, err = hd.DerivePrivateKeyForPath(master, ch, "-44/0'/0'/0/0") if err != nil { fmt.Println("INVALID") } else { - fmt.Println(hex.EncodeToString(priv[:])) + fmt.Println(hex.EncodeToString(priv)) } fmt.Println() @@ -246,13 +245,13 @@ func ExampleSomeBIP32TestVecs() { "gorilla ranch hour rival razor call lunar mention taste vacant woman sister") master, ch = hd.ComputeMastersFromSeed(seed) priv, _ = hd.DerivePrivateKeyForPath(master, ch, "44'/1'/1'/0/4") - fmt.Println(hex.EncodeToString(priv[:])) + fmt.Println(hex.EncodeToString(priv)) seed = mnemonicToSeed("idea naive region square margin day captain habit " + "gun second farm pact pulse someone armed") master, ch = hd.ComputeMastersFromSeed(seed) priv, _ = hd.DerivePrivateKeyForPath(master, ch, "44'/0'/0'/0/420") - fmt.Println(hex.EncodeToString(priv[:])) + fmt.Println(hex.EncodeToString(priv)) fmt.Println() fmt.Println("BIP 32 example") @@ -262,7 +261,7 @@ func ExampleSomeBIP32TestVecs() { seed = mnemonicToSeed("monitor flock loyal sick object grunt duty ride develop assault harsh history") master, ch = hd.ComputeMastersFromSeed(seed) priv, _ = hd.DerivePrivateKeyForPath(master, ch, "0/7") - fmt.Println(hex.EncodeToString(priv[:])) + fmt.Println(hex.EncodeToString(priv)) // Output: keys from fundraiser test-vector (cosmos, bitcoin, ether) // diff --git a/crypto/keyring/doc.go b/crypto/keyring/doc.go index 04a8b98cdfba..a8aad2b21551 100644 --- a/crypto/keyring/doc.go +++ b/crypto/keyring/doc.go @@ -1,25 +1,24 @@ // Package keys provides common key management API. // -// -// The Keybase interface +// # The Keybase interface // // The Keybase interface defines the methods that a type needs to implement to be used // as key storage backend. This package provides few implementations out-of-the-box. // -// NewLegacy +// # NewLegacy // // The NewLegacy constructor returns an on-disk implementation backed by LevelDB storage that has been // the default implementation used by the SDK until v0.38.0. Due to security concerns, it is // recommended to drop it in favor of the NewKeyring constructor as it will be removed in future releases. // -// NewInMemory +// # NewInMemory // // The NewInMemory constructor returns an implementation backed by an in-memory, goroutine-safe // map that has historically been used for testing purposes or on-the-fly key generation as the // generated keys are discarded when the process terminates or the type instance is garbage // collected. // -// New +// # New // // The New constructor returns an implementation backed by a keyring library // (https://github.com/99designs/keyring), whose aim is to provide a common abstraction and uniform @@ -27,20 +26,21 @@ // as well as operating system-agnostic encrypted file-based backends. // // The backends: -// os The instance returned by this constructor uses the operating system's default -// credentials store to handle keys storage operations securely. It should be noted -// that the keyring keyring may be kept unlocked for the whole duration of the user -// session. -// file This backend more closely resembles the previous keyring storage used prior to -// v0.38.1. It stores the keyring encrypted within the app's configuration directory. -// This keyring will request a password each time it is accessed, which may occur -// multiple times in a single command resulting in repeated password prompts. -// kwallet This backend uses KDE Wallet Manager as a credentials management application: -// https://github.com/KDE/kwallet -// pass This backend uses the pass command line utility to store and retrieve keys: -// https://www.passwordstore.org/ -// test This backend stores keys insecurely to disk. It does not prompt for a password to -// be unlocked and it should be use only for testing purposes. -// memory Same instance as returned by NewInMemory. This backend uses a transient storage. Keys -// are discarded when the process terminates or the type instance is garbage collected. +// +// os The instance returned by this constructor uses the operating system's default +// credentials store to handle keys storage operations securely. It should be noted +// that the keyring keyring may be kept unlocked for the whole duration of the user +// session. +// file This backend more closely resembles the previous keyring storage used prior to +// v0.38.1. It stores the keyring encrypted within the app's configuration directory. +// This keyring will request a password each time it is accessed, which may occur +// multiple times in a single command resulting in repeated password prompts. +// kwallet This backend uses KDE Wallet Manager as a credentials management application: +// https://github.com/KDE/kwallet +// pass This backend uses the pass command line utility to store and retrieve keys: +// https://www.passwordstore.org/ +// test This backend stores keys insecurely to disk. It does not prompt for a password to +// be unlocked and it should be use only for testing purposes. +// memory Same instance as returned by NewInMemory. This backend uses a transient storage. Keys +// are discarded when the process terminates or the type instance is garbage collected. package keyring diff --git a/crypto/keyring/keyring.go b/crypto/keyring/keyring.go index b18d6073228e..855ef5f55e4d 100644 --- a/crypto/keyring/keyring.go +++ b/crypto/keyring/keyring.go @@ -5,7 +5,6 @@ import ( "encoding/hex" "fmt" "io" - "io/ioutil" "os" "path/filepath" "sort" @@ -655,7 +654,7 @@ func newRealPrompt(dir string, buf io.Reader) func(string) (string, error) { switch { case err == nil: - keyhash, err = ioutil.ReadFile(keyhashFilePath) + keyhash, err = os.ReadFile(keyhashFilePath) if err != nil { return "", fmt.Errorf("failed to read %s: %v", keyhashFilePath, err) } @@ -719,7 +718,7 @@ func newRealPrompt(dir string, buf io.Reader) func(string) (string, error) { continue } - if err := ioutil.WriteFile(dir+"/keyhash", passwordHash, 0555); err != nil { + if err := os.WriteFile(dir+"/keyhash", passwordHash, 0o555); err != nil { return "", err } diff --git a/crypto/keyring/keyring_ledger_test.go b/crypto/keyring/keyring_ledger_test.go index b940970af1df..ce18106d1f49 100644 --- a/crypto/keyring/keyring_ledger_test.go +++ b/crypto/keyring/keyring_ledger_test.go @@ -1,4 +1,5 @@ -//+build ledger test_ledger_mock +//go:build ledger || test_ledger_mock +// +build ledger test_ledger_mock package keyring diff --git a/crypto/keyring/legacy.go b/crypto/keyring/legacy.go index f30513e03e0b..26c027cf7311 100644 --- a/crypto/keyring/legacy.go +++ b/crypto/keyring/legacy.go @@ -26,7 +26,7 @@ type LegacyKeybase interface { // NewLegacy creates a new instance of a legacy keybase. func NewLegacy(name, dir string, opts ...KeybaseOption) (LegacyKeybase, error) { - if err := tmos.EnsureDir(dir, 0700); err != nil { + if err := tmos.EnsureDir(dir, 0o700); err != nil { return nil, fmt.Errorf("failed to create Keybase directory: %s", err) } @@ -167,7 +167,8 @@ func (kb dbKeybase) ExportPubKey(name string) (armor string, err error) { // It returns an error if the key does not exist or a wrong encryption passphrase // is supplied. func (kb dbKeybase) ExportPrivKey(name string, decryptPassphrase string, - encryptPassphrase string) (armor string, err error) { + encryptPassphrase string, +) (armor string, err error) { priv, err := kb.ExportPrivateKeyObject(name, decryptPassphrase) if err != nil { return "", err @@ -232,5 +233,4 @@ func (m keyringMigrator) Import(uid string, armor string) error { // KeybaseOption overrides options for the db. type KeybaseOption func(*kbOptions) -type kbOptions struct { -} +type kbOptions struct{} diff --git a/crypto/keyring/signing_algorithms_test.go b/crypto/keyring/signing_algorithms_test.go index 14283b910846..d9d30255107e 100644 --- a/crypto/keyring/signing_algorithms_test.go +++ b/crypto/keyring/signing_algorithms_test.go @@ -59,8 +59,7 @@ func TestAltSigningAlgoList_String(t *testing.T) { require.Equal(t, fmt.Sprintf("%s,notSupported", string(hd.Secp256k1Type)), list.String()) } -type notSupportedAlgo struct { -} +type notSupportedAlgo struct{} func (n notSupportedAlgo) Name() hd.PubKeyType { return "notSupported" diff --git a/crypto/keyring/types_test.go b/crypto/keyring/types_test.go index b04aa4547964..02b6e877260c 100644 --- a/crypto/keyring/types_test.go +++ b/crypto/keyring/types_test.go @@ -14,7 +14,7 @@ import ( func Test_writeReadLedgerInfo(t *testing.T) { tmpKey := make([]byte, secp256k1.PubKeySize) bz, _ := hex.DecodeString("035AD6810A47F073553FF30D2FCC7E0D3B1C0B74B61A1AAA2582344037151E143A") - copy(tmpKey[:], bz) + copy(tmpKey, bz) lInfo := newLedgerInfo("some_name", &secp256k1.PubKey{Key: tmpKey}, *hd.NewFundraiserParams(5, sdk.CoinType, 1), hd.Secp256k1Type) require.Equal(t, TypeLedger, lInfo.GetType()) diff --git a/crypto/keys/ed25519/ed25519.go b/crypto/keys/ed25519/ed25519.go index 17368c4b12ff..172a7f26234f 100644 --- a/crypto/keys/ed25519/ed25519.go +++ b/crypto/keys/ed25519/ed25519.go @@ -33,8 +33,10 @@ const ( keyType = "ed25519" ) -var _ cryptotypes.PrivKey = &PrivKey{} -var _ codec.AminoMarshaler = &PrivKey{} +var ( + _ cryptotypes.PrivKey = &PrivKey{} + _ codec.AminoMarshaler = &PrivKey{} +) // Bytes returns the privkey byte format. func (privKey *PrivKey) Bytes() []byte { @@ -147,8 +149,10 @@ func GenPrivKeyFromSecret(secret []byte) *PrivKey { //------------------------------------- -var _ cryptotypes.PubKey = &PubKey{} -var _ codec.AminoMarshaler = &PubKey{} +var ( + _ cryptotypes.PubKey = &PubKey{} + _ codec.AminoMarshaler = &PubKey{} +) // Address is the SHA256-20 of the raw pubkey bytes. func (pubKey *PubKey) Address() crypto.Address { diff --git a/crypto/keys/internal/benchmarking/bench.go b/crypto/keys/internal/benchmarking/bench.go index a789da91f9c9..28abb5b98704 100644 --- a/crypto/keys/internal/benchmarking/bench.go +++ b/crypto/keys/internal/benchmarking/bench.go @@ -38,7 +38,6 @@ func BenchmarkSigning(b *testing.B, priv types.PrivKey) { b.ResetTimer() for i := 0; i < b.N; i++ { _, err := priv.Sign(message) - if err != nil { b.FailNow() } diff --git a/crypto/keys/multisig/multisig.go b/crypto/keys/multisig/multisig.go index 590e5ba11001..10d1ffe416ee 100644 --- a/crypto/keys/multisig/multisig.go +++ b/crypto/keys/multisig/multisig.go @@ -11,8 +11,10 @@ import ( "github.com/cosmos/cosmos-sdk/types/tx/signing" ) -var _ multisigtypes.PubKey = &LegacyAminoPubKey{} -var _ types.UnpackInterfacesMessage = &LegacyAminoPubKey{} +var ( + _ multisigtypes.PubKey = &LegacyAminoPubKey{} + _ types.UnpackInterfacesMessage = &LegacyAminoPubKey{} +) // NewLegacyAminoPubKey returns a new LegacyAminoPubKey. // Panics if len(pubKeys) < k or 0 >= k. diff --git a/crypto/keys/secp256k1/internal/secp256k1/curve.go b/crypto/keys/secp256k1/internal/secp256k1/curve.go index 7a2387365c6b..fa1dd964be8b 100644 --- a/crypto/keys/secp256k1/internal/secp256k1/curve.go +++ b/crypto/keys/secp256k1/internal/secp256k1/curve.go @@ -30,7 +30,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// nolint:gocritic +//nolint:gocritic package secp256k1 import ( @@ -103,19 +103,19 @@ func (BitCurve *BitCurve) Params() *elliptic.CurveParams { // IsOnCurve returns true if the given (x,y) lies on the BitCurve. func (BitCurve *BitCurve) IsOnCurve(x, y *big.Int) bool { // y² = x³ + b - y2 := new(big.Int).Mul(y, y) //y² - y2.Mod(y2, BitCurve.P) //y²%P + y2 := new(big.Int).Mul(y, y) // y² + y2.Mod(y2, BitCurve.P) // y²%P - x3 := new(big.Int).Mul(x, x) //x² - x3.Mul(x3, x) //x³ + x3 := new(big.Int).Mul(x, x) // x² + x3.Mul(x3, x) // x³ - x3.Add(x3, BitCurve.B) //x³+B + x3.Add(x3, BitCurve.B) // x³+B x3.Mod(x3, BitCurve.P) //(x³+B)%P return x3.Cmp(y2) == 0 } -//TODO: double check if the function is okay +// TODO: double check if the function is okay // affineFromJacobian reverses the Jacobian transform. See the comment at the // top of the file. func (BitCurve *BitCurve) affineFromJacobian(x, y, z *big.Int) (xOut, yOut *big.Int) { @@ -212,30 +212,30 @@ func (BitCurve *BitCurve) Double(x1, y1 *big.Int) (*big.Int, *big.Int) { func (BitCurve *BitCurve) doubleJacobian(x, y, z *big.Int) (*big.Int, *big.Int, *big.Int) { // See http://hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#doubling-dbl-2009-l - a := new(big.Int).Mul(x, x) //X1² - b := new(big.Int).Mul(y, y) //Y1² - c := new(big.Int).Mul(b, b) //B² + a := new(big.Int).Mul(x, x) // X1² + b := new(big.Int).Mul(y, y) // Y1² + c := new(big.Int).Mul(b, b) // B² - d := new(big.Int).Add(x, b) //X1+B + d := new(big.Int).Add(x, b) // X1+B d.Mul(d, d) //(X1+B)² d.Sub(d, a) //(X1+B)²-A d.Sub(d, c) //(X1+B)²-A-C - d.Mul(d, big.NewInt(2)) //2*((X1+B)²-A-C) + d.Mul(d, big.NewInt(2)) // 2*((X1+B)²-A-C) - e := new(big.Int).Mul(big.NewInt(3), a) //3*A - f := new(big.Int).Mul(e, e) //E² + e := new(big.Int).Mul(big.NewInt(3), a) // 3*A + f := new(big.Int).Mul(e, e) // E² - x3 := new(big.Int).Mul(big.NewInt(2), d) //2*D - x3.Sub(f, x3) //F-2*D + x3 := new(big.Int).Mul(big.NewInt(2), d) // 2*D + x3.Sub(f, x3) // F-2*D x3.Mod(x3, BitCurve.P) - y3 := new(big.Int).Sub(d, x3) //D-X3 - y3.Mul(e, y3) //E*(D-X3) - y3.Sub(y3, new(big.Int).Mul(big.NewInt(8), c)) //E*(D-X3)-8*C + y3 := new(big.Int).Sub(d, x3) // D-X3 + y3.Mul(e, y3) // E*(D-X3) + y3.Sub(y3, new(big.Int).Mul(big.NewInt(8), c)) // E*(D-X3)-8*C y3.Mod(y3, BitCurve.P) - z3 := new(big.Int).Mul(y, z) //Y1*Z1 - z3.Mul(big.NewInt(2), z3) //3*Y1*Z1 + z3 := new(big.Int).Mul(y, z) // Y1*Z1 + z3.Mul(big.NewInt(2), z3) // 3*Y1*Z1 z3.Mod(z3, BitCurve.P) return x3, y3, z3 diff --git a/crypto/keys/secp256k1/secp256k1.go b/crypto/keys/secp256k1/secp256k1.go index eebe72a45242..44b545a46e6f 100644 --- a/crypto/keys/secp256k1/secp256k1.go +++ b/crypto/keys/secp256k1/secp256k1.go @@ -10,15 +10,17 @@ import ( secp256k1 "github.com/btcsuite/btcd/btcec" "github.com/tendermint/tendermint/crypto" - "golang.org/x/crypto/ripemd160" // nolint: staticcheck // necessary for Bitcoin address format + "golang.org/x/crypto/ripemd160" //nolint: staticcheck // necessary for Bitcoin address format "github.com/cosmos/cosmos-sdk/codec" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" "github.com/cosmos/cosmos-sdk/types/errors" ) -var _ cryptotypes.PrivKey = &PrivKey{} -var _ codec.AminoMarshaler = &PrivKey{} +var ( + _ cryptotypes.PrivKey = &PrivKey{} + _ codec.AminoMarshaler = &PrivKey{} +) const ( PrivKeySize = 32 @@ -138,8 +140,10 @@ func GenPrivKeyFromSecret(secret []byte) *PrivKey { //------------------------------------- -var _ cryptotypes.PubKey = &PubKey{} -var _ codec.AminoMarshaler = &PubKey{} +var ( + _ cryptotypes.PubKey = &PubKey{} + _ codec.AminoMarshaler = &PubKey{} +) // PubKeySize is comprised of 32 bytes for one field element // (the x-coordinate), plus one byte for the parity of the y-coordinate. diff --git a/crypto/keys/secp256k1/secp256k1_cgo.go b/crypto/keys/secp256k1/secp256k1_cgo.go index 42088483d3f9..1d104364617d 100644 --- a/crypto/keys/secp256k1/secp256k1_cgo.go +++ b/crypto/keys/secp256k1/secp256k1_cgo.go @@ -1,3 +1,4 @@ +//go:build libsecp256k1 // +build libsecp256k1 package secp256k1 diff --git a/crypto/keys/secp256k1/secp256k1_cgo_test.go b/crypto/keys/secp256k1/secp256k1_cgo_test.go index bfaa76caf9db..20ae3e12780c 100644 --- a/crypto/keys/secp256k1/secp256k1_cgo_test.go +++ b/crypto/keys/secp256k1/secp256k1_cgo_test.go @@ -1,3 +1,4 @@ +//go:build libsecp256k1 // +build libsecp256k1 package secp256k1 diff --git a/crypto/keys/secp256k1/secp256k1_internal_test.go b/crypto/keys/secp256k1/secp256k1_internal_test.go index a2c8e73bcbe7..b3f6f3e82f83 100644 --- a/crypto/keys/secp256k1/secp256k1_internal_test.go +++ b/crypto/keys/secp256k1/secp256k1_internal_test.go @@ -10,7 +10,6 @@ import ( ) func Test_genPrivKey(t *testing.T) { - empty := make([]byte, 32) oneB := big.NewInt(1).Bytes() onePadded := make([]byte, 32) @@ -37,7 +36,7 @@ func Test_genPrivKey(t *testing.T) { return } got := genPrivKey(bytes.NewReader(tt.notSoRand)) - fe := new(big.Int).SetBytes(got[:]) + fe := new(big.Int).SetBytes(got) require.True(t, fe.Cmp(btcSecp256k1.S256().N) < 0) require.True(t, fe.Sign() > 0) }) diff --git a/crypto/keys/secp256k1/secp256k1_nocgo.go b/crypto/keys/secp256k1/secp256k1_nocgo.go index 2d605447f421..ca1d1cf84995 100644 --- a/crypto/keys/secp256k1/secp256k1_nocgo.go +++ b/crypto/keys/secp256k1/secp256k1_nocgo.go @@ -1,3 +1,4 @@ +//go:build !libsecp256k1 // +build !libsecp256k1 package secp256k1 @@ -12,8 +13,8 @@ import ( // used to reject malleable signatures // see: -// - https://github.com/ethereum/go-ethereum/blob/f9401ae011ddf7f8d2d95020b7446c17f8d98dc1/crypto/signature_nocgo.go#L90-L93 -// - https://github.com/ethereum/go-ethereum/blob/f9401ae011ddf7f8d2d95020b7446c17f8d98dc1/crypto/crypto.go#L39 +// - https://github.com/ethereum/go-ethereum/blob/f9401ae011ddf7f8d2d95020b7446c17f8d98dc1/crypto/signature_nocgo.go#L90-L93 +// - https://github.com/ethereum/go-ethereum/blob/f9401ae011ddf7f8d2d95020b7446c17f8d98dc1/crypto/crypto.go#L39 var secp256k1halfN = new(big.Int).Rsh(secp256k1.S256().N, 1) // Sign creates an ECDSA signature on curve Secp256k1, using SHA256 on the msg. diff --git a/crypto/keys/secp256k1/secp256k1_nocgo_test.go b/crypto/keys/secp256k1/secp256k1_nocgo_test.go index 4c2c856e13cc..878a06bfe6a9 100644 --- a/crypto/keys/secp256k1/secp256k1_nocgo_test.go +++ b/crypto/keys/secp256k1/secp256k1_nocgo_test.go @@ -1,3 +1,4 @@ +//go:build !libsecp256k1 // +build !libsecp256k1 package secp256k1 diff --git a/crypto/keys/secp256k1/secp256k1_test.go b/crypto/keys/secp256k1/secp256k1_test.go index 1994e5057fec..13a5daf6ad5b 100644 --- a/crypto/keys/secp256k1/secp256k1_test.go +++ b/crypto/keys/secp256k1/secp256k1_test.go @@ -41,7 +41,7 @@ func TestPubKeySecp256k1Address(t *testing.T) { addrBbz, _, _ := base58.CheckDecode(d.addr) addrB := crypto.Address(addrBbz) - var priv = secp256k1.PrivKey{Key: privB} + priv := secp256k1.PrivKey{Key: privB} pubKey := priv.PubKey() pubT, _ := pubKey.(*secp256k1.PubKey) @@ -131,7 +131,7 @@ func TestGenPrivKeyFromSecret(t *testing.T) { gotPrivKey := secp256k1.GenPrivKeyFromSecret(tt.secret) require.NotNil(t, gotPrivKey) // interpret as a big.Int and make sure it is a valid field element: - fe := new(big.Int).SetBytes(gotPrivKey.Key[:]) + fe := new(big.Int).SetBytes(gotPrivKey.Key) require.True(t, fe.Cmp(N) < 0) require.True(t, fe.Sign() > 0) }) diff --git a/crypto/ledger/encode_test.go b/crypto/ledger/encode_test.go index 447891fde768..b4268d4425d7 100644 --- a/crypto/ledger/encode_test.go +++ b/crypto/ledger/encode_test.go @@ -28,7 +28,7 @@ func checkAminoJSON(t *testing.T, src interface{}, dst interface{}, isNil bool) require.Nil(t, err, "%+v", err) } -// nolint: govet +//nolint: govet func ExamplePrintRegisteredTypes() { cdc.PrintTypes(os.Stdout) // | Type | Name | Prefix | Length | Notes | @@ -44,7 +44,6 @@ func ExamplePrintRegisteredTypes() { } func TestNilEncodings(t *testing.T) { - // Check nil Signature. var a, b []byte checkAminoJSON(t, &a, &b, true) @@ -59,5 +58,4 @@ func TestNilEncodings(t *testing.T) { var e, f cryptotypes.PrivKey checkAminoJSON(t, &e, &f, true) require.EqualValues(t, e, f) - } diff --git a/crypto/ledger/ledger_mock.go b/crypto/ledger/ledger_mock.go index 4f7feb2c52de..d7a0056bb9c1 100644 --- a/crypto/ledger/ledger_mock.go +++ b/crypto/ledger/ledger_mock.go @@ -1,3 +1,4 @@ +//go:build ledger && test_ledger_mock // +build ledger,test_ledger_mock package ledger diff --git a/crypto/ledger/ledger_notavail.go b/crypto/ledger/ledger_notavail.go index 66d16adcc023..578c33d4369c 100644 --- a/crypto/ledger/ledger_notavail.go +++ b/crypto/ledger/ledger_notavail.go @@ -1,4 +1,6 @@ +//go:build !cgo || !ledger // +build !cgo !ledger + // test_ledger_mock package ledger diff --git a/crypto/ledger/ledger_real.go b/crypto/ledger/ledger_real.go index 07f8a8e3ed6a..48c87aff7683 100644 --- a/crypto/ledger/ledger_real.go +++ b/crypto/ledger/ledger_real.go @@ -1,3 +1,4 @@ +//go:build cgo && ledger && !test_ledger_mock // +build cgo,ledger,!test_ledger_mock package ledger diff --git a/crypto/ledger/ledger_secp256k1.go b/crypto/ledger/ledger_secp256k1.go index ee2f873544c4..af852e32ee05 100644 --- a/crypto/ledger/ledger_secp256k1.go +++ b/crypto/ledger/ledger_secp256k1.go @@ -14,11 +14,9 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/types" ) -var ( - // discoverLedger defines a function to be invoked at runtime for discovering - // a connected Ledger device. - discoverLedger discoverLedgerFn -) +// discoverLedger defines a function to be invoked at runtime for discovering +// a connected Ledger device. +var discoverLedger discoverLedgerFn type ( // discoverLedgerFn defines a Ledger discovery function that returns a @@ -103,7 +101,8 @@ func (pkl PrivKeyLedgerSecp256k1) Sign(message []byte) ([]byte, error) { // ShowAddress triggers a ledger device to show the corresponding address. func ShowAddress(path hd.BIP44Params, expectedPubKey types.PubKey, - accountAddressPrefix string) error { + accountAddressPrefix string, +) error { device, err := getDevice() if err != nil { return err diff --git a/crypto/types/compact_bit_array_test.go b/crypto/types/compact_bit_array_test.go index f108b38129a9..094ea32a9da8 100644 --- a/crypto/types/compact_bit_array_test.go +++ b/crypto/types/compact_bit_array_test.go @@ -39,7 +39,6 @@ func TestNewBitArrayNeverCrashesOnNegatives(t *testing.T) { } func TestJSONMarshalUnmarshal(t *testing.T) { - bA1 := NewCompactBitArray(0) bA2 := NewCompactBitArray(1) @@ -178,7 +177,6 @@ func TestCompactBitArrayNumOfTrueBitsBefore(t *testing.T) { require.NoError(t, err) for i := 0; i < len(tc.bAIndex); i++ { - require.Equal(t, tc.trueValueIndex[i], bA.NumTrueBitsBefore(tc.bAIndex[i]), "tc %d, i %d", tcIndex, i) } }) diff --git a/go.mod b/go.mod index 3baa1b3f36bd..1a27838af457 100644 --- a/go.mod +++ b/go.mod @@ -5,9 +5,9 @@ module github.com/cosmos/cosmos-sdk require ( github.com/99designs/keyring v1.1.6 github.com/DataDog/zstd v1.4.5 // indirect - github.com/armon/go-metrics v0.3.8 + github.com/armon/go-metrics v0.3.10 github.com/bgentry/speakeasy v0.1.0 - github.com/btcsuite/btcd v0.22.0-beta + github.com/btcsuite/btcd v0.22.1 github.com/confio/ics23/go v0.6.6 github.com/cosmos/btcutil v1.0.4 github.com/cosmos/go-bip39 v1.0.0 @@ -17,43 +17,36 @@ require ( github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/gogo/gateway v1.1.0 github.com/gogo/protobuf v1.3.3 - github.com/golang/mock v1.4.4 + github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.2 - github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3 // indirect - github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa // indirect github.com/gorilla/handlers v1.5.1 github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/hashicorp/golang-lru v0.5.4 - github.com/magiconair/properties v1.8.5 - github.com/mattn/go-isatty v0.0.12 - github.com/mitchellh/mapstructure v1.3.3 // indirect + github.com/magiconair/properties v1.8.6 + github.com/mattn/go-isatty v0.0.16 github.com/otiai10/copy v1.6.0 - github.com/pelletier/go-toml v1.8.1 // indirect github.com/pkg/errors v0.9.1 - github.com/prometheus/client_golang v1.10.0 - github.com/prometheus/common v0.23.0 + github.com/prometheus/client_golang v1.12.2 + github.com/prometheus/common v0.32.1 github.com/rakyll/statik v0.1.7 github.com/regen-network/cosmos-proto v0.3.1 - github.com/rs/zerolog v1.21.0 - github.com/spf13/afero v1.3.4 // indirect - github.com/spf13/cast v1.3.1 - github.com/spf13/cobra v1.1.3 - github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/rs/zerolog v1.27.0 + github.com/spf13/cast v1.5.0 + github.com/spf13/cobra v1.6.0 github.com/spf13/pflag v1.0.5 - github.com/spf13/viper v1.7.1 - github.com/stretchr/testify v1.7.0 + github.com/spf13/viper v1.13.0 + github.com/stretchr/testify v1.8.0 github.com/tendermint/btcd v0.1.1 github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 github.com/tendermint/go-amino v0.16.0 - github.com/tendermint/tendermint v0.34.14 - github.com/tendermint/tm-db v0.6.4 - golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad - google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f - google.golang.org/grpc v1.42.0 - google.golang.org/protobuf v1.27.0 - gopkg.in/ini.v1 v1.61.0 // indirect + github.com/tendermint/tendermint v0.34.24 + github.com/tendermint/tm-db v0.6.7 + golang.org/x/crypto v0.1.0 + google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a + google.golang.org/grpc v1.50.1 + google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 gopkg.in/yaml.v2 v2.4.0 ) diff --git a/go.sum b/go.sum index 67e9bb3a4ac1..9dd05b1892c7 100644 --- a/go.sum +++ b/go.sum @@ -1,75 +1,450 @@ +4d63.com/gochecknoglobals v0.1.0/go.mod h1:wfdC5ZjKSPr7CybKEcgJhUOgeAQW1+7WcyK8OvUilfo= +bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +bazil.org/fuse v0.0.0-20180421153158-65cc252bf669/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM= +bitbucket.org/creachadair/shell v0.0.6/go.mod h1:8Qqi/cYk7vPnsOePHroKXDJYmb5x7ENhtiFtfZq8K+M= +cloud.google.com/go v0.25.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.37.2/go.mod h1:H8IAquKe2L30IxoupDgqTaQvKSwF/c8prYHynGIWQbA= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.39.0/go.mod h1:rVLT6fkc8chs9sfPtFc1SBH6em7n+ZoXaG+87tDISts= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.60.0/go.mod h1:yw2G51M9IfRboUH61Us8GqCeF1PzPblB823Mn2q2eAU= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/pubsub v1.5.0/go.mod h1:ZEwJccE3z93Z2HWvstpri00jOg7oO4UZDtKhwDwqF0w= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/spanner v1.7.0/go.mod h1:sd3K2gZ9Fd0vMPLXzeCrF6fq4i63Q7aTLW/lBIfBkIk= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +code.gitea.io/sdk/gitea v0.12.0/go.mod h1:z3uwDV/b9Ls47NGukYM9XhnHtqPh/J+t40lsUrR6JDY= +contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= +contrib.go.opencensus.io/exporter/ocagent v0.5.0/go.mod h1:ImxhfLRpxoYiSq891pBrLVhN+qmP8BTVvdH2YLs7Gl0= +contrib.go.opencensus.io/exporter/stackdriver v0.12.1/go.mod h1:iwB6wGarfphGGe/e5CWqyUk/cLzKnWsOKPVW3no6OTw= +contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= +contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= +contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcigGlFvXwEGEnkRLA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +git.apache.org/thrift.git v0.12.0/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= +github.com/Abirdcfly/dupword v0.0.7/go.mod h1:K/4M1kj+Zh39d2aotRwypvasonOyAMH1c/IZJzE0dmk= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= +github.com/AkihiroSuda/containerd-fuse-overlayfs v1.0.0/go.mod h1:0mMDvQFeLbbn1Wy8P2j3hwFhqBq+FKn8OZPno8WLmp8= +github.com/Antonboom/errname v0.1.7/go.mod h1:g0ONh16msHIPgJSGsecu1G/dcF2hlYR/0SddnIAGavU= +github.com/Antonboom/nilnil v0.1.1/go.mod h1:L1jBqoWM7AOeTD+tSquifKSesRHs4ZdaxvZR+xdJEaI= +github.com/Azure/azure-amqp-common-go/v2 v2.1.0/go.mod h1:R8rea+gJRuJR6QxTir/XuEd+YuKoUiazDC/N96FiDEU= +github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= +github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= +github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v19.1.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v29.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v30.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v35.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v38.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v42.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0= +github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8= +github.com/Azure/azure-service-bus-go v0.9.1/go.mod h1:yzBx6/BUGfjfeqbRZny9AQIbIe3AcV9WZbAdpkoXOa0= +github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest v10.15.5+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest v12.0.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest v14.1.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= +github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= +github.com/Azure/go-autorest/autorest v0.10.2/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= +github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= +github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= +github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/adal v0.8.3/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= +github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= +github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= +github.com/Azure/go-autorest/autorest/azure/auth v0.4.2/go.mod h1:90gmfKdlmKgfjUpnCEpOJzsUEjrWDSLwHIG73tSXddM= +github.com/Azure/go-autorest/autorest/azure/cli v0.3.1/go.mod h1:ZG5p860J94/0kI9mNJVoIoLgXcirM2gF5i2kWloofxw= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocmRAJWqST1wQYhyyjXJ3SJc= +github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= +github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= +github.com/Azure/go-autorest/autorest/validation v0.2.0/go.mod h1:3EEqHnBxQGHXRYq3HT1WyXAvT7LLY3tl70hw6tQIbjI= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= 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.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/Djarvur/go-err113 v0.0.0-20200410182137-af658d038157/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= +github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= +github.com/Djarvur/go-err113 v0.1.0/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= +github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0/go.mod h1:b3g59n2Y+T5xmcxJL+UEG2f8cQploZm1mR/v6BW0mU0= +github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20191009163259-e802c2cb94ae/go.mod h1:mjwGPas4yKduTyubHvD1Atl9r1rUq8DfVy+gkVvZ+oo= +github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14= +github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= +github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/semver/v3 v3.0.3/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= +github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= +github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.5.0 h1:Elr9Wn+sGKPlkaBvwu4mTrxtmOp3F3yV9qhaHbXGjwU= +github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= +github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= +github.com/Microsoft/go-winio v0.4.15/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= +github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= +github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= +github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= +github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= +github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM= +github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= +github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= +github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= +github.com/Microsoft/hcsshim v0.8.20/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= +github.com/Microsoft/hcsshim v0.8.21/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= +github.com/Microsoft/hcsshim v0.8.23/go.mod h1:4zegtUJth7lAvFyc6cH2gGQ5B3OFQim01nnU2M8jKDg= +github.com/Microsoft/hcsshim v0.9.2/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc= +github.com/Microsoft/hcsshim v0.9.4/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc= +github.com/Microsoft/hcsshim/test v0.0.0-20200826032352-301c83a30e7c/go.mod h1:30A5igQ91GEmhYJF8TaRP79pMBOYynRsyOByfVV0dU4= +github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= +github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM= +github.com/OpenPeeDeeP/depguard v1.1.1/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/Workiva/go-datastructures v1.0.52 h1:PLSK6pwn8mYdaoaCZEMsXBpBotr4HHn9abU0yMQt0NI= github.com/Workiva/go-datastructures v1.0.52/go.mod h1:Z+F2Rca0qCsVYDS8z7bAGm8f3UkzuWYS/oBZz5a7VVA= -github.com/adlio/schema v1.1.13 h1:LeNMVg5Z1FX+Qgz8tJUijBLRdcpbFUElz+d1489On98= +github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= +github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= github.com/adlio/schema v1.1.13/go.mod h1:L5Z7tw+7lRK1Fnpi/LT/ooCP1elkXn0krMWBQHUhEDE= +github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= +github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= +github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= +github.com/alecthomas/kingpin v2.2.6+incompatible/go.mod h1:59OFYbFVLKQKq+mqrL6Rw5bR0c3ACQaawgXx0QYndlE= 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/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= +github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= +github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= +github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= +github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= +github.com/andybalholm/brotli v1.0.3/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apex/log v1.1.4/go.mod h1:AlpoD9aScyQfJDVHmLMEcx4oU6LqzkWp4Mg9GdAcEvQ= +github.com/apex/log v1.3.0/go.mod h1:jd8Vpsr46WAe3EZSQ/IUMs2qQD/GOycT5rPWCO1yGcs= +github.com/apex/logs v0.0.4/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDwo= +github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy8kCu4PNA+aP7WUV72eXWJeP9/r3/K9aLE= +github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3stzu0Xys= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.8 h1:oOxq3KPj0WhCuy50EhzwiyMyG2ovRQZpZLXQuOh2a/M= -github.com/armon/go-metrics v0.3.8/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-metrics v0.3.10 h1:FR+drcQStOe+32sYyJYyZ7FIdgoGGBnwLl+flodp8Uo= +github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= 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/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/ashanbrown/forbidigo v1.3.0/go.mod h1:vVW7PEdqEFqapJe95xHkTfB1+XvZXBFg8t0sG2FIxmI= +github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= +github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= +github.com/aws/aws-sdk-go v1.15.90/go.mod h1:es1KtYUFs7le0xQ3rOihkuoVD90z7D0fR2Qm4S00/gU= +github.com/aws/aws-sdk-go v1.16.26/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.19.45/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.25.11/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.27.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.31.6/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= +github.com/aws/aws-sdk-go v1.36.30/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= +github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= +github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= 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 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= +github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI= +github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI= +github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/bombsimon/wsl/v2 v2.0.0/go.mod h1:mf25kr/SqFEPhhcxW1+7pxzGlW+hIl/hYTKY95VwV8U= +github.com/bombsimon/wsl/v2 v2.2.0/go.mod h1:Azh8c3XGEJl9LyX0/sFC+CKMc7Ssgua0g+6abzXN4Pg= +github.com/bombsimon/wsl/v3 v3.0.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= +github.com/bombsimon/wsl/v3 v3.1.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= +github.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= +github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/breml/bidichk v0.2.3/go.mod h1:8u2C6DnAy0g2cEq+k/A2+tr9O1s+vHGxWn0LTc70T2A= +github.com/breml/errchkjson v0.3.0/go.mod h1:9Cogkyv9gcT8HREpzi3TiqBxCqDzo8awa92zSDFcofU= +github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= -github.com/btcsuite/btcd v0.22.0-beta h1:LTDpDKUM5EeOFBPM8IXpinEcmZ6FWfNZbE3lfrfdnWo= github.com/btcsuite/btcd v0.22.0-beta/go.mod h1:9n5ntfhhHQBIhUvlhDvD3Qg6fRUj4jkN0VB8L8svzOA= +github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= +github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= @@ -83,43 +458,212 @@ github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/bufbuild/buf v1.9.0/go.mod h1:1Q+rMHiMVcfgScEF/GOldxmu4o9TrQ2sQQh58K6MscE= +github.com/bufbuild/connect-go v1.0.0/go.mod h1:9iNvh/NOsfhNBUH5CtvXeVUskQO1xsrEviH7ZArwZ3I= +github.com/bufbuild/protocompile v0.1.0/go.mod h1:ix/MMMdsT3fzxfw91dvbfzKW3fRRnuPCP47kpAm5m/4= +github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= +github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= +github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= +github.com/butuzov/ireturn v0.1.1/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= +github.com/caarlos0/ctrlc v1.0.0/go.mod h1:CdXpj4rmq0q/1Eb44M9zi2nKB0QraNKuRGYGrrHhcQw= +github.com/campoy/unique v0.0.0-20180121183637-88950e537e7e/go.mod h1:9IOqJGCPMSc6E5ydlp5NIonxObaeu/Iub/X03EKPVYo= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= +github.com/cavaliercoder/go-cpio v0.0.0-20180626203310-925f9528c45e/go.mod h1:oDpT4efm8tSYHXV5tHSdRvBet/b/QzxZ+XyyPehvm3A= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/charithe/durationcheck v0.0.9/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg= +github.com/chavacava/garif v0.0.0-20220630083739-93517212f375/go.mod h1:4m1Rv7xfuwWPNKXlThldNuJvutYM6J95wNuuVmn55To= +github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= +github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= +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= +github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= +github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= +github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= +github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= +github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= +github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= +github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= +github.com/codahale/hdrhistogram v0.0.0-20160425231609-f8ad88b59a58/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/confio/ics23/go v0.6.6 h1:pkOy18YxxJ/r0XFDCnrl4Bjv6h4LkBSpLS6F38mrKL8= github.com/confio/ics23/go v0.6.6/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= +github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= +github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= +github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= +github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= +github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= +github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= +github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= +github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= +github.com/containerd/cgroups v1.0.3/go.mod h1:/ofk34relqNjSGyqPrmEULrO4Sc8LJhvJmWbUCUKqj8= +github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= +github.com/containerd/console v1.0.0/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= +github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= -github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6 h1:NmTXa/uVnDyp0TY5MKi197+3HWcnYWfnHGyaFthlnGw= +github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= +github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.1-0.20201117152358-0edc412565dc/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.9/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= +github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= +github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= +github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= +github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= +github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= +github.com/containerd/containerd v1.5.8/go.mod h1:YdFSv5bTFLpG2HIYmfqDpSYYTDX+mc5qtSuYx1YUb/s= +github.com/containerd/containerd v1.6.1/go.mod h1:1nJz5xCZPusx6jJU8Frfct988y0NpumIq9ODB0kLtoE= +github.com/containerd/containerd v1.6.3-0.20220401172941-5ff8fce1fcc6/go.mod h1:WSt2SnDLAGWlu+Vl+EWay37seZLKqgRt6XLjIMy8SYM= +github.com/containerd/containerd v1.6.8/go.mod h1:By6p5KqPK0/7/CgO/A6t/Gz+CUYUu2zf1hUaaymVXB0= +github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= +github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= +github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= +github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= +github.com/containerd/continuity v0.2.2/go.mod h1:pWygW9u7LtS1o4N/Tn0FoCFDIXZ7rxcMX7HX1Dmibvk= +github.com/containerd/continuity v0.2.3-0.20220330195504-d132b287edc8/go.mod h1:pWygW9u7LtS1o4N/Tn0FoCFDIXZ7rxcMX7HX1Dmibvk= +github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= +github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= +github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/fuse-overlayfs-snapshotter v1.0.2/go.mod h1:nRZceC8a7dRm3Ao6cJAwuJWPFiBPaibHiFntRUnzhwU= +github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= +github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= +github.com/containerd/go-cni v1.1.0/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= +github.com/containerd/go-cni v1.1.3/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= +github.com/containerd/go-cni v1.1.4/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= +github.com/containerd/go-cni v1.1.6/go.mod h1:BWtoWl5ghVymxu6MBjg79W9NZrCRyHIdUtk4cauMe34= +github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= +github.com/containerd/go-runc v0.0.0-20201020171139-16b287bc67d0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= +github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= +github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= +github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= +github.com/containerd/imgcrypt v1.1.3/go.mod h1:/TPA1GIDXMzbj01yd8pIbQiLdQxed5ue1wb8bP7PQu4= +github.com/containerd/imgcrypt v1.1.4/go.mod h1:LorQnPtzL/T0IyCeftcsMEO7AqxUDbdO8j/tSUpgxvo= +github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= +github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/stargz-snapshotter v0.0.0-20201027054423-3a04e4c2c116/go.mod h1:o59b3PCKVAf9jjiKtCc/9hLAd+5p/rfhBfm6aBcTEr4= +github.com/containerd/stargz-snapshotter v0.11.3/go.mod h1:2j2EAUyvrLU4D9unYlTIwGhDKQIk74KJ9E71lJsQCVM= +github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= +github.com/containerd/stargz-snapshotter/estargz v0.11.3/go.mod h1:7vRJIcImfY8bpifnMjt+HTJoQxASq7T28MYbP15/Nf0= +github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= +github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= +github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= +github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= +github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= +github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= +github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v0.0.0-20210324211415-d5c4544f0433/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v1.0.1/go.mod h1:AKuhXbN5EzmD4yTNtfSsX3tPcmtrBI6QcRV0NiNt15Y= +github.com/containernetworking/cni v1.1.1/go.mod h1:sDpYKmGVENF3s6uvMvGgldDWeG8dMxakj/u+i9ht9vw= +github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= +github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= +github.com/containernetworking/plugins v1.0.1/go.mod h1:QHCfGpaTwYTbbH+nZXKVTxNBDZcxSOplJT5ico8/FLE= +github.com/containernetworking/plugins v1.1.1/go.mod h1:Sr5TH/eBsGLXK/h71HeLfX19sZPp3ry5uHSkI4LPxV8= +github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= +github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= +github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= +github.com/containers/ocicrypt v1.1.2/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= +github.com/containers/ocicrypt v1.1.3/go.mod h1:xpdkbVAuaH3WzbEabUd5yDsl9SwJA5pABH85425Es2g= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-iptables v0.6.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q= +github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190620071333-e64a0ec8b42a/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= 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/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.4 h1:n7C2ngKXo7UC9gNyMNLbzqz7Asuf+7Qv4gnX/rOdQ44= github.com/cosmos/btcutil v1.0.4/go.mod h1:Ffqc8Hn6TJUdDgHBwIZLtrLQC1KdJ9jGJl/TvgUaxbU= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= +github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= +github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= +github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= github.com/cosmos/iavl v0.17.3 h1:s2N819a2olOmiauVa0WAhoIJq9EhSXE9HDBAoR9k+8Y= github.com/cosmos/iavl v0.17.3/go.mod h1:prJoErZFABYZGDHka1R6Oay4z9PrNeFFiMKHDAMOi4w= github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 h1:DdzS1m6o/pCqeZ8VOAit/gyATedRgjvkVI+UCrLpyuU= @@ -131,29 +675,88 @@ github.com/cosmos/ledger-go v0.9.2/go.mod h1:oZJ2hHAZROdlHiwTg4t7kP+GKIIkBT+o6c9 github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= 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/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= +github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cristalhq/acmd v0.8.1/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ= +github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU= +github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= +github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= +github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= +github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= +github.com/daixiang0/gci v0.8.1/go.mod h1:EpVfrztufwVgQRXjnX4zuNinEpLj5OmMjtu/+MB0V0c= github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= +github.com/danieljoos/wincred v1.1.0 h1:3RNcEpBg4IhIChZdFRSdlQt1QjCp1sMAPIrOnm7Yf8g= +github.com/danieljoos/wincred v1.1.0/go.mod h1:XYlo+eRTsVA9aHGp7NGjFkPla4m+DCL7hqDjlFjiygg= +github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= +github.com/denis-tingaikin/go-header v0.4.3/go.mod h1:0wOCWuN71D5qIgE2nz9KrKmuYBAC2Mra5RassOIQ2/c= +github.com/denisenkom/go-mssqldb v0.12.0/go.mod h1:iiK0YP1ZeepvmBQk/QpLEhhTNJgfzrpArPY/aFvc9yU= +github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= +github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= github.com/dgraph-io/badger/v2 v2.2007.2 h1:EjjK0KqwaFMlPin1ajhP943VPENHJdEz1KLIegjaI3k= github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.0.3 h1:jh22xisGBjrEVnRZ1DVTpBVQm0Xndu8sMl0CWDzSIBI= github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= +github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= +github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/docker/cli v0.0.0-20190925022749-754388324470/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v20.10.0-beta1.0.20201029214301-1d20b15adc38+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v20.10.13+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v20.10.14+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v20.10.17+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= +github.com/docker/distribution v2.6.0-rc.1.0.20180327202408-83389a148052+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v0.0.0-20200511152416-a93e9eb0e95c/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v1.4.2-0.20180531152204-71cd53e4a197/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v17.12.0-ce-rc1.0.20200730172259-9f28837c1d93+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.0-beta1.0.20201110211921-af34b94a78a1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.3-0.20211208011758-87521affb077+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.17+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.19+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= +github.com/docker/docker-credential-helpers v0.6.4/go.mod h1:ofX3UI0Gz1TteYBjtgs07O36Pyasyp66D2uKT7H8W1c= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= +github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= +github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= +github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/libnetwork v0.8.0-dev.2.0.20200917202933-d0951081b35f/go.mod h1:93m0aTqz6z+g32wla4l4WxTrdtvBRmVzYRkYvasA5Z8= +github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= @@ -163,56 +766,199 @@ github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= +github.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51 h1:0JZ+dUmQeA8IIVUMzysrX4/AKuQwWhV2dYQuPZdvdSQ= +github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= +github.com/esimonov/ifshort v1.0.4/go.mod h1:Pe8zjlRrJ80+q2CxHLfEOfTwxCZ4O+MuhcHcfgNWTk0= +github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= +github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= -github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 h1:E2s37DuLxFhQDg5gKsWoLBOB0n+ZW8s599zru8FJ2/Y= github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= +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.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= +github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goblin v0.0.0-20210519012713-85d372ac71e2/go.mod h1:VzmDKDJVZI3aJmnRI9VjAn9nJ8qPPsN1fqzr9dqInIo= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= +github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= +github.com/fullstorydev/grpcurl v1.6.0/go.mod h1:ZQ+ayqbKMJNhzLmbpCiurTVlaK2M/3nqZCxaQ2Ze/sM= +github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= +github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= +github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= +github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-critic/go-critic v0.4.1/go.mod h1:7/14rZGnZbY6E38VEGk2kVhoq6itzc1E68facVDK23g= +github.com/go-critic/go-critic v0.4.3/go.mod h1:j4O3D4RoIwRqlZw5jJpx0BNfXWWbpcJoKu5cYSe4YmQ= +github.com/go-critic/go-critic v0.6.5/go.mod h1:ezfP/Lh7MA6dBNn4c6ab5ALv3sKnZVLx37tr00uuaOY= +github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= +github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= +github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= 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-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= 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/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= +github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= +github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= +github.com/go-lintpack/lintpack v0.5.2/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM= 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 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= +github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-redis/redis v6.15.8+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= +github.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ= +github.com/go-toolsmith/astcopy v1.0.2/go.mod h1:4TcEdbElGc9twQEYpVo/aieIXfHhiuLh4aLAck6dO7Y= +github.com/go-toolsmith/astequal v0.0.0-20180903214952-dcb477bfacd6/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= +github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= +github.com/go-toolsmith/astequal v1.0.2/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= +github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= +github.com/go-toolsmith/astfmt v0.0.0-20180903215011-8f8ee99c3086/go.mod h1:mP93XdblcopXwlyN4X4uodxXQhldPGZbcEJIimQHrkg= +github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw= +github.com/go-toolsmith/astinfo v0.0.0-20180906194353-9809ff7efb21/go.mod h1:dDStQCHtmZpYOmjRP/8gHHnCCch3Zz3oEgCdZVdtweU= +github.com/go-toolsmith/astp v0.0.0-20180903215135-0af7e3c24f30/go.mod h1:SV2ur98SGypH1UjcPpCatrV5hPazG6+IfNHbkDXBRrk= +github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI= +github.com/go-toolsmith/pkgload v0.0.0-20181119091011-e9e65178eee8/go.mod h1:WoMrjiy4zvdS+Bg6z9jZH82QXwkcgCBX6nOfnmdaHks= +github.com/go-toolsmith/pkgload v1.0.0/go.mod h1:5eFArkbO80v7Z0kdngIxsRXRMTaX4Ilcwuh3clNrQJc= +github.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5/go.mod h1:3NAwwmD4uY/yggRxoEjk/S00MIV3A+H7rrE3i87eYxM= +github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= +github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= +github.com/go-toolsmith/typep v1.0.2/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= +github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= +github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +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/gofrs/flock v0.0.0-20190320160742-5135e617513b/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/flock v0.7.3/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/uuid v4.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= +github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= +github.com/gogo/googleapis v1.3.2/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= +github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= +github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= +github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang-sql/sqlexp v0.0.0-20170517235910-f1bb20e5a188/go.mod h1:vXjM/+wXQnTPR4KqTKDgJukSZ6amVRtWMPEjE6sQoK8= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= @@ -223,60 +969,188 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3 h1:ur2rms48b3Ep1dxh7aUV2FZEQ8jEVO2F6ILKx8ofkAg= -github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= +github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6/go.mod h1:DbHgvLiFKX1Sh2T1w8Q/h4NAI8MHIpzCdnBUDTXU3I0= +github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8= +github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= +github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3/go.mod h1:JXrF4TWy4tXYn62/9x8Wm/K/dm06p8tCKwFRDPZG/1o= +github.com/golangci/gocyclo v0.0.0-20180528134321-2becd97e67ee/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU= +github.com/golangci/gocyclo v0.0.0-20180528144436-0a533e8fa43d/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU= +github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= +github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2/go.mod h1:9wOXstvyDRshQ9LggQuzBCGysxs3b6Uo/1MvYCR2NMs= +github.com/golangci/golangci-lint v1.23.7/go.mod h1:g/38bxfhp4rI7zeWSxcdIeHTQGS58TCak8FYcyCmavQ= +github.com/golangci/golangci-lint v1.27.0/go.mod h1:+eZALfxIuthdrHPtfM7w/R3POJLjHDfJJw8XZl9xOng= +github.com/golangci/golangci-lint v1.50.1/go.mod h1:AQjHBopYS//oB8xs0y0M/dtxdKHkdhl0RvmjUct0/4w= +github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc/go.mod h1:e5tpTHCfVze+7EpLEozzMB3eafxo2KT5veNg1k6byQU= +github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= +github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= +github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= +github.com/golangci/misspell v0.3.5/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= +github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21/go.mod h1:tf5+bzsHdTM0bsB7+8mt0GUMvjCgwLpTapNZHU8AajI= +github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4= +github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4= +github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6/go.mod h1:0AKcRCkMoKvUvlf89F6O7H2LYdhr1zBh736mBItOdRs= +github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= +github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= +github.com/google/certificate-transparency-go v1.1.1/go.mod h1:FDKqPvSXawb2ecErVRrD+nfy23RCzyl7eqVCEmlT1Zs= +github.com/google/crfs v0.0.0-20191108021818-71d77da419c9/go.mod h1:etGhoOqfwPkooV6aqoX3eBGQOJblqdoc9XvWOeuxpPw= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +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 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +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.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-containerregistry v0.0.0-20191010200024-a3d713f9b7f8/go.mod h1:KyKXa9ciM8+lgMXwOVsXi7UxGrsf9mM61Mzs+xKUrKE= +github.com/google/go-containerregistry v0.1.2/go.mod h1:GPivBPgdAyd2SU+vf6EpsgOtWDuPqjW0hJZt4rNdTZ4= +github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-github/v28 v28.1.1/go.mod h1:bsqJWQX05omyWVmc00nEUql9mhQyv38lDZ8kPZcQVoM= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/go-replayers/grpcreplay v0.1.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= +github.com/google/go-replayers/httpreplay v0.1.0/go.mod h1:YKZViNhiGgqdBlUbI2MwGpq4pXxNmhJLPHQ7cv2b5no= +github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa h1:Q75Upo5UN4JbPFURXZ8nLKYUvF85dyFRop/vQ0Rv+64= -github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200507031123-427632fa3b1c/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/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-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/rpmpack v0.0.0-20191226140753-aa36bfddb3a0/go.mod h1:RaTPr0KUf2K7fnZYLNDrr8rxAamWs3iNywJLtQ2AzBg= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= +github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/trillian v1.3.11/go.mod h1:0tPraVHrSDkA3BO6vKX67zgLXs6SsOAbHEivX+9mPgw= +github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +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= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/wire v0.3.0/go.mod h1:i1DMg/Lu8Sz5yYl25iOdmc5CT5qusaa+zmRWs16741s= +github.com/google/wire v0.4.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.2.2/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= +github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gookit/color v1.2.4/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg= +github.com/gookit/color v1.5.1/go.mod h1:wZFzea4X8qN6vHOSP2apMb4/+w/orMznEzYsIHPaqKM= +github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= +github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= +github.com/goreleaser/goreleaser v0.136.0/go.mod h1:wiKrPUeSNh6Wu8nUHxZydSOVQ/OZvOaO7DTtFqie904= +github.com/goreleaser/nfpm v1.2.1/go.mod h1:TtWrABZozuLOttX2uDlYyECfQX7x5XYkVxhjYcR6G9w= +github.com/goreleaser/nfpm v1.3.0/go.mod h1:w0p7Kc9TAUgWMyrub63ex3M2Mgw88M4GZXoTq5UCb40= +github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75/go.mod h1:g2644b03hfBX9Ov0ZBDgXXens4rxSxmqFBbhvKv2yVA= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= +github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= +github.com/gostaticanalysis/analysisutil v0.1.0/go.mod h1:dMhHRU9KTiDcuLGdy87/2gTR8WruwYZrKdRq9m1O6uw= +github.com/gostaticanalysis/analysisutil v0.4.1/go.mod h1:18U/DLpRgIUd459wGxVHE0fRgmo1UgHDcbw7F5idXu0= +github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= +github.com/gostaticanalysis/comment v1.3.0/go.mod h1:xMicKDx7XRXYdVwY9f9wQpDJVnqWxw9wCauCMKp+IBI= +github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= +github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= +github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak= +github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= +github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= +github.com/gostaticanalysis/testutil v0.4.0/go.mod h1:bLIoPefWXrRi/ssLFWX1dx7Repi5x3CuviD3dgAZaBU= github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/grpc-ecosystem/grpc-gateway v1.6.2/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.2/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.12.1/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= @@ -284,200 +1158,563 @@ github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= +github.com/hanwen/go-fuse v1.0.0/go.mod h1:unqXarDXqzAk0rt98O2tVndEPIpUgLD9+rwFisZH3Ok= +github.com/hanwen/go-fuse/v2 v2.0.3/go.mod h1:0EQM6aH2ctVpvZ6a+onrQ/vaykxh2GH7hy3e13vzTUY= +github.com/hanwen/go-fuse/v2 v2.1.1-0.20220112183258-f57e95bda82d/go.mod h1:B1nGE/6RBFyBRC1RRnf23UpwCdyJ31eukw34oAKukAc= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= +github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= +github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= +github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.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-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= 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-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-retryablehttp v0.6.4/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= +github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= +github.com/hashicorp/go-retryablehttp v0.7.0/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +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-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= 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.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= +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.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +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.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= +github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= +github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= +github.com/hashicorp/uuid v0.0.0-20160311170451-ebb0a03e909c/go.mod h1:fHzc09UnyJyqyW+bFuq864eh+wC7dj65aXmXLRe5to0= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= +github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +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/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= +github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/informalsystems/tm-load-test v1.0.0/go.mod h1:WVaSKaQdfZK3v0C74EMzn7//+3aeCZF8wkIKBz2/M74= +github.com/intel/goresctrl v0.2.0/go.mod h1:+CZdzouYFn5EsxgqAQTEzMfwKwuc0fVdMrT9FCCAVRQ= +github.com/ishidawataru/sctp v0.0.0-20191218070446-00ab2ac2db07/go.mod h1:co9pwDoBCm1kGxawmb4sPq0cSIOOWNPT4KnHotMP1Zg= +github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= +github.com/j-keck/arping v1.0.2/go.mod h1:aJbELhR92bSk7tp79AWM/ftfc90EfEi2bQJrbBFOsPw= +github.com/jaguilar/vt100 v0.0.0-20150826170717-2703a27b14ea/go.mod h1:QMdK4dGB3YhEW2BmA1wgGpPYI3HZy/5gD705PXKUVSg= +github.com/jarcoal/httpmock v1.0.5/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= +github.com/jdxcode/netrc v0.0.0-20210204082910-926c7f70242a/go.mod h1:Zi/ZFkEqFHTm7qkjyNJjaWH4LQA9LQhGJyF0lTYGpxw= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jgautheron/goconst v1.5.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= +github.com/jhump/gopoet v0.0.0-20190322174617-17282ff210b3/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI= +github.com/jhump/gopoet v0.1.0/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI= +github.com/jhump/goprotoc v0.5.0/go.mod h1:VrbvcYrQOrTi3i0Vf+m+oqQWk9l72mjkJCYo7UvLHRQ= +github.com/jhump/protoreflect v1.6.1/go.mod h1:RZQ/lnuN+zqeRVpQigTwO6o0AJUkxbnSnpuG7toUTG4= +github.com/jhump/protoreflect v1.11.0/go.mod h1:U7aMIjN0NWq9swDP7xDdoMfRHb35uiuTd3Z9nFXJf5E= +github.com/jhump/protoreflect v1.13.1-0.20220928232736-101791cb1b4c/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI= +github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a/go.mod h1:xRskid8CManxVta/ALEhJha/pweKBaVG6fWgc0yH25s= +github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= +github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= +github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= +github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= +github.com/jmoiron/sqlx v1.2.1-0.20190826204134-d7d95172beb5/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= +github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= +github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jonboulle/clockwork v0.2.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/josharian/txtarfs v0.0.0-20210218200122-0702f000015a/go.mod h1:izVPOvVRsHiKkeGCT6tYBNWyDVuzj9wAaBb5R9qamfw= +github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= 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/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= 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/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= +github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/errcheck v1.6.2/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kkHAIKE/contextcheck v1.1.3/go.mod h1:PG/cwd6c0705/LM0KTr1acO2gORUxkSVWyLJOFW5qoo= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= 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.2/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/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= +github.com/kunwardeep/paralleltest v1.0.6/go.mod h1:Y0Y0XISdZM5IKm3TREQMZ6iteqn1YuwCsJO/0kL9Zes= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg= +github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0= +github.com/ldez/tagliatelle v0.3.1/go.mod h1:8s6WJQwEYHbKZDsp/LjArytKOG8qaMrKQQ3mFukHs88= +github.com/leonklingele/grouper v1.1.0/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY= +github.com/letsencrypt/pkcs11key/v4 v4.0.0/go.mod h1:EFUvBDay26dErnNb70Nd0/VW3tJiIbETBPTl9ATXQag= +github.com/lib/pq v0.0.0-20180327071824-d34b9ff171c2/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/libp2p/go-buffer-pool v0.0.2 h1:QNK2iAFa8gjAe1SPz6mHSMuCcjs+X1wlHzeOSqcmlfs= +github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= +github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= +github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= +github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= +github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= +github.com/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpApTE5fXSKAqwDU= +github.com/maratori/testpackage v1.1.0/go.mod h1:PeAhzU8qkCwdGEMTEupsHJNlQu2gZopMC6RjbhmHeDc= +github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= +github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= +github.com/matoous/godox v0.0.0-20210227103229-6504466cf951/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= +github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +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-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +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/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-shellwords v1.0.10/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= +github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= +github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-sqlite3 v1.14.9/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= +github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= +github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= +github.com/mgechev/dots v0.0.0-20210922191527-e955255bf517/go.mod h1:KQ7+USdGKfpPjXk4Ga+5XxQM4Lm4e3gAogrreFAYpOg= +github.com/mgechev/revive v1.2.4/go.mod h1:iAWlQishqCuj4yhV24FTnKSXGpbAA+0SckXB8GQMX/Q= +github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643 h1:hLDRPB66XQT/8+wG9WsDpiCvZf1yKO7sz7scAjSlBa0= +github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= +github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/minio/highwayhash v1.0.1 h1:dZ6IIu8Z14VlC0VpfKofAhCy74wu/Qb5gcn52yWoz/0= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= +github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= 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/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b/go.mod h1:r1VsdOzOPt1ZSrGZWFoNhsAedKnEd6r9Np1+5blZCWk= +github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= +github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8= -github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.3.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/buildkit v0.8.1/go.mod h1:/kyU1hKy/aYCuP39GZA9MaKioovHku57N6cqlKZIaiQ= +github.com/moby/buildkit v0.10.4/go.mod h1:Yajz9vt1Zw5q9Pp4pdb3TCSUXJBIroIQGQ3TTs/sLug= +github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/moby/sys/mount v0.1.0/go.mod h1:FVQFLDRWwyBjDTBNQXDlWnSFREqOo3OKX9aqhmeoo74= +github.com/moby/sys/mount v0.1.1/go.mod h1:FVQFLDRWwyBjDTBNQXDlWnSFREqOo3OKX9aqhmeoo74= +github.com/moby/sys/mount v0.3.0/go.mod h1:U2Z3ur2rXPFrFmy4q6WMwWrBOAQGYtYTRVM8BIvzbwk= +github.com/moby/sys/mountinfo v0.1.0/go.mod h1:w2t2Avltqx8vE7gX5l+QiBKxODu2TX0+Syr3h52Tw4o= +github.com/moby/sys/mountinfo v0.1.3/go.mod h1:w2t2Avltqx8vE7gX5l+QiBKxODu2TX0+Syr3h52Tw4o= +github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= +github.com/moby/sys/mountinfo v0.6.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= +github.com/moby/sys/signal v0.6.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= +github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= +github.com/moby/sys/symlink v0.2.0/go.mod h1:7uZVF2dqJjG/NsClqul95CqKOBRQyYSNnJ6BMgR/gFs= +github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= +github.com/moby/term v0.0.0-20200915141129-7f0af18e79f2/go.mod h1:TjQg8pa4iejrUrjiz0MCtMV38jdMNW4doKSiBrEvCQQ= +github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= +github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= +github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= +github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= 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-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= 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/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/mozilla/scribe v0.0.0-20180711195314-fb71baf557c1/go.mod h1:FIczTrinKo8VaLxe6PWTPEXRXDIHz2QAwiaBaP5/4a8= +github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= +github.com/mozilla/tls-observatory v0.0.0-20200317151703-4fa42e1c2dee/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= +github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s= +github.com/mrunalp/fileutils v0.0.0-20200520151820-abd8a0e76976/go.mod h1:x8F1gnqOkIEiO4rqoeEEEqQbo7HjGMTvyoq3gej4iT0= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= 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/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007/go.mod h1:m2XC9Qq0AlmmVksL6FktJCdTYyLk7V3fKyp0sl1yWQo= +github.com/mwitkow/go-proto-validators v0.2.0/go.mod h1:ZfA1hW+UH/2ZHOWvQ3HnQaU0DtnpXu850MZiy+YUgcc= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/nakabonne/nestif v0.3.0/go.mod h1:dI314BppzXjJ4HsCnbo7XzrJHPszZsjnk5wEBSYHI2c= +github.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q= +github.com/nats-io/jwt/v2 v2.0.3/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats-server/v2 v2.5.0/go.mod h1:Kj86UtrXAL6LwYRA6H4RqzkHhK0Vcv2ZnKD5WbQ1t3g= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nats.go v1.12.1/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.2.0/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= +github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= +github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354/go.mod h1:KSVJerMDfblTH7p5MZaTt+8zaT2iEk3AkVb9PQdZuE8= +github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= +github.com/networkplumbing/go-nft v0.2.0/go.mod h1:HnnM+tYvlGAsMU7yoYwXEVLLiDW9gdMmb5HoGcwpuQs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/nishanths/exhaustive v0.8.3/go.mod h1:qj+zJJUgJ76tR92+25+03oYUhzF4R7/2Wk7fGTfCHmg= +github.com/nishanths/predeclared v0.0.0-20190419143655-18a43bb90ffc/go.mod h1:62PewwiQTlm/7Rj+cxVYqZvDIUc+JjZq6GHAC1fsObQ= +github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/oklog/ulid/v2 v2.1.0/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.2/go.mod h1:rSAaSIOAGT9odnlyGlUfAJaoc5w2fSBUmeGDbRWPxyQ= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= +github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= +github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= +github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= +github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= +github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= +github.com/onsi/gomega v1.20.0/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ= +github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= +github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.2-0.20211117181255-693428a734f5/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= +github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.2 h1:opHZMaswlyxz1OuGpBE53Dwe4/xF7EZTY0A2L/FpCOg= +github.com/opencontainers/runc v1.0.0-rc10/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc92/go.mod h1:X1zlU4p7wOlX4+WRCz+hvlRv8phdL7UqbYD+vQwNMmE= +github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= +github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= +github.com/opencontainers/runc v1.1.1/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= +github.com/opencontainers/runc v1.1.2/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= +github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= +github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.3-0.20200728170252-4d89ac9fbff6/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= +github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= +github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= +github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= +github.com/opencontainers/selinux v1.10.1/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing-contrib/go-stdlib v1.0.0/go.mod h1:qtI1ogk+2JhVPIXVc6q+NHziSmy2W5GbdQZFUHADCBU= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/openzipkin/zipkin-go v0.1.3/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE= github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= +github.com/ory/dockertest/v3 v3.9.1/go.mod h1:42Ir9hmvaAPm0Mgibk6mBPi7SFvTXxEcnztDYOJ//uM= +github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E= github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.8.1 h1:1Nf83orprkJyknT6h7zbuEGUEjcyVlCxSUGTENmNCRM= +github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs= github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml v1.9.4/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/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= +github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI= +github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= +github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw= +github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= +github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/profile v1.5.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18= +github.com/pkg/profile v1.6.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 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/polyfloyd/go-errorlint v1.0.5/go.mod h1:APVvOesVSAnne5SClsPxPdfvZTVDojXh1/G3qb5wjGI= 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/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.8.0/go.mod h1:O9VU6huf47PktckDQfMTX0Y8tY0/7TSWwj+ITvv0TnM= -github.com/prometheus/client_golang v1.10.0 h1:/o0BDeWzLWXNZ+4q5gXltUvaMpJqckTa+jTNoB+z4cg= -github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34= +github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -485,111 +1722,243 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.23.0 h1:GXWvPYuTUenIa+BhOq/x+L/QZzCqASkVRny5KTlPDGM= -github.com/prometheus/common v0.23.0/go.mod h1:H6QK/N6XVT42whUeIdI3dp36w49c+/iMDk7UAI2qm7Q= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= +github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/pseudomuto/protoc-gen-doc v1.3.2/go.mod h1:y5+P6n3iGrbKG+9O04V5ld71in3v/bX88wUwgt+U8EA= +github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q= +github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI= +github.com/quasilyte/go-ruleguard v0.1.2-0.20200318202121-b00d7a75d3d8/go.mod h1:CGFX09Ci3pq9QZdj86B+VGIdNj4VyCo2iPOGS9esB/k= +github.com/quasilyte/go-ruleguard v0.3.1-0.20210203134552-1b5a410e1cc8/go.mod h1:KsAh3x0e7Fkpgs+Q9pNLS5XpFSvYCEVl5gP9Pp1xp30= +github.com/quasilyte/go-ruleguard v0.3.18/go.mod h1:lOIzcYlgxrQ2sGJ735EHXmf/e9MJ516j16K/Ifcttvs= +github.com/quasilyte/go-ruleguard/dsl v0.3.0/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= +github.com/quasilyte/go-ruleguard/dsl v0.3.21/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= +github.com/quasilyte/go-ruleguard/rules v0.0.0-20201231183845-9e62ed36efe1/go.mod h1:7JTjp89EGyU1d6XfBiXihJNG37wB2VRkd125Q1u7Plc= +github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= +github.com/quasilyte/gogrep v0.0.0-20220828223005-86e4605de09f/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= +github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= +github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 h1:MkV+77GLUNo5oJ0jf870itWm3D0Sjh7+Za9gazKc5LQ= github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= +github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= +github.com/remyoudompheng/go-dbus v0.0.0-20121104212943-b7232d34b1d5/go.mod h1:+u151txRmLpwxBmpYn9z3d1sdJdjRPQpsXuYeY9jNls= +github.com/remyoudompheng/go-liblzma v0.0.0-20190506200333-81bf2d431b96/go.mod h1:90HvCY7+oHHUKkbeMCiHt1WuFR2/hPJ9QrljDG+v6ls= +github.com/remyoudompheng/go-misc v0.0.0-20190427085024-2d6ac652a50e/go.mod h1:80FQABjoFzZ2M5uEa6FUaJYEmqU2UOKojlFVak1UAwI= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= 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/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= +github.com/rogpeppe/go-internal v1.5.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= +github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/zerolog v1.21.0 h1:Q3vdXlfLNT+OftyBHsU0Y445MD+8m8axjKgf2si0QcM= -github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM= +github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.27.0 h1:1T7qCieN22GVc8S4Q2yuexzBb1EqjbgjSH9RohbMjKs= +github.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U= +github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= +github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= +github.com/ryancurrah/gomodguard v1.0.4/go.mod h1:9T/Cfuxs5StfsocWr4WzDL36HqnX0fVb9d5fSEaLhoE= +github.com/ryancurrah/gomodguard v1.1.0/go.mod h1:4O8tr7hBODaGE6VIhfJDHcwzh5GUccKSJBU0UMXJFVM= +github.com/ryancurrah/gomodguard v1.2.4/go.mod h1:+Kem4VjWwvFpUJRJSwa16s1tBJe+vbv02+naTow2f6M= +github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= +github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= +github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= +github.com/sagikazarmark/crypt v0.6.0/go.mod h1:U8+INwJo3nBv1m6A/8OBXAq7Jnpspk5AxSgDyEQcea8= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa h1:0U2s5loxrTy6/VgfVoLuVLFJcURKLH49ie0zSch7gh4= +github.com/sanposhiho/wastedassign/v2 v2.0.6/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= +github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= +github.com/sashamelentyev/usestdlibvars v1.20.0/go.mod h1:0GaP+ecfZMXShS0A94CJn6aEuPRILv8h/VuWI9n1ygg= +github.com/sassoftware/go-rpmutils v0.0.0-20190420191620-a8f1baeba37b/go.mod h1:am+Fp8Bt506lA3Rk3QCmSqmYmLMnPDhdDUcosQCAx+I= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= +github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= +github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= +github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= +github.com/securego/gosec v0.0.0-20200103095621-79fbf3af8d83/go.mod h1:vvbZ2Ae7AzSq3/kywjUDxSNq2SJ27RxCz2un0H3ePqE= +github.com/securego/gosec v0.0.0-20200401082031-e946c8c39989/go.mod h1:i9l/TNj+yDFh9SZXUTvspXTjbFXgZGP/UvhU1S65A4A= +github.com/securego/gosec/v2 v2.3.0/go.mod h1:UzeVyUXbxukhLeHKV3VVqo7HdoQR9MrRfFmZYotn8ME= +github.com/securego/gosec/v2 v2.13.1/go.mod h1:EO1sImBMBWFjOTFzMWfTRrZW6M15gm60ljzrmy/wtHo= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/serialx/hashring v0.0.0-20190422032157-8b2912629002/go.mod h1:/yeG0My1xr/u+HZrFQ1tOQQQQrOawfyMUH13ai5brBc= +github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= +github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lzhCH5h/3YBfyVA3VbLYjlMZZAQcW9ojMexNc= +github.com/shirou/gopsutil/v3 v3.22.9/go.mod h1:bBYl1kjgEJpWpxeHmLI+dVHWtyAwfcmSBLDsp2TNT8A= +github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= 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.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sivchari/containedctx v1.0.2/go.mod h1:PwZOeqm4/DLoJOqMSIJs3aKqXRX4YO+uXww087KZ7Bw= +github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY= +github.com/sivchari/tenv v1.7.0/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= +github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= +github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/gunit v1.0.0/go.mod h1:qwPWnhz6pn0NnRBP++URONOVyNkPyr4SauJk4cUOwJs= github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPHbB5mVY2iO9KV3pTt/QbIkGaO8gQ2WrDbP4= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +github.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/sourcegraph/go-diff v0.5.1/go.mod h1:j2dHj3m8aZgQO8lMTcTnBcXkRRRqi34cd2MNlA9u1mE= +github.com/sourcegraph/go-diff v0.5.3/go.mod h1:v9JDtjCE4HHHCZGId75rg8gkKKa98RVjBcBGsVmMmak= +github.com/sourcegraph/go-diff v0.6.1/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.3.4 h1:8q6vk3hthlpb2SouZcnBVKboxWQWMDNF38bwholZrJc= -github.com/spf13/afero v1.3.4/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo= +github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= +github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= -github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= +github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= +github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= +github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= +github.com/spf13/cobra v1.6.0 h1:42a0n6jwCot1pUmomAp4T7DeMD+20LFv4Q54pxLf2LI= +github.com/spf13/cobra v1.6.0/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= 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.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= +github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= +github.com/spf13/viper v1.13.0 h1:BWSJ/M+f+3nmdz9bxB+bWX28kkALN2ok11D0rSo8EJU= +github.com/spf13/viper v1.13.0/go.mod h1:Icm2xNL3/8uyh/wFuB1jI7TiTNKp8632Nwegu+zgdYw= +github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= +github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I= +github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/streadway/handy v0.0.0-20200128134331-0f66f006fb2e/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 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.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= 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= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/subosito/gotenv v1.3.0/go.mod h1:YzJjq/33h7nrwdY+iHMhEOEEbW0ovIz0tB6t6PwAXzs= +github.com/subosito/gotenv v1.4.0/go.mod h1:mZd6rFysKEcUhUHXJk0C/08wAgyDBFuwEYL7vWWGaGo= +github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= +github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca h1:Ld/zXl5t4+D69SiV4JoN7kkfvJdOWlPpfxrzxpLMoUk= github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= +github.com/tdakkota/asciicheck v0.0.0-20200416190851-d7f85be797a2/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= +github.com/tdakkota/asciicheck v0.0.0-20200416200610-e657995f937b/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= +github.com/tdakkota/asciicheck v0.1.1/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/btcd v0.1.1 h1:0VcxPfflS2zZ3RiOAHkBiFUcPvbtRj5O7zHmcJWHV7s= github.com/tendermint/btcd v0.1.1/go.mod h1:DC6/m53jtQzr/NFmMNEu0rxf18/ktVoVtMrnDD5pN+U= @@ -597,84 +1966,340 @@ github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 h1:hqAk8riJvK4RM github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tendermint v0.34.14 h1:GCXmlS8Bqd2Ix3TQCpwYLUNHe+Y+QyJsm5YE+S/FkPo= github.com/tendermint/tendermint v0.34.14/go.mod h1:FrwVm3TvsVicI9Z7FlucHV6Znfd5KBc/Lpp69cCwtk0= -github.com/tendermint/tm-db v0.6.4 h1:3N2jlnYQkXNQclQwd/eKV/NzlqPlfK21cpRRIx80XXQ= +github.com/tendermint/tendermint v0.34.24 h1:879MKKJWYYPJEMMKME+DWUTY4V9f/FBpnZDI82ky+4k= +github.com/tendermint/tendermint v0.34.24/go.mod h1:rXVrl4OYzmIa1I91av3iLv2HS0fGSiucyW9J4aMTpKI= github.com/tendermint/tm-db v0.6.4/go.mod h1:dptYhIpJ2M5kUuenLr+Yyf3zQOv1SgBZcl8/BmWlMBw= +github.com/tendermint/tm-db v0.6.6/go.mod h1:wP8d49A85B7/erz/r4YbKssKw6ylsO/hKtFk7E1aWZI= +github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= +github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= +github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= +github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= +github.com/tetafro/godot v0.3.7/go.mod h1:/7NLHhv08H1+8DNj0MElpAACw1ajsCuf3TKNQxA5S+0= +github.com/tetafro/godot v0.4.2/go.mod h1:/7NLHhv08H1+8DNj0MElpAACw1ajsCuf3TKNQxA5S+0= +github.com/tetafro/godot v1.4.11/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8= +github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= +github.com/timakin/bodyclose v0.0.0-20200424151742-cb6215831a94/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= +github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= +github.com/timonwong/loggercheck v0.9.3/go.mod h1:wUqnk9yAOIKtGA39l1KLE9Iz0QiTocu/YZoOf+OzFdw= +github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= +github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0= +github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= +github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao= +github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4= +github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk= +github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tomarrell/wrapcheck/v2 v2.7.0/go.mod h1:ao7l5p0aOlUNJKI0qVwB4Yjlqutd0IvAB9Rdwyilxvg= +github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= +github.com/tommy-muehle/go-mnd v1.1.1/go.mod h1:dSUh0FtTP8VhvkL1S+gUR1OKd9ZnSaozuI6r3m6wOig= +github.com/tommy-muehle/go-mnd v1.3.1-0.20200224220436-e6f9a994e8fa/go.mod h1:dSUh0FtTP8VhvkL1S+gUR1OKd9ZnSaozuI6r3m6wOig= +github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= +github.com/tonistiigi/fsutil v0.0.0-20201103201449-0834f99b7b85/go.mod h1:a7cilN64dG941IOXfhJhlH0qB92hxJ9A1ewrdUmJ6xo= +github.com/tonistiigi/fsutil v0.0.0-20220115021204-b19f7f9cb274/go.mod h1:oPAfvw32vlUJSjyDcQ3Bu0nb2ON2B+G0dtVN/SZNJiA= +github.com/tonistiigi/go-actions-cache v0.0.0-20220404170428-0bdeb6e1eac7/go.mod h1:qqvyZqkfwkoJuPU/bw61bItaoO0SJ8YSW0vSVRRvsRg= +github.com/tonistiigi/go-archvariant v1.0.0/go.mod h1:TxFmO5VS6vMq2kvs3ht04iPXtu2rUT/erOnGFYfk5Ho= +github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6cRcDZSUvVmezrxJPkiO87ThFYsoUiMwWNDJk= +github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f/go.mod h1:ulncasL3N9uLrVann0m+CDlJKWsIAP34MPcOJF6VRvc= +github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= +github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= +github.com/ulikunitz/xz v0.5.7/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ultraware/funlen v0.0.2/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= +github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= +github.com/ultraware/whitespace v0.0.4/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= +github.com/ultraware/whitespace v0.0.5/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= +github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/uudashr/gocognit v1.0.1/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM= +github.com/uudashr/gocognit v1.0.6/go.mod h1:nAIUuVBnYU7pcninia3BHOvQkpQCeO76Uscky5BOwcY= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s= +github.com/valyala/fasthttp v1.30.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus= +github.com/valyala/quicktemplate v1.2.0/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4= +github.com/valyala/quicktemplate v1.7.0/go.mod h1:sqKJnoaOF88V07vkO+9FL8fb9uZg/VPSJnLYn+LmLk8= +github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= +github.com/vbatts/tar-split v0.11.2/go.mod h1:vV3ZuO2yWSVsz+pfFzDG/upWH1JhjOiEaWq6kXyQ3VI= +github.com/vdemeester/k8s-pkg-credentialprovider v1.17.4/go.mod h1:inCTmtUdr5KJbreVojo06krnTgaeAz/Z7lynpPk/Q2c= +github.com/vektra/mockery/v2 v2.14.0/go.mod h1:bnD1T8tExSgPD1ripLkDbr60JA9VtQeu12P3wgLZd7M= +github.com/viki-org/dnscache v0.0.0-20130720023526-c70c1f23c5d8/go.mod h1:dniwbG03GafCjFohMDmz6Zc6oCuiqgH6tGNyXTkHzXE= +github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= +github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= +github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= +github.com/xanzy/go-gitlab v0.31.0/go.mod h1:sPLojNBn68fMUWSxIJtdVVIP8uSBYqesTfDUseX11Ug= +github.com/xanzy/go-gitlab v0.32.0/go.mod h1:sPLojNBn68fMUWSxIJtdVVIP8uSBYqesTfDUseX11Ug= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= +github.com/yeya24/promlinter v0.2.0/go.mod h1:u54lkmBOZrpEbQQ6gox2zWKKLKu2SGe+2KOiextY+IA= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= +github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= +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= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/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.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= +github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= +github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= github.com/zondax/hid v0.9.0 h1:eiT3P6vNxAEVxXMw66eZUAAnU2zD33JBkfG/EnfAKl8= github.com/zondax/hid v0.9.0/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +gitlab.com/bosi/decorder v0.2.3/go.mod h1:9K1RB5+VPNQYtXtTDAzd2OEftsZb1oV0IrJrzChSdGE= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5 h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0= +go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= +go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c/go.mod h1:xCI7ZzBfRuGgBXyXO6yfWfDmlWd35khcWpUa4L0xI/k= +go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/api/v3 v3.5.1/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.1/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/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= +go.etcd.io/etcd/client/v2 v2.305.4/go.mod h1:Ud+VUwIi9/uQHOMA+4ekToJ12lTxlv0zB/+DHwTGEbU= +go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= +go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= +go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= +go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= +go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= +go.mozilla.org/mozlog v0.0.0-20170222151521-4bb13139d403/go.mod h1:jHoPAGnDrCy6kaI2tAze5Prf0Nr0w/oNkROt2lw3n3o= +go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= +go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go.opencensus.io v0.19.1/go.mod h1:gug0GbSHa8Pafr0d2urOSgoXHZ6x/RUlaiT0d9pqb4A= +go.opencensus.io v0.19.2/go.mod h1:NO/8qkisMZLZ1FCsKNqtJPwc8/TaclWyY0B6wcYNg9M= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= 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= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.28.0/go.mod h1:vEhqr0m4eTc+DWxfsXoXue2GBgV2uUwVznkGIHW/e5w= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.29.0/go.mod h1:LsankqVDx4W+RhZNA5uWarULII/MBhF5qwCYxTuyXjs= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.3/go.mod h1:Dts42MGkzZne2yCru741+bFiTMWkIj/LLRizad7b9tw= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.29.0/go.mod h1:vHItvsnJtp7ES++nFLLFBzUWny7fJQSvTlxFcqQGUr4= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.29.0/go.mod h1:tLYsuf2v8fZreBVwp9gVMhefZlLFZaUiNVSq8QxXRII= +go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= +go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= +go.opentelemetry.io/otel v1.4.0/go.mod h1:jeAqMFKy2uLIxCtKxoFj0FAL5zAPKQagc3+GtBWakzk= +go.opentelemetry.io/otel v1.4.1/go.mod h1:StM6F/0fSwpd8dKWDCdRr7uRvEPYdW0hBSlbdTiUde4= +go.opentelemetry.io/otel v1.11.0/go.mod h1:H2KtuEphyMvlhZ+F7tg9GRhAOe60moNx61Ex+WmiKkk= +go.opentelemetry.io/otel/exporters/jaeger v1.4.1/go.mod h1:ZW7vkOu9nC1CxsD8bHNHCia5JUbwP39vxgd1q4Z5rCI= +go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.4.1/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0/go.mod h1:hO1KLR7jcKaDDKDkvI9dP/FIhpmna5lkqPUQdEjFAM8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.4.1/go.mod h1:o5RW5o2pKpJLD5dNTCmjF1DorYwMeFJmb/rKr5sLaa8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0/go.mod h1:keUU7UfnwWTWpJ+FWnyqmogPa82nuU5VUANFq49hlMY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.4.1/go.mod h1:c6E4V3/U+miqjs/8l950wggHGL1qzlp0Ypj9xoGrPqo= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.3.0/go.mod h1:QNX1aly8ehqqX1LEa6YniTU7VY9I6R3X/oPxhGdTceE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.4.1/go.mod h1:VwYo0Hak6Efuy0TXsZs8o1hnV3dHDPNtDbycG0hI8+M= +go.opentelemetry.io/otel/internal/metric v0.27.0/go.mod h1:n1CVxRqKqYZtqyTh9U/onvKapPGv7y/rpyOTI+LFNzw= +go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= +go.opentelemetry.io/otel/metric v0.27.0/go.mod h1:raXDJ7uP2/Jc0nVZWQjJtzoyssOYWu/+pjZqRzfvZ7g= +go.opentelemetry.io/otel/metric v0.32.3/go.mod h1:pgiGmKohxHyTPHGOff+vrtIH39/R9fiO/WoenUQ3kcc= +go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= +go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= +go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= +go.opentelemetry.io/otel/sdk v1.4.1/go.mod h1:NBwHDgDIBYjwK2WNu1OPgsIc2IJzmBXNnvIJxJc8BpE= +go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= +go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= +go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= +go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= +go.opentelemetry.io/otel/trace v1.4.0/go.mod h1:uc3eRsqDfWs9R7b92xbQbU42/eTNz4N+gLP8qJCi4aE= +go.opentelemetry.io/otel/trace v1.4.1/go.mod h1:iYEVbroFCNut9QkwEczV9vMRPHNKSSwYZjulEtsmhFc= +go.opentelemetry.io/otel/trace v1.11.0/go.mod h1:nyYjis9jy0gytE9LXGU+/m1sHTKbRY0fX0hulNNDP1U= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= +go.opentelemetry.io/proto/otlp v0.12.0/go.mod h1:TsIjwGWIx5VFYv9KGVlOpxoBl5Dy+63SUguV7GGvlSQ= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +gocloud.dev v0.19.0/go.mod h1:SmKwiR8YwIMMJvQBKLsC3fHNyMwXLw3PMDO+VVteJMI= +golang.org/x/build v0.0.0-20190314133821-5284462c4bec/go.mod h1:atTaCNAy0f16Ah5aV1gMSwgiKVHwu/JncqDpuRr7lS4= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/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-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/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-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210915214749-c084706c2272/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-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= +golang.org/x/exp/typeparams v0.0.0-20220218215828-6cf2b201936e/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20220827204233-334a2380cb91/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= 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-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200119044424-58c23975cae1/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-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +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-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/lint v0.0.0-20181217174547-8f45f776aaf1/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= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +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/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= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= 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/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/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-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181108082009-03003ca0c849/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-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -685,154 +2310,676 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 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-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= 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-20190619014844-b5b0513f8c1b/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-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/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-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191112182307-2180aed22343/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= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f h1:w6wWR0H+nyVpbSAQbzVEIACVyr/h8l/BEkY6Sokc7Eg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +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-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221017152216-f25eb7ecb193/go.mod h1:RpDiru2p0u2F0lLpEoqnP2+7xs0ifAuOcJ442g6GU2s= +golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/oauth2 v0.0.0-20180724155351-3d292e4d0cdc/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/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-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 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-20220513210516-0976fa681c29/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/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.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 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-20180909124046-d0be0721c37e/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-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/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-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181218192612-074acd46bca6/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190209173611-3b5209105503/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190620070143-6f217b454f45/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/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-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/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-20200120151820-655fe14d7479/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-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +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-20200519105757-fe76b779f299/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-20200622214017-ed371f2e16b4/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-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200917073148-efd3b9a0ff20/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201013081832-0aaa2718063a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/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-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210313202042-bd2e13477e9c/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= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +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-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/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-20210514084401-e8d321eab015/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-20210603125802-9665404d3644/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-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210903071746-97244b99971b h1:3Dq0eVHn0uaQJmPO+/aYPI/fRMqdrVDbu7MQcku54gg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/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-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210903071746-97244b99971b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/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-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/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-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/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-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220405210540-1e041c57c461/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220406163625-3f8b81556e12/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/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-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220702020025-31831981b65f/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-20220728004956-3c1f35247d10/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-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20221013171732-95e765b1cc43/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220919170432-7a66f970e087/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0 h1:g6Z6vPFA9dYBAF7DWcH6sCcOntplXsDKcliusYijMlw= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +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/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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= +golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181117154741-2ddaf7f79a09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181219222714-6e267b5cc78e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190221204921-83362c3779f5/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190228203856-589c23e65e65/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190307163923-6a08e3108db3/go.mod h1:25r3+/G6/xytQM8iWZKq3Hn0kr0rgFKPUNVEL/dr3z4= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190521203540-521d6ed310dd/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/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-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190719005602-e377ae9d6386/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= 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-20190910044552-dd2b5c81c578/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-20190916130336-e45ffcd953cc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191010075000-0337d82405ff/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-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113232020-e2727e816f5a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200102140908-9497f49d5709/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117220505-0cba7a3a9ee9/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204192400-7124308813f3/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200331202046-9d5940d49312/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200414032229-332987a829c3/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200422022333-3d57cf2e726e/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200426102838-f3a5411a4c3b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200502202811-ed308ab3e770/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200622203043-20e05c1c8ffa/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200624225443-88f3c62a19ff/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200625211823-6506e20df31f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200630154851-b2d8b0336632/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200706234117-b22de6825cf7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200812195022-5ae4c3c160a0/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200831203904-5a2aa26beb65/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201001104356-43ebab892c4c/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201002184944-ecd9fd270d5d/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201028025901-8cd080b735b3/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/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-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201230224404-63754364767c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= +golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/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/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.9-0.20211228192929-ee1ca4ffc4da/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.11-0.20220513221640-090b14e8501f/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= +golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= +golang.org/x/tools v0.1.12-0.20220628192153-7743d1d949f1/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= 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= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= +gonum.org/v1/gonum v0.12.0/go.mod h1:73TDxJfAAHeA8Mk9mf8NlIppyhQNo5GLTcYeqgo2lvY= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= +gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= +google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181220000619-583d854617af/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.2.0/go.mod h1:IfRCZScioGtypHNTlz3gFk67J8uePVW7uDTBzXuIkhU= +google.golang.org/api v0.3.0/go.mod h1:IuvZyQh8jgscv8qWfQ4ABd8m7hEudgBFM/EdhA3BnXw= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.5.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.6.0/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= +google.golang.org/api v0.6.1-0.20190607001116-5213b8090861/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.10.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.25.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.81.0/go.mod h1:FA6Mb/bZxj706H2j+j2d6mHEEaHBmbbWnkfvmorOCko= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= +google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181107211654-5fc9ac540362/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181219182458-5a97ab628bfb/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190508193815-b515fa19cec8/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190620144150-6af8c5fc6601/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200626011028-ee7919e894b5/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200707001353-8e8330bf89df/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f h1:izedQ6yVIc5mZsRuXzmSreCOlzI0lCU1HpG8yEdMiKw= -google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211101144312-62acf1d99145/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a h1:GH6UPn3ixhWcKDhpnEC55S75cerLPdpp3hrhfKYjZgw= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -845,24 +2992,45 @@ 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.27.0 h1:KhgSLlr/moiqjv0qUsSnLvdUL7NH7PHW8aZGn7Jpjko= -google.golang.org/protobuf v1.27.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 h1:KR8+MyP7/qOlV+8Af01LtjL04bu7on42eVsxT4EyBQk= +google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/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-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.61.0 h1:LBCdW4FmFYL4s/vDZD1RQYX7oAR6IjujCYgMdbHBR10= -gopkg.in/ini.v1 v1.61.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -870,18 +3038,139 @@ 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.6/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/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.0/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= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= +gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= +gotest.tools/v3 v3.2.0/go.mod h1:Mcr9QNxkg0uMvy/YElmo4SpXgJKWgQvYrT7Kw5RzJ1A= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= +honnef.co/go/tools v0.0.0-20180920025451-e3ad64cb4ed3/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= 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= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= 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= +honnef.co/go/tools v0.0.1-2020.1.5/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +honnef.co/go/tools v0.3.3/go.mod h1:jzwdWgg7Jdq75wlfblQxO4neNaFFSvgc1tD5Wv8U0Yw= +k8s.io/api v0.0.0-20180904230853-4e7be11eab3f/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= +k8s.io/api v0.17.4/go.mod h1:5qxx6vjmwUVG2nHQTKGlLts8Tbok8PzHl4vHtVFuZCA= +k8s.io/api v0.19.0/go.mod h1:I1K45XlvTrDjmj5LoM5LuP/KYrhWbjUKT/SoPG0qTjw= +k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= +k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= +k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= +k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= +k8s.io/api v0.23.4/go.mod h1:i77F4JfyNNrhOjZF7OwwNJS5Y1S9dpwvb9iYRYRczfI= +k8s.io/apimachinery v0.0.0-20180904193909-def12e63c512/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= +k8s.io/apimachinery v0.17.4/go.mod h1:gxLnyZcGNdZTCLnq3fgzyg2A5BVCHTNDFrw8AmuJ+0g= +k8s.io/apimachinery v0.19.0/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= +k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= +k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= +k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0U= +k8s.io/apimachinery v0.23.4/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= +k8s.io/apiserver v0.17.4/go.mod h1:5ZDQ6Xr5MNBxyi3iUZXS84QOhZl+W7Oq2us/29c0j9I= +k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= +k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= +k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= +k8s.io/apiserver v0.22.5/go.mod h1:s2WbtgZAkTKt679sYtSudEQrTGWUSQAPe6MupLnlmaQ= +k8s.io/client-go v0.0.0-20180910083459-2cefa64ff137/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= +k8s.io/client-go v0.17.4/go.mod h1:ouF6o5pz3is8qU0/qYL2RnoxOPqgfuidYLowytyLJmc= +k8s.io/client-go v0.19.0/go.mod h1:H9E/VT95blcFQnlyShFgnFT9ZnJOAceiUHM3MlRC+mU= +k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= +k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= +k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= +k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= +k8s.io/client-go v0.23.4/go.mod h1:PKnIL4pqLuvYUK1WU7RLTMYKPiIh7MYShLshtRY9cj0= +k8s.io/cloud-provider v0.17.4/go.mod h1:XEjKDzfD+b9MTLXQFlDGkk6Ho8SGMpaU8Uugx/KNK9U= +k8s.io/code-generator v0.17.2/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= +k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= +k8s.io/component-base v0.17.4/go.mod h1:5BRqHMbbQPm2kKu35v3G+CpVq4K0RJKC7TRioF0I9lE= +k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= +k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= +k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= +k8s.io/component-base v0.22.5/go.mod h1:VK3I+TjuF9eaa+Ln67dKxhGar5ynVbwnGrUiNF4MqCI= +k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= +k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= +k8s.io/cri-api v0.23.1/go.mod h1:REJE3PSU0h/LOV1APBrupxrEJqnoxZC8KWzkBUHwrK4= +k8s.io/cri-api v0.24.0-alpha.3/go.mod h1:c/NLI5Zdyup5+oEYqFO2IE32ptofNiZpS1nL2y51gAg= +k8s.io/csi-translation-lib v0.17.4/go.mod h1:CsxmjwxEI0tTNMzffIAcgR9lX4wOh6AKHdxQrT7L0oo= +k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= +k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20180731170545-e3762e86a74c/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= +k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= +k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= +k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= +k8s.io/kubernetes v1.11.10/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= +k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= +k8s.io/legacy-cloud-providers v0.17.4/go.mod h1:FikRNoD64ECjkxO36gkDgJeiQWwyZTuBkhu+yxOc1Js= +k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= +modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= +modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= +modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= +modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= +mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ= +mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= +mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= +mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw= +mvdan.cc/unparam v0.0.0-20200501210554-b37ab49443f7/go.mod h1:HGC5lll35J70Y5v7vCGb9oLhHoScFwkHDJm/05RdSTc= +mvdan.cc/unparam v0.0.0-20220706161116-678bad134442/go.mod h1:F/Cxw/6mVrNKqrR2YjFf5CaW0Bw4RL8RfbEf4GRggJk= +pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +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/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= +sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= +sourcegraph.com/sqs/pbtypes v1.0.0/go.mod h1:3AciMUv4qUuRHRHhOG4TZOB+72GdPVz5k+c648qsFS4= diff --git a/server/config/toml.go b/server/config/toml.go index b042da74293d..c007f07b24fb 100644 --- a/server/config/toml.go +++ b/server/config/toml.go @@ -193,5 +193,5 @@ func WriteConfigFile(configFilePath string, config *Config) { panic(err) } - tmos.MustWriteFile(configFilePath, buffer.Bytes(), 0644) + tmos.MustWriteFile(configFilePath, buffer.Bytes(), 0o644) } diff --git a/server/export.go b/server/export.go index 8fd618028ba0..ee0a87a5ec49 100644 --- a/server/export.go +++ b/server/export.go @@ -4,7 +4,6 @@ package server import ( "fmt" - "io/ioutil" "os" "github.com/spf13/cobra" @@ -49,7 +48,7 @@ func ExportCmd(appExporter types.AppExporter, defaultNodeHome string) *cobra.Com return err } - genesis, err := ioutil.ReadFile(config.GenesisFile()) + genesis, err := os.ReadFile(config.GenesisFile()) if err != nil { return err } diff --git a/server/export_test.go b/server/export_test.go index d4e41ef8e886..a04676fbba1c 100644 --- a/server/export_test.go +++ b/server/export_test.go @@ -119,7 +119,6 @@ func TestExportCmd_Height(t *testing.T) { require.Equal(t, tc.expHeight, exportedGenDoc.InitialHeight) }) } - } func setupApp(t *testing.T, tempDir string) (*simapp.SimApp, context.Context, *tmtypes.GenesisDoc, *cobra.Command) { @@ -174,7 +173,7 @@ func setupApp(t *testing.T, tempDir string) (*simapp.SimApp, context.Context, *t } func createConfigFolder(dir string) error { - return os.Mkdir(path.Join(dir, "config"), 0700) + return os.Mkdir(path.Join(dir, "config"), 0o700) } func newDefaultGenesisDoc(cdc codec.Marshaler) *tmtypes.GenesisDoc { diff --git a/server/grpc/server_test.go b/server/grpc/server_test.go index 7a58bef00dbe..0bc49774b2e8 100644 --- a/server/grpc/server_test.go +++ b/server/grpc/server_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package grpc_test diff --git a/server/mock/app.go b/server/mock/app.go index e3fdd2c91477..f31c6e948f44 100644 --- a/server/mock/app.go +++ b/server/mock/app.go @@ -104,7 +104,8 @@ func InitChainer(key sdk.StoreKey) func(sdk.Context, abci.RequestInitChain) abci // AppGenState can be passed into InitCmd, returns a static string of a few // key-values that can be parsed by InitChainer func AppGenState(_ *codec.LegacyAmino, _ types.GenesisDoc, _ []json.RawMessage) (appState json. - RawMessage, err error) { + RawMessage, err error, +) { appState = json.RawMessage(`{ "values": [ { @@ -122,7 +123,8 @@ func AppGenState(_ *codec.LegacyAmino, _ types.GenesisDoc, _ []json.RawMessage) // AppGenStateEmpty returns an empty transaction state for mocking. func AppGenStateEmpty(_ *codec.LegacyAmino, _ types.GenesisDoc, _ []json.RawMessage) ( - appState json.RawMessage, err error) { + appState json.RawMessage, err error, +) { appState = json.RawMessage(``) return } diff --git a/server/mock/app_test.go b/server/mock/app_test.go index 2741925df026..42be0c1d0b76 100644 --- a/server/mock/app_test.go +++ b/server/mock/app_test.go @@ -24,7 +24,7 @@ func TestInitApp(t *testing.T) { appState, err := AppGenState(nil, types.GenesisDoc{}, nil) require.NoError(t, err) - //TODO test validators in the init chain? + req := abci.RequestInitChain{ AppStateBytes: appState, } diff --git a/server/mock/helpers.go b/server/mock/helpers.go index 88aacb4d8e41..334a21d9fd81 100644 --- a/server/mock/helpers.go +++ b/server/mock/helpers.go @@ -2,7 +2,6 @@ package mock import ( "fmt" - "io/ioutil" "os" abci "github.com/tendermint/tendermint/abci/types" @@ -14,7 +13,7 @@ import ( func SetupApp() (abci.Application, func(), error) { logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)). With("module", "mock") - rootDir, err := ioutil.TempDir("", "mock-sdk") + rootDir, err := os.MkdirTemp("", "mock-sdk") if err != nil { return nil, nil, err } diff --git a/server/tm_cmds.go b/server/tm_cmds.go index 854d4597fee8..91a66ea2fd0a 100644 --- a/server/tm_cmds.go +++ b/server/tm_cmds.go @@ -7,7 +7,6 @@ import ( "strings" "github.com/spf13/cobra" - tcmd "github.com/tendermint/tendermint/cmd/tendermint/commands" "github.com/tendermint/tendermint/libs/cli" "github.com/tendermint/tendermint/p2p" pvm "github.com/tendermint/tendermint/privval" @@ -145,18 +144,3 @@ func printlnJSON(v interface{}) error { fmt.Println(string(marshalled)) return nil } - -// UnsafeResetAllCmd - extension of the tendermint command, resets initialization -func UnsafeResetAllCmd() *cobra.Command { - return &cobra.Command{ - Use: "unsafe-reset-all", - Short: "Resets the blockchain database, removes address book files, and resets data/priv_validator_state.json to the genesis state", - RunE: func(cmd *cobra.Command, args []string) error { - serverCtx := GetServerContextFromCmd(cmd) - cfg := serverCtx.Config - - tcmd.ResetAll(cfg.DBDir(), cfg.P2P.AddrBookFile(), cfg.PrivValidatorKeyFile(), cfg.PrivValidatorStateFile(), serverCtx.Logger) - return nil - }, - } -} diff --git a/server/util.go b/server/util.go index 68f1c4828166..923f260062c3 100644 --- a/server/util.go +++ b/server/util.go @@ -263,7 +263,6 @@ func AddCommands(rootCmd *cobra.Command, defaultNodeHome string, appCreator type rootCmd.AddCommand( startCmd, - UnsafeResetAllCmd(), flags.LineBreak, tendermintCmd, ExportCmd(appExport, defaultNodeHome), @@ -372,6 +371,6 @@ func openTraceWriter(traceWriterFile string) (w io.Writer, err error) { return os.OpenFile( traceWriterFile, os.O_WRONLY|os.O_APPEND|os.O_CREATE, - 0666, + 0o666, ) } diff --git a/server/util_test.go b/server/util_test.go index 0800b59a30c1..e20f5d667753 100644 --- a/server/util_test.go +++ b/server/util_test.go @@ -383,7 +383,7 @@ func TestInterceptConfigsPreRunHandlerPrecedenceConfigDefault(t *testing.T) { func TestInterceptConfigsWithBadPermissions(t *testing.T) { tempDir := t.TempDir() subDir := filepath.Join(tempDir, "nonPerms") - if err := os.Mkdir(subDir, 0600); err != nil { + if err := os.Mkdir(subDir, 0o600); err != nil { t.Fatalf("Failed to create sub directory: %v", err) } cmd := StartCmd(nil, "/foobar") diff --git a/simapp/app.go b/simapp/app.go index b60693f7a949..b3397bd93c77 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -197,7 +197,6 @@ func NewSimApp( homePath string, invCheckPeriod uint, encodingConfig simappparams.EncodingConfig, appOpts servertypes.AppOptions, baseAppOptions ...func(*baseapp.BaseApp), ) *SimApp { - // TODO: Remove cdc in favor of appCodec once all modules are migrated. appCodec := encodingConfig.Marshaler legacyAmino := encodingConfig.Amino @@ -319,7 +318,7 @@ func NewSimApp( // NOTE: we may consider parsing `appOpts` inside module constructors. For the moment // we prefer to be more strict in what arguments the modules expect. - var skipGenesisInvariants = cast.ToBool(appOpts.Get(crisis.FlagSkipGenesisInvariants)) + skipGenesisInvariants := cast.ToBool(appOpts.Get(crisis.FlagSkipGenesisInvariants)) // NOTE: Any module instantiated in the module manager that is later modified // must be passed by reference here. diff --git a/simapp/export.go b/simapp/export.go index 887308d30a94..1fe9588f5dc9 100644 --- a/simapp/export.go +++ b/simapp/export.go @@ -46,7 +46,8 @@ func (app *SimApp) ExportAppStateAndValidators( // prepare for fresh start at zero height // NOTE zero height genesis is a temporary feature which will be deprecated -// in favour of export at a block height +// +// in favour of export at a block height func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []string) { applyAllowedAddrs := false diff --git a/simapp/params/amino.go b/simapp/params/amino.go index 440c29f817ea..0d43dd1eb8f4 100644 --- a/simapp/params/amino.go +++ b/simapp/params/amino.go @@ -1,3 +1,4 @@ +//go:build test_amino // +build test_amino package params diff --git a/simapp/params/proto.go b/simapp/params/proto.go index 04aa524b9004..a752d1079077 100644 --- a/simapp/params/proto.go +++ b/simapp/params/proto.go @@ -1,3 +1,4 @@ +//go:build !test_amino // +build !test_amino package params diff --git a/simapp/sim_test.go b/simapp/sim_test.go index cc1a7cada4f5..fe55fd3ac0e6 100644 --- a/simapp/sim_test.go +++ b/simapp/sim_test.go @@ -162,11 +162,13 @@ func TestAppImportExport(t *testing.T) { storeKeysPrefixes := []StoreKeysPrefixes{ {app.keys[authtypes.StoreKey], newApp.keys[authtypes.StoreKey], [][]byte{}}, - {app.keys[stakingtypes.StoreKey], newApp.keys[stakingtypes.StoreKey], + { + app.keys[stakingtypes.StoreKey], newApp.keys[stakingtypes.StoreKey], [][]byte{ stakingtypes.UnbondingQueueKey, stakingtypes.RedelegationQueueKey, stakingtypes.ValidatorQueueKey, stakingtypes.HistoricalInfoKey, - }}, // ordering may change but it doesn't matter + }, + }, // ordering may change but it doesn't matter {app.keys[slashingtypes.StoreKey], newApp.keys[slashingtypes.StoreKey], [][]byte{}}, {app.keys[minttypes.StoreKey], newApp.keys[minttypes.StoreKey], [][]byte{}}, {app.keys[distrtypes.StoreKey], newApp.keys[distrtypes.StoreKey], [][]byte{}}, diff --git a/simapp/simd/cmd/genaccounts_test.go b/simapp/simd/cmd/genaccounts_test.go index 813bf4b88e92..bfe38b8a9b8f 100644 --- a/simapp/simd/cmd/genaccounts_test.go +++ b/simapp/simd/cmd/genaccounts_test.go @@ -3,10 +3,11 @@ package cmd_test import ( "context" "fmt" + "testing" + "github.com/cosmos/cosmos-sdk/crypto/hd" "github.com/cosmos/cosmos-sdk/crypto/keyring" sdk "github.com/cosmos/cosmos-sdk/types" - "testing" "github.com/spf13/viper" "github.com/stretchr/testify/require" @@ -96,7 +97,8 @@ func TestAddGenesisAccountCmd(t *testing.T) { cmd.SetArgs([]string{ tc.addr, tc.denom, - fmt.Sprintf("--%s=home", flags.FlagHome)}) + fmt.Sprintf("--%s=home", flags.FlagHome), + }) if tc.expectErr { require.Error(t, cmd.ExecuteContext(ctx)) diff --git a/simapp/simd/cmd/root.go b/simapp/simd/cmd/root.go index 2a393fdc126b..ed27453115be 100644 --- a/simapp/simd/cmd/root.go +++ b/simapp/simd/cmd/root.go @@ -223,8 +223,8 @@ func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, a // and exports state. func (a appCreator) appExport( logger log.Logger, db dbm.DB, traceStore io.Writer, height int64, forZeroHeight bool, jailAllowedAddrs []string, - appOpts servertypes.AppOptions) (servertypes.ExportedApp, error) { - + appOpts servertypes.AppOptions, +) (servertypes.ExportedApp, error) { var simApp *simapp.SimApp homePath, ok := appOpts.Get(flags.FlagHome).(string) if !ok || homePath == "" { diff --git a/simapp/simd/cmd/testnet.go b/simapp/simd/cmd/testnet.go index f55873adab12..a5c0ecc36e1a 100644 --- a/simapp/simd/cmd/testnet.go +++ b/simapp/simd/cmd/testnet.go @@ -94,7 +94,7 @@ Example: return cmd } -const nodeDirPerm = 0755 +const nodeDirPerm = 0o755 // Initialize the testnet func InitTestnet( @@ -113,7 +113,6 @@ func InitTestnet( algoStr string, numValidators int, ) error { - if chainID == "" { chainID = "chain-" + tmrand.NewRand().Str(6) } @@ -270,7 +269,6 @@ func initGenFiles( genAccounts []authtypes.GenesisAccount, genBalances []banktypes.Balance, genFiles []string, numValidators int, ) error { - appGenState := mbm.DefaultGenesis(clientCtx.JSONMarshaler) // set the accounts in the genesis state @@ -320,7 +318,6 @@ func collectGenFiles( nodeIDs []string, valPubKeys []cryptotypes.PubKey, numValidators int, outputDir, nodeDirPrefix, nodeDaemonHome string, genBalIterator banktypes.GenesisBalancesIterator, ) error { - var appState json.RawMessage genTime := tmtime.Now() @@ -389,12 +386,12 @@ func writeFile(name string, dir string, contents []byte) error { writePath := filepath.Join(dir) file := filepath.Join(writePath, name) - err := tmos.EnsureDir(writePath, 0755) + err := tmos.EnsureDir(writePath, 0o755) if err != nil { return err } - err = tmos.WriteFile(file, contents, 0644) + err = tmos.WriteFile(file, contents, 0o644) if err != nil { return err } diff --git a/simapp/simd/cmd/testnet_test.go b/simapp/simd/cmd/testnet_test.go index 6b74d821273a..33ebd77951c8 100644 --- a/simapp/simd/cmd/testnet_test.go +++ b/simapp/simd/cmd/testnet_test.go @@ -5,6 +5,10 @@ import ( "fmt" "testing" + "github.com/spf13/viper" + "github.com/stretchr/testify/require" + "github.com/tendermint/tendermint/libs/log" + "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/server" @@ -12,9 +16,6 @@ import ( banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" genutiltest "github.com/cosmos/cosmos-sdk/x/genutil/client/testutil" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" - "github.com/spf13/viper" - "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/libs/log" ) func Test_TestnetCmd(t *testing.T) { diff --git a/simapp/state.go b/simapp/state.go index 4c3773813a04..9e790bc4f81f 100644 --- a/simapp/state.go +++ b/simapp/state.go @@ -4,8 +4,8 @@ import ( "encoding/json" "fmt" "io" - "io/ioutil" "math/rand" + "os" "time" tmjson "github.com/tendermint/tendermint/libs/json" @@ -25,7 +25,6 @@ import ( func AppStateFn(cdc codec.JSONMarshaler, simManager *module.SimulationManager) simtypes.AppStateFn { return func(r *rand.Rand, accs []simtypes.Account, config simtypes.Config, ) (appState json.RawMessage, simAccs []simtypes.Account, chainID string, genesisTimestamp time.Time) { - if FlagGenesisTimeValue == 0 { genesisTimestamp = simtypes.RandTimestamp(r) } else { @@ -52,7 +51,7 @@ func AppStateFn(cdc codec.JSONMarshaler, simManager *module.SimulationManager) s case config.ParamsFile != "": appParams := make(simtypes.AppParams) - bz, err := ioutil.ReadFile(config.ParamsFile) + bz, err := os.ReadFile(config.ParamsFile) if err != nil { panic(err) } @@ -130,7 +129,7 @@ func AppStateRandomizedFn( // AppStateFromGenesisFileFn util function to generate the genesis AppState // from a genesis.json file. func AppStateFromGenesisFileFn(r io.Reader, cdc codec.JSONMarshaler, genesisFile string) (tmtypes.GenesisDoc, []simtypes.Account) { - bytes, err := ioutil.ReadFile(genesisFile) + bytes, err := os.ReadFile(genesisFile) if err != nil { panic(err) } diff --git a/simapp/test_helpers.go b/simapp/test_helpers.go index 6921b4875a6f..e27dabcfc274 100644 --- a/simapp/test_helpers.go +++ b/simapp/test_helpers.go @@ -328,7 +328,6 @@ func SignCheckDeliver( t *testing.T, txCfg client.TxConfig, app *bam.BaseApp, header tmproto.Header, msgs []sdk.Msg, chainID string, accNums, accSeqs []uint64, expSimPass, expPass bool, priv ...cryptotypes.PrivKey, ) (sdk.GasInfo, *sdk.Result, error) { - tx, err := helpers.GenTx( txCfg, msgs, diff --git a/simapp/utils.go b/simapp/utils.go index 2067ed54b108..4ad605c736e7 100644 --- a/simapp/utils.go +++ b/simapp/utils.go @@ -3,7 +3,7 @@ package simapp import ( "encoding/json" "fmt" - "io/ioutil" + "os" "github.com/tendermint/tendermint/libs/log" dbm "github.com/tendermint/tm-db" @@ -34,7 +34,7 @@ func SetupSimulation(dirPrefix, dbName string) (simtypes.Config, dbm.DB, string, logger = log.NewNopLogger() } - dir, err := ioutil.TempDir("", dirPrefix) + dir, err := os.MkdirTemp("", dirPrefix) if err != nil { return simtypes.Config{}, nil, "", nil, false, err } @@ -56,7 +56,7 @@ func SimulationOperations(app App, cdc codec.JSONMarshaler, config simtypes.Conf } if config.ParamsFile != "" { - bz, err := ioutil.ReadFile(config.ParamsFile) + bz, err := os.ReadFile(config.ParamsFile) if err != nil { panic(err) } @@ -84,7 +84,7 @@ func CheckExportSimulation( return err } - if err := ioutil.WriteFile(config.ExportStatePath, []byte(exported.AppState), 0600); err != nil { + if err := os.WriteFile(config.ExportStatePath, []byte(exported.AppState), 0o600); err != nil { return err } } @@ -96,7 +96,7 @@ func CheckExportSimulation( return err } - if err := ioutil.WriteFile(config.ExportParamsPath, paramsBz, 0600); err != nil { + if err := os.WriteFile(config.ExportParamsPath, paramsBz, 0o600); err != nil { return err } } diff --git a/snapshots/helpers_test.go b/snapshots/helpers_test.go index 751ac212d352..eb900c11074a 100644 --- a/snapshots/helpers_test.go +++ b/snapshots/helpers_test.go @@ -48,7 +48,7 @@ func makeChunks(chunks [][]byte) <-chan io.ReadCloser { func readChunks(chunks <-chan io.ReadCloser) [][]byte { bodies := [][]byte{} for chunk := range chunks { - body, err := ioutil.ReadAll(chunk) + body, err := io.ReadAll(chunk) if err != nil { panic(err) } @@ -76,7 +76,7 @@ func (m *mockSnapshotter) Restore( m.chunks = [][]byte{} for reader := range chunks { - chunk, err := ioutil.ReadAll(reader) + chunk, err := io.ReadAll(reader) if err != nil { return err } @@ -101,7 +101,7 @@ func (m *mockSnapshotter) Snapshot(height uint64, format uint32) (<-chan io.Read // setupBusyManager creates a manager with an empty store that is busy creating a snapshot at height 1. // The snapshot will complete when the returned closer is called. func setupBusyManager(t *testing.T) *snapshots.Manager { - tempdir, err := ioutil.TempDir("", "") + tempdir, err := os.MkdirTemp("", "") require.NoError(t, err) t.Cleanup(func() { _ = os.RemoveAll(tempdir) }) diff --git a/snapshots/manager.go b/snapshots/manager.go index 3cb96e65f42f..4f1daa3ced98 100644 --- a/snapshots/manager.go +++ b/snapshots/manager.go @@ -4,7 +4,6 @@ import ( "bytes" "crypto/sha256" "io" - "io/ioutil" "sync" "github.com/cosmos/cosmos-sdk/snapshots/types" @@ -36,12 +35,12 @@ type restoreDone struct { // Although the ABCI interface (and this manager) passes chunks as byte slices, the internal // snapshot/restore APIs use IO streams (i.e. chan io.ReadCloser), for two reasons: // -// 1) In the future, ABCI should support streaming. Consider e.g. InitChain during chain -// upgrades, which currently passes the entire chain state as an in-memory byte slice. -// https://github.com/tendermint/tendermint/issues/5184 +// 1. In the future, ABCI should support streaming. Consider e.g. InitChain during chain +// upgrades, which currently passes the entire chain state as an in-memory byte slice. +// https://github.com/tendermint/tendermint/issues/5184 // -// 2) io.ReadCloser streams automatically propagate IO errors, and can pass arbitrary -// errors via io.Pipe.CloseWithError(). +// 2. io.ReadCloser streams automatically propagate IO errors, and can pass arbitrary +// errors via io.Pipe.CloseWithError(). type Manager struct { store *Store target types.Snapshotter @@ -144,7 +143,7 @@ func (m *Manager) LoadChunk(height uint64, format uint32, chunk uint32) ([]byte, } defer reader.Close() - return ioutil.ReadAll(reader) + return io.ReadAll(reader) } // Prune prunes snapshots, if no other operations are in progress. @@ -239,7 +238,7 @@ func (m *Manager) RestoreChunk(chunk []byte) (bool, error) { } // Pass the chunk to the restore, and wait for completion if it was the final one. - m.chRestore <- ioutil.NopCloser(bytes.NewReader(chunk)) + m.chRestore <- io.NopCloser(bytes.NewReader(chunk)) m.restoreChunkIndex++ if int(m.restoreChunkIndex) >= len(m.restoreChunkHashes) { diff --git a/snapshots/manager_test.go b/snapshots/manager_test.go index 6069666f14f5..955fa32eee4b 100644 --- a/snapshots/manager_test.go +++ b/snapshots/manager_test.go @@ -80,7 +80,8 @@ func TestManager_Take(t *testing.T) { Hash: []uint8{0x47, 0xe4, 0xee, 0x7f, 0x21, 0x1f, 0x73, 0x26, 0x5d, 0xd1, 0x76, 0x58, 0xf6, 0xe2, 0x1c, 0x13, 0x18, 0xbd, 0x6c, 0x81, 0xf3, 0x75, 0x98, 0xe2, 0xa, 0x27, 0x56, 0x29, 0x95, 0x42, 0xef, 0xcf}, Metadata: types.Metadata{ ChunkHashes: checksums([][]byte{ - {1, 2, 3}, {4, 5, 6}, {7, 8, 9}}), + {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, + }), }, }, snapshot) diff --git a/snapshots/store.go b/snapshots/store.go index 77ff58e22ff6..2500ee142216 100644 --- a/snapshots/store.go +++ b/snapshots/store.go @@ -36,7 +36,7 @@ func NewStore(db db.DB, dir string) (*Store, error) { if dir == "" { return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "snapshot directory not given") } - err := os.MkdirAll(dir, 0755) + err := os.MkdirAll(dir, 0o755) if err != nil { return nil, sdkerrors.Wrapf(err, "failed to create snapshot directory %q", dir) } @@ -259,9 +259,9 @@ func (s *Store) Save( snapshotHasher := sha256.New() chunkHasher := sha256.New() for chunkBody := range chunks { - defer chunkBody.Close() // nolint: staticcheck + defer chunkBody.Close() //nolint: staticcheck dir := s.pathSnapshot(height, format) - err = os.MkdirAll(dir, 0755) + err = os.MkdirAll(dir, 0o755) if err != nil { return nil, sdkerrors.Wrapf(err, "failed to create snapshot directory %q", dir) } @@ -270,7 +270,7 @@ func (s *Store) Save( if err != nil { return nil, sdkerrors.Wrapf(err, "failed to create snapshot chunk file %q", path) } - defer file.Close() // nolint: staticcheck + defer file.Close() //nolint: staticcheck chunkHasher.Reset() _, err = io.Copy(io.MultiWriter(file, chunkHasher, snapshotHasher), chunkBody) diff --git a/snapshots/store_test.go b/snapshots/store_test.go index 325fd3410bea..be1a34497e5b 100644 --- a/snapshots/store_test.go +++ b/snapshots/store_test.go @@ -20,7 +20,7 @@ import ( ) func setupStore(t *testing.T) *snapshots.Store { - tempdir, err := ioutil.TempDir("", "") + tempdir, err := os.MkdirTemp("", "") require.NoError(t, err) t.Cleanup(func() { _ = os.RemoveAll(tempdir) }) @@ -117,7 +117,8 @@ func TestStore_Get(t *testing.T) { Hash: hash([][]byte{{2, 1, 0}, {2, 1, 1}}), Metadata: types.Metadata{ ChunkHashes: checksums([][]byte{ - {2, 1, 0}, {2, 1, 1}}), + {2, 1, 0}, {2, 1, 1}, + }), }, }, snapshot) } @@ -152,16 +153,20 @@ func TestStore_List(t *testing.T) { require.NoError(t, err) require.Equal(t, []*types.Snapshot{ - {Height: 3, Format: 2, Chunks: 3, Hash: hash([][]byte{{3, 2, 0}, {3, 2, 1}, {3, 2, 2}}), + { + Height: 3, Format: 2, Chunks: 3, Hash: hash([][]byte{{3, 2, 0}, {3, 2, 1}, {3, 2, 2}}), Metadata: types.Metadata{ChunkHashes: checksums([][]byte{{3, 2, 0}, {3, 2, 1}, {3, 2, 2}})}, }, - {Height: 2, Format: 2, Chunks: 3, Hash: hash([][]byte{{2, 2, 0}, {2, 2, 1}, {2, 2, 2}}), + { + Height: 2, Format: 2, Chunks: 3, Hash: hash([][]byte{{2, 2, 0}, {2, 2, 1}, {2, 2, 2}}), Metadata: types.Metadata{ChunkHashes: checksums([][]byte{{2, 2, 0}, {2, 2, 1}, {2, 2, 2}})}, }, - {Height: 2, Format: 1, Chunks: 2, Hash: hash([][]byte{{2, 1, 0}, {2, 1, 1}}), + { + Height: 2, Format: 1, Chunks: 2, Hash: hash([][]byte{{2, 1, 0}, {2, 1, 1}}), Metadata: types.Metadata{ChunkHashes: checksums([][]byte{{2, 1, 0}, {2, 1, 1}})}, }, - {Height: 1, Format: 1, Chunks: 2, Hash: hash([][]byte{{1, 1, 0}, {1, 1, 1}}), + { + Height: 1, Format: 1, Chunks: 2, Hash: hash([][]byte{{1, 1, 0}, {1, 1, 1}}), Metadata: types.Metadata{ChunkHashes: checksums([][]byte{{1, 1, 0}, {1, 1, 1}})}, }, }, snapshots) @@ -185,14 +190,15 @@ func TestStore_Load(t *testing.T) { Hash: hash([][]byte{{2, 1, 0}, {2, 1, 1}}), Metadata: types.Metadata{ ChunkHashes: checksums([][]byte{ - {2, 1, 0}, {2, 1, 1}}), + {2, 1, 0}, {2, 1, 1}, + }), }, }, snapshot) for i := uint32(0); i < snapshot.Chunks; i++ { reader, ok := <-chunks require.True(t, ok) - chunk, err := ioutil.ReadAll(reader) + chunk, err := io.ReadAll(reader) require.NoError(t, err) err = reader.Close() require.NoError(t, err) @@ -217,7 +223,7 @@ func TestStore_LoadChunk(t *testing.T) { chunk, err = store.LoadChunk(2, 1, 0) require.NoError(t, err) require.NotNil(t, chunk) - body, err := ioutil.ReadAll(chunk) + body, err := io.ReadAll(chunk) require.NoError(t, err) assert.Equal(t, []byte{2, 1, 0}, body) err = chunk.Close() @@ -243,13 +249,16 @@ func TestStore_Prune(t *testing.T) { snapshots, err = store.List() require.NoError(t, err) require.Equal(t, []*types.Snapshot{ - {Height: 3, Format: 2, Chunks: 3, Hash: hash([][]byte{{3, 2, 0}, {3, 2, 1}, {3, 2, 2}}), + { + Height: 3, Format: 2, Chunks: 3, Hash: hash([][]byte{{3, 2, 0}, {3, 2, 1}, {3, 2, 2}}), Metadata: types.Metadata{ChunkHashes: checksums([][]byte{{3, 2, 0}, {3, 2, 1}, {3, 2, 2}})}, }, - {Height: 2, Format: 2, Chunks: 3, Hash: hash([][]byte{{2, 2, 0}, {2, 2, 1}, {2, 2, 2}}), + { + Height: 2, Format: 2, Chunks: 3, Hash: hash([][]byte{{2, 2, 0}, {2, 2, 1}, {2, 2, 2}}), Metadata: types.Metadata{ChunkHashes: checksums([][]byte{{2, 2, 0}, {2, 2, 1}, {2, 2, 2}})}, }, - {Height: 2, Format: 1, Chunks: 2, Hash: hash([][]byte{{2, 1, 0}, {2, 1, 1}}), + { + Height: 2, Format: 1, Chunks: 2, Hash: hash([][]byte{{2, 1, 0}, {2, 1, 1}}), Metadata: types.Metadata{ChunkHashes: checksums([][]byte{{2, 1, 0}, {2, 1, 1}})}, }, }, snapshots) diff --git a/snapshots/util_test.go b/snapshots/util_test.go index 78c870b90a1b..42b17779c2a1 100644 --- a/snapshots/util_test.go +++ b/snapshots/util_test.go @@ -66,10 +66,10 @@ func TestChunkWriter(t *testing.T) { require.NoError(t, err) chunkWriter.CloseWithError(theErr) }() - chunk, err := ioutil.ReadAll(<-ch) + chunk, err := io.ReadAll(<-ch) require.NoError(t, err) assert.Equal(t, []byte{1, 2}, chunk) - _, err = ioutil.ReadAll(<-ch) + _, err = io.ReadAll(<-ch) require.Error(t, err) assert.Equal(t, theErr, err) assert.Empty(t, ch) diff --git a/store/cachekv/store_test.go b/store/cachekv/store_test.go index e3b33341b8c4..490512f6fce5 100644 --- a/store/cachekv/store_test.go +++ b/store/cachekv/store_test.go @@ -112,7 +112,7 @@ func TestCacheKVIteratorBounds(t *testing.T) { // iterate over all of them itr := st.Iterator(nil, nil) - var i = 0 + i := 0 for ; itr.Valid(); itr.Next() { k, v := itr.Key(), itr.Value() require.Equal(t, keyFmt(i), k) @@ -380,7 +380,7 @@ func doRandomOp(t *testing.T, st types.CacheKVStore, truth dbm.DB, maxKey int) { // iterate over whole domain func assertIterateDomain(t *testing.T, st types.KVStore, expectedN int) { itr := st.Iterator(nil, nil) - var i = 0 + i := 0 for ; itr.Valid(); itr.Next() { k, v := itr.Key(), itr.Value() require.Equal(t, keyFmt(i), k) diff --git a/store/cachemulti/store.go b/store/cachemulti/store.go index 43bb40ae76cd..ce182119cbb9 100644 --- a/store/cachemulti/store.go +++ b/store/cachemulti/store.go @@ -61,7 +61,6 @@ func NewStore( db dbm.DB, stores map[types.StoreKey]types.CacheWrapper, keys map[string]types.StoreKey, traceWriter io.Writer, traceContext types.TraceContext, ) Store { - return NewFromKVStore(dbadapter.Store{DB: db}, stores, keys, traceWriter, traceContext) } diff --git a/store/cachemulti/store_test.go b/store/cachemulti/store_test.go index 8747df9ef966..ef5bd5eaebb3 100644 --- a/store/cachemulti/store_test.go +++ b/store/cachemulti/store_test.go @@ -4,8 +4,9 @@ import ( "fmt" "testing" - "github.com/cosmos/cosmos-sdk/store/types" "github.com/stretchr/testify/require" + + "github.com/cosmos/cosmos-sdk/store/types" ) func TestStoreGetKVStore(t *testing.T) { diff --git a/store/iavl/store_test.go b/store/iavl/store_test.go index 790830038ba9..46268d921986 100644 --- a/store/iavl/store_test.go +++ b/store/iavl/store_test.go @@ -282,7 +282,7 @@ func TestIAVLReverseIterator(t *testing.T) { iavlStore.Set([]byte{0x00, 0x02}, []byte("0 2")) iavlStore.Set([]byte{0x01}, []byte("1")) - var testReverseIterator = func(t *testing.T, start []byte, end []byte, expected []string) { + testReverseIterator := func(t *testing.T, start []byte, end []byte, expected []string) { iter := iavlStore.ReverseIterator(start, end) var i int for i = 0; iter.Valid(); iter.Next() { diff --git a/store/iavl/tree_test.go b/store/iavl/tree_test.go index 24332b42e06a..06f5d1530e7e 100644 --- a/store/iavl/tree_test.go +++ b/store/iavl/tree_test.go @@ -14,8 +14,8 @@ func TestImmutableTreePanics(t *testing.T) { it := &immutableTree{immTree} require.Panics(t, func() { it.Set([]byte{}, []byte{}) }) require.Panics(t, func() { it.Remove([]byte{}) }) - require.Panics(t, func() { it.SaveVersion() }) // nolint:errcheck - require.Panics(t, func() { it.DeleteVersion(int64(1)) }) // nolint:errcheck + require.Panics(t, func() { it.SaveVersion() }) //nolint:errcheck + require.Panics(t, func() { it.DeleteVersion(int64(1)) }) //nolint:errcheck v, _ := it.GetVersioned([]byte{0x01}, 1) require.Equal(t, int64(-1), v) v, _ = it.GetVersioned([]byte{0x01}, 0) diff --git a/store/internal/maps/maps_test.go b/store/internal/maps/maps_test.go index 8f6b1163eaec..ce7ad72e649d 100644 --- a/store/internal/maps/maps_test.go +++ b/store/internal/maps/maps_test.go @@ -12,6 +12,7 @@ func TestEmptyKeyMerkleMap(t *testing.T) { db := newMerkleMap() require.Panics(t, func() { db.set("", []byte("value")) }, "setting an empty key should panic") } + func TestMerkleMap(t *testing.T) { tests := []struct { keys []string @@ -59,6 +60,7 @@ func TestEmptyKeySimpleMap(t *testing.T) { db := newSimpleMap() require.Panics(t, func() { db.Set("", []byte("value")) }, "setting an empty key should panic") } + func TestSimpleMap(t *testing.T) { tests := []struct { keys []string diff --git a/store/mem/store.go b/store/mem/store.go index 66591b645f59..ef4e70089e56 100644 --- a/store/mem/store.go +++ b/store/mem/store.go @@ -26,7 +26,7 @@ func NewStore() *Store { return NewStoreWithDB(dbm.NewMemDB()) } -func NewStoreWithDB(db *dbm.MemDB) *Store { // nolint: interfacer +func NewStoreWithDB(db *dbm.MemDB) *Store { //nolint: interfacer return &Store{Store: dbadapter.Store{DB: db}} } diff --git a/store/rootmulti/store.go b/store/rootmulti/store.go index 536510914399..610285c91b30 100644 --- a/store/rootmulti/store.go +++ b/store/rootmulti/store.go @@ -184,7 +184,7 @@ func (rs *Store) loadVersion(ver int64, upgrades *types.StoreUpgrades) error { } // load each Store (note this doesn't panic on unmounted keys now) - var newStores = make(map[types.StoreKey]types.CommitKVStore) + newStores := make(map[types.StoreKey]types.CommitKVStore) for key, storeParams := range rs.storesParams { commitID := rs.getCommitID(infos, key.Name()) @@ -330,7 +330,6 @@ func (rs *Store) Commit() types.CommitID { // This case means that no commit has been made in the store, we // start from initialVersion. version = rs.initialVersion - } else { // This case can means two things: // - either there was already a previous commit in the store, in which diff --git a/store/rootmulti/store_test.go b/store/rootmulti/store_test.go index 4b4028c27237..81348022c0f8 100644 --- a/store/rootmulti/store_test.go +++ b/store/rootmulti/store_test.go @@ -309,7 +309,6 @@ func TestParsePath(t *testing.T) { require.NoError(t, err) require.Equal(t, substore, "bang") require.Equal(t, subsubpath, "/baz") - } func TestMultiStoreRestart(t *testing.T) { diff --git a/store/tracekv/store_test.go b/store/tracekv/store_test.go index e2c4e2a0fe5d..b7a3b13ea964 100644 --- a/store/tracekv/store_test.go +++ b/store/tracekv/store_test.go @@ -111,7 +111,6 @@ func TestTraceKVStoreSet(t *testing.T) { store := newEmptyTraceKVStore(&buf) require.Panics(t, func() { store.Set([]byte(""), []byte("value")) }, "setting an empty key should panic") require.Panics(t, func() { store.Set(nil, []byte("value")) }, "setting a nil key should panic") - } func TestTraceKVStoreDelete(t *testing.T) { @@ -286,6 +285,7 @@ func TestTraceKVStoreCacheWrap(t *testing.T) { store := newEmptyTraceKVStore(nil) require.Panics(t, func() { store.CacheWrap() }) } + func TestTraceKVStoreCacheWrapWithTrace(t *testing.T) { store := newEmptyTraceKVStore(nil) require.Panics(t, func() { store.CacheWrapWithTrace(nil, nil) }) diff --git a/store/transient/store.go b/store/transient/store.go index 572ab55f7697..2aac9743464e 100644 --- a/store/transient/store.go +++ b/store/transient/store.go @@ -7,8 +7,10 @@ import ( "github.com/cosmos/cosmos-sdk/store/types" ) -var _ types.Committer = (*Store)(nil) -var _ types.KVStore = (*Store)(nil) +var ( + _ types.Committer = (*Store)(nil) + _ types.KVStore = (*Store)(nil) +) // Store is a wrapper for a MemDB with Commiter implementation type Store struct { diff --git a/store/types/errors.go b/store/types/errors.go index 780fcdef37ab..f2f395aea806 100644 --- a/store/types/errors.go +++ b/store/types/errors.go @@ -6,6 +6,4 @@ import ( const StoreCodespace = "store" -var ( - ErrInvalidProof = sdkerrors.Register(StoreCodespace, 2, "invalid proof") -) +var ErrInvalidProof = sdkerrors.Register(StoreCodespace, 2, "invalid proof") diff --git a/store/types/iterator.go b/store/types/iterator.go index cfce4124e397..a328e87a68a6 100644 --- a/store/types/iterator.go +++ b/store/types/iterator.go @@ -34,7 +34,6 @@ type PaginatedIterator struct { page, limit uint // provided during initialization iterated uint // incremented in a call to Next - } func (pi *PaginatedIterator) skip() { diff --git a/store/types/store.go b/store/types/store.go index 8da2b26fd1f8..d8dcb54e2c2a 100644 --- a/store/types/store.go +++ b/store/types/store.go @@ -98,7 +98,6 @@ func (s *StoreUpgrades) RenamedFrom(key string) string { } } return "" - } type MultiStore interface { diff --git a/tests/mocks/account_retriever.go b/tests/mocks/account_retriever.go index 37fa1aa64da0..c75e1d059b05 100644 --- a/tests/mocks/account_retriever.go +++ b/tests/mocks/account_retriever.go @@ -5,79 +5,80 @@ package mocks import ( + reflect "reflect" + client "github.com/cosmos/cosmos-sdk/client" - cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" - types "github.com/cosmos/cosmos-sdk/types" + types "github.com/cosmos/cosmos-sdk/crypto/types" + types0 "github.com/cosmos/cosmos-sdk/types" gomock "github.com/golang/mock/gomock" - reflect "reflect" ) -// MockAccount is a mock of Account interface +// MockAccount is a mock of Account interface. type MockAccount struct { ctrl *gomock.Controller recorder *MockAccountMockRecorder } -// MockAccountMockRecorder is the mock recorder for MockAccount +// MockAccountMockRecorder is the mock recorder for MockAccount. type MockAccountMockRecorder struct { mock *MockAccount } -// NewMockAccount creates a new mock instance +// NewMockAccount creates a new mock instance. func NewMockAccount(ctrl *gomock.Controller) *MockAccount { mock := &MockAccount{ctrl: ctrl} mock.recorder = &MockAccountMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAccount) EXPECT() *MockAccountMockRecorder { return m.recorder } -// GetAddress mocks base method -func (m *MockAccount) GetAddress() types.AccAddress { +// GetAccountNumber mocks base method. +func (m *MockAccount) GetAccountNumber() uint64 { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetAddress") - ret0, _ := ret[0].(types.AccAddress) + ret := m.ctrl.Call(m, "GetAccountNumber") + ret0, _ := ret[0].(uint64) return ret0 } -// GetAddress indicates an expected call of GetAddress -func (mr *MockAccountMockRecorder) GetAddress() *gomock.Call { +// GetAccountNumber indicates an expected call of GetAccountNumber. +func (mr *MockAccountMockRecorder) GetAccountNumber() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAddress", reflect.TypeOf((*MockAccount)(nil).GetAddress)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAccountNumber", reflect.TypeOf((*MockAccount)(nil).GetAccountNumber)) } -// GetPubKey mocks base method -func (m *MockAccount) GetPubKey() cryptotypes.PubKey { +// GetAddress mocks base method. +func (m *MockAccount) GetAddress() types0.AccAddress { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPubKey") - ret0, _ := ret[0].(cryptotypes.PubKey) + ret := m.ctrl.Call(m, "GetAddress") + ret0, _ := ret[0].(types0.AccAddress) return ret0 } -// GetPubKey indicates an expected call of GetPubKey -func (mr *MockAccountMockRecorder) GetPubKey() *gomock.Call { +// GetAddress indicates an expected call of GetAddress. +func (mr *MockAccountMockRecorder) GetAddress() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPubKey", reflect.TypeOf((*MockAccount)(nil).GetPubKey)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAddress", reflect.TypeOf((*MockAccount)(nil).GetAddress)) } -// GetAccountNumber mocks base method -func (m *MockAccount) GetAccountNumber() uint64 { +// GetPubKey mocks base method. +func (m *MockAccount) GetPubKey() types.PubKey { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetAccountNumber") - ret0, _ := ret[0].(uint64) + ret := m.ctrl.Call(m, "GetPubKey") + ret0, _ := ret[0].(types.PubKey) return ret0 } -// GetAccountNumber indicates an expected call of GetAccountNumber -func (mr *MockAccountMockRecorder) GetAccountNumber() *gomock.Call { +// GetPubKey indicates an expected call of GetPubKey. +func (mr *MockAccountMockRecorder) GetPubKey() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAccountNumber", reflect.TypeOf((*MockAccount)(nil).GetAccountNumber)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPubKey", reflect.TypeOf((*MockAccount)(nil).GetPubKey)) } -// GetSequence mocks base method +// GetSequence mocks base method. func (m *MockAccount) GetSequence() uint64 { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetSequence") @@ -85,37 +86,51 @@ func (m *MockAccount) GetSequence() uint64 { return ret0 } -// GetSequence indicates an expected call of GetSequence +// GetSequence indicates an expected call of GetSequence. func (mr *MockAccountMockRecorder) GetSequence() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSequence", reflect.TypeOf((*MockAccount)(nil).GetSequence)) } -// MockAccountRetriever is a mock of AccountRetriever interface +// MockAccountRetriever is a mock of AccountRetriever interface. type MockAccountRetriever struct { ctrl *gomock.Controller recorder *MockAccountRetrieverMockRecorder } -// MockAccountRetrieverMockRecorder is the mock recorder for MockAccountRetriever +// MockAccountRetrieverMockRecorder is the mock recorder for MockAccountRetriever. type MockAccountRetrieverMockRecorder struct { mock *MockAccountRetriever } -// NewMockAccountRetriever creates a new mock instance +// NewMockAccountRetriever creates a new mock instance. func NewMockAccountRetriever(ctrl *gomock.Controller) *MockAccountRetriever { mock := &MockAccountRetriever{ctrl: ctrl} mock.recorder = &MockAccountRetrieverMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAccountRetriever) EXPECT() *MockAccountRetrieverMockRecorder { return m.recorder } -// GetAccount mocks base method -func (m *MockAccountRetriever) GetAccount(clientCtx client.Context, addr types.AccAddress) (client.Account, error) { +// EnsureExists mocks base method. +func (m *MockAccountRetriever) EnsureExists(clientCtx client.Context, addr types0.AccAddress) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "EnsureExists", clientCtx, addr) + ret0, _ := ret[0].(error) + return ret0 +} + +// EnsureExists indicates an expected call of EnsureExists. +func (mr *MockAccountRetrieverMockRecorder) EnsureExists(clientCtx, addr interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EnsureExists", reflect.TypeOf((*MockAccountRetriever)(nil).EnsureExists), clientCtx, addr) +} + +// GetAccount mocks base method. +func (m *MockAccountRetriever) GetAccount(clientCtx client.Context, addr types0.AccAddress) (client.Account, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetAccount", clientCtx, addr) ret0, _ := ret[0].(client.Account) @@ -123,54 +138,40 @@ func (m *MockAccountRetriever) GetAccount(clientCtx client.Context, addr types.A return ret0, ret1 } -// GetAccount indicates an expected call of GetAccount +// GetAccount indicates an expected call of GetAccount. func (mr *MockAccountRetrieverMockRecorder) GetAccount(clientCtx, addr interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAccount", reflect.TypeOf((*MockAccountRetriever)(nil).GetAccount), clientCtx, addr) } -// GetAccountWithHeight mocks base method -func (m *MockAccountRetriever) GetAccountWithHeight(clientCtx client.Context, addr types.AccAddress) (client.Account, int64, error) { +// GetAccountNumberSequence mocks base method. +func (m *MockAccountRetriever) GetAccountNumberSequence(clientCtx client.Context, addr types0.AccAddress) (uint64, uint64, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetAccountWithHeight", clientCtx, addr) - ret0, _ := ret[0].(client.Account) - ret1, _ := ret[1].(int64) + ret := m.ctrl.Call(m, "GetAccountNumberSequence", clientCtx, addr) + ret0, _ := ret[0].(uint64) + ret1, _ := ret[1].(uint64) ret2, _ := ret[2].(error) return ret0, ret1, ret2 } -// GetAccountWithHeight indicates an expected call of GetAccountWithHeight -func (mr *MockAccountRetrieverMockRecorder) GetAccountWithHeight(clientCtx, addr interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAccountWithHeight", reflect.TypeOf((*MockAccountRetriever)(nil).GetAccountWithHeight), clientCtx, addr) -} - -// EnsureExists mocks base method -func (m *MockAccountRetriever) EnsureExists(clientCtx client.Context, addr types.AccAddress) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "EnsureExists", clientCtx, addr) - ret0, _ := ret[0].(error) - return ret0 -} - -// EnsureExists indicates an expected call of EnsureExists -func (mr *MockAccountRetrieverMockRecorder) EnsureExists(clientCtx, addr interface{}) *gomock.Call { +// GetAccountNumberSequence indicates an expected call of GetAccountNumberSequence. +func (mr *MockAccountRetrieverMockRecorder) GetAccountNumberSequence(clientCtx, addr interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EnsureExists", reflect.TypeOf((*MockAccountRetriever)(nil).EnsureExists), clientCtx, addr) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAccountNumberSequence", reflect.TypeOf((*MockAccountRetriever)(nil).GetAccountNumberSequence), clientCtx, addr) } -// GetAccountNumberSequence mocks base method -func (m *MockAccountRetriever) GetAccountNumberSequence(clientCtx client.Context, addr types.AccAddress) (uint64, uint64, error) { +// GetAccountWithHeight mocks base method. +func (m *MockAccountRetriever) GetAccountWithHeight(clientCtx client.Context, addr types0.AccAddress) (client.Account, int64, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetAccountNumberSequence", clientCtx, addr) - ret0, _ := ret[0].(uint64) - ret1, _ := ret[1].(uint64) + ret := m.ctrl.Call(m, "GetAccountWithHeight", clientCtx, addr) + ret0, _ := ret[0].(client.Account) + ret1, _ := ret[1].(int64) ret2, _ := ret[2].(error) return ret0, ret1, ret2 } -// GetAccountNumberSequence indicates an expected call of GetAccountNumberSequence -func (mr *MockAccountRetrieverMockRecorder) GetAccountNumberSequence(clientCtx, addr interface{}) *gomock.Call { +// GetAccountWithHeight indicates an expected call of GetAccountWithHeight. +func (mr *MockAccountRetrieverMockRecorder) GetAccountWithHeight(clientCtx, addr interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAccountNumberSequence", reflect.TypeOf((*MockAccountRetriever)(nil).GetAccountNumberSequence), clientCtx, addr) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAccountWithHeight", reflect.TypeOf((*MockAccountRetriever)(nil).GetAccountWithHeight), clientCtx, addr) } diff --git a/tests/mocks/grpc_server.go b/tests/mocks/grpc_server.go index 91fedb7ae560..df4372c4bc9a 100644 --- a/tests/mocks/grpc_server.go +++ b/tests/mocks/grpc_server.go @@ -5,41 +5,42 @@ package mocks import ( + reflect "reflect" + gomock "github.com/golang/mock/gomock" grpc "google.golang.org/grpc" - reflect "reflect" ) -// MockServer is a mock of Server interface +// MockServer is a mock of Server interface. type MockServer struct { ctrl *gomock.Controller recorder *MockServerMockRecorder } -// MockServerMockRecorder is the mock recorder for MockServer +// MockServerMockRecorder is the mock recorder for MockServer. type MockServerMockRecorder struct { mock *MockServer } -// NewMockServer creates a new mock instance +// NewMockServer creates a new mock instance. func NewMockServer(ctrl *gomock.Controller) *MockServer { mock := &MockServer{ctrl: ctrl} mock.recorder = &MockServerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockServer) EXPECT() *MockServerMockRecorder { return m.recorder } -// RegisterService mocks base method +// RegisterService mocks base method. func (m *MockServer) RegisterService(arg0 *grpc.ServiceDesc, arg1 interface{}) { m.ctrl.T.Helper() m.ctrl.Call(m, "RegisterService", arg0, arg1) } -// RegisterService indicates an expected call of RegisterService +// RegisterService indicates an expected call of RegisterService. func (mr *MockServerMockRecorder) RegisterService(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterService", reflect.TypeOf((*MockServer)(nil).RegisterService), arg0, arg1) diff --git a/tests/mocks/tendermint_tendermint_libs_log_DB.go b/tests/mocks/tendermint_tendermint_libs_log_DB.go index 454fd9c7600d..929ab059b563 100644 --- a/tests/mocks/tendermint_tendermint_libs_log_DB.go +++ b/tests/mocks/tendermint_tendermint_libs_log_DB.go @@ -5,35 +5,36 @@ package mocks import ( + reflect "reflect" + gomock "github.com/golang/mock/gomock" log "github.com/tendermint/tendermint/libs/log" - reflect "reflect" ) -// MockLogger is a mock of Logger interface +// MockLogger is a mock of Logger interface. type MockLogger struct { ctrl *gomock.Controller recorder *MockLoggerMockRecorder } -// MockLoggerMockRecorder is the mock recorder for MockLogger +// MockLoggerMockRecorder is the mock recorder for MockLogger. type MockLoggerMockRecorder struct { mock *MockLogger } -// NewMockLogger creates a new mock instance +// NewMockLogger creates a new mock instance. func NewMockLogger(ctrl *gomock.Controller) *MockLogger { mock := &MockLogger{ctrl: ctrl} mock.recorder = &MockLoggerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockLogger) EXPECT() *MockLoggerMockRecorder { return m.recorder } -// Debug mocks base method +// Debug mocks base method. func (m *MockLogger) Debug(arg0 string, arg1 ...interface{}) { m.ctrl.T.Helper() varargs := []interface{}{arg0} @@ -43,14 +44,14 @@ func (m *MockLogger) Debug(arg0 string, arg1 ...interface{}) { m.ctrl.Call(m, "Debug", varargs...) } -// Debug indicates an expected call of Debug +// Debug indicates an expected call of Debug. func (mr *MockLoggerMockRecorder) Debug(arg0 interface{}, arg1 ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0}, arg1...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Debug", reflect.TypeOf((*MockLogger)(nil).Debug), varargs...) } -// Error mocks base method +// Error mocks base method. func (m *MockLogger) Error(arg0 string, arg1 ...interface{}) { m.ctrl.T.Helper() varargs := []interface{}{arg0} @@ -60,14 +61,14 @@ func (m *MockLogger) Error(arg0 string, arg1 ...interface{}) { m.ctrl.Call(m, "Error", varargs...) } -// Error indicates an expected call of Error +// Error indicates an expected call of Error. func (mr *MockLoggerMockRecorder) Error(arg0 interface{}, arg1 ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0}, arg1...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Error", reflect.TypeOf((*MockLogger)(nil).Error), varargs...) } -// Info mocks base method +// Info mocks base method. func (m *MockLogger) Info(arg0 string, arg1 ...interface{}) { m.ctrl.T.Helper() varargs := []interface{}{arg0} @@ -77,14 +78,14 @@ func (m *MockLogger) Info(arg0 string, arg1 ...interface{}) { m.ctrl.Call(m, "Info", varargs...) } -// Info indicates an expected call of Info +// Info indicates an expected call of Info. func (mr *MockLoggerMockRecorder) Info(arg0 interface{}, arg1 ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0}, arg1...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Info", reflect.TypeOf((*MockLogger)(nil).Info), varargs...) } -// With mocks base method +// With mocks base method. func (m *MockLogger) With(arg0 ...interface{}) log.Logger { m.ctrl.T.Helper() varargs := []interface{}{} @@ -96,7 +97,7 @@ func (m *MockLogger) With(arg0 ...interface{}) log.Logger { return ret0 } -// With indicates an expected call of With +// With indicates an expected call of With. func (mr *MockLoggerMockRecorder) With(arg0 ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "With", reflect.TypeOf((*MockLogger)(nil).With), arg0...) diff --git a/tests/mocks/tendermint_tm_db_DB.go b/tests/mocks/tendermint_tm_db_DB.go index cdf5e5ab0a27..db0e7b0aee76 100644 --- a/tests/mocks/tendermint_tm_db_DB.go +++ b/tests/mocks/tendermint_tm_db_DB.go @@ -5,35 +5,36 @@ package mocks import ( + reflect "reflect" + gomock "github.com/golang/mock/gomock" db "github.com/tendermint/tm-db" - reflect "reflect" ) -// MockDB is a mock of DB interface +// MockDB is a mock of DB interface. type MockDB struct { ctrl *gomock.Controller recorder *MockDBMockRecorder } -// MockDBMockRecorder is the mock recorder for MockDB +// MockDBMockRecorder is the mock recorder for MockDB. type MockDBMockRecorder struct { mock *MockDB } -// NewMockDB creates a new mock instance +// NewMockDB creates a new mock instance. func NewMockDB(ctrl *gomock.Controller) *MockDB { mock := &MockDB{ctrl: ctrl} mock.recorder = &MockDBMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockDB) EXPECT() *MockDBMockRecorder { return m.recorder } -// Close mocks base method +// Close mocks base method. func (m *MockDB) Close() error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Close") @@ -41,13 +42,13 @@ func (m *MockDB) Close() error { return ret0 } -// Close indicates an expected call of Close +// Close indicates an expected call of Close. func (mr *MockDBMockRecorder) Close() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Close", reflect.TypeOf((*MockDB)(nil).Close)) } -// Delete mocks base method +// Delete mocks base method. func (m *MockDB) Delete(arg0 []byte) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Delete", arg0) @@ -55,13 +56,13 @@ func (m *MockDB) Delete(arg0 []byte) error { return ret0 } -// Delete indicates an expected call of Delete +// Delete indicates an expected call of Delete. func (mr *MockDBMockRecorder) Delete(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockDB)(nil).Delete), arg0) } -// DeleteSync mocks base method +// DeleteSync mocks base method. func (m *MockDB) DeleteSync(arg0 []byte) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "DeleteSync", arg0) @@ -69,13 +70,13 @@ func (m *MockDB) DeleteSync(arg0 []byte) error { return ret0 } -// DeleteSync indicates an expected call of DeleteSync +// DeleteSync indicates an expected call of DeleteSync. func (mr *MockDBMockRecorder) DeleteSync(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSync", reflect.TypeOf((*MockDB)(nil).DeleteSync), arg0) } -// Get mocks base method +// Get mocks base method. func (m *MockDB) Get(arg0 []byte) ([]byte, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Get", arg0) @@ -84,13 +85,13 @@ func (m *MockDB) Get(arg0 []byte) ([]byte, error) { return ret0, ret1 } -// Get indicates an expected call of Get +// Get indicates an expected call of Get. func (mr *MockDBMockRecorder) Get(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockDB)(nil).Get), arg0) } -// Has mocks base method +// Has mocks base method. func (m *MockDB) Has(arg0 []byte) (bool, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Has", arg0) @@ -99,13 +100,13 @@ func (m *MockDB) Has(arg0 []byte) (bool, error) { return ret0, ret1 } -// Has indicates an expected call of Has +// Has indicates an expected call of Has. func (mr *MockDBMockRecorder) Has(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockDB)(nil).Has), arg0) } -// Iterator mocks base method +// Iterator mocks base method. func (m *MockDB) Iterator(arg0, arg1 []byte) (db.Iterator, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Iterator", arg0, arg1) @@ -114,13 +115,13 @@ func (m *MockDB) Iterator(arg0, arg1 []byte) (db.Iterator, error) { return ret0, ret1 } -// Iterator indicates an expected call of Iterator +// Iterator indicates an expected call of Iterator. func (mr *MockDBMockRecorder) Iterator(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Iterator", reflect.TypeOf((*MockDB)(nil).Iterator), arg0, arg1) } -// NewBatch mocks base method +// NewBatch mocks base method. func (m *MockDB) NewBatch() db.Batch { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "NewBatch") @@ -128,13 +129,13 @@ func (m *MockDB) NewBatch() db.Batch { return ret0 } -// NewBatch indicates an expected call of NewBatch +// NewBatch indicates an expected call of NewBatch. func (mr *MockDBMockRecorder) NewBatch() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewBatch", reflect.TypeOf((*MockDB)(nil).NewBatch)) } -// Print mocks base method +// Print mocks base method. func (m *MockDB) Print() error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Print") @@ -142,13 +143,13 @@ func (m *MockDB) Print() error { return ret0 } -// Print indicates an expected call of Print +// Print indicates an expected call of Print. func (mr *MockDBMockRecorder) Print() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Print", reflect.TypeOf((*MockDB)(nil).Print)) } -// ReverseIterator mocks base method +// ReverseIterator mocks base method. func (m *MockDB) ReverseIterator(arg0, arg1 []byte) (db.Iterator, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ReverseIterator", arg0, arg1) @@ -157,13 +158,13 @@ func (m *MockDB) ReverseIterator(arg0, arg1 []byte) (db.Iterator, error) { return ret0, ret1 } -// ReverseIterator indicates an expected call of ReverseIterator +// ReverseIterator indicates an expected call of ReverseIterator. func (mr *MockDBMockRecorder) ReverseIterator(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReverseIterator", reflect.TypeOf((*MockDB)(nil).ReverseIterator), arg0, arg1) } -// Set mocks base method +// Set mocks base method. func (m *MockDB) Set(arg0, arg1 []byte) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Set", arg0, arg1) @@ -171,13 +172,13 @@ func (m *MockDB) Set(arg0, arg1 []byte) error { return ret0 } -// Set indicates an expected call of Set +// Set indicates an expected call of Set. func (mr *MockDBMockRecorder) Set(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Set", reflect.TypeOf((*MockDB)(nil).Set), arg0, arg1) } -// SetSync mocks base method +// SetSync mocks base method. func (m *MockDB) SetSync(arg0, arg1 []byte) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SetSync", arg0, arg1) @@ -185,13 +186,13 @@ func (m *MockDB) SetSync(arg0, arg1 []byte) error { return ret0 } -// SetSync indicates an expected call of SetSync +// SetSync indicates an expected call of SetSync. func (mr *MockDBMockRecorder) SetSync(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetSync", reflect.TypeOf((*MockDB)(nil).SetSync), arg0, arg1) } -// Stats mocks base method +// Stats mocks base method. func (m *MockDB) Stats() map[string]string { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Stats") @@ -199,7 +200,7 @@ func (m *MockDB) Stats() map[string]string { return ret0 } -// Stats indicates an expected call of Stats +// Stats indicates an expected call of Stats. func (mr *MockDBMockRecorder) Stats() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Stats", reflect.TypeOf((*MockDB)(nil).Stats)) diff --git a/tests/mocks/types_handler.go b/tests/mocks/types_handler.go index da80614ae884..94b9e3f95ef0 100644 --- a/tests/mocks/types_handler.go +++ b/tests/mocks/types_handler.go @@ -5,35 +5,36 @@ package mocks import ( + reflect "reflect" + types "github.com/cosmos/cosmos-sdk/types" gomock "github.com/golang/mock/gomock" - reflect "reflect" ) -// MockAnteDecorator is a mock of AnteDecorator interface +// MockAnteDecorator is a mock of AnteDecorator interface. type MockAnteDecorator struct { ctrl *gomock.Controller recorder *MockAnteDecoratorMockRecorder } -// MockAnteDecoratorMockRecorder is the mock recorder for MockAnteDecorator +// MockAnteDecoratorMockRecorder is the mock recorder for MockAnteDecorator. type MockAnteDecoratorMockRecorder struct { mock *MockAnteDecorator } -// NewMockAnteDecorator creates a new mock instance +// NewMockAnteDecorator creates a new mock instance. func NewMockAnteDecorator(ctrl *gomock.Controller) *MockAnteDecorator { mock := &MockAnteDecorator{ctrl: ctrl} mock.recorder = &MockAnteDecoratorMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAnteDecorator) EXPECT() *MockAnteDecoratorMockRecorder { return m.recorder } -// AnteHandle mocks base method +// AnteHandle mocks base method. func (m *MockAnteDecorator) AnteHandle(ctx types.Context, tx types.Tx, simulate bool, next types.AnteHandler) (types.Context, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "AnteHandle", ctx, tx, simulate, next) @@ -42,7 +43,7 @@ func (m *MockAnteDecorator) AnteHandle(ctx types.Context, tx types.Tx, simulate return ret0, ret1 } -// AnteHandle indicates an expected call of AnteHandle +// AnteHandle indicates an expected call of AnteHandle. func (mr *MockAnteDecoratorMockRecorder) AnteHandle(ctx, tx, simulate, next interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AnteHandle", reflect.TypeOf((*MockAnteDecorator)(nil).AnteHandle), ctx, tx, simulate, next) diff --git a/tests/mocks/types_invariant.go b/tests/mocks/types_invariant.go index 325b108b20bb..c6b9fe94d113 100644 --- a/tests/mocks/types_invariant.go +++ b/tests/mocks/types_invariant.go @@ -5,41 +5,42 @@ package mocks import ( + reflect "reflect" + types "github.com/cosmos/cosmos-sdk/types" gomock "github.com/golang/mock/gomock" - reflect "reflect" ) -// MockInvariantRegistry is a mock of InvariantRegistry interface +// MockInvariantRegistry is a mock of InvariantRegistry interface. type MockInvariantRegistry struct { ctrl *gomock.Controller recorder *MockInvariantRegistryMockRecorder } -// MockInvariantRegistryMockRecorder is the mock recorder for MockInvariantRegistry +// MockInvariantRegistryMockRecorder is the mock recorder for MockInvariantRegistry. type MockInvariantRegistryMockRecorder struct { mock *MockInvariantRegistry } -// NewMockInvariantRegistry creates a new mock instance +// NewMockInvariantRegistry creates a new mock instance. func NewMockInvariantRegistry(ctrl *gomock.Controller) *MockInvariantRegistry { mock := &MockInvariantRegistry{ctrl: ctrl} mock.recorder = &MockInvariantRegistryMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockInvariantRegistry) EXPECT() *MockInvariantRegistryMockRecorder { return m.recorder } -// RegisterRoute mocks base method +// RegisterRoute mocks base method. func (m *MockInvariantRegistry) RegisterRoute(moduleName, route string, invar types.Invariant) { m.ctrl.T.Helper() m.ctrl.Call(m, "RegisterRoute", moduleName, route, invar) } -// RegisterRoute indicates an expected call of RegisterRoute +// RegisterRoute indicates an expected call of RegisterRoute. func (mr *MockInvariantRegistryMockRecorder) RegisterRoute(moduleName, route, invar interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterRoute", reflect.TypeOf((*MockInvariantRegistry)(nil).RegisterRoute), moduleName, route, invar) diff --git a/tests/mocks/types_module_module.go b/tests/mocks/types_module_module.go index 41ded4d7a2c0..f0f7592b41b0 100644 --- a/tests/mocks/types_module_module.go +++ b/tests/mocks/types_module_module.go @@ -6,6 +6,8 @@ package mocks import ( json "encoding/json" + reflect "reflect" + client "github.com/cosmos/cosmos-sdk/client" codec "github.com/cosmos/cosmos-sdk/codec" types "github.com/cosmos/cosmos-sdk/codec/types" @@ -16,576 +18,575 @@ import ( runtime "github.com/grpc-ecosystem/grpc-gateway/runtime" cobra "github.com/spf13/cobra" types1 "github.com/tendermint/tendermint/abci/types" - reflect "reflect" ) -// MockAppModuleBasic is a mock of AppModuleBasic interface +// MockAppModuleBasic is a mock of AppModuleBasic interface. type MockAppModuleBasic struct { ctrl *gomock.Controller recorder *MockAppModuleBasicMockRecorder } -// MockAppModuleBasicMockRecorder is the mock recorder for MockAppModuleBasic +// MockAppModuleBasicMockRecorder is the mock recorder for MockAppModuleBasic. type MockAppModuleBasicMockRecorder struct { mock *MockAppModuleBasic } -// NewMockAppModuleBasic creates a new mock instance +// NewMockAppModuleBasic creates a new mock instance. func NewMockAppModuleBasic(ctrl *gomock.Controller) *MockAppModuleBasic { mock := &MockAppModuleBasic{ctrl: ctrl} mock.recorder = &MockAppModuleBasicMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAppModuleBasic) EXPECT() *MockAppModuleBasicMockRecorder { return m.recorder } -// Name mocks base method -func (m *MockAppModuleBasic) Name() string { +// DefaultGenesis mocks base method. +func (m *MockAppModuleBasic) DefaultGenesis(arg0 codec.JSONMarshaler) json.RawMessage { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Name") - ret0, _ := ret[0].(string) + ret := m.ctrl.Call(m, "DefaultGenesis", arg0) + ret0, _ := ret[0].(json.RawMessage) return ret0 } -// Name indicates an expected call of Name -func (mr *MockAppModuleBasicMockRecorder) Name() *gomock.Call { +// DefaultGenesis indicates an expected call of DefaultGenesis. +func (mr *MockAppModuleBasicMockRecorder) DefaultGenesis(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockAppModuleBasic)(nil).Name)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DefaultGenesis", reflect.TypeOf((*MockAppModuleBasic)(nil).DefaultGenesis), arg0) } -// RegisterLegacyAminoCodec mocks base method -func (m *MockAppModuleBasic) RegisterLegacyAminoCodec(arg0 *codec.LegacyAmino) { +// GetQueryCmd mocks base method. +func (m *MockAppModuleBasic) GetQueryCmd() *cobra.Command { m.ctrl.T.Helper() - m.ctrl.Call(m, "RegisterLegacyAminoCodec", arg0) + ret := m.ctrl.Call(m, "GetQueryCmd") + ret0, _ := ret[0].(*cobra.Command) + return ret0 } -// RegisterLegacyAminoCodec indicates an expected call of RegisterLegacyAminoCodec -func (mr *MockAppModuleBasicMockRecorder) RegisterLegacyAminoCodec(arg0 interface{}) *gomock.Call { +// GetQueryCmd indicates an expected call of GetQueryCmd. +func (mr *MockAppModuleBasicMockRecorder) GetQueryCmd() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterLegacyAminoCodec", reflect.TypeOf((*MockAppModuleBasic)(nil).RegisterLegacyAminoCodec), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetQueryCmd", reflect.TypeOf((*MockAppModuleBasic)(nil).GetQueryCmd)) } -// RegisterInterfaces mocks base method -func (m *MockAppModuleBasic) RegisterInterfaces(arg0 types.InterfaceRegistry) { +// GetTxCmd mocks base method. +func (m *MockAppModuleBasic) GetTxCmd() *cobra.Command { m.ctrl.T.Helper() - m.ctrl.Call(m, "RegisterInterfaces", arg0) + ret := m.ctrl.Call(m, "GetTxCmd") + ret0, _ := ret[0].(*cobra.Command) + return ret0 } -// RegisterInterfaces indicates an expected call of RegisterInterfaces -func (mr *MockAppModuleBasicMockRecorder) RegisterInterfaces(arg0 interface{}) *gomock.Call { +// GetTxCmd indicates an expected call of GetTxCmd. +func (mr *MockAppModuleBasicMockRecorder) GetTxCmd() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterInterfaces", reflect.TypeOf((*MockAppModuleBasic)(nil).RegisterInterfaces), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTxCmd", reflect.TypeOf((*MockAppModuleBasic)(nil).GetTxCmd)) } -// DefaultGenesis mocks base method -func (m *MockAppModuleBasic) DefaultGenesis(arg0 codec.JSONMarshaler) json.RawMessage { +// Name mocks base method. +func (m *MockAppModuleBasic) Name() string { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DefaultGenesis", arg0) - ret0, _ := ret[0].(json.RawMessage) + ret := m.ctrl.Call(m, "Name") + ret0, _ := ret[0].(string) return ret0 } -// DefaultGenesis indicates an expected call of DefaultGenesis -func (mr *MockAppModuleBasicMockRecorder) DefaultGenesis(arg0 interface{}) *gomock.Call { +// Name indicates an expected call of Name. +func (mr *MockAppModuleBasicMockRecorder) Name() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DefaultGenesis", reflect.TypeOf((*MockAppModuleBasic)(nil).DefaultGenesis), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockAppModuleBasic)(nil).Name)) } -// ValidateGenesis mocks base method -func (m *MockAppModuleBasic) ValidateGenesis(arg0 codec.JSONMarshaler, arg1 client.TxEncodingConfig, arg2 json.RawMessage) error { +// RegisterGRPCGatewayRoutes mocks base method. +func (m *MockAppModuleBasic) RegisterGRPCGatewayRoutes(arg0 client.Context, arg1 *runtime.ServeMux) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ValidateGenesis", arg0, arg1, arg2) - ret0, _ := ret[0].(error) - return ret0 + m.ctrl.Call(m, "RegisterGRPCGatewayRoutes", arg0, arg1) } -// ValidateGenesis indicates an expected call of ValidateGenesis -func (mr *MockAppModuleBasicMockRecorder) ValidateGenesis(arg0, arg1, arg2 interface{}) *gomock.Call { +// RegisterGRPCGatewayRoutes indicates an expected call of RegisterGRPCGatewayRoutes. +func (mr *MockAppModuleBasicMockRecorder) RegisterGRPCGatewayRoutes(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateGenesis", reflect.TypeOf((*MockAppModuleBasic)(nil).ValidateGenesis), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterGRPCGatewayRoutes", reflect.TypeOf((*MockAppModuleBasic)(nil).RegisterGRPCGatewayRoutes), arg0, arg1) } -// RegisterRESTRoutes mocks base method -func (m *MockAppModuleBasic) RegisterRESTRoutes(arg0 client.Context, arg1 *mux.Router) { +// RegisterInterfaces mocks base method. +func (m *MockAppModuleBasic) RegisterInterfaces(arg0 types.InterfaceRegistry) { m.ctrl.T.Helper() - m.ctrl.Call(m, "RegisterRESTRoutes", arg0, arg1) + m.ctrl.Call(m, "RegisterInterfaces", arg0) } -// RegisterRESTRoutes indicates an expected call of RegisterRESTRoutes -func (mr *MockAppModuleBasicMockRecorder) RegisterRESTRoutes(arg0, arg1 interface{}) *gomock.Call { +// RegisterInterfaces indicates an expected call of RegisterInterfaces. +func (mr *MockAppModuleBasicMockRecorder) RegisterInterfaces(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterRESTRoutes", reflect.TypeOf((*MockAppModuleBasic)(nil).RegisterRESTRoutes), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterInterfaces", reflect.TypeOf((*MockAppModuleBasic)(nil).RegisterInterfaces), arg0) } -// RegisterGRPCGatewayRoutes mocks base method -func (m *MockAppModuleBasic) RegisterGRPCGatewayRoutes(arg0 client.Context, arg1 *runtime.ServeMux) { +// RegisterLegacyAminoCodec mocks base method. +func (m *MockAppModuleBasic) RegisterLegacyAminoCodec(arg0 *codec.LegacyAmino) { m.ctrl.T.Helper() - m.ctrl.Call(m, "RegisterGRPCGatewayRoutes", arg0, arg1) + m.ctrl.Call(m, "RegisterLegacyAminoCodec", arg0) } -// RegisterGRPCGatewayRoutes indicates an expected call of RegisterGRPCGatewayRoutes -func (mr *MockAppModuleBasicMockRecorder) RegisterGRPCGatewayRoutes(arg0, arg1 interface{}) *gomock.Call { +// RegisterLegacyAminoCodec indicates an expected call of RegisterLegacyAminoCodec. +func (mr *MockAppModuleBasicMockRecorder) RegisterLegacyAminoCodec(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterGRPCGatewayRoutes", reflect.TypeOf((*MockAppModuleBasic)(nil).RegisterGRPCGatewayRoutes), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterLegacyAminoCodec", reflect.TypeOf((*MockAppModuleBasic)(nil).RegisterLegacyAminoCodec), arg0) } -// GetTxCmd mocks base method -func (m *MockAppModuleBasic) GetTxCmd() *cobra.Command { +// RegisterRESTRoutes mocks base method. +func (m *MockAppModuleBasic) RegisterRESTRoutes(arg0 client.Context, arg1 *mux.Router) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetTxCmd") - ret0, _ := ret[0].(*cobra.Command) - return ret0 + m.ctrl.Call(m, "RegisterRESTRoutes", arg0, arg1) } -// GetTxCmd indicates an expected call of GetTxCmd -func (mr *MockAppModuleBasicMockRecorder) GetTxCmd() *gomock.Call { +// RegisterRESTRoutes indicates an expected call of RegisterRESTRoutes. +func (mr *MockAppModuleBasicMockRecorder) RegisterRESTRoutes(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTxCmd", reflect.TypeOf((*MockAppModuleBasic)(nil).GetTxCmd)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterRESTRoutes", reflect.TypeOf((*MockAppModuleBasic)(nil).RegisterRESTRoutes), arg0, arg1) } -// GetQueryCmd mocks base method -func (m *MockAppModuleBasic) GetQueryCmd() *cobra.Command { +// ValidateGenesis mocks base method. +func (m *MockAppModuleBasic) ValidateGenesis(arg0 codec.JSONMarshaler, arg1 client.TxEncodingConfig, arg2 json.RawMessage) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetQueryCmd") - ret0, _ := ret[0].(*cobra.Command) + ret := m.ctrl.Call(m, "ValidateGenesis", arg0, arg1, arg2) + ret0, _ := ret[0].(error) return ret0 } -// GetQueryCmd indicates an expected call of GetQueryCmd -func (mr *MockAppModuleBasicMockRecorder) GetQueryCmd() *gomock.Call { +// ValidateGenesis indicates an expected call of ValidateGenesis. +func (mr *MockAppModuleBasicMockRecorder) ValidateGenesis(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetQueryCmd", reflect.TypeOf((*MockAppModuleBasic)(nil).GetQueryCmd)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateGenesis", reflect.TypeOf((*MockAppModuleBasic)(nil).ValidateGenesis), arg0, arg1, arg2) } -// MockAppModuleGenesis is a mock of AppModuleGenesis interface +// MockAppModuleGenesis is a mock of AppModuleGenesis interface. type MockAppModuleGenesis struct { ctrl *gomock.Controller recorder *MockAppModuleGenesisMockRecorder } -// MockAppModuleGenesisMockRecorder is the mock recorder for MockAppModuleGenesis +// MockAppModuleGenesisMockRecorder is the mock recorder for MockAppModuleGenesis. type MockAppModuleGenesisMockRecorder struct { mock *MockAppModuleGenesis } -// NewMockAppModuleGenesis creates a new mock instance +// NewMockAppModuleGenesis creates a new mock instance. func NewMockAppModuleGenesis(ctrl *gomock.Controller) *MockAppModuleGenesis { mock := &MockAppModuleGenesis{ctrl: ctrl} mock.recorder = &MockAppModuleGenesisMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAppModuleGenesis) EXPECT() *MockAppModuleGenesisMockRecorder { return m.recorder } -// Name mocks base method -func (m *MockAppModuleGenesis) Name() string { +// DefaultGenesis mocks base method. +func (m *MockAppModuleGenesis) DefaultGenesis(arg0 codec.JSONMarshaler) json.RawMessage { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Name") - ret0, _ := ret[0].(string) + ret := m.ctrl.Call(m, "DefaultGenesis", arg0) + ret0, _ := ret[0].(json.RawMessage) return ret0 } -// Name indicates an expected call of Name -func (mr *MockAppModuleGenesisMockRecorder) Name() *gomock.Call { +// DefaultGenesis indicates an expected call of DefaultGenesis. +func (mr *MockAppModuleGenesisMockRecorder) DefaultGenesis(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockAppModuleGenesis)(nil).Name)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DefaultGenesis", reflect.TypeOf((*MockAppModuleGenesis)(nil).DefaultGenesis), arg0) } -// RegisterLegacyAminoCodec mocks base method -func (m *MockAppModuleGenesis) RegisterLegacyAminoCodec(arg0 *codec.LegacyAmino) { +// ExportGenesis mocks base method. +func (m *MockAppModuleGenesis) ExportGenesis(arg0 types0.Context, arg1 codec.JSONMarshaler) json.RawMessage { m.ctrl.T.Helper() - m.ctrl.Call(m, "RegisterLegacyAminoCodec", arg0) + ret := m.ctrl.Call(m, "ExportGenesis", arg0, arg1) + ret0, _ := ret[0].(json.RawMessage) + return ret0 } -// RegisterLegacyAminoCodec indicates an expected call of RegisterLegacyAminoCodec -func (mr *MockAppModuleGenesisMockRecorder) RegisterLegacyAminoCodec(arg0 interface{}) *gomock.Call { +// ExportGenesis indicates an expected call of ExportGenesis. +func (mr *MockAppModuleGenesisMockRecorder) ExportGenesis(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterLegacyAminoCodec", reflect.TypeOf((*MockAppModuleGenesis)(nil).RegisterLegacyAminoCodec), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExportGenesis", reflect.TypeOf((*MockAppModuleGenesis)(nil).ExportGenesis), arg0, arg1) } -// RegisterInterfaces mocks base method -func (m *MockAppModuleGenesis) RegisterInterfaces(arg0 types.InterfaceRegistry) { +// GetQueryCmd mocks base method. +func (m *MockAppModuleGenesis) GetQueryCmd() *cobra.Command { m.ctrl.T.Helper() - m.ctrl.Call(m, "RegisterInterfaces", arg0) + ret := m.ctrl.Call(m, "GetQueryCmd") + ret0, _ := ret[0].(*cobra.Command) + return ret0 } -// RegisterInterfaces indicates an expected call of RegisterInterfaces -func (mr *MockAppModuleGenesisMockRecorder) RegisterInterfaces(arg0 interface{}) *gomock.Call { +// GetQueryCmd indicates an expected call of GetQueryCmd. +func (mr *MockAppModuleGenesisMockRecorder) GetQueryCmd() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterInterfaces", reflect.TypeOf((*MockAppModuleGenesis)(nil).RegisterInterfaces), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetQueryCmd", reflect.TypeOf((*MockAppModuleGenesis)(nil).GetQueryCmd)) } -// DefaultGenesis mocks base method -func (m *MockAppModuleGenesis) DefaultGenesis(arg0 codec.JSONMarshaler) json.RawMessage { +// GetTxCmd mocks base method. +func (m *MockAppModuleGenesis) GetTxCmd() *cobra.Command { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DefaultGenesis", arg0) - ret0, _ := ret[0].(json.RawMessage) + ret := m.ctrl.Call(m, "GetTxCmd") + ret0, _ := ret[0].(*cobra.Command) return ret0 } -// DefaultGenesis indicates an expected call of DefaultGenesis -func (mr *MockAppModuleGenesisMockRecorder) DefaultGenesis(arg0 interface{}) *gomock.Call { +// GetTxCmd indicates an expected call of GetTxCmd. +func (mr *MockAppModuleGenesisMockRecorder) GetTxCmd() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DefaultGenesis", reflect.TypeOf((*MockAppModuleGenesis)(nil).DefaultGenesis), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTxCmd", reflect.TypeOf((*MockAppModuleGenesis)(nil).GetTxCmd)) } -// ValidateGenesis mocks base method -func (m *MockAppModuleGenesis) ValidateGenesis(arg0 codec.JSONMarshaler, arg1 client.TxEncodingConfig, arg2 json.RawMessage) error { +// InitGenesis mocks base method. +func (m *MockAppModuleGenesis) InitGenesis(arg0 types0.Context, arg1 codec.JSONMarshaler, arg2 json.RawMessage) []types1.ValidatorUpdate { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ValidateGenesis", arg0, arg1, arg2) - ret0, _ := ret[0].(error) + ret := m.ctrl.Call(m, "InitGenesis", arg0, arg1, arg2) + ret0, _ := ret[0].([]types1.ValidatorUpdate) return ret0 } -// ValidateGenesis indicates an expected call of ValidateGenesis -func (mr *MockAppModuleGenesisMockRecorder) ValidateGenesis(arg0, arg1, arg2 interface{}) *gomock.Call { +// InitGenesis indicates an expected call of InitGenesis. +func (mr *MockAppModuleGenesisMockRecorder) InitGenesis(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateGenesis", reflect.TypeOf((*MockAppModuleGenesis)(nil).ValidateGenesis), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InitGenesis", reflect.TypeOf((*MockAppModuleGenesis)(nil).InitGenesis), arg0, arg1, arg2) } -// RegisterRESTRoutes mocks base method -func (m *MockAppModuleGenesis) RegisterRESTRoutes(arg0 client.Context, arg1 *mux.Router) { +// Name mocks base method. +func (m *MockAppModuleGenesis) Name() string { m.ctrl.T.Helper() - m.ctrl.Call(m, "RegisterRESTRoutes", arg0, arg1) + ret := m.ctrl.Call(m, "Name") + ret0, _ := ret[0].(string) + return ret0 } -// RegisterRESTRoutes indicates an expected call of RegisterRESTRoutes -func (mr *MockAppModuleGenesisMockRecorder) RegisterRESTRoutes(arg0, arg1 interface{}) *gomock.Call { +// Name indicates an expected call of Name. +func (mr *MockAppModuleGenesisMockRecorder) Name() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterRESTRoutes", reflect.TypeOf((*MockAppModuleGenesis)(nil).RegisterRESTRoutes), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockAppModuleGenesis)(nil).Name)) } -// RegisterGRPCGatewayRoutes mocks base method +// RegisterGRPCGatewayRoutes mocks base method. func (m *MockAppModuleGenesis) RegisterGRPCGatewayRoutes(arg0 client.Context, arg1 *runtime.ServeMux) { m.ctrl.T.Helper() m.ctrl.Call(m, "RegisterGRPCGatewayRoutes", arg0, arg1) } -// RegisterGRPCGatewayRoutes indicates an expected call of RegisterGRPCGatewayRoutes +// RegisterGRPCGatewayRoutes indicates an expected call of RegisterGRPCGatewayRoutes. func (mr *MockAppModuleGenesisMockRecorder) RegisterGRPCGatewayRoutes(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterGRPCGatewayRoutes", reflect.TypeOf((*MockAppModuleGenesis)(nil).RegisterGRPCGatewayRoutes), arg0, arg1) } -// GetTxCmd mocks base method -func (m *MockAppModuleGenesis) GetTxCmd() *cobra.Command { +// RegisterInterfaces mocks base method. +func (m *MockAppModuleGenesis) RegisterInterfaces(arg0 types.InterfaceRegistry) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetTxCmd") - ret0, _ := ret[0].(*cobra.Command) - return ret0 + m.ctrl.Call(m, "RegisterInterfaces", arg0) } -// GetTxCmd indicates an expected call of GetTxCmd -func (mr *MockAppModuleGenesisMockRecorder) GetTxCmd() *gomock.Call { +// RegisterInterfaces indicates an expected call of RegisterInterfaces. +func (mr *MockAppModuleGenesisMockRecorder) RegisterInterfaces(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTxCmd", reflect.TypeOf((*MockAppModuleGenesis)(nil).GetTxCmd)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterInterfaces", reflect.TypeOf((*MockAppModuleGenesis)(nil).RegisterInterfaces), arg0) } -// GetQueryCmd mocks base method -func (m *MockAppModuleGenesis) GetQueryCmd() *cobra.Command { +// RegisterLegacyAminoCodec mocks base method. +func (m *MockAppModuleGenesis) RegisterLegacyAminoCodec(arg0 *codec.LegacyAmino) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetQueryCmd") - ret0, _ := ret[0].(*cobra.Command) - return ret0 + m.ctrl.Call(m, "RegisterLegacyAminoCodec", arg0) } -// GetQueryCmd indicates an expected call of GetQueryCmd -func (mr *MockAppModuleGenesisMockRecorder) GetQueryCmd() *gomock.Call { +// RegisterLegacyAminoCodec indicates an expected call of RegisterLegacyAminoCodec. +func (mr *MockAppModuleGenesisMockRecorder) RegisterLegacyAminoCodec(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetQueryCmd", reflect.TypeOf((*MockAppModuleGenesis)(nil).GetQueryCmd)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterLegacyAminoCodec", reflect.TypeOf((*MockAppModuleGenesis)(nil).RegisterLegacyAminoCodec), arg0) } -// InitGenesis mocks base method -func (m *MockAppModuleGenesis) InitGenesis(arg0 types0.Context, arg1 codec.JSONMarshaler, arg2 json.RawMessage) []types1.ValidatorUpdate { +// RegisterRESTRoutes mocks base method. +func (m *MockAppModuleGenesis) RegisterRESTRoutes(arg0 client.Context, arg1 *mux.Router) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "InitGenesis", arg0, arg1, arg2) - ret0, _ := ret[0].([]types1.ValidatorUpdate) - return ret0 + m.ctrl.Call(m, "RegisterRESTRoutes", arg0, arg1) } -// InitGenesis indicates an expected call of InitGenesis -func (mr *MockAppModuleGenesisMockRecorder) InitGenesis(arg0, arg1, arg2 interface{}) *gomock.Call { +// RegisterRESTRoutes indicates an expected call of RegisterRESTRoutes. +func (mr *MockAppModuleGenesisMockRecorder) RegisterRESTRoutes(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InitGenesis", reflect.TypeOf((*MockAppModuleGenesis)(nil).InitGenesis), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterRESTRoutes", reflect.TypeOf((*MockAppModuleGenesis)(nil).RegisterRESTRoutes), arg0, arg1) } -// ExportGenesis mocks base method -func (m *MockAppModuleGenesis) ExportGenesis(arg0 types0.Context, arg1 codec.JSONMarshaler) json.RawMessage { +// ValidateGenesis mocks base method. +func (m *MockAppModuleGenesis) ValidateGenesis(arg0 codec.JSONMarshaler, arg1 client.TxEncodingConfig, arg2 json.RawMessage) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ExportGenesis", arg0, arg1) - ret0, _ := ret[0].(json.RawMessage) + ret := m.ctrl.Call(m, "ValidateGenesis", arg0, arg1, arg2) + ret0, _ := ret[0].(error) return ret0 } -// ExportGenesis indicates an expected call of ExportGenesis -func (mr *MockAppModuleGenesisMockRecorder) ExportGenesis(arg0, arg1 interface{}) *gomock.Call { +// ValidateGenesis indicates an expected call of ValidateGenesis. +func (mr *MockAppModuleGenesisMockRecorder) ValidateGenesis(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExportGenesis", reflect.TypeOf((*MockAppModuleGenesis)(nil).ExportGenesis), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateGenesis", reflect.TypeOf((*MockAppModuleGenesis)(nil).ValidateGenesis), arg0, arg1, arg2) } -// MockAppModule is a mock of AppModule interface +// MockAppModule is a mock of AppModule interface. type MockAppModule struct { ctrl *gomock.Controller recorder *MockAppModuleMockRecorder } -// MockAppModuleMockRecorder is the mock recorder for MockAppModule +// MockAppModuleMockRecorder is the mock recorder for MockAppModule. type MockAppModuleMockRecorder struct { mock *MockAppModule } -// NewMockAppModule creates a new mock instance +// NewMockAppModule creates a new mock instance. func NewMockAppModule(ctrl *gomock.Controller) *MockAppModule { mock := &MockAppModule{ctrl: ctrl} mock.recorder = &MockAppModuleMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAppModule) EXPECT() *MockAppModuleMockRecorder { return m.recorder } -// Name mocks base method -func (m *MockAppModule) Name() string { +// BeginBlock mocks base method. +func (m *MockAppModule) BeginBlock(arg0 types0.Context, arg1 types1.RequestBeginBlock) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Name") - ret0, _ := ret[0].(string) - return ret0 + m.ctrl.Call(m, "BeginBlock", arg0, arg1) } -// Name indicates an expected call of Name -func (mr *MockAppModuleMockRecorder) Name() *gomock.Call { +// BeginBlock indicates an expected call of BeginBlock. +func (mr *MockAppModuleMockRecorder) BeginBlock(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockAppModule)(nil).Name)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BeginBlock", reflect.TypeOf((*MockAppModule)(nil).BeginBlock), arg0, arg1) } -// RegisterLegacyAminoCodec mocks base method -func (m *MockAppModule) RegisterLegacyAminoCodec(arg0 *codec.LegacyAmino) { +// DefaultGenesis mocks base method. +func (m *MockAppModule) DefaultGenesis(arg0 codec.JSONMarshaler) json.RawMessage { m.ctrl.T.Helper() - m.ctrl.Call(m, "RegisterLegacyAminoCodec", arg0) + ret := m.ctrl.Call(m, "DefaultGenesis", arg0) + ret0, _ := ret[0].(json.RawMessage) + return ret0 } -// RegisterLegacyAminoCodec indicates an expected call of RegisterLegacyAminoCodec -func (mr *MockAppModuleMockRecorder) RegisterLegacyAminoCodec(arg0 interface{}) *gomock.Call { +// DefaultGenesis indicates an expected call of DefaultGenesis. +func (mr *MockAppModuleMockRecorder) DefaultGenesis(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterLegacyAminoCodec", reflect.TypeOf((*MockAppModule)(nil).RegisterLegacyAminoCodec), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DefaultGenesis", reflect.TypeOf((*MockAppModule)(nil).DefaultGenesis), arg0) } -// RegisterInterfaces mocks base method -func (m *MockAppModule) RegisterInterfaces(arg0 types.InterfaceRegistry) { +// EndBlock mocks base method. +func (m *MockAppModule) EndBlock(arg0 types0.Context, arg1 types1.RequestEndBlock) []types1.ValidatorUpdate { m.ctrl.T.Helper() - m.ctrl.Call(m, "RegisterInterfaces", arg0) + ret := m.ctrl.Call(m, "EndBlock", arg0, arg1) + ret0, _ := ret[0].([]types1.ValidatorUpdate) + return ret0 } -// RegisterInterfaces indicates an expected call of RegisterInterfaces -func (mr *MockAppModuleMockRecorder) RegisterInterfaces(arg0 interface{}) *gomock.Call { +// EndBlock indicates an expected call of EndBlock. +func (mr *MockAppModuleMockRecorder) EndBlock(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterInterfaces", reflect.TypeOf((*MockAppModule)(nil).RegisterInterfaces), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EndBlock", reflect.TypeOf((*MockAppModule)(nil).EndBlock), arg0, arg1) } -// DefaultGenesis mocks base method -func (m *MockAppModule) DefaultGenesis(arg0 codec.JSONMarshaler) json.RawMessage { +// ExportGenesis mocks base method. +func (m *MockAppModule) ExportGenesis(arg0 types0.Context, arg1 codec.JSONMarshaler) json.RawMessage { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DefaultGenesis", arg0) + ret := m.ctrl.Call(m, "ExportGenesis", arg0, arg1) ret0, _ := ret[0].(json.RawMessage) return ret0 } -// DefaultGenesis indicates an expected call of DefaultGenesis -func (mr *MockAppModuleMockRecorder) DefaultGenesis(arg0 interface{}) *gomock.Call { +// ExportGenesis indicates an expected call of ExportGenesis. +func (mr *MockAppModuleMockRecorder) ExportGenesis(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DefaultGenesis", reflect.TypeOf((*MockAppModule)(nil).DefaultGenesis), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExportGenesis", reflect.TypeOf((*MockAppModule)(nil).ExportGenesis), arg0, arg1) } -// ValidateGenesis mocks base method -func (m *MockAppModule) ValidateGenesis(arg0 codec.JSONMarshaler, arg1 client.TxEncodingConfig, arg2 json.RawMessage) error { +// GetQueryCmd mocks base method. +func (m *MockAppModule) GetQueryCmd() *cobra.Command { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ValidateGenesis", arg0, arg1, arg2) - ret0, _ := ret[0].(error) + ret := m.ctrl.Call(m, "GetQueryCmd") + ret0, _ := ret[0].(*cobra.Command) return ret0 } -// ValidateGenesis indicates an expected call of ValidateGenesis -func (mr *MockAppModuleMockRecorder) ValidateGenesis(arg0, arg1, arg2 interface{}) *gomock.Call { +// GetQueryCmd indicates an expected call of GetQueryCmd. +func (mr *MockAppModuleMockRecorder) GetQueryCmd() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateGenesis", reflect.TypeOf((*MockAppModule)(nil).ValidateGenesis), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetQueryCmd", reflect.TypeOf((*MockAppModule)(nil).GetQueryCmd)) } -// RegisterRESTRoutes mocks base method -func (m *MockAppModule) RegisterRESTRoutes(arg0 client.Context, arg1 *mux.Router) { +// GetTxCmd mocks base method. +func (m *MockAppModule) GetTxCmd() *cobra.Command { m.ctrl.T.Helper() - m.ctrl.Call(m, "RegisterRESTRoutes", arg0, arg1) + ret := m.ctrl.Call(m, "GetTxCmd") + ret0, _ := ret[0].(*cobra.Command) + return ret0 } -// RegisterRESTRoutes indicates an expected call of RegisterRESTRoutes -func (mr *MockAppModuleMockRecorder) RegisterRESTRoutes(arg0, arg1 interface{}) *gomock.Call { +// GetTxCmd indicates an expected call of GetTxCmd. +func (mr *MockAppModuleMockRecorder) GetTxCmd() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterRESTRoutes", reflect.TypeOf((*MockAppModule)(nil).RegisterRESTRoutes), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTxCmd", reflect.TypeOf((*MockAppModule)(nil).GetTxCmd)) } -// RegisterGRPCGatewayRoutes mocks base method -func (m *MockAppModule) RegisterGRPCGatewayRoutes(arg0 client.Context, arg1 *runtime.ServeMux) { +// InitGenesis mocks base method. +func (m *MockAppModule) InitGenesis(arg0 types0.Context, arg1 codec.JSONMarshaler, arg2 json.RawMessage) []types1.ValidatorUpdate { m.ctrl.T.Helper() - m.ctrl.Call(m, "RegisterGRPCGatewayRoutes", arg0, arg1) + ret := m.ctrl.Call(m, "InitGenesis", arg0, arg1, arg2) + ret0, _ := ret[0].([]types1.ValidatorUpdate) + return ret0 } -// RegisterGRPCGatewayRoutes indicates an expected call of RegisterGRPCGatewayRoutes -func (mr *MockAppModuleMockRecorder) RegisterGRPCGatewayRoutes(arg0, arg1 interface{}) *gomock.Call { +// InitGenesis indicates an expected call of InitGenesis. +func (mr *MockAppModuleMockRecorder) InitGenesis(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterGRPCGatewayRoutes", reflect.TypeOf((*MockAppModule)(nil).RegisterGRPCGatewayRoutes), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InitGenesis", reflect.TypeOf((*MockAppModule)(nil).InitGenesis), arg0, arg1, arg2) } -// GetTxCmd mocks base method -func (m *MockAppModule) GetTxCmd() *cobra.Command { +// LegacyQuerierHandler mocks base method. +func (m *MockAppModule) LegacyQuerierHandler(arg0 *codec.LegacyAmino) types0.Querier { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetTxCmd") - ret0, _ := ret[0].(*cobra.Command) + ret := m.ctrl.Call(m, "LegacyQuerierHandler", arg0) + ret0, _ := ret[0].(types0.Querier) return ret0 } -// GetTxCmd indicates an expected call of GetTxCmd -func (mr *MockAppModuleMockRecorder) GetTxCmd() *gomock.Call { +// LegacyQuerierHandler indicates an expected call of LegacyQuerierHandler. +func (mr *MockAppModuleMockRecorder) LegacyQuerierHandler(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTxCmd", reflect.TypeOf((*MockAppModule)(nil).GetTxCmd)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LegacyQuerierHandler", reflect.TypeOf((*MockAppModule)(nil).LegacyQuerierHandler), arg0) } -// GetQueryCmd mocks base method -func (m *MockAppModule) GetQueryCmd() *cobra.Command { +// Name mocks base method. +func (m *MockAppModule) Name() string { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetQueryCmd") - ret0, _ := ret[0].(*cobra.Command) + ret := m.ctrl.Call(m, "Name") + ret0, _ := ret[0].(string) return ret0 } -// GetQueryCmd indicates an expected call of GetQueryCmd -func (mr *MockAppModuleMockRecorder) GetQueryCmd() *gomock.Call { +// Name indicates an expected call of Name. +func (mr *MockAppModuleMockRecorder) Name() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetQueryCmd", reflect.TypeOf((*MockAppModule)(nil).GetQueryCmd)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockAppModule)(nil).Name)) } -// InitGenesis mocks base method -func (m *MockAppModule) InitGenesis(arg0 types0.Context, arg1 codec.JSONMarshaler, arg2 json.RawMessage) []types1.ValidatorUpdate { +// QuerierRoute mocks base method. +func (m *MockAppModule) QuerierRoute() string { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "InitGenesis", arg0, arg1, arg2) - ret0, _ := ret[0].([]types1.ValidatorUpdate) + ret := m.ctrl.Call(m, "QuerierRoute") + ret0, _ := ret[0].(string) return ret0 } -// InitGenesis indicates an expected call of InitGenesis -func (mr *MockAppModuleMockRecorder) InitGenesis(arg0, arg1, arg2 interface{}) *gomock.Call { +// QuerierRoute indicates an expected call of QuerierRoute. +func (mr *MockAppModuleMockRecorder) QuerierRoute() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InitGenesis", reflect.TypeOf((*MockAppModule)(nil).InitGenesis), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QuerierRoute", reflect.TypeOf((*MockAppModule)(nil).QuerierRoute)) } -// ExportGenesis mocks base method -func (m *MockAppModule) ExportGenesis(arg0 types0.Context, arg1 codec.JSONMarshaler) json.RawMessage { +// RegisterGRPCGatewayRoutes mocks base method. +func (m *MockAppModule) RegisterGRPCGatewayRoutes(arg0 client.Context, arg1 *runtime.ServeMux) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ExportGenesis", arg0, arg1) - ret0, _ := ret[0].(json.RawMessage) - return ret0 + m.ctrl.Call(m, "RegisterGRPCGatewayRoutes", arg0, arg1) } -// ExportGenesis indicates an expected call of ExportGenesis -func (mr *MockAppModuleMockRecorder) ExportGenesis(arg0, arg1 interface{}) *gomock.Call { +// RegisterGRPCGatewayRoutes indicates an expected call of RegisterGRPCGatewayRoutes. +func (mr *MockAppModuleMockRecorder) RegisterGRPCGatewayRoutes(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExportGenesis", reflect.TypeOf((*MockAppModule)(nil).ExportGenesis), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterGRPCGatewayRoutes", reflect.TypeOf((*MockAppModule)(nil).RegisterGRPCGatewayRoutes), arg0, arg1) } -// RegisterInvariants mocks base method -func (m *MockAppModule) RegisterInvariants(arg0 types0.InvariantRegistry) { +// RegisterInterfaces mocks base method. +func (m *MockAppModule) RegisterInterfaces(arg0 types.InterfaceRegistry) { m.ctrl.T.Helper() - m.ctrl.Call(m, "RegisterInvariants", arg0) + m.ctrl.Call(m, "RegisterInterfaces", arg0) } -// RegisterInvariants indicates an expected call of RegisterInvariants -func (mr *MockAppModuleMockRecorder) RegisterInvariants(arg0 interface{}) *gomock.Call { +// RegisterInterfaces indicates an expected call of RegisterInterfaces. +func (mr *MockAppModuleMockRecorder) RegisterInterfaces(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterInvariants", reflect.TypeOf((*MockAppModule)(nil).RegisterInvariants), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterInterfaces", reflect.TypeOf((*MockAppModule)(nil).RegisterInterfaces), arg0) } -// Route mocks base method -func (m *MockAppModule) Route() types0.Route { +// RegisterInvariants mocks base method. +func (m *MockAppModule) RegisterInvariants(arg0 types0.InvariantRegistry) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Route") - ret0, _ := ret[0].(types0.Route) - return ret0 + m.ctrl.Call(m, "RegisterInvariants", arg0) } -// Route indicates an expected call of Route -func (mr *MockAppModuleMockRecorder) Route() *gomock.Call { +// RegisterInvariants indicates an expected call of RegisterInvariants. +func (mr *MockAppModuleMockRecorder) RegisterInvariants(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Route", reflect.TypeOf((*MockAppModule)(nil).Route)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterInvariants", reflect.TypeOf((*MockAppModule)(nil).RegisterInvariants), arg0) } -// QuerierRoute mocks base method -func (m *MockAppModule) QuerierRoute() string { +// RegisterLegacyAminoCodec mocks base method. +func (m *MockAppModule) RegisterLegacyAminoCodec(arg0 *codec.LegacyAmino) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "QuerierRoute") - ret0, _ := ret[0].(string) - return ret0 + m.ctrl.Call(m, "RegisterLegacyAminoCodec", arg0) } -// QuerierRoute indicates an expected call of QuerierRoute -func (mr *MockAppModuleMockRecorder) QuerierRoute() *gomock.Call { +// RegisterLegacyAminoCodec indicates an expected call of RegisterLegacyAminoCodec. +func (mr *MockAppModuleMockRecorder) RegisterLegacyAminoCodec(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QuerierRoute", reflect.TypeOf((*MockAppModule)(nil).QuerierRoute)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterLegacyAminoCodec", reflect.TypeOf((*MockAppModule)(nil).RegisterLegacyAminoCodec), arg0) } -// LegacyQuerierHandler mocks base method -func (m *MockAppModule) LegacyQuerierHandler(arg0 *codec.LegacyAmino) types0.Querier { +// RegisterRESTRoutes mocks base method. +func (m *MockAppModule) RegisterRESTRoutes(arg0 client.Context, arg1 *mux.Router) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "LegacyQuerierHandler", arg0) - ret0, _ := ret[0].(types0.Querier) - return ret0 + m.ctrl.Call(m, "RegisterRESTRoutes", arg0, arg1) } -// LegacyQuerierHandler indicates an expected call of LegacyQuerierHandler -func (mr *MockAppModuleMockRecorder) LegacyQuerierHandler(arg0 interface{}) *gomock.Call { +// RegisterRESTRoutes indicates an expected call of RegisterRESTRoutes. +func (mr *MockAppModuleMockRecorder) RegisterRESTRoutes(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LegacyQuerierHandler", reflect.TypeOf((*MockAppModule)(nil).LegacyQuerierHandler), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterRESTRoutes", reflect.TypeOf((*MockAppModule)(nil).RegisterRESTRoutes), arg0, arg1) } -// RegisterServices mocks base method +// RegisterServices mocks base method. func (m *MockAppModule) RegisterServices(arg0 module.Configurator) { m.ctrl.T.Helper() m.ctrl.Call(m, "RegisterServices", arg0) } -// RegisterServices indicates an expected call of RegisterServices +// RegisterServices indicates an expected call of RegisterServices. func (mr *MockAppModuleMockRecorder) RegisterServices(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterServices", reflect.TypeOf((*MockAppModule)(nil).RegisterServices), arg0) } -// BeginBlock mocks base method -func (m *MockAppModule) BeginBlock(arg0 types0.Context, arg1 types1.RequestBeginBlock) { +// Route mocks base method. +func (m *MockAppModule) Route() types0.Route { m.ctrl.T.Helper() - m.ctrl.Call(m, "BeginBlock", arg0, arg1) + ret := m.ctrl.Call(m, "Route") + ret0, _ := ret[0].(types0.Route) + return ret0 } -// BeginBlock indicates an expected call of BeginBlock -func (mr *MockAppModuleMockRecorder) BeginBlock(arg0, arg1 interface{}) *gomock.Call { +// Route indicates an expected call of Route. +func (mr *MockAppModuleMockRecorder) Route() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BeginBlock", reflect.TypeOf((*MockAppModule)(nil).BeginBlock), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Route", reflect.TypeOf((*MockAppModule)(nil).Route)) } -// EndBlock mocks base method -func (m *MockAppModule) EndBlock(arg0 types0.Context, arg1 types1.RequestEndBlock) []types1.ValidatorUpdate { +// ValidateGenesis mocks base method. +func (m *MockAppModule) ValidateGenesis(arg0 codec.JSONMarshaler, arg1 client.TxEncodingConfig, arg2 json.RawMessage) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "EndBlock", arg0, arg1) - ret0, _ := ret[0].([]types1.ValidatorUpdate) + ret := m.ctrl.Call(m, "ValidateGenesis", arg0, arg1, arg2) + ret0, _ := ret[0].(error) return ret0 } -// EndBlock indicates an expected call of EndBlock -func (mr *MockAppModuleMockRecorder) EndBlock(arg0, arg1 interface{}) *gomock.Call { +// ValidateGenesis indicates an expected call of ValidateGenesis. +func (mr *MockAppModuleMockRecorder) ValidateGenesis(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EndBlock", reflect.TypeOf((*MockAppModule)(nil).EndBlock), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateGenesis", reflect.TypeOf((*MockAppModule)(nil).ValidateGenesis), arg0, arg1, arg2) } diff --git a/tests/mocks/types_router.go b/tests/mocks/types_router.go index 48f96b0b162a..27f8fe56b8f1 100644 --- a/tests/mocks/types_router.go +++ b/tests/mocks/types_router.go @@ -5,35 +5,36 @@ package mocks import ( + reflect "reflect" + types "github.com/cosmos/cosmos-sdk/types" gomock "github.com/golang/mock/gomock" - reflect "reflect" ) -// MockRouter is a mock of Router interface +// MockRouter is a mock of Router interface. type MockRouter struct { ctrl *gomock.Controller recorder *MockRouterMockRecorder } -// MockRouterMockRecorder is the mock recorder for MockRouter +// MockRouterMockRecorder is the mock recorder for MockRouter. type MockRouterMockRecorder struct { mock *MockRouter } -// NewMockRouter creates a new mock instance +// NewMockRouter creates a new mock instance. func NewMockRouter(ctrl *gomock.Controller) *MockRouter { mock := &MockRouter{ctrl: ctrl} mock.recorder = &MockRouterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRouter) EXPECT() *MockRouterMockRecorder { return m.recorder } -// AddRoute mocks base method +// AddRoute mocks base method. func (m *MockRouter) AddRoute(r types.Route) types.Router { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "AddRoute", r) @@ -41,13 +42,13 @@ func (m *MockRouter) AddRoute(r types.Route) types.Router { return ret0 } -// AddRoute indicates an expected call of AddRoute +// AddRoute indicates an expected call of AddRoute. func (mr *MockRouterMockRecorder) AddRoute(r interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddRoute", reflect.TypeOf((*MockRouter)(nil).AddRoute), r) } -// Route mocks base method +// Route mocks base method. func (m *MockRouter) Route(ctx types.Context, path string) types.Handler { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Route", ctx, path) @@ -55,36 +56,36 @@ func (m *MockRouter) Route(ctx types.Context, path string) types.Handler { return ret0 } -// Route indicates an expected call of Route +// Route indicates an expected call of Route. func (mr *MockRouterMockRecorder) Route(ctx, path interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Route", reflect.TypeOf((*MockRouter)(nil).Route), ctx, path) } -// MockQueryRouter is a mock of QueryRouter interface +// MockQueryRouter is a mock of QueryRouter interface. type MockQueryRouter struct { ctrl *gomock.Controller recorder *MockQueryRouterMockRecorder } -// MockQueryRouterMockRecorder is the mock recorder for MockQueryRouter +// MockQueryRouterMockRecorder is the mock recorder for MockQueryRouter. type MockQueryRouterMockRecorder struct { mock *MockQueryRouter } -// NewMockQueryRouter creates a new mock instance +// NewMockQueryRouter creates a new mock instance. func NewMockQueryRouter(ctrl *gomock.Controller) *MockQueryRouter { mock := &MockQueryRouter{ctrl: ctrl} mock.recorder = &MockQueryRouterMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockQueryRouter) EXPECT() *MockQueryRouterMockRecorder { return m.recorder } -// AddRoute mocks base method +// AddRoute mocks base method. func (m *MockQueryRouter) AddRoute(r string, h types.Querier) types.QueryRouter { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "AddRoute", r, h) @@ -92,13 +93,13 @@ func (m *MockQueryRouter) AddRoute(r string, h types.Querier) types.QueryRouter return ret0 } -// AddRoute indicates an expected call of AddRoute +// AddRoute indicates an expected call of AddRoute. func (mr *MockQueryRouterMockRecorder) AddRoute(r, h interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddRoute", reflect.TypeOf((*MockQueryRouter)(nil).AddRoute), r, h) } -// Route mocks base method +// Route mocks base method. func (m *MockQueryRouter) Route(path string) types.Querier { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Route", path) @@ -106,7 +107,7 @@ func (m *MockQueryRouter) Route(path string) types.Querier { return ret0 } -// Route indicates an expected call of Route +// Route indicates an expected call of Route. func (mr *MockQueryRouterMockRecorder) Route(path interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Route", reflect.TypeOf((*MockQueryRouter)(nil).Route), path) diff --git a/testutil/ioutil_test.go b/testutil/ioutil_test.go index 415e7842c15d..9f2d414c65c7 100644 --- a/testutil/ioutil_test.go +++ b/testutil/ioutil_test.go @@ -2,6 +2,7 @@ package testutil_test import ( "io/ioutil" + "os" "testing" "github.com/spf13/cobra" @@ -28,7 +29,7 @@ func TestWriteToNewTempFile(t *testing.T) { tempfile := testutil.WriteToNewTempFile(t, "test string") tempfile.Close() - bs, err := ioutil.ReadFile(tempfile.Name()) + bs, err := os.ReadFile(tempfile.Name()) require.NoError(t, err) require.Equal(t, "test string", string(bs)) } diff --git a/testutil/network/network.go b/testutil/network/network.go index 3beb1b90c0ca..fb45c05086a4 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -6,7 +6,6 @@ import ( "encoding/json" "errors" "fmt" - "io/ioutil" "net/url" "os" "path/filepath" @@ -169,7 +168,7 @@ func New(t *testing.T, cfg Config) *Network { t.Log("acquiring test network lock") lock.Lock() - baseDir, err := ioutil.TempDir(t.TempDir(), cfg.ChainID) + baseDir, err := os.MkdirTemp(t.TempDir(), cfg.ChainID) require.NoError(t, err) t.Logf("created temporary directory: %s", baseDir) @@ -244,8 +243,8 @@ func New(t *testing.T, cfg Config) *Network { clientDir := filepath.Join(network.BaseDir, nodeDirName, "simcli") gentxsDir := filepath.Join(network.BaseDir, "gentxs") - require.NoError(t, os.MkdirAll(filepath.Join(nodeDir, "config"), 0755)) - require.NoError(t, os.MkdirAll(clientDir, 0755)) + require.NoError(t, os.MkdirAll(filepath.Join(nodeDir, "config"), 0o755)) + require.NoError(t, os.MkdirAll(clientDir, 0o755)) tmCfg.SetRoot(nodeDir) tmCfg.Moniker = nodeDirName diff --git a/testutil/network/network_test.go b/testutil/network/network_test.go index 3e45309f2f12..e53fc743f7a7 100644 --- a/testutil/network/network_test.go +++ b/testutil/network/network_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package network_test diff --git a/testutil/network/util.go b/testutil/network/util.go index 7b09ae6a1d04..f42452268e28 100644 --- a/testutil/network/util.go +++ b/testutil/network/util.go @@ -140,7 +140,6 @@ func collectGenFiles(cfg Config, vals []*Validator, outputDir string) error { } func initGenFiles(cfg Config, genAccounts []authtypes.GenesisAccount, genBalances []banktypes.Balance, genFiles []string) error { - // set the accounts in the genesis state var authGenState authtypes.GenesisState cfg.Codec.MustUnmarshalJSON(cfg.GenesisState[authtypes.ModuleName], &authGenState) @@ -185,12 +184,12 @@ func writeFile(name string, dir string, contents []byte) error { writePath := filepath.Join(dir) file := filepath.Join(writePath, name) - err := tmos.EnsureDir(writePath, 0755) + err := tmos.EnsureDir(writePath, 0o755) if err != nil { return err } - err = tmos.WriteFile(file, contents, 0644) + err = tmos.WriteFile(file, contents, 0o644) if err != nil { return err } diff --git a/testutil/rest.go b/testutil/rest.go index b468b16bedd2..58e6c39b197e 100644 --- a/testutil/rest.go +++ b/testutil/rest.go @@ -1,7 +1,7 @@ package testutil import ( - "io/ioutil" + "io" "net/http" ) @@ -25,7 +25,7 @@ func GetRequestWithHeaders(url string, headers map[string]string) ([]byte, error return nil, err } - body, err := ioutil.ReadAll(res.Body) + body, err := io.ReadAll(res.Body) if err != nil { return nil, err } diff --git a/third_party/proto/tendermint/abci/types.proto b/third_party/proto/tendermint/abci/types.proto index 2cbcabb29b33..340800f46b42 100644 --- a/third_party/proto/tendermint/abci/types.proto +++ b/third_party/proto/tendermint/abci/types.proto @@ -102,8 +102,7 @@ message RequestEndBlock { message RequestCommit {} // lists available snapshots -message RequestListSnapshots { -} +message RequestListSnapshots {} // offers a snapshot to the application message RequestOfferSnapshot { @@ -212,6 +211,12 @@ message ResponseCheckTx { repeated Event events = 7 [(gogoproto.nullable) = false, (gogoproto.jsontag) = "events,omitempty"]; string codespace = 8; + string sender = 9; + int64 priority = 10; + + // mempool_error is set by Tendermint. + // ABCI applictions creating a ResponseCheckTX should not set mempool_error. + string mempool_error = 11; } message ResponseDeliverTx { @@ -221,16 +226,17 @@ message ResponseDeliverTx { string info = 4; // nondeterministic int64 gas_wanted = 5 [json_name = "gas_wanted"]; int64 gas_used = 6 [json_name = "gas_used"]; - repeated Event events = 7 - [(gogoproto.nullable) = false, (gogoproto.jsontag) = "events,omitempty"]; + repeated Event events = 7 [ + (gogoproto.nullable) = false, + (gogoproto.jsontag) = "events,omitempty" + ]; // nondeterministic string codespace = 8; } message ResponseEndBlock { - repeated ValidatorUpdate validator_updates = 1 - [(gogoproto.nullable) = false]; - ConsensusParams consensus_param_updates = 2; - repeated Event events = 3 + repeated ValidatorUpdate validator_updates = 1 [(gogoproto.nullable) = false]; + ConsensusParams consensus_param_updates = 2; + repeated Event events = 3 [(gogoproto.nullable) = false, (gogoproto.jsontag) = "events,omitempty"]; } @@ -364,10 +370,8 @@ message Evidence { // The height when the offense occurred int64 height = 3; // The corresponding time where the offense occurred - google.protobuf.Timestamp time = 4 [ - (gogoproto.nullable) = false, - (gogoproto.stdtime) = true - ]; + google.protobuf.Timestamp time = 4 + [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; // Total voting power of the validator set in case the ABCI application does // not store historical validators. // https://github.com/tendermint/tendermint/issues/4581 @@ -402,6 +406,8 @@ service ABCIApplication { rpc EndBlock(RequestEndBlock) returns (ResponseEndBlock); rpc ListSnapshots(RequestListSnapshots) returns (ResponseListSnapshots); rpc OfferSnapshot(RequestOfferSnapshot) returns (ResponseOfferSnapshot); - rpc LoadSnapshotChunk(RequestLoadSnapshotChunk) returns (ResponseLoadSnapshotChunk); - rpc ApplySnapshotChunk(RequestApplySnapshotChunk) returns (ResponseApplySnapshotChunk); + rpc LoadSnapshotChunk(RequestLoadSnapshotChunk) + returns (ResponseLoadSnapshotChunk); + rpc ApplySnapshotChunk(RequestApplySnapshotChunk) + returns (ResponseApplySnapshotChunk); } diff --git a/third_party/proto/tendermint/types/evidence.proto b/third_party/proto/tendermint/types/evidence.proto index 3b234571ba67..451b8dca3c71 100644 --- a/third_party/proto/tendermint/types/evidence.proto +++ b/third_party/proto/tendermint/types/evidence.proto @@ -17,20 +17,20 @@ message Evidence { // DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. message DuplicateVoteEvidence { - tendermint.types.Vote vote_a = 1; - tendermint.types.Vote vote_b = 2; - int64 total_voting_power = 3; - int64 validator_power = 4; - google.protobuf.Timestamp timestamp = 5 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; + tendermint.types.Vote vote_a = 1; + tendermint.types.Vote vote_b = 2; + int64 total_voting_power = 3; + int64 validator_power = 4; + google.protobuf.Timestamp timestamp = 5 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; } // LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. message LightClientAttackEvidence { - tendermint.types.LightBlock conflicting_block = 1; - int64 common_height = 2; + tendermint.types.LightBlock conflicting_block = 1; + int64 common_height = 2; repeated tendermint.types.Validator byzantine_validators = 3; - int64 total_voting_power = 4; - google.protobuf.Timestamp timestamp = 5 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; + int64 total_voting_power = 4; + google.protobuf.Timestamp timestamp = 5 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; } message EvidenceList { diff --git a/third_party/proto/tendermint/types/types.proto b/third_party/proto/tendermint/types/types.proto index 7f7ea74cac21..8d4f009729dd 100644 --- a/third_party/proto/tendermint/types/types.proto +++ b/third_party/proto/tendermint/types/types.proto @@ -106,10 +106,10 @@ message Vote { // Commit contains the evidence that a block was committed by a set of validators. message Commit { - int64 height = 1; - int32 round = 2; - BlockID block_id = 3 [(gogoproto.nullable) = false, (gogoproto.customname) = "BlockID"]; - repeated CommitSig signatures = 4 [(gogoproto.nullable) = false]; + int64 height = 1; + int32 round = 2; + BlockID block_id = 3 [(gogoproto.nullable) = false, (gogoproto.customname) = "BlockID"]; + repeated CommitSig signatures = 4 [(gogoproto.nullable) = false]; } // CommitSig is a part of the Vote included in a Commit. diff --git a/types/address.go b/types/address.go index ba9e5b303b6a..de9e80e94766 100644 --- a/types/address.go +++ b/types/address.go @@ -80,13 +80,17 @@ type Address interface { } // Ensure that different address types implement the interface -var _ Address = AccAddress{} -var _ Address = ValAddress{} -var _ Address = ConsAddress{} +var ( + _ Address = AccAddress{} + _ Address = ValAddress{} + _ Address = ConsAddress{} +) -var _ yaml.Marshaler = AccAddress{} -var _ yaml.Marshaler = ValAddress{} -var _ yaml.Marshaler = ConsAddress{} +var ( + _ yaml.Marshaler = AccAddress{} + _ yaml.Marshaler = ValAddress{} + _ yaml.Marshaler = ConsAddress{} +) // ---------------------------------------------------------------------------- // account @@ -183,7 +187,6 @@ func (aa AccAddress) MarshalYAML() (interface{}, error) { func (aa *AccAddress) UnmarshalJSON(data []byte) error { var s string err := json.Unmarshal(data, &s) - if err != nil { return err } diff --git a/types/address_test.go b/types/address_test.go index 97fef6e5063c..3af871e7caa3 100644 --- a/types/address_test.go +++ b/types/address_test.go @@ -339,7 +339,6 @@ func (s *addressTestSuite) TestAddressInterface() { s.T().Fail() } } - } func (s *addressTestSuite) TestVerifyAddressFormat() { diff --git a/types/coin_test.go b/types/coin_test.go index bb1d00f1380a..bc5095b9fd15 100644 --- a/types/coin_test.go +++ b/types/coin_test.go @@ -99,7 +99,6 @@ func (s *coinTestSuite) TestCoinIsValid() { } func (s *coinTestSuite) TestCustomValidation() { - newDnmRegex := `[\x{1F600}-\x{1F6FF}]` sdk.SetCoinDenomRegex(func() string { return newDnmRegex @@ -593,7 +592,8 @@ func (s *coinTestSuite) TestCoins_Validate() { {"mineral", sdk.OneInt()}, }, false, - }, { + }, + { "duplicate denomination", sdk.Coins{ {"gas", sdk.OneInt()}, @@ -926,7 +926,6 @@ func (s *coinTestSuite) TestCoinsIsAnyNil() { s.Require().True(sdk.Coins{twoAtom, nilAtom, fiveAtom, threeEth}.IsAnyNil()) s.Require().True(sdk.Coins{nilAtom, twoAtom, fiveAtom, threeEth}.IsAnyNil()) s.Require().False(sdk.Coins{twoAtom, fiveAtom, threeEth}.IsAnyNil()) - } func (s *coinTestSuite) TestMarshalJSONCoins() { diff --git a/types/config.go b/types/config.go index a3181703df1e..768071ba6e5f 100644 --- a/types/config.go +++ b/types/config.go @@ -84,7 +84,8 @@ func (config *Config) SetBech32PrefixForAccount(addressPrefix, pubKeyPrefix stri } // SetBech32PrefixForValidator builds the Config with Bech32 addressPrefix and publKeyPrefix for validators -// and returns the config instance +// +// and returns the config instance func (config *Config) SetBech32PrefixForValidator(addressPrefix, pubKeyPrefix string) { config.assertNotSealed() config.bech32AddressPrefix["validator_addr"] = addressPrefix diff --git a/types/context.go b/types/context.go index 35030dad9a96..7440bea9b392 100644 --- a/types/context.go +++ b/types/context.go @@ -61,7 +61,7 @@ func (c Context) EventManager() *EventManager { return c.eventManager } // clone the header before returning func (c Context) BlockHeader() tmproto.Header { - var msg = proto.Clone(&c.header).(*tmproto.Header) + msg := proto.Clone(&c.header).(*tmproto.Header) return *msg } @@ -221,9 +221,12 @@ func (c Context) IsZero() bool { // WithValue is deprecated, provided for backwards compatibility // Please use -// ctx = ctx.WithContext(context.WithValue(ctx.Context(), key, false)) +// +// ctx = ctx.WithContext(context.WithValue(ctx.Context(), key, false)) +// // instead of -// ctx = ctx.WithValue(key, false) +// +// ctx = ctx.WithValue(key, false) func (c Context) WithValue(key, value interface{}) Context { c.ctx = context.WithValue(c.ctx, key, value) return c @@ -231,9 +234,12 @@ func (c Context) WithValue(key, value interface{}) Context { // Value is deprecated, provided for backwards compatibility // Please use -// ctx.Context().Value(key) +// +// ctx.Context().Value(key) +// // instead of -// ctx.Value(key) +// +// ctx.Value(key) func (c Context) Value(key interface{}) interface{} { return c.ctx.Value(key) } diff --git a/types/dec_coin_test.go b/types/dec_coin_test.go index 938f7dddffb4..488d1ef76304 100644 --- a/types/dec_coin_test.go +++ b/types/dec_coin_test.go @@ -377,7 +377,8 @@ func (s *decCoinTestSuite) TestParseDecCoins() { }, false, }, - {"0.0stake,0.004stake,5.04atom", // remove zero coins + { + "0.0stake,0.004stake,5.04atom", // remove zero coins sdk.DecCoins{ sdk.NewDecCoinFromDec("atom", sdk.NewDecWithPrec(5040000000000000000, sdk.Precision)), sdk.NewDecCoinFromDec("stake", sdk.NewDecWithPrec(4000000000000000, sdk.Precision)), diff --git a/types/decimal.go b/types/decimal.go index 36b65bd983b7..9b081c60e95e 100644 --- a/types/decimal.go +++ b/types/decimal.go @@ -125,12 +125,15 @@ func NewDecFromIntWithPrec(i Int, prec int64) Dec { // create a decimal from an input decimal string. // valid must come in the form: -// (-) whole integers (.) decimal integers +// +// (-) whole integers (.) decimal integers +// // examples of acceptable input include: -// -123.456 -// 456.7890 -// 345 -// -456789 +// +// -123.456 +// 456.7890 +// 345 +// -456789 // // NOTE - An error will return if more decimal places // are provided in the string than the constant Precision. diff --git a/types/decimal_test.go b/types/decimal_test.go index dae0935febd2..e208a0cc5ebd 100644 --- a/types/decimal_test.go +++ b/types/decimal_test.go @@ -49,10 +49,14 @@ func (s *decimalTestSuite) TestNewDecFromStr() { {"0.8", false, sdk.NewDecWithPrec(8, 1)}, {"0.11111", false, sdk.NewDecWithPrec(11111, 5)}, {"314460551102969.3144278234343371835", true, sdk.NewDec(3141203149163817869)}, - {"314460551102969314427823434337.1835718092488231350", - true, sdk.NewDecFromBigIntWithPrec(largeBigInt, 4)}, - {"314460551102969314427823434337.1835", - false, sdk.NewDecFromBigIntWithPrec(largeBigInt, 4)}, + { + "314460551102969314427823434337.1835718092488231350", + true, sdk.NewDecFromBigIntWithPrec(largeBigInt, 4), + }, + { + "314460551102969314427823434337.1835", + false, sdk.NewDecFromBigIntWithPrec(largeBigInt, 4), + }, {".", true, sdk.Dec{}}, {".0", true, sdk.NewDec(0)}, {"1.", true, sdk.NewDec(1)}, @@ -136,7 +140,6 @@ func (s *decimalTestSuite) TestEqualities() { s.Require().Equal(tc.lt, tc.d1.LT(tc.d2), "LT result is incorrect, tc %d", tcIndex) s.Require().Equal(tc.eq, tc.d1.Equal(tc.d2), "equality result is incorrect, tc %d", tcIndex) } - } func (s *decimalTestSuite) TestDecsEqual() { @@ -180,19 +183,27 @@ func (s *decimalTestSuite) TestArithmetic() { {sdk.NewDec(1), sdk.NewDec(-1), sdk.NewDec(-1), sdk.NewDec(-1), sdk.NewDec(-1), sdk.NewDec(-1), sdk.NewDec(-1), sdk.NewDec(0), sdk.NewDec(2)}, {sdk.NewDec(-1), sdk.NewDec(1), sdk.NewDec(-1), sdk.NewDec(-1), sdk.NewDec(-1), sdk.NewDec(-1), sdk.NewDec(-1), sdk.NewDec(0), sdk.NewDec(-2)}, - {sdk.NewDec(3), sdk.NewDec(7), sdk.NewDec(21), sdk.NewDec(21), + { + sdk.NewDec(3), sdk.NewDec(7), sdk.NewDec(21), sdk.NewDec(21), sdk.NewDecWithPrec(428571428571428571, 18), sdk.NewDecWithPrec(428571428571428572, 18), sdk.NewDecWithPrec(428571428571428571, 18), - sdk.NewDec(10), sdk.NewDec(-4)}, - {sdk.NewDec(2), sdk.NewDec(4), sdk.NewDec(8), sdk.NewDec(8), sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), - sdk.NewDec(6), sdk.NewDec(-2)}, + sdk.NewDec(10), sdk.NewDec(-4), + }, + { + sdk.NewDec(2), sdk.NewDec(4), sdk.NewDec(8), sdk.NewDec(8), sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), + sdk.NewDec(6), sdk.NewDec(-2), + }, {sdk.NewDec(100), sdk.NewDec(100), sdk.NewDec(10000), sdk.NewDec(10000), sdk.NewDec(1), sdk.NewDec(1), sdk.NewDec(1), sdk.NewDec(200), sdk.NewDec(0)}, - {sdk.NewDecWithPrec(15, 1), sdk.NewDecWithPrec(15, 1), sdk.NewDecWithPrec(225, 2), sdk.NewDecWithPrec(225, 2), - sdk.NewDec(1), sdk.NewDec(1), sdk.NewDec(1), sdk.NewDec(3), sdk.NewDec(0)}, - {sdk.NewDecWithPrec(3333, 4), sdk.NewDecWithPrec(333, 4), sdk.NewDecWithPrec(1109889, 8), sdk.NewDecWithPrec(1109889, 8), + { + sdk.NewDecWithPrec(15, 1), sdk.NewDecWithPrec(15, 1), sdk.NewDecWithPrec(225, 2), sdk.NewDecWithPrec(225, 2), + sdk.NewDec(1), sdk.NewDec(1), sdk.NewDec(1), sdk.NewDec(3), sdk.NewDec(0), + }, + { + sdk.NewDecWithPrec(3333, 4), sdk.NewDecWithPrec(333, 4), sdk.NewDecWithPrec(1109889, 8), sdk.NewDecWithPrec(1109889, 8), sdk.MustNewDecFromStr("10.009009009009009009"), sdk.MustNewDecFromStr("10.009009009009009010"), sdk.MustNewDecFromStr("10.009009009009009009"), - sdk.NewDecWithPrec(3666, 4), sdk.NewDecWithPrec(3, 1)}, + sdk.NewDecWithPrec(3666, 4), sdk.NewDecWithPrec(3, 1), + }, } for tcIndex, tc := range tests { diff --git a/types/errors/abci_test.go b/types/errors/abci_test.go index 02c12e7bbdd6..0ae93896da07 100644 --- a/types/errors/abci_test.go +++ b/types/errors/abci_test.go @@ -80,7 +80,7 @@ func (s *abciTestSuite) TestABCInfo() { }, // This is hard to test because of attached stacktrace. This // case is tested in an another test. - //"wrapped stdlib is a full message in debug mode": { + // "wrapped stdlib is a full message in debug mode": { // err: Wrap(io.EOF, "cannot read file"), // debug: true, // wantLog: "cannot read file: EOF", diff --git a/types/errors/doc.go b/types/errors/doc.go index 6cca61580d06..ed6b9a69bfca 100644 --- a/types/errors/doc.go +++ b/types/errors/doc.go @@ -11,24 +11,23 @@ of the errors package. If it will be needed my many extensions, please consider registering it in the errors package. To create a new error instance use Register function. You must provide a unique, non zero error code and a short description, for example: - var ErrZeroDivision = errors.Register(9241, "zero division") + var ErrZeroDivision = errors.Register(9241, "zero division") When returning an error, you can attach to it an additional context information by using Wrap function, for example: - func safeDiv(val, div int) (int, err) { - if div == 0 { - return 0, errors.Wrapf(ErrZeroDivision, "cannot divide %d", val) + func safeDiv(val, div int) (int, err) { + if div == 0 { + return 0, errors.Wrapf(ErrZeroDivision, "cannot divide %d", val) + } + return val / div, nil } - return val / div, nil - } The first time an error instance is wrapped a stacktrace is attached as well. Stacktrace information can be printed using %+v and %v formats. - %s is just the error message - %+v is the full stack trace - %v appends a compressed [filename:line] where the error was created - + %s is just the error message + %+v is the full stack trace + %v appends a compressed [filename:line] where the error was created */ package errors diff --git a/types/errors/errors_test.go b/types/errors/errors_test.go index ea0e063c3a52..6333ea2b218a 100644 --- a/types/errors/errors_test.go +++ b/types/errors/errors_test.go @@ -149,8 +149,7 @@ func (s *errorsTestSuite) TestErrorIs() { } } -type customError struct { -} +type customError struct{} func (customError) Error() string { return "custom error" @@ -182,35 +181,35 @@ func (s *errorsTestSuite) TestWrappedIs() { } func (s *errorsTestSuite) TestWrappedIsMultiple() { - var errTest = errors.New("test error") - var errTest2 = errors.New("test error 2") + errTest := errors.New("test error") + errTest2 := errors.New("test error 2") err := Wrap(errTest2, Wrap(errTest, "some random description").Error()) s.Require().True(stdlib.Is(err, errTest2)) } func (s *errorsTestSuite) TestWrappedIsFail() { - var errTest = errors.New("test error") - var errTest2 = errors.New("test error 2") + errTest := errors.New("test error") + errTest2 := errors.New("test error 2") err := Wrap(errTest2, Wrap(errTest, "some random description").Error()) s.Require().False(stdlib.Is(err, errTest)) } func (s *errorsTestSuite) TestWrappedUnwrap() { - var errTest = errors.New("test error") + errTest := errors.New("test error") err := Wrap(errTest, "some random description") s.Require().Equal(errTest, stdlib.Unwrap(err)) } func (s *errorsTestSuite) TestWrappedUnwrapMultiple() { - var errTest = errors.New("test error") - var errTest2 = errors.New("test error 2") + errTest := errors.New("test error") + errTest2 := errors.New("test error 2") err := Wrap(errTest2, Wrap(errTest, "some random description").Error()) s.Require().Equal(errTest2, stdlib.Unwrap(err)) } func (s *errorsTestSuite) TestWrappedUnwrapFail() { - var errTest = errors.New("test error") - var errTest2 = errors.New("test error 2") + errTest := errors.New("test error") + errTest2 := errors.New("test error 2") err := Wrap(errTest2, Wrap(errTest, "some random description").Error()) s.Require().NotEqual(errTest, stdlib.Unwrap(err)) } diff --git a/types/errors/stacktrace.go b/types/errors/stacktrace.go index f7079c56d831..8b2edc5f4da6 100644 --- a/types/errors/stacktrace.go +++ b/types/errors/stacktrace.go @@ -80,7 +80,8 @@ func writeSimpleFrame(s io.Writer, f errors.Frame) { // %s is just the error message // %+v is the full stack trace // %v appends a compressed [filename:line] where the error -// was created +// +// was created // // Inspired by https://github.com/pkg/errors/blob/v0.8.1/errors.go#L162-L176 func (e *wrappedError) Format(s fmt.State, verb rune) { diff --git a/types/handler.go b/types/handler.go index 03d1f02d5806..87762744ee86 100644 --- a/types/handler.go +++ b/types/handler.go @@ -43,21 +43,22 @@ func ChainAnteDecorators(chain ...AnteDecorator) AnteHandler { // Terminator AnteDecorator will get added to the chain to simplify decorator code // Don't need to check if next == nil further up the chain -// ______ -// <((((((\\\ -// / . }\ -// ;--..--._|} -// (\ '--/\--' ) -// \\ | '-' :'| -// \\ . -==- .-| -// \\ \.__.' \--._ -// [\\ __.--| // _/'--. -// \ \\ .'-._ ('-----'/ __/ \ -// \ \\ / __>| | '--. | -// \ \\ | \ | / / / -// \ '\ / \ | | _/ / -// \ \ \ | | / / -// snd \ \ \ / +// +// ______ +// <((((((\\\ +// / . }\ +// ;--..--._|} +// (\ '--/\--' ) +// \\ | '-' :'| +// \\ . -==- .-| +// \\ \.__.' \--._ +// [\\ __.--| // _/'--. +// \ \\ .'-._ ('-----'/ __/ \ +// \ \\ / __>| | '--. | +// \ \\ | \ | / / / +// \ '\ / \ | | _/ / +// \ \ \ | | / / +// snd \ \ \ / type Terminator struct{} // Simply return provided Context and nil error diff --git a/types/handler_test.go b/types/handler_test.go index b71980fd060d..398e734f5061 100644 --- a/types/handler_test.go +++ b/types/handler_test.go @@ -30,10 +30,18 @@ func (s *handlerTestSuite) TestChainAnteDecorators() { mockCtrl := gomock.NewController(s.T()) mockAnteDecorator1 := mocks.NewMockAnteDecorator(mockCtrl) mockAnteDecorator1.EXPECT().AnteHandle(gomock.Eq(ctx), gomock.Eq(tx), true, gomock.Any()).Times(1) - sdk.ChainAnteDecorators(mockAnteDecorator1)(ctx, tx, true) //nolint:errcheck + _, err := sdk.ChainAnteDecorators(mockAnteDecorator1)(ctx, tx, true) + s.Require().NoError(err) mockAnteDecorator2 := mocks.NewMockAnteDecorator(mockCtrl) - mockAnteDecorator1.EXPECT().AnteHandle(gomock.Eq(ctx), gomock.Eq(tx), true, mockAnteDecorator2).Times(1) - mockAnteDecorator2.EXPECT().AnteHandle(gomock.Eq(ctx), gomock.Eq(tx), true, nil).Times(1) - sdk.ChainAnteDecorators(mockAnteDecorator1, mockAnteDecorator2) + // NOTE: we can't check that mockAnteDecorator2 is passed as the last argument because + // ChainAnteDecorators wraps the decorators into closures, so each decorator is + // receving a closure. + mockAnteDecorator1.EXPECT().AnteHandle(gomock.Eq(ctx), gomock.Eq(tx), true, gomock.Any()).Times(1) + // mockAnteDecorator2.EXPECT().AnteHandle(gomock.Eq(ctx), gomock.Eq(tx), true, gomock.Any()).Times(1) + + _, err = sdk.ChainAnteDecorators( + mockAnteDecorator1, + mockAnteDecorator2)(ctx, tx, true) + s.Require().NoError(err) } diff --git a/types/int.go b/types/int.go index 81f6b1c04ddb..36461325e0a2 100644 --- a/types/int.go +++ b/types/int.go @@ -4,9 +4,8 @@ import ( "encoding" "encoding/json" "fmt" - "testing" - "math/big" + "testing" ) const maxBitLen = 255 diff --git a/types/int_test.go b/types/int_test.go index 4b26ddb8ada5..06f30b29869c 100644 --- a/types/int_test.go +++ b/types/int_test.go @@ -164,7 +164,6 @@ func (s *intTestSuite) TestArithInt() { s.Require().Equal(tc.nres, tc.ires.Int64(), "Int arithmetic operation does not match with int64 operation. tc #%d", tcnum) } } - } func (s *intTestSuite) TestCompInt() { diff --git a/types/kv/list.go b/types/kv/list.go index 9e928c84912b..1c59207f1ff3 100644 --- a/types/kv/list.go +++ b/types/kv/list.go @@ -113,7 +113,7 @@ func (l *List) remove(e *Element) *Element { } // move moves e to next to at and returns e. -// nolint: unparam +//nolint: unparam func (l *List) move(e, at *Element) *Element { if e == at { return e diff --git a/types/module/module.go b/types/module/module.go index 5b47b8c84815..44fa33016ae8 100644 --- a/types/module/module.go +++ b/types/module/module.go @@ -1,10 +1,10 @@ /* Package module contains application module patterns and associated "manager" functionality. The module pattern has been broken down by: - - independent module functionality (AppModuleBasic) - - inter-dependent module genesis functionality (AppModuleGenesis) - - inter-dependent module simulation functionality (AppModuleSimulation) - - inter-dependent module full functionality (AppModule) + - independent module functionality (AppModuleBasic) + - inter-dependent module genesis functionality (AppModuleGenesis) + - inter-dependent module simulation functionality (AppModuleSimulation) + - inter-dependent module full functionality (AppModule) inter-dependent module functionality is module functionality which somehow depends on other modules, typically through the module keeper. Many of the @@ -230,7 +230,6 @@ type Manager struct { // NewManager creates a new Manager object func NewManager(modules ...AppModule) *Manager { - moduleMap := make(map[string]AppModule) modulesStr := make([]string, 0, len(modules)) for _, module := range modules { diff --git a/types/module/module_test.go b/types/module/module_test.go index 630c57619245..1dc370291299 100644 --- a/types/module/module_test.go +++ b/types/module/module_test.go @@ -209,7 +209,8 @@ func TestManager_InitGenesis(t *testing.T) { // test panic genesisData = map[string]json.RawMessage{ "module1": json.RawMessage(`{"key": "value"}`), - "module2": json.RawMessage(`{"key": "value"}`)} + "module2": json.RawMessage(`{"key": "value"}`), + } mockAppModule1.EXPECT().InitGenesis(gomock.Eq(ctx), gomock.Eq(cdc), gomock.Eq(genesisData["module1"])).Times(1).Return([]abci.ValidatorUpdate{{}}) mockAppModule2.EXPECT().InitGenesis(gomock.Eq(ctx), gomock.Eq(cdc), gomock.Eq(genesisData["module2"])).Times(1).Return([]abci.ValidatorUpdate{{}}) require.Panics(t, func() { mm.InitGenesis(ctx, cdc, genesisData) }) @@ -235,7 +236,8 @@ func TestManager_ExportGenesis(t *testing.T) { want := map[string]json.RawMessage{ "module1": json.RawMessage(`{"key1": "value1"}`), - "module2": json.RawMessage(`{"key2": "value2"}`)} + "module2": json.RawMessage(`{"key2": "value2"}`), + } require.Equal(t, want, mm.ExportGenesis(ctx, cdc)) } diff --git a/types/module/simulation.go b/types/module/simulation.go index e01277f457a4..4c92284889cd 100644 --- a/types/module/simulation.go +++ b/types/module/simulation.go @@ -2,7 +2,6 @@ package module import ( "encoding/json" - "math/rand" "time" diff --git a/types/query/filtered_pagination.go b/types/query/filtered_pagination.go index 0ab29a4acded..8e17f3b2f5c1 100644 --- a/types/query/filtered_pagination.go +++ b/types/query/filtered_pagination.go @@ -19,7 +19,6 @@ func FilteredPaginate( pageRequest *PageRequest, onResult func(key []byte, value []byte, accumulate bool) (bool, error), ) (*PageResponse, error) { - // if the PageRequest is nil, use default PageRequest if pageRequest == nil { pageRequest = &PageRequest{} diff --git a/types/query/filtered_pagination_test.go b/types/query/filtered_pagination_test.go index dbd2057da473..9c2d43f6494e 100644 --- a/types/query/filtered_pagination_test.go +++ b/types/query/filtered_pagination_test.go @@ -132,7 +132,6 @@ func ExampleFilteredPaginate() { return false, nil }) - if err != nil { // should return no error fmt.Println(err) } diff --git a/types/query/pagination.go b/types/query/pagination.go index 9a0999fe61d6..f96da96fd110 100644 --- a/types/query/pagination.go +++ b/types/query/pagination.go @@ -44,7 +44,6 @@ func Paginate( pageRequest *PageRequest, onResult func(key []byte, value []byte) error, ) (*PageResponse, error) { - // if the PageRequest is nil, use default PageRequest if pageRequest == nil { pageRequest = &PageRequest{} diff --git a/types/rest/rest.go b/types/rest/rest.go index 80afe2fb61d2..6ae70d2e22ff 100644 --- a/types/rest/rest.go +++ b/types/rest/rest.go @@ -7,7 +7,7 @@ import ( "encoding/json" "errors" "fmt" - "io/ioutil" + "io" "net/http" "net/url" "strconv" @@ -135,7 +135,7 @@ func (br BaseReq) ValidateBasic(w http.ResponseWriter) bool { // ReadRESTReq reads and unmarshals a Request's body to the the BaseReq struct. // Writes an error response to ResponseWriter and returns true if errors occurred. func ReadRESTReq(w http.ResponseWriter, r *http.Request, cdc *codec.LegacyAmino, req interface{}) bool { - body, err := ioutil.ReadAll(r.Body) + body, err := io.ReadAll(r.Body) if CheckBadRequestError(w, err) { return false } @@ -411,12 +411,12 @@ func ParseQueryParamBool(r *http.Request, param string) bool { // GetRequest defines a wrapper around an HTTP GET request with a provided URL. // An error is returned if the request or reading the body fails. func GetRequest(url string) ([]byte, error) { - res, err := http.Get(url) // nolint:gosec + res, err := http.Get(url) //nolint:gosec if err != nil { return nil, err } - body, err := ioutil.ReadAll(res.Body) + body, err := io.ReadAll(res.Body) if err != nil { return nil, err } @@ -431,12 +431,12 @@ func GetRequest(url string) ([]byte, error) { // PostRequest defines a wrapper around an HTTP POST request with a provided URL and data. // An error is returned if the request or reading the body fails. func PostRequest(url string, contentType string, data []byte) ([]byte, error) { - res, err := http.Post(url, contentType, bytes.NewBuffer(data)) // nolint:gosec + res, err := http.Post(url, contentType, bytes.NewBuffer(data)) //nolint:gosec if err != nil { return nil, fmt.Errorf("error while sending post request: %w", err) } - bz, err := ioutil.ReadAll(res.Body) + bz, err := io.ReadAll(res.Body) if err != nil { return nil, fmt.Errorf("error reading response body: %w", err) } diff --git a/types/rest/rest_test.go b/types/rest/rest_test.go index 8f873645d64c..d39afea52e37 100644 --- a/types/rest/rest_test.go +++ b/types/rest/rest_test.go @@ -26,13 +26,15 @@ import ( func TestBaseReq_Sanitize(t *testing.T) { t.Parallel() - sanitized := rest.BaseReq{ChainID: " test", + sanitized := rest.BaseReq{ + ChainID: " test", Memo: "memo ", From: " cosmos1cq0sxam6x4l0sv9yz3a2vlqhdhvt2k6jtgcse0 ", Gas: " ", GasAdjustment: " 0.3", }.Sanitize() - require.Equal(t, rest.BaseReq{ChainID: "test", + require.Equal(t, rest.BaseReq{ + ChainID: "test", Memo: "memo", From: "cosmos1cq0sxam6x4l0sv9yz3a2vlqhdhvt2k6jtgcse0", Gas: "", @@ -257,7 +259,7 @@ func TestWriteSimulationResponse(t *testing.T) { res := w.Result() //nolint:bodyclose t.Cleanup(func() { res.Body.Close() }) require.Equal(t, http.StatusOK, res.StatusCode) - bs, err := ioutil.ReadAll(res.Body) + bs, err := io.ReadAll(res.Body) require.NoError(t, err) t.Cleanup(func() { res.Body.Close() }) require.Equal(t, `{"gas_estimate":"10"}`, string(bs)) @@ -320,7 +322,7 @@ func TestPostProcessResponseBare(t *testing.T) { res := w.Result() //nolint:bodyclose require.Equal(t, http.StatusOK, res.StatusCode) - got, err := ioutil.ReadAll(res.Body) + got, err := io.ReadAll(res.Body) require.NoError(t, err) t.Cleanup(func() { res.Body.Close() }) @@ -338,7 +340,7 @@ func TestPostProcessResponseBare(t *testing.T) { res = w.Result() //nolint:bodyclose require.Equal(t, http.StatusOK, res.StatusCode) - got, err = ioutil.ReadAll(res.Body) + got, err = io.ReadAll(res.Body) require.NoError(t, err) t.Cleanup(func() { res.Body.Close() }) @@ -356,7 +358,7 @@ func TestPostProcessResponseBare(t *testing.T) { res = w.Result() //nolint:bodyclose require.Equal(t, http.StatusOK, res.StatusCode) - got, err = ioutil.ReadAll(res.Body) + got, err = io.ReadAll(res.Body) require.NoError(t, err) t.Cleanup(func() { res.Body.Close() }) @@ -371,7 +373,7 @@ func TestPostProcessResponseBare(t *testing.T) { res = w.Result() //nolint:bodyclose require.Equal(t, http.StatusInternalServerError, res.StatusCode) - got, err = ioutil.ReadAll(res.Body) + got, err = io.ReadAll(res.Body) require.NoError(t, err) t.Cleanup(func() { res.Body.Close() }) @@ -398,7 +400,7 @@ func runPostProcessResponse(t *testing.T, ctx client.Context, obj interface{}, e resp := w.Result() //nolint:bodyclose t.Cleanup(func() { resp.Body.Close() }) - body, err := ioutil.ReadAll(resp.Body) + body, err := io.ReadAll(resp.Body) require.Nil(t, err) require.Equal(t, expectedBody, body) @@ -413,7 +415,7 @@ func runPostProcessResponse(t *testing.T, ctx client.Context, obj interface{}, e resp = w.Result() //nolint:bodyclose t.Cleanup(func() { resp.Body.Close() }) - body, err = ioutil.ReadAll(resp.Body) + body, err = io.ReadAll(resp.Body) require.Nil(t, err) require.Equal(t, string(expectedBody), string(body)) diff --git a/types/simulation/rand_util.go b/types/simulation/rand_util.go index 84cd4492c8a7..2f105c2199ce 100644 --- a/types/simulation/rand_util.go +++ b/types/simulation/rand_util.go @@ -53,7 +53,7 @@ func RandPositiveInt(r *rand.Rand, max sdk.Int) (sdk.Int, error) { // RandomAmount generates a random amount // Note: The range of RandomAmount includes max, and is, in fact, biased to return max as well as 0. func RandomAmount(r *rand.Rand, max sdk.Int) sdk.Int { - var randInt = big.NewInt(0) + randInt := big.NewInt(0) switch r.Intn(10) { case 0: @@ -70,7 +70,7 @@ func RandomAmount(r *rand.Rand, max sdk.Int) sdk.Int { // RandomDecAmount generates a random decimal amount // Note: The range of RandomDecAmount includes max, and is, in fact, biased to return max as well as 0. func RandomDecAmount(r *rand.Rand, max sdk.Dec) sdk.Dec { - var randInt = big.NewInt(0) + randInt := big.NewInt(0) switch r.Intn(10) { case 0: diff --git a/types/store_test.go b/types/store_test.go index 02f71bbf4138..adfdfb510bb1 100644 --- a/types/store_test.go +++ b/types/store_test.go @@ -24,7 +24,7 @@ func (s *storeTestSuite) SetupSuite() { } func (s *storeTestSuite) TestPrefixEndBytes() { - var testCases = []struct { + testCases := []struct { prefix []byte expected []byte }{ @@ -47,7 +47,7 @@ func (s *storeTestSuite) TestCommitID() { var empty sdk.CommitID s.Require().True(empty.IsZero()) - var nonempty = sdk.CommitID{ + nonempty := sdk.CommitID{ Version: 1, Hash: []byte("testhash"), } diff --git a/types/tx/signing/signature.go b/types/tx/signing/signature.go index 1323543f023a..c5faf4b8d1d4 100644 --- a/types/tx/signing/signature.go +++ b/types/tx/signing/signature.go @@ -92,7 +92,6 @@ var _, _ codectypes.UnpackInterfacesMessage = &SignatureDescriptors{}, &Signatur func (sds *SignatureDescriptors) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { for _, sig := range sds.Signatures { err := sig.UnpackInterfaces(unpacker) - if err != nil { return err } diff --git a/types/tx/types.go b/types/tx/types.go index 65313f735b7a..d599abcbde75 100644 --- a/types/tx/types.go +++ b/types/tx/types.go @@ -14,8 +14,10 @@ import ( const MaxGasWanted = uint64((1 << 63) - 1) // Interface implementation checks. -var _, _, _, _ codectypes.UnpackInterfacesMessage = &Tx{}, &TxBody{}, &AuthInfo{}, &SignerInfo{} -var _ sdk.Tx = &Tx{} +var ( + _, _, _, _ codectypes.UnpackInterfacesMessage = &Tx{}, &TxBody{}, &AuthInfo{}, &SignerInfo{} + _ sdk.Tx = &Tx{} +) // GetMsgs implements the GetMsgs method on sdk.Tx. func (t *Tx) GetMsgs() []sdk.Msg { diff --git a/types/uint_internal_test.go b/types/uint_internal_test.go index a39869cac759..4d47bc323ae1 100644 --- a/types/uint_internal_test.go +++ b/types/uint_internal_test.go @@ -51,5 +51,4 @@ func (s *uintInternalTestSuite) TestUintSize() { s.Require().Equal(2, x.Size()) x = NewUint(100) s.Require().Equal(3, x.Size()) - } diff --git a/types/utils_test.go b/types/utils_test.go index c04c9c81f3e1..1030c73f6586 100644 --- a/types/utils_test.go +++ b/types/utils_test.go @@ -29,20 +29,28 @@ func (s *utilsTestSuite) TestSortJSON() { wantErr bool }{ // simple case - {unsortedJSON: `{"cosmos":"foo", "atom":"bar", "tendermint":"foobar"}`, - want: `{"atom":"bar","cosmos":"foo","tendermint":"foobar"}`, wantErr: false}, + { + unsortedJSON: `{"cosmos":"foo", "atom":"bar", "tendermint":"foobar"}`, + want: `{"atom":"bar","cosmos":"foo","tendermint":"foobar"}`, wantErr: false, + }, // failing case (invalid JSON): - {unsortedJSON: `"cosmos":"foo",,,, "atom":"bar", "tendermint":"foobar"}`, - want: "", - wantErr: true}, + { + unsortedJSON: `"cosmos":"foo",,,, "atom":"bar", "tendermint":"foobar"}`, + want: "", + wantErr: true, + }, // genesis.json - {unsortedJSON: `{"consensus_params":{"block_size_params":{"max_bytes":22020096,"max_txs":100000,"max_gas":-1},"tx_size_params":{"max_bytes":10240,"max_gas":-1},"block_gossip_params":{"block_part_size_bytes":65536},"evidence_params":{"max_age":100000}},"validators":[{"pub_key":{"type":"AC26791624DE60","value":"c7UMMAbjFuc5GhGPy0E5q5tefy12p9Tq0imXqdrKXwo="},"power":100,"name":""}],"app_hash":"","genesis_time":"2018-05-11T15:52:25.424795506Z","chain_id":"test-chain-Q6VeoW","app_state":{"accounts":[{"address":"718C9C23F98C9642569742ADDD9F9AB9743FBD5D","coins":[{"denom":"Token","amount":1000},{"denom":"stake","amount":50}]}],"stake":{"pool":{"total_supply":50,"bonded_shares":"0","unbonded_shares":"0","bonded_pool":0,"unbonded_pool":0,"inflation_last_time":0,"inflation":"7/100"},"params":{"inflation_rate_change":"13/100","inflation_max":"1/5","inflation_min":"7/100","goal_bonded":"67/100","max_validators":100,"bond_denom":"stake"},"candidates":null,"bonds":null}}}`, - want: `{"app_hash":"","app_state":{"accounts":[{"address":"718C9C23F98C9642569742ADDD9F9AB9743FBD5D","coins":[{"amount":1000,"denom":"Token"},{"amount":50,"denom":"stake"}]}],"stake":{"bonds":null,"candidates":null,"params":{"bond_denom":"stake","goal_bonded":"67/100","inflation_max":"1/5","inflation_min":"7/100","inflation_rate_change":"13/100","max_validators":100},"pool":{"bonded_pool":0,"bonded_shares":"0","inflation":"7/100","inflation_last_time":0,"total_supply":50,"unbonded_pool":0,"unbonded_shares":"0"}}},"chain_id":"test-chain-Q6VeoW","consensus_params":{"block_gossip_params":{"block_part_size_bytes":65536},"block_size_params":{"max_bytes":22020096,"max_gas":-1,"max_txs":100000},"evidence_params":{"max_age":100000},"tx_size_params":{"max_bytes":10240,"max_gas":-1}},"genesis_time":"2018-05-11T15:52:25.424795506Z","validators":[{"name":"","power":100,"pub_key":{"type":"AC26791624DE60","value":"c7UMMAbjFuc5GhGPy0E5q5tefy12p9Tq0imXqdrKXwo="}}]}`, - wantErr: false}, + { + unsortedJSON: `{"consensus_params":{"block_size_params":{"max_bytes":22020096,"max_txs":100000,"max_gas":-1},"tx_size_params":{"max_bytes":10240,"max_gas":-1},"block_gossip_params":{"block_part_size_bytes":65536},"evidence_params":{"max_age":100000}},"validators":[{"pub_key":{"type":"AC26791624DE60","value":"c7UMMAbjFuc5GhGPy0E5q5tefy12p9Tq0imXqdrKXwo="},"power":100,"name":""}],"app_hash":"","genesis_time":"2018-05-11T15:52:25.424795506Z","chain_id":"test-chain-Q6VeoW","app_state":{"accounts":[{"address":"718C9C23F98C9642569742ADDD9F9AB9743FBD5D","coins":[{"denom":"Token","amount":1000},{"denom":"stake","amount":50}]}],"stake":{"pool":{"total_supply":50,"bonded_shares":"0","unbonded_shares":"0","bonded_pool":0,"unbonded_pool":0,"inflation_last_time":0,"inflation":"7/100"},"params":{"inflation_rate_change":"13/100","inflation_max":"1/5","inflation_min":"7/100","goal_bonded":"67/100","max_validators":100,"bond_denom":"stake"},"candidates":null,"bonds":null}}}`, + want: `{"app_hash":"","app_state":{"accounts":[{"address":"718C9C23F98C9642569742ADDD9F9AB9743FBD5D","coins":[{"amount":1000,"denom":"Token"},{"amount":50,"denom":"stake"}]}],"stake":{"bonds":null,"candidates":null,"params":{"bond_denom":"stake","goal_bonded":"67/100","inflation_max":"1/5","inflation_min":"7/100","inflation_rate_change":"13/100","max_validators":100},"pool":{"bonded_pool":0,"bonded_shares":"0","inflation":"7/100","inflation_last_time":0,"total_supply":50,"unbonded_pool":0,"unbonded_shares":"0"}}},"chain_id":"test-chain-Q6VeoW","consensus_params":{"block_gossip_params":{"block_part_size_bytes":65536},"block_size_params":{"max_bytes":22020096,"max_gas":-1,"max_txs":100000},"evidence_params":{"max_age":100000},"tx_size_params":{"max_bytes":10240,"max_gas":-1}},"genesis_time":"2018-05-11T15:52:25.424795506Z","validators":[{"name":"","power":100,"pub_key":{"type":"AC26791624DE60","value":"c7UMMAbjFuc5GhGPy0E5q5tefy12p9Tq0imXqdrKXwo="}}]}`, + wantErr: false, + }, // from the TXSpec: - {unsortedJSON: `{"chain_id":"test-chain-1","sequence":1,"fee_bytes":{"amount":[{"amount":5,"denom":"photon"}],"gas":10000},"msg_bytes":{"inputs":[{"address":"696E707574","coins":[{"amount":10,"denom":"atom"}]}],"outputs":[{"address":"6F7574707574","coins":[{"amount":10,"denom":"atom"}]}]},"alt_bytes":null}`, - want: `{"alt_bytes":null,"chain_id":"test-chain-1","fee_bytes":{"amount":[{"amount":5,"denom":"photon"}],"gas":10000},"msg_bytes":{"inputs":[{"address":"696E707574","coins":[{"amount":10,"denom":"atom"}]}],"outputs":[{"address":"6F7574707574","coins":[{"amount":10,"denom":"atom"}]}]},"sequence":1}`, - wantErr: false}, + { + unsortedJSON: `{"chain_id":"test-chain-1","sequence":1,"fee_bytes":{"amount":[{"amount":5,"denom":"photon"}],"gas":10000},"msg_bytes":{"inputs":[{"address":"696E707574","coins":[{"amount":10,"denom":"atom"}]}],"outputs":[{"address":"6F7574707574","coins":[{"amount":10,"denom":"atom"}]}]},"alt_bytes":null}`, + want: `{"alt_bytes":null,"chain_id":"test-chain-1","fee_bytes":{"amount":[{"amount":5,"denom":"photon"}],"gas":10000},"msg_bytes":{"inputs":[{"address":"696E707574","coins":[{"amount":10,"denom":"atom"}]}],"outputs":[{"address":"6F7574707574","coins":[{"amount":10,"denom":"atom"}]}]},"sequence":1}`, + wantErr: false, + }, } for tcIndex, tc := range cases { diff --git a/version/version.go b/version/version.go index cfb37683f12e..a41834e336c2 100644 --- a/version/version.go +++ b/version/version.go @@ -3,17 +3,17 @@ // produces apps versioning information based on flags // passed at compile time. // -// Configure the version command +// # Configure the version command // // The version command can be just added to your cobra root command. // At build time, the variables Name, Version, Commit, and BuildTags // can be passed as build flags as shown in the following example: // -// go build -X github.com/cosmos/cosmos-sdk/version.Name=gaia \ -// -X github.com/cosmos/cosmos-sdk/version.AppName=gaiad \ -// -X github.com/cosmos/cosmos-sdk/version.Version=1.0 \ -// -X github.com/cosmos/cosmos-sdk/version.Commit=f0f7b7dab7e36c20b757cebce0e8f4fc5b95de60 \ -// -X "github.com/cosmos/cosmos-sdk/version.BuildTags=linux darwin amd64" +// go build -X github.com/cosmos/cosmos-sdk/version.Name=gaia \ +// -X github.com/cosmos/cosmos-sdk/version.AppName=gaiad \ +// -X github.com/cosmos/cosmos-sdk/version.Version=1.0 \ +// -X github.com/cosmos/cosmos-sdk/version.Commit=f0f7b7dab7e36c20b757cebce0e8f4fc5b95de60 \ +// -X "github.com/cosmos/cosmos-sdk/version.BuildTags=linux darwin amd64" package version import ( diff --git a/x/auth/ante/ante_test.go b/x/auth/ante/ante_test.go index 7659f3e1043d..165ac165d590 100644 --- a/x/auth/ante/ante_test.go +++ b/x/auth/ante/ante_test.go @@ -898,7 +898,7 @@ func generatePubKeysAndSignatures(n int, msg []byte, _ bool) (pubkeys []cryptoty // TODO: also generate ed25519 keys as below when ed25519 keys are // actually supported, https://github.com/cosmos/cosmos-sdk/issues/4789 // for now this fails: - //if rand.Int63()%2 == 0 { + // if rand.Int63()%2 == 0 { // privkey = ed25519.GenPrivKey() //} else { // privkey = secp256k1.GenPrivKey() @@ -939,7 +939,8 @@ func TestCountSubkeys(t *testing.T) { multiLevelSubKey1 := kmultisig.NewLegacyAminoPubKey(4, genPubKeys(5)) multiLevelSubKey2 := kmultisig.NewLegacyAminoPubKey(4, genPubKeys(5)) multiLevelMultiKey := kmultisig.NewLegacyAminoPubKey(2, []cryptotypes.PubKey{ - multiLevelSubKey1, multiLevelSubKey2, secp256k1.GenPrivKey().PubKey()}) + multiLevelSubKey1, multiLevelSubKey2, secp256k1.GenPrivKey().PubKey(), + }) type args struct { pub cryptotypes.PubKey } diff --git a/x/auth/ante/basic_test.go b/x/auth/ante/basic_test.go index 08567348857e..a3cfff696113 100644 --- a/x/auth/ante/basic_test.go +++ b/x/auth/ante/basic_test.go @@ -168,10 +168,8 @@ func (suite *AnteTestSuite) TestConsumeGasForTxSize() { // require that antehandler passes and does not underestimate decorator cost suite.Require().Nil(err, "ConsumeTxSizeGasDecorator returned error: %v", err) suite.Require().True(consumedSimGas >= expectedGas, "Simulate mode underestimates gas on AnteDecorator. Simulated cost: %d, expected cost: %d", consumedSimGas, expectedGas) - }) } - } func (suite *AnteTestSuite) TestTxHeightTimeoutDecorator() { diff --git a/x/auth/ante/setup.go b/x/auth/ante/setup.go index 5f21aba8bd5c..d1c143968d43 100644 --- a/x/auth/ante/setup.go +++ b/x/auth/ante/setup.go @@ -8,9 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/auth/legacy/legacytx" ) -var ( - _ GasTx = (*legacytx.StdTx)(nil) // assert StdTx implements GasTx -) +var _ GasTx = (*legacytx.StdTx)(nil) // assert StdTx implements GasTx // GasTx defines a Tx with a GetGas() method which is needed to use SetUpContextDecorator type GasTx interface { diff --git a/x/auth/ante/setup_test.go b/x/auth/ante/setup_test.go index 4942665cac04..43aea9228cf6 100644 --- a/x/auth/ante/setup_test.go +++ b/x/auth/ante/setup_test.go @@ -76,7 +76,7 @@ func (suite *AnteTestSuite) TestRecoverPanic() { suite.Require().Equal(gasLimit, newCtx.GasMeter().Limit()) antehandler = sdk.ChainAnteDecorators(sud, PanicDecorator{}) - suite.Require().Panics(func() { antehandler(suite.ctx, tx, false) }, "Recovered from non-Out-of-Gas panic") // nolint:errcheck + suite.Require().Panics(func() { antehandler(suite.ctx, tx, false) }, "Recovered from non-Out-of-Gas panic") //nolint:errcheck } type OutOfGasDecorator struct{} diff --git a/x/auth/ante/sigverify.go b/x/auth/ante/sigverify.go index 6aa0c2a345f9..07e94b06f649 100644 --- a/x/auth/ante/sigverify.go +++ b/x/auth/ante/sigverify.go @@ -418,7 +418,6 @@ func ConsumeMultisignatureVerificationGas( meter sdk.GasMeter, sig *signing.MultiSignatureData, pubkey multisig.PubKey, params types.Params, accSeq uint64, ) error { - size := sig.BitArray.Count() sigIndex := 0 diff --git a/x/auth/client/cli/cli_test.go b/x/auth/client/cli/cli_test.go index c78e03a86a29..5314de5247a7 100644 --- a/x/auth/client/cli/cli_test.go +++ b/x/auth/client/cli/cli_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package cli_test @@ -7,7 +8,7 @@ import ( "encoding/base64" "encoding/json" "fmt" - "io/ioutil" + "os" "path/filepath" "strings" "testing" @@ -202,7 +203,7 @@ func (s *IntegrationTestSuite) TestCLISign_AminoJSON() { fileFlag := fmt.Sprintf("--%s=%s", flags.FlagOutputDocument, filenameSigned) _, err = authtest.TxSignExec(val1.ClientCtx, val1.Address, fileUnsigned.Name(), chainFlag, fileFlag, signModeAminoFlag) require.NoError(err) - fContent, err := ioutil.ReadFile(filenameSigned) + fContent, err := os.ReadFile(filenameSigned) require.NoError(err) require.Equal(res.String(), string(fContent)) diff --git a/x/auth/client/cli/tx_multisign.go b/x/auth/client/cli/tx_multisign.go index 1b7a68a9c729..d10695d240ae 100644 --- a/x/auth/client/cli/tx_multisign.go +++ b/x/auth/client/cli/tx_multisign.go @@ -2,7 +2,6 @@ package cli import ( "fmt" - "io/ioutil" "os" "strings" @@ -173,7 +172,7 @@ func makeMultiSignCmd() func(cmd *cobra.Command, args []string) (err error) { return } - fp, err := os.OpenFile(outputDoc, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) + fp, err := os.OpenFile(outputDoc, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o644) if err != nil { return err } @@ -240,7 +239,7 @@ func makeBatchMultisignCmd() func(cmd *cobra.Command, args []string) error { txFactory = txFactory.WithSignMode(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON) } - var infile = os.Stdin + infile := os.Stdin if args[0] != "-" { infile, err = os.Open(args[0]) defer func() { @@ -368,14 +367,14 @@ func makeBatchMultisignCmd() func(cmd *cobra.Command, args []string) error { func unmarshalSignatureJSON(clientCtx client.Context, filename string) (sigs []signingtypes.SignatureV2, err error) { var bytes []byte - if bytes, err = ioutil.ReadFile(filename); err != nil { + if bytes, err = os.ReadFile(filename); err != nil { return } return clientCtx.TxConfig.UnmarshalSignatureJSON(bytes) } func readSignaturesFromFile(ctx client.Context, filename string) (sigs []signingtypes.SignatureV2, err error) { - bz, err := ioutil.ReadFile(filename) + bz, err := os.ReadFile(filename) if err != nil { return nil, err } diff --git a/x/auth/client/cli/tx_sign.go b/x/auth/client/cli/tx_sign.go index 087018bd6b04..b7f2588751b7 100644 --- a/x/auth/client/cli/tx_sign.go +++ b/x/auth/client/cli/tx_sign.go @@ -144,7 +144,7 @@ func setOutputFile(cmd *cobra.Command) (func(), error) { return func() {}, nil } - fp, err := os.OpenFile(outputDoc, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) + fp, err := os.OpenFile(outputDoc, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o644) if err != nil { return func() {}, err } @@ -276,7 +276,7 @@ func makeSignCmd() func(cmd *cobra.Command, args []string) error { return nil } - fp, err := os.OpenFile(outputDoc, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) + fp, err := os.OpenFile(outputDoc, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o644) if err != nil { return err } diff --git a/x/auth/client/query.go b/x/auth/client/query.go index bc1b7f6f4512..83e2bfc383f9 100644 --- a/x/auth/client/query.go +++ b/x/auth/client/query.go @@ -77,7 +77,7 @@ func QueryTx(clientCtx client.Context, hashHexStr string) (*sdk.TxResponse, erro return nil, err } - //TODO: this may not always need to be proven + // TODO: this may not always need to be proven // https://github.com/cosmos/cosmos-sdk/issues/6807 resTx, err := node.Tx(context.Background(), hash, true) if err != nil { diff --git a/x/auth/client/rest/broadcast.go b/x/auth/client/rest/broadcast.go index 9f7d6fc559a5..9724b0a908b1 100644 --- a/x/auth/client/rest/broadcast.go +++ b/x/auth/client/rest/broadcast.go @@ -2,7 +2,7 @@ package rest import ( "fmt" - "io/ioutil" + "io" "net/http" "github.com/cosmos/cosmos-sdk/client" @@ -33,7 +33,7 @@ func BroadcastTxRequest(clientCtx client.Context) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { var req BroadcastReq - body, err := ioutil.ReadAll(r.Body) + body, err := io.ReadAll(r.Body) if rest.CheckBadRequestError(w, err) { return } diff --git a/x/auth/client/rest/decode.go b/x/auth/client/rest/decode.go index 5b732fa0a19d..725991fd61af 100644 --- a/x/auth/client/rest/decode.go +++ b/x/auth/client/rest/decode.go @@ -3,7 +3,7 @@ package rest import ( "encoding/base64" "fmt" - "io/ioutil" + "io" "net/http" "github.com/cosmos/cosmos-sdk/client" @@ -31,7 +31,7 @@ func DecodeTxRequestHandlerFn(clientCtx client.Context) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { var req DecodeReq - body, err := ioutil.ReadAll(r.Body) + body, err := io.ReadAll(r.Body) if rest.CheckBadRequestError(w, err) { return } diff --git a/x/auth/client/rest/encode.go b/x/auth/client/rest/encode.go index 638817801533..8ffb12f4fce4 100644 --- a/x/auth/client/rest/encode.go +++ b/x/auth/client/rest/encode.go @@ -3,7 +3,7 @@ package rest import ( "encoding/base64" "fmt" - "io/ioutil" + "io" "net/http" "github.com/cosmos/cosmos-sdk/client" @@ -31,7 +31,7 @@ func EncodeTxRequestHandlerFn(clientCtx client.Context) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { var req legacytx.StdTx - body, err := ioutil.ReadAll(r.Body) + body, err := io.ReadAll(r.Body) if rest.CheckBadRequestError(w, err) { return } diff --git a/x/auth/client/rest/query.go b/x/auth/client/rest/query.go index d11d4b3416cc..057f6e4def15 100644 --- a/x/auth/client/rest/query.go +++ b/x/auth/client/rest/query.go @@ -206,14 +206,12 @@ func checkAminoMarshalError(ctx client.Context, resp interface{}, grpcEndPoint s _, err := marshaler.MarshalJSON(resp) if err != nil { - // If there's an unmarshalling error, we assume that it's because we're // using amino to unmarshal a non-amino tx. return fmt.Errorf("this transaction cannot be displayed via legacy REST endpoints, because it does not support"+ " Amino serialization. Please either use CLI, gRPC, gRPC-gateway, or directly query the Tendermint RPC"+ " endpoint to query this transaction. The new REST endpoint (via gRPC-gateway) is %s. Please also see the"+ "REST endpoints migration guide at %s for more info", grpcEndPoint, clientrest.DeprecationURL) - } return nil diff --git a/x/auth/client/rest/rest_test.go b/x/auth/client/rest/rest_test.go index 454dc562a873..085d8dd8e2ab 100644 --- a/x/auth/client/rest/rest_test.go +++ b/x/auth/client/rest/rest_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package rest_test diff --git a/x/auth/client/tx.go b/x/auth/client/tx.go index ebaac117d651..da2664311d1e 100644 --- a/x/auth/client/tx.go +++ b/x/auth/client/tx.go @@ -5,7 +5,6 @@ import ( "bytes" "fmt" "io" - "io/ioutil" "os" "strings" @@ -80,7 +79,8 @@ func SignTx(txFactory tx.Factory, clientCtx client.Context, name string, txBuild // This function should only be used when signing with a multisig. For // normal keys, please use SignTx directly. func SignTxWithSignerAddress(txFactory tx.Factory, clientCtx client.Context, addr sdk.AccAddress, - name string, txBuilder client.TxBuilder, offline, overwrite bool) (err error) { + name string, txBuilder client.TxBuilder, offline, overwrite bool, +) (err error) { // Multisigs only support LEGACY_AMINO_JSON signing. if txFactory.SignMode() == signing.SignMode_SIGN_MODE_UNSPECIFIED { txFactory = txFactory.WithSignMode(signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON) @@ -106,9 +106,9 @@ func ReadTxFromFile(ctx client.Context, filename string) (tx sdk.Tx, err error) var bytes []byte if filename == "-" { - bytes, err = ioutil.ReadAll(os.Stdin) + bytes, err = io.ReadAll(os.Stdin) } else { - bytes, err = ioutil.ReadFile(filename) + bytes, err = os.ReadFile(filename) } if err != nil { @@ -157,7 +157,6 @@ func (bs *BatchScanner) Scan() bool { func populateAccountFromState( txBldr tx.Factory, clientCtx client.Context, addr sdk.AccAddress, ) (tx.Factory, error) { - num, seq, err := clientCtx.AccountRetriever.GetAccountNumberSequence(clientCtx, addr) if err != nil { return txBldr, err diff --git a/x/auth/client/tx_test.go b/x/auth/client/tx_test.go index 3e1d31383ddc..02e1dc26520e 100644 --- a/x/auth/client/tx_test.go +++ b/x/auth/client/tx_test.go @@ -149,7 +149,7 @@ func compareEncoders(t *testing.T, expected sdk.TxEncoder, actual sdk.TxEncoder) } func makeCodec() *codec.LegacyAmino { - var cdc = codec.NewLegacyAmino() + cdc := codec.NewLegacyAmino() sdk.RegisterLegacyAminoCodec(cdc) cryptocodec.RegisterCrypto(cdc) authtypes.RegisterLegacyAminoCodec(cdc) diff --git a/x/auth/keeper/grpc_query.go b/x/auth/keeper/grpc_query.go index cf3c7b844362..17eb98115c9b 100644 --- a/x/auth/keeper/grpc_query.go +++ b/x/auth/keeper/grpc_query.go @@ -25,7 +25,6 @@ func (ak AccountKeeper) Account(c context.Context, req *types.QueryAccountReques ctx := sdk.UnwrapSDKContext(c) addr, err := sdk.AccAddressFromBech32(req.Address) - if err != nil { return nil, err } diff --git a/x/auth/keeper/grpc_query_test.go b/x/auth/keeper/grpc_query_test.go index 47c48f027629..d70b9ec5d3e0 100644 --- a/x/auth/keeper/grpc_query_test.go +++ b/x/auth/keeper/grpc_query_test.go @@ -9,9 +9,7 @@ import ( ) func (suite *KeeperTestSuite) TestGRPCQueryAccount() { - var ( - req *types.QueryAccountRequest - ) + var req *types.QueryAccountRequest _, _, addr := testdata.KeyTestPubAddr() testCases := []struct { diff --git a/x/auth/keeper/keeper.go b/x/auth/keeper/keeper.go index 92d9f9b76ecb..943deea7c54e 100644 --- a/x/auth/keeper/keeper.go +++ b/x/auth/keeper/keeper.go @@ -64,7 +64,6 @@ func NewAccountKeeper( cdc codec.BinaryMarshaler, key sdk.StoreKey, paramstore paramtypes.Subspace, proto func() types.AccountI, maccPerms map[string][]string, ) AccountKeeper { - // set KeyTable if it has not already been set if !paramstore.HasKeyTable() { paramstore = paramstore.WithKeyTable(types.ParamKeyTable()) @@ -216,7 +215,7 @@ func (ak AccountKeeper) decodeAccount(bz []byte) types.AccountI { } // MarshalAccount protobuf serializes an Account interface -func (ak AccountKeeper) MarshalAccount(accountI types.AccountI) ([]byte, error) { // nolint:interfacer +func (ak AccountKeeper) MarshalAccount(accountI types.AccountI) ([]byte, error) { //nolint:interfacer return ak.cdc.MarshalInterface(accountI) } diff --git a/x/auth/legacy/legacytx/stdtx_builder.go b/x/auth/legacy/legacytx/stdtx_builder.go index 153c4b2bbbc1..592b763ded6b 100644 --- a/x/auth/legacy/legacytx/stdtx_builder.go +++ b/x/auth/legacy/legacytx/stdtx_builder.go @@ -192,7 +192,7 @@ func mkDecoder(unmarshaler Unmarshaler) sdk.TxDecoder { if len(txBytes) == 0 { return nil, sdkerrors.Wrap(sdkerrors.ErrTxDecode, "tx bytes are empty") } - var tx = StdTx{} + tx := StdTx{} // StdTx.Msg is an interface. The concrete types // are registered by MakeTxCodec err := unmarshaler(txBytes, &tx) diff --git a/x/auth/legacy/legacytx/stdtx_test.go b/x/auth/legacy/legacytx/stdtx_test.go index a702a82841d0..9a7a15d47fd9 100644 --- a/x/auth/legacy/legacytx/stdtx_test.go +++ b/x/auth/legacy/legacytx/stdtx_test.go @@ -27,7 +27,7 @@ var ( ) func init() { - var amino = codec.NewLegacyAmino() + amino := codec.NewLegacyAmino() RegisterLegacyAminoCodec(amino) } diff --git a/x/auth/legacy/v038/types.go b/x/auth/legacy/v038/types.go index b7dedf003e13..1512fb4a1df0 100644 --- a/x/auth/legacy/v038/types.go +++ b/x/auth/legacy/v038/types.go @@ -130,7 +130,6 @@ func NewBaseAccountWithAddress(addr sdk.AccAddress) BaseAccount { func NewBaseAccount( address sdk.AccAddress, coins sdk.Coins, pk cryptotypes.PubKey, accountNumber, sequence uint64, ) *BaseAccount { - return &BaseAccount{ Address: address, Coins: coins, @@ -213,7 +212,6 @@ func (acc *BaseAccount) UnmarshalJSON(bz []byte) error { func NewBaseVestingAccount( baseAccount *BaseAccount, originalVesting, delegatedFree, delegatedVesting sdk.Coins, endTime int64, ) *BaseVestingAccount { - return &BaseVestingAccount{ BaseAccount: baseAccount, OriginalVesting: originalVesting, diff --git a/x/auth/legacy/v039/types.go b/x/auth/legacy/v039/types.go index 3de576f27ffa..0a7a23b54581 100644 --- a/x/auth/legacy/v039/types.go +++ b/x/auth/legacy/v039/types.go @@ -120,7 +120,6 @@ func NewBaseAccountWithAddress(addr sdk.AccAddress) BaseAccount { func NewBaseAccount( address sdk.AccAddress, coins sdk.Coins, pk cryptotypes.PubKey, accountNumber, sequence uint64, ) *BaseAccount { - return &BaseAccount{ Address: address, Coins: coins, @@ -159,7 +158,6 @@ func (acc BaseAccount) Validate() error { func NewBaseVestingAccount( baseAccount *BaseAccount, originalVesting, delegatedFree, delegatedVesting sdk.Coins, endTime int64, ) *BaseVestingAccount { - return &BaseVestingAccount{ BaseAccount: baseAccount, OriginalVesting: originalVesting, diff --git a/x/auth/legacy/v040/migrate.go b/x/auth/legacy/v040/migrate.go index 363ec7ba82df..6f9597cb977e 100644 --- a/x/auth/legacy/v040/migrate.go +++ b/x/auth/legacy/v040/migrate.go @@ -49,7 +49,7 @@ func convertBaseVestingAccount(old *v039auth.BaseVestingAccount) *v040vesting.Ba // - Re-encode in v0.40 GenesisState. func Migrate(authGenState v039auth.GenesisState) *v040auth.GenesisState { // Convert v0.39 accounts to v0.40 ones. - var v040Accounts = make([]v040auth.GenesisAccount, len(authGenState.Accounts)) + v040Accounts := make([]v040auth.GenesisAccount, len(authGenState.Accounts)) for i, v039Account := range authGenState.Accounts { switch v039Account := v039Account.(type) { case *v039auth.BaseAccount: @@ -99,7 +99,6 @@ func Migrate(authGenState v039auth.GenesisState) *v040auth.GenesisState { default: panic(sdkerrors.Wrapf(sdkerrors.ErrInvalidType, "got invalid type %T", v039Account)) } - } // Convert v0.40 accounts into Anys. diff --git a/x/auth/testutil/suite.go b/x/auth/testutil/suite.go index 23c59b7fcfba..95761f7b322e 100644 --- a/x/auth/testutil/suite.go +++ b/x/auth/testutil/suite.go @@ -150,9 +150,11 @@ func (s *TxConfigTestSuite) TestTxBuilderSetSignatures() { s.Require().NoError(err) msigData = multisig.NewMultisig(2) multisig.AddSignature(msigData, &signingtypes.SingleSignatureData{ - SignMode: signModeHandler.DefaultMode(), Signature: mSigBz1}, 0) + SignMode: signModeHandler.DefaultMode(), Signature: mSigBz1, + }, 0) multisig.AddSignature(msigData, &signingtypes.SingleSignatureData{ - SignMode: signModeHandler.DefaultMode(), Signature: mSigBz2}, 0) + SignMode: signModeHandler.DefaultMode(), Signature: mSigBz2, + }, 0) // set signature sigData1.Signature = sigBz diff --git a/x/auth/tx/encoder.go b/x/auth/tx/encoder.go index 35cecac556eb..e594ee24cfc8 100644 --- a/x/auth/tx/encoder.go +++ b/x/auth/tx/encoder.go @@ -42,6 +42,5 @@ func DefaultJSONTxEncoder(cdc codec.ProtoCodecMarshaler) sdk.TxEncoder { } return nil, fmt.Errorf("expected %T, got %T", &wrapper{}, tx) - } } diff --git a/x/auth/tx/xauthclient.go b/x/auth/tx/xauthclient.go index 057afe529d8f..aa3b1070b3bf 100644 --- a/x/auth/tx/xauthclient.go +++ b/x/auth/tx/xauthclient.go @@ -81,7 +81,7 @@ func queryTx(goCtx context.Context, clientCtx client.Context, hashHexStr string) return nil, err } - //TODO: this may not always need to be proven + // TODO: this may not always need to be proven // https://github.com/cosmos/cosmos-sdk/issues/6807 resTx, err := node.Tx(goCtx, hash, true) if err != nil { diff --git a/x/auth/types/account.go b/x/auth/types/account.go index eb9939ffce10..8c2d9b6e24f2 100644 --- a/x/auth/types/account.go +++ b/x/auth/types/account.go @@ -26,6 +26,7 @@ var ( ) // NewBaseAccount creates a new BaseAccount object +// //nolint:interfacer func NewBaseAccount(address sdk.AccAddress, pubKey cryptotypes.PubKey, accountNumber, sequence uint64) *BaseAccount { acc := &BaseAccount{ @@ -264,7 +265,6 @@ func (ma ModuleAccount) MarshalYAML() (interface{}, error) { Name: ma.Name, Permissions: ma.Permissions, }) - if err != nil { return nil, err } diff --git a/x/auth/types/common_test.go b/x/auth/types/common_test.go index 5c6ff0fb6488..319cd979cb2d 100644 --- a/x/auth/types/common_test.go +++ b/x/auth/types/common_test.go @@ -6,5 +6,5 @@ import ( var ( app = simapp.Setup(false) - appCodec, legacyAmino = simapp.MakeCodecs() + appCodec, legacyAmino = simapp.MakeCodecs() //nolint:unused ) diff --git a/x/auth/types/genesis_test.go b/x/auth/types/genesis_test.go index 1030885e799e..7e96036053fc 100644 --- a/x/auth/types/genesis_test.go +++ b/x/auth/types/genesis_test.go @@ -81,9 +81,7 @@ func TestGenesisAccountIterator(t *testing.T) { } func TestPackAccountsAny(t *testing.T) { - var ( - accounts []*codectypes.Any - ) + var accounts []*codectypes.Any testCases := []struct { msg string diff --git a/x/auth/types/permissions_test.go b/x/auth/types/permissions_test.go index 75281a689ec3..de5c25645769 100644 --- a/x/auth/types/permissions_test.go +++ b/x/auth/types/permissions_test.go @@ -26,7 +26,6 @@ func TestHasPermission(t *testing.T) { has = permAddr.HasPermission(tc.permission) require.Equal(t, tc.expectHas, has, "test case #%d", i) } - } func TestValidatePermissions(t *testing.T) { diff --git a/x/auth/vesting/client/cli/cli_test.go b/x/auth/vesting/client/cli/cli_test.go index ebd417a62b20..15ef28297e27 100644 --- a/x/auth/vesting/client/cli/cli_test.go +++ b/x/auth/vesting/client/cli/cli_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package cli_test diff --git a/x/auth/vesting/types/msgs.go b/x/auth/vesting/types/msgs.go index 3308e0304881..a00f8819065f 100644 --- a/x/auth/vesting/types/msgs.go +++ b/x/auth/vesting/types/msgs.go @@ -11,6 +11,7 @@ const TypeMsgCreateVestingAccount = "msg_create_vesting_account" var _ sdk.Msg = &MsgCreateVestingAccount{} // NewMsgCreateVestingAccount returns a reference to a new MsgCreateVestingAccount. +// //nolint:interfacer func NewMsgCreateVestingAccount(fromAddr, toAddr sdk.AccAddress, amount sdk.Coins, endTime int64, delayed bool) *MsgCreateVestingAccount { return &MsgCreateVestingAccount{ diff --git a/x/auth/vesting/types/vesting_account.go b/x/auth/vesting/types/vesting_account.go index e011bd6efbbf..e67209098728 100644 --- a/x/auth/vesting/types/vesting_account.go +++ b/x/auth/vesting/types/vesting_account.go @@ -219,8 +219,10 @@ func (bva BaseVestingAccount) MarshalYAML() (interface{}, error) { //----------------------------------------------------------------------------- // Continuous Vesting Account -var _ vestexported.VestingAccount = (*ContinuousVestingAccount)(nil) -var _ authtypes.GenesisAccount = (*ContinuousVestingAccount)(nil) +var ( + _ vestexported.VestingAccount = (*ContinuousVestingAccount)(nil) + _ authtypes.GenesisAccount = (*ContinuousVestingAccount)(nil) +) // NewContinuousVestingAccountRaw creates a new ContinuousVestingAccount object from BaseVestingAccount func NewContinuousVestingAccountRaw(bva *BaseVestingAccount, startTime int64) *ContinuousVestingAccount { @@ -348,8 +350,10 @@ func (cva ContinuousVestingAccount) MarshalYAML() (interface{}, error) { //----------------------------------------------------------------------------- // Periodic Vesting Account -var _ vestexported.VestingAccount = (*PeriodicVestingAccount)(nil) -var _ authtypes.GenesisAccount = (*PeriodicVestingAccount)(nil) +var ( + _ vestexported.VestingAccount = (*PeriodicVestingAccount)(nil) + _ authtypes.GenesisAccount = (*PeriodicVestingAccount)(nil) +) // NewPeriodicVestingAccountRaw creates a new PeriodicVestingAccount object from BaseVestingAccount func NewPeriodicVestingAccountRaw(bva *BaseVestingAccount, startTime int64, periods Periods) *PeriodicVestingAccount { @@ -507,8 +511,10 @@ func (pva PeriodicVestingAccount) MarshalYAML() (interface{}, error) { //----------------------------------------------------------------------------- // Delayed Vesting Account -var _ vestexported.VestingAccount = (*DelayedVestingAccount)(nil) -var _ authtypes.GenesisAccount = (*DelayedVestingAccount)(nil) +var ( + _ vestexported.VestingAccount = (*DelayedVestingAccount)(nil) + _ authtypes.GenesisAccount = (*DelayedVestingAccount)(nil) +) // NewDelayedVestingAccountRaw creates a new DelayedVestingAccount object from BaseVestingAccount func NewDelayedVestingAccountRaw(bva *BaseVestingAccount) *DelayedVestingAccount { diff --git a/x/auth/vesting/types/vesting_account_test.go b/x/auth/vesting/types/vesting_account_test.go index 01a5e2ad9804..eb206fd086b3 100644 --- a/x/auth/vesting/types/vesting_account_test.go +++ b/x/auth/vesting/types/vesting_account_test.go @@ -378,7 +378,8 @@ func TestGetVestedCoinsPeriodicVestingAcc(t *testing.T) { vestedCoins = pva.GetVestedCoins(now.Add(18 * time.Hour)) require.Equal(t, sdk.Coins{ - sdk.NewInt64Coin(feeDenom, 750), sdk.NewInt64Coin(stakeDenom, 75)}, vestedCoins) + sdk.NewInt64Coin(feeDenom, 750), sdk.NewInt64Coin(stakeDenom, 75), + }, vestedCoins) // require 100% of coins vested vestedCoins = pva.GetVestedCoins(now.Add(48 * time.Hour)) @@ -396,7 +397,8 @@ func TestGetVestingCoinsPeriodicVestingAcc(t *testing.T) { _, _, addr := testdata.KeyTestPubAddr() origCoins := sdk.Coins{ - sdk.NewInt64Coin(feeDenom, 1000), sdk.NewInt64Coin(stakeDenom, 100)} + sdk.NewInt64Coin(feeDenom, 1000), sdk.NewInt64Coin(stakeDenom, 100), + } bacc := authtypes.NewBaseAccountWithAddress(addr) pva := types.NewPeriodicVestingAccount(bacc, origCoins, now.Unix(), periods) @@ -436,7 +438,8 @@ func TestSpendableCoinsPeriodicVestingAcc(t *testing.T) { _, _, addr := testdata.KeyTestPubAddr() origCoins := sdk.Coins{ - sdk.NewInt64Coin(feeDenom, 1000), sdk.NewInt64Coin(stakeDenom, 100)} + sdk.NewInt64Coin(feeDenom, 1000), sdk.NewInt64Coin(stakeDenom, 100), + } bacc := authtypes.NewBaseAccountWithAddress(addr) pva := types.NewPeriodicVestingAccount(bacc, origCoins, now.Unix(), periods) diff --git a/x/bank/client/cli/cli_test.go b/x/bank/client/cli/cli_test.go index 952390fe774b..14767e06b8ca 100644 --- a/x/bank/client/cli/cli_test.go +++ b/x/bank/client/cli/cli_test.go @@ -183,7 +183,8 @@ func (s *IntegrationTestSuite) TestGetCmdQueryTotalSupply() { Supply: sdk.NewCoins( sdk.NewCoin(fmt.Sprintf("%stoken", val.Moniker), s.cfg.AccountTokens), sdk.NewCoin(s.cfg.BondDenom, s.cfg.StakingTokens.Add(sdk.NewInt(10))), - )}, + ), + }, }, { name: "total supply of a specific denomination", diff --git a/x/bank/client/rest/grpc_query_test.go b/x/bank/client/rest/grpc_query_test.go index 37dc8eaa9d8e..f3f37aee0e25 100644 --- a/x/bank/client/rest/grpc_query_test.go +++ b/x/bank/client/rest/grpc_query_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package rest_test diff --git a/x/bank/client/rest/query_test.go b/x/bank/client/rest/query_test.go index 11d731b6dcba..ccf4f82f19cc 100644 --- a/x/bank/client/rest/query_test.go +++ b/x/bank/client/rest/query_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package rest_test diff --git a/x/bank/client/rest/tx_test.go b/x/bank/client/rest/tx_test.go index d770ebec3da7..9a71ef0e8453 100644 --- a/x/bank/client/rest/tx_test.go +++ b/x/bank/client/rest/tx_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package rest_test diff --git a/x/bank/handler_test.go b/x/bank/handler_test.go index 5fcdf02f1a93..bc245ce93790 100644 --- a/x/bank/handler_test.go +++ b/x/bank/handler_test.go @@ -76,6 +76,7 @@ func TestSendToModuleAccount(t *testing.T) { handler := bank.NewHandler(app.BankKeeper) for _, tc := range tests { + tc := tc t.Run(tc.name, func(t *testing.T) { _, err := handler(ctx, tc.msg) if tc.expectedError != nil { diff --git a/x/bank/keeper/genesis_test.go b/x/bank/keeper/genesis_test.go index 56c95c04bee9..4a1554b0edac 100644 --- a/x/bank/keeper/genesis_test.go +++ b/x/bank/keeper/genesis_test.go @@ -40,7 +40,6 @@ func (suite *IntegrationTestSuite) getTestBalances() []types.Balance { {Address: addr2.String(), Coins: sdk.Coins{sdk.NewInt64Coin("testcoin1", 32), sdk.NewInt64Coin("testcoin2", 34)}}, {Address: addr1.String(), Coins: sdk.Coins{sdk.NewInt64Coin("testcoin3", 10)}}, } - } func (suite *IntegrationTestSuite) TestInitGenesis() { diff --git a/x/bank/keeper/grpc_query.go b/x/bank/keeper/grpc_query.go index a0621967cf88..649b963b5c2e 100644 --- a/x/bank/keeper/grpc_query.go +++ b/x/bank/keeper/grpc_query.go @@ -70,7 +70,6 @@ func (k BaseKeeper) AllBalances(ctx context.Context, req *types.QueryAllBalances balances = append(balances, result) return nil }) - if err != nil { return nil, status.Errorf(codes.InvalidArgument, "paginate: %v", err) } @@ -131,7 +130,6 @@ func (k BaseKeeper) DenomsMetadata(c context.Context, req *types.QueryDenomsMeta metadatas = append(metadatas, metadata) return nil }) - if err != nil { return nil, status.Error(codes.Internal, err.Error()) } diff --git a/x/bank/keeper/grpc_query_test.go b/x/bank/keeper/grpc_query_test.go index e178f1301751..32cad50ed959 100644 --- a/x/bank/keeper/grpc_query_test.go +++ b/x/bank/keeper/grpc_query_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package keeper_test diff --git a/x/bank/keeper/keeper.go b/x/bank/keeper/keeper.go index 10ab72790c5c..07eb87e83aef 100644 --- a/x/bank/keeper/keeper.go +++ b/x/bank/keeper/keeper.go @@ -61,7 +61,6 @@ func NewBaseKeeper( cdc codec.BinaryMarshaler, storeKey sdk.StoreKey, ak types.AccountKeeper, paramSpace paramtypes.Subspace, blockedAddrs map[string]bool, ) BaseKeeper { - // set KeyTable if it has not already been set if !paramSpace.HasKeyTable() { paramSpace = paramSpace.WithKeyTable(types.ParamKeyTable()) @@ -241,7 +240,6 @@ func (k BaseKeeper) SetDenomMetaData(ctx sdk.Context, denomMetaData types.Metada func (k BaseKeeper) SendCoinsFromModuleToAccount( ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins, ) error { - senderAddr := k.ak.GetModuleAddress(senderModule) if senderAddr == nil { panic(sdkerrors.Wrapf(sdkerrors.ErrUnknownAddress, "module account %s does not exist", senderModule)) @@ -259,7 +257,6 @@ func (k BaseKeeper) SendCoinsFromModuleToAccount( func (k BaseKeeper) SendCoinsFromModuleToModule( ctx sdk.Context, senderModule, recipientModule string, amt sdk.Coins, ) error { - senderAddr := k.ak.GetModuleAddress(senderModule) if senderAddr == nil { panic(sdkerrors.Wrapf(sdkerrors.ErrUnknownAddress, "module account %s does not exist", senderModule)) @@ -278,7 +275,6 @@ func (k BaseKeeper) SendCoinsFromModuleToModule( func (k BaseKeeper) SendCoinsFromAccountToModule( ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins, ) error { - recipientAcc := k.ak.GetModuleAccount(ctx, recipientModule) if recipientAcc == nil { panic(sdkerrors.Wrapf(sdkerrors.ErrUnknownAddress, "module account %s does not exist", recipientModule)) @@ -293,7 +289,6 @@ func (k BaseKeeper) SendCoinsFromAccountToModule( func (k BaseKeeper) DelegateCoinsFromAccountToModule( ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins, ) error { - recipientAcc := k.ak.GetModuleAccount(ctx, recipientModule) if recipientAcc == nil { panic(sdkerrors.Wrapf(sdkerrors.ErrUnknownAddress, "module account %s does not exist", recipientModule)) @@ -312,7 +307,6 @@ func (k BaseKeeper) DelegateCoinsFromAccountToModule( func (k BaseKeeper) UndelegateCoinsFromModuleToAccount( ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins, ) error { - acc := k.ak.GetModuleAccount(ctx, senderModule) if acc == nil { panic(sdkerrors.Wrapf(sdkerrors.ErrUnknownAddress, "module account %s does not exist", senderModule)) diff --git a/x/bank/keeper/keeper_test.go b/x/bank/keeper/keeper_test.go index fee8f2a77c85..441e6d4e57a5 100644 --- a/x/bank/keeper/keeper_test.go +++ b/x/bank/keeper/keeper_test.go @@ -160,15 +160,15 @@ func (suite *IntegrationTestSuite) TestSupply_SendCoins() { authKeeper.SetAccount(ctx, baseAcc) suite.Require().Panics(func() { - keeper.SendCoinsFromModuleToModule(ctx, "", holderAcc.GetName(), initCoins) // nolint:errcheck + keeper.SendCoinsFromModuleToModule(ctx, "", holderAcc.GetName(), initCoins) //nolint:errcheck }) suite.Require().Panics(func() { - keeper.SendCoinsFromModuleToModule(ctx, authtypes.Burner, "", initCoins) // nolint:errcheck + keeper.SendCoinsFromModuleToModule(ctx, authtypes.Burner, "", initCoins) //nolint:errcheck }) suite.Require().Panics(func() { - keeper.SendCoinsFromModuleToAccount(ctx, "", baseAcc.GetAddress(), initCoins) // nolint:errcheck + keeper.SendCoinsFromModuleToAccount(ctx, "", baseAcc.GetAddress(), initCoins) //nolint:errcheck }) suite.Require().Error( @@ -221,13 +221,13 @@ func (suite *IntegrationTestSuite) TestSupply_MintCoins() { initialSupply := keeper.GetSupply(ctx) - suite.Require().Panics(func() { keeper.MintCoins(ctx, "", initCoins) }, "no module account") // nolint:errcheck - suite.Require().Panics(func() { keeper.MintCoins(ctx, authtypes.Burner, initCoins) }, "invalid permission") // nolint:errcheck + suite.Require().Panics(func() { keeper.MintCoins(ctx, "", initCoins) }, "no module account") //nolint:errcheck + suite.Require().Panics(func() { keeper.MintCoins(ctx, authtypes.Burner, initCoins) }, "invalid permission") //nolint:errcheck err := keeper.MintCoins(ctx, authtypes.Minter, sdk.Coins{sdk.Coin{Denom: "denom", Amount: sdk.NewInt(-10)}}) suite.Require().Error(err, "insufficient coins") - suite.Require().Panics(func() { keeper.MintCoins(ctx, randomPerm, initCoins) }) // nolint:errcheck + suite.Require().Panics(func() { keeper.MintCoins(ctx, randomPerm, initCoins) }) //nolint:errcheck err = keeper.MintCoins(ctx, authtypes.Minter, initCoins) suite.Require().NoError(err) @@ -243,7 +243,7 @@ func (suite *IntegrationTestSuite) TestSupply_MintCoins() { suite.Require().Equal(initCoins, getCoinsByName(ctx, keeper, authKeeper, multiPermAcc.GetName())) suite.Require().Equal(initialSupply.GetTotal().Add(initCoins...), keeper.GetSupply(ctx).GetTotal()) - suite.Require().Panics(func() { keeper.MintCoins(ctx, authtypes.Burner, initCoins) }) // nolint:errcheck + suite.Require().Panics(func() { keeper.MintCoins(ctx, authtypes.Burner, initCoins) }) //nolint:errcheck } func (suite *IntegrationTestSuite) TestSupply_BurnCoins() { @@ -276,9 +276,9 @@ func (suite *IntegrationTestSuite) TestSupply_BurnCoins() { initialSupply.Inflate(initCoins) keeper.SetSupply(ctx, initialSupply) - suite.Require().Panics(func() { keeper.BurnCoins(ctx, "", initCoins) }, "no module account") // nolint:errcheck - suite.Require().Panics(func() { keeper.BurnCoins(ctx, authtypes.Minter, initCoins) }, "invalid permission") // nolint:errcheck - suite.Require().Panics(func() { keeper.BurnCoins(ctx, randomPerm, initialSupply.GetTotal()) }, "random permission") // nolint:errcheck + suite.Require().Panics(func() { keeper.BurnCoins(ctx, "", initCoins) }, "no module account") //nolint:errcheck + suite.Require().Panics(func() { keeper.BurnCoins(ctx, authtypes.Minter, initCoins) }, "invalid permission") //nolint:errcheck + suite.Require().Panics(func() { keeper.BurnCoins(ctx, randomPerm, initialSupply.GetTotal()) }, "random permission") //nolint:errcheck err := keeper.BurnCoins(ctx, authtypes.Burner, initialSupply.GetTotal()) suite.Require().Error(err, "insufficient coins") @@ -1050,16 +1050,17 @@ func (suite *IntegrationTestSuite) TestIterateAllDenomMetaData() { } func (suite *IntegrationTestSuite) getTestMetadata() []types.Metadata { - return []types.Metadata{{ - Description: "The native staking token of the Cosmos Hub.", - DenomUnits: []*types.DenomUnit{ - {"uatom", uint32(0), []string{"microatom"}}, - {"matom", uint32(3), []string{"milliatom"}}, - {"atom", uint32(6), nil}, + return []types.Metadata{ + { + Description: "The native staking token of the Cosmos Hub.", + DenomUnits: []*types.DenomUnit{ + {"uatom", uint32(0), []string{"microatom"}}, + {"matom", uint32(3), []string{"milliatom"}}, + {"atom", uint32(6), nil}, + }, + Base: "uatom", + Display: "atom", }, - Base: "uatom", - Display: "atom", - }, { Description: "The native staking token of the Token Hub.", DenomUnits: []*types.DenomUnit{ diff --git a/x/bank/keeper/send.go b/x/bank/keeper/send.go index 59668463c7d1..037d40c34d0a 100644 --- a/x/bank/keeper/send.go +++ b/x/bank/keeper/send.go @@ -52,7 +52,6 @@ type BaseSendKeeper struct { func NewBaseSendKeeper( cdc codec.BinaryMarshaler, storeKey sdk.StoreKey, ak types.AccountKeeper, paramSpace paramtypes.Subspace, blockedAddrs map[string]bool, ) BaseSendKeeper { - return BaseSendKeeper{ BaseViewKeeper: NewBaseViewKeeper(cdc, storeKey, ak), cdc: cdc, diff --git a/x/bank/simulation/operations.go b/x/bank/simulation/operations.go index 632ed11f5ffe..097b8ab27cec 100644 --- a/x/bank/simulation/operations.go +++ b/x/bank/simulation/operations.go @@ -25,7 +25,6 @@ const ( func WeightedOperations( appParams simtypes.AppParams, cdc codec.JSONMarshaler, ak types.AccountKeeper, bk keeper.Keeper, ) simulation.WeightedOperations { - var weightMsgSend, weightMsgMultiSend int appParams.GetOrGenerate(cdc, OpWeightMsgSend, &weightMsgSend, nil, func(_ *rand.Rand) { @@ -85,7 +84,6 @@ func sendMsgSend( r *rand.Rand, app *baseapp.BaseApp, bk keeper.Keeper, ak types.AccountKeeper, msg *types.MsgSend, ctx sdk.Context, chainID string, privkeys []cryptotypes.PrivKey, ) error { - var ( fees sdk.Coins err error @@ -136,7 +134,6 @@ func SimulateMsgMultiSend(ak types.AccountKeeper, bk keeper.Keeper) simtypes.Ope r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - // random number of inputs/outputs between [1, 3] inputs := make([]types.Input, r.Intn(3)+1) outputs := make([]types.Output, r.Intn(3)+1) @@ -225,7 +222,6 @@ func sendMsgMultiSend( r *rand.Rand, app *baseapp.BaseApp, bk keeper.Keeper, ak types.AccountKeeper, msg *types.MsgMultiSend, ctx sdk.Context, chainID string, privkeys []cryptotypes.PrivKey, ) error { - accountNumbers := make([]uint64, len(msg.Inputs)) sequenceNumbers := make([]uint64, len(msg.Inputs)) @@ -289,7 +285,6 @@ func sendMsgMultiSend( func randomSendFields( r *rand.Rand, ctx sdk.Context, accs []simtypes.Account, bk keeper.Keeper, ak types.AccountKeeper, ) (simtypes.Account, simtypes.Account, sdk.Coins, bool) { - simAccount, _ := simtypes.RandomAcc(r, accs) toSimAcc, _ := simtypes.RandomAcc(r, accs) diff --git a/x/bank/types/balance_test.go b/x/bank/types/balance_test.go index 9736c847baa0..2aec53d39fdd 100644 --- a/x/bank/types/balance_test.go +++ b/x/bank/types/balance_test.go @@ -69,7 +69,6 @@ func TestBalanceValidate(t *testing.T) { for _, tc := range testCases { tc := tc t.Run(tc.name, func(t *testing.T) { - err := tc.balance.Validate() if tc.expErr { diff --git a/x/bank/types/genesis_test.go b/x/bank/types/genesis_test.go index 6e8009d83fc5..8ccd686ca403 100644 --- a/x/bank/types/genesis_test.go +++ b/x/bank/types/genesis_test.go @@ -10,7 +10,6 @@ import ( ) func TestGenesisStateValidate(t *testing.T) { - testCases := []struct { name string genesisState types.GenesisState @@ -139,7 +138,6 @@ func TestGenesisStateValidate(t *testing.T) { for _, tc := range testCases { tc := tc t.Run(tc.name, func(t *testing.T) { - err := tc.genesisState.Validate() if tc.expErr { diff --git a/x/bank/types/metadata.go b/x/bank/types/metadata.go index ce7794053d93..9bc4872058c8 100644 --- a/x/bank/types/metadata.go +++ b/x/bank/types/metadata.go @@ -9,11 +9,11 @@ import ( ) // Validate performs a basic validation of the coin metadata fields. It checks: -// - Base and Display denominations are valid coin denominations -// - Base and Display denominations are present in the DenomUnit slice -// - Base denomination has exponent 0 -// - Denomination units are sorted in ascending order -// - Denomination units not duplicated +// - Base and Display denominations are valid coin denominations +// - Base and Display denominations are present in the DenomUnit slice +// - Base denomination has exponent 0 +// - Denomination units are sorted in ascending order +// - Denomination units not duplicated func (m Metadata) Validate() error { if err := sdk.ValidateDenom(m.Base); err != nil { return fmt.Errorf("invalid metadata base denom: %w", err) diff --git a/x/bank/types/metadata_test.go b/x/bank/types/metadata_test.go index 64241e6098e0..aa3078f49bab 100644 --- a/x/bank/types/metadata_test.go +++ b/x/bank/types/metadata_test.go @@ -152,7 +152,6 @@ func TestMetadataValidate(t *testing.T) { for _, tc := range testCases { tc := tc t.Run(tc.name, func(t *testing.T) { - err := tc.metadata.Validate() if tc.expErr { @@ -174,18 +173,22 @@ func TestMarshalJSONMetaData(t *testing.T) { }{ {"nil metadata", nil, `null`}, {"empty metadata", []types.Metadata{}, `[]`}, - {"non-empty coins", []types.Metadata{{ - Description: "The native staking token of the Cosmos Hub.", - DenomUnits: []*types.DenomUnit{ - {"uatom", uint32(0), []string{"microatom"}}, // The default exponent value 0 is omitted in the json - {"matom", uint32(3), []string{"milliatom"}}, - {"atom", uint32(6), nil}, + { + "non-empty coins", + []types.Metadata{ + { + Description: "The native staking token of the Cosmos Hub.", + DenomUnits: []*types.DenomUnit{ + {"uatom", uint32(0), []string{"microatom"}}, // The default exponent value 0 is omitted in the json + {"matom", uint32(3), []string{"milliatom"}}, + {"atom", uint32(6), nil}, + }, + Base: "uatom", + Display: "atom", + }, }, - Base: "uatom", - Display: "atom", - }, + `[{"description":"The native staking token of the Cosmos Hub.","denom_units":[{"denom":"uatom","aliases":["microatom"]},{"denom":"matom","exponent":3,"aliases":["milliatom"]},{"denom":"atom","exponent":6}],"base":"uatom","display":"atom"}]`, }, - `[{"description":"The native staking token of the Cosmos Hub.","denom_units":[{"denom":"uatom","aliases":["microatom"]},{"denom":"matom","exponent":3,"aliases":["milliatom"]},{"denom":"atom","exponent":6}],"base":"uatom","display":"atom"}]`}, } for _, tc := range testCases { diff --git a/x/bank/types/msgs.go b/x/bank/types/msgs.go index 22fdc30b3886..f5ce141724d4 100644 --- a/x/bank/types/msgs.go +++ b/x/bank/types/msgs.go @@ -14,6 +14,7 @@ const ( var _ sdk.Msg = &MsgSend{} // NewMsgSend - construct a msg to send coins from one account to another. +// //nolint:interfacer func NewMsgSend(fromAddr, toAddr sdk.AccAddress, amount sdk.Coins) *MsgSend { return &MsgSend{FromAddress: fromAddr.String(), ToAddress: toAddr.String(), Amount: amount} @@ -125,6 +126,7 @@ func (in Input) ValidateBasic() error { } // NewInput - create a transaction input, used with MsgMultiSend +// //nolint:interfacer func NewInput(addr sdk.AccAddress, coins sdk.Coins) Input { return Input{ @@ -152,6 +154,7 @@ func (out Output) ValidateBasic() error { } // NewOutput - create a transaction output, used with MsgMultiSend +// //nolint:interfacer func NewOutput(addr sdk.AccAddress, coins sdk.Coins) Output { return Output{ diff --git a/x/bank/types/msgs_test.go b/x/bank/types/msgs_test.go index 96132150ad4f..2d092fb53f61 100644 --- a/x/bank/types/msgs_test.go +++ b/x/bank/types/msgs_test.go @@ -13,7 +13,7 @@ func TestMsgSendRoute(t *testing.T) { addr1 := sdk.AccAddress([]byte("from")) addr2 := sdk.AccAddress([]byte("to")) coins := sdk.NewCoins(sdk.NewInt64Coin("atom", 10)) - var msg = NewMsgSend(addr1, addr2, coins) + msg := NewMsgSend(addr1, addr2, coins) require.Equal(t, msg.Route(), RouterKey) require.Equal(t, msg.Type(), "send") @@ -58,7 +58,7 @@ func TestMsgSendGetSignBytes(t *testing.T) { addr1 := sdk.AccAddress([]byte("input")) addr2 := sdk.AccAddress([]byte("output")) coins := sdk.NewCoins(sdk.NewInt64Coin("atom", 10)) - var msg = NewMsgSend(addr1, addr2, coins) + msg := NewMsgSend(addr1, addr2, coins) res := msg.GetSignBytes() expected := `{"type":"cosmos-sdk/MsgSend","value":{"amount":[{"amount":"10","denom":"atom"}],"from_address":"cosmos1d9h8qat57ljhcm","to_address":"cosmos1da6hgur4wsmpnjyg"}}` @@ -66,7 +66,7 @@ func TestMsgSendGetSignBytes(t *testing.T) { } func TestMsgSendGetSigners(t *testing.T) { - var msg = NewMsgSend(sdk.AccAddress([]byte("input111111111111111")), sdk.AccAddress{}, sdk.NewCoins()) + msg := NewMsgSend(sdk.AccAddress([]byte("input111111111111111")), sdk.AccAddress{}, sdk.NewCoins()) res := msg.GetSigners() // TODO: fix this ! require.Equal(t, fmt.Sprintf("%v", res), "[696E707574313131313131313131313131313131]") @@ -77,7 +77,7 @@ func TestMsgMultiSendRoute(t *testing.T) { addr1 := sdk.AccAddress([]byte("input")) addr2 := sdk.AccAddress([]byte("output")) coins := sdk.NewCoins(sdk.NewInt64Coin("atom", 10)) - var msg = MsgMultiSend{ + msg := MsgMultiSend{ Inputs: []Input{NewInput(addr1, coins)}, Outputs: []Output{NewOutput(addr2, coins)}, } @@ -194,22 +194,31 @@ func TestMsgMultiSendValidation(t *testing.T) { {false, MsgMultiSend{Outputs: []Output{output1}}}, // just output {false, MsgMultiSend{ Inputs: []Input{NewInput(emptyAddr, atom123)}, // invalid input - Outputs: []Output{output1}}}, - {false, MsgMultiSend{ - Inputs: []Input{input1}, - Outputs: []Output{{emptyAddr.String(), atom123}}}, // invalid output + Outputs: []Output{output1}, + }}, + { + false, MsgMultiSend{ + Inputs: []Input{input1}, + Outputs: []Output{{emptyAddr.String(), atom123}}, + }, // invalid output }, - {false, MsgMultiSend{ - Inputs: []Input{input1}, - Outputs: []Output{output2}}, // amounts dont match + { + false, MsgMultiSend{ + Inputs: []Input{input1}, + Outputs: []Output{output2}, + }, // amounts dont match }, - {true, MsgMultiSend{ - Inputs: []Input{input1}, - Outputs: []Output{output1}}, + { + true, MsgMultiSend{ + Inputs: []Input{input1}, + Outputs: []Output{output1}, + }, }, - {true, MsgMultiSend{ - Inputs: []Input{input1, input2}, - Outputs: []Output{outputMulti}}, + { + true, MsgMultiSend{ + Inputs: []Input{input1, input2}, + Outputs: []Output{outputMulti}, + }, }, } @@ -227,7 +236,7 @@ func TestMsgMultiSendGetSignBytes(t *testing.T) { addr1 := sdk.AccAddress([]byte("input")) addr2 := sdk.AccAddress([]byte("output")) coins := sdk.NewCoins(sdk.NewInt64Coin("atom", 10)) - var msg = MsgMultiSend{ + msg := MsgMultiSend{ Inputs: []Input{NewInput(addr1, coins)}, Outputs: []Output{NewOutput(addr2, coins)}, } @@ -238,7 +247,7 @@ func TestMsgMultiSendGetSignBytes(t *testing.T) { } func TestMsgMultiSendGetSigners(t *testing.T) { - var msg = MsgMultiSend{ + msg := MsgMultiSend{ Inputs: []Input{ NewInput(sdk.AccAddress([]byte("input111111111111111")), nil), NewInput(sdk.AccAddress([]byte("input222222222222222")), nil), diff --git a/x/bank/types/querier.go b/x/bank/types/querier.go index 1ef0093386e4..ddecf8ceb272 100644 --- a/x/bank/types/querier.go +++ b/x/bank/types/querier.go @@ -14,12 +14,14 @@ const ( ) // NewQueryBalanceRequest creates a new instance of QueryBalanceRequest. +// //nolint:interfacer func NewQueryBalanceRequest(addr sdk.AccAddress, denom string) *QueryBalanceRequest { return &QueryBalanceRequest{Address: addr.String(), Denom: denom} } // NewQueryAllBalancesRequest creates a new instance of QueryAllBalancesRequest. +// //nolint:interfacer func NewQueryAllBalancesRequest(addr sdk.AccAddress, req *query.PageRequest) *QueryAllBalancesRequest { return &QueryAllBalancesRequest{Address: addr.String(), Pagination: req} diff --git a/x/capability/keeper/keeper.go b/x/capability/keeper/keeper.go index 4002c199a4fe..37206d40ebd9 100644 --- a/x/capability/keeper/keeper.go +++ b/x/capability/keeper/keeper.go @@ -195,7 +195,6 @@ func (k Keeper) GetOwners(ctx sdk.Context, index uint64) (types.CapabilityOwners // and sets the fwd and reverse keys for each owner in the memstore. // It is used during initialization from genesis. func (k Keeper) InitializeCapability(ctx sdk.Context, index uint64, owners types.CapabilityOwners) { - memStore := ctx.KVStore(k.memKey) cap := types.NewCapability(index) @@ -213,7 +212,6 @@ func (k Keeper) InitializeCapability(ctx sdk.Context, index uint64, owners types // Set the mapping from index from index to in-memory capability in the go map k.capMap[index] = cap } - } // NewCapability attempts to create a new capability with a given name. If the diff --git a/x/capability/types/genesis_test.go b/x/capability/types/genesis_test.go index d8a02e019254..5208a2b59043 100644 --- a/x/capability/types/genesis_test.go +++ b/x/capability/types/genesis_test.go @@ -40,7 +40,6 @@ func TestValidateGenesis(t *testing.T) { } genState.Owners = append(genState.Owners, genOwner) - }, expPass: false, }, @@ -55,7 +54,6 @@ func TestValidateGenesis(t *testing.T) { } genState.Owners = append(genState.Owners, genOwner) - }, expPass: false, }, @@ -69,7 +67,6 @@ func TestValidateGenesis(t *testing.T) { } genState.Owners = append(genState.Owners, genOwner) - }, expPass: false, }, @@ -83,7 +80,6 @@ func TestValidateGenesis(t *testing.T) { } genState.Owners = append(genState.Owners, genOwner) - }, expPass: false, }, @@ -97,7 +93,6 @@ func TestValidateGenesis(t *testing.T) { } genState.Owners = append(genState.Owners, genOwner) - }, expPass: false, }, @@ -111,7 +106,6 @@ func TestValidateGenesis(t *testing.T) { } genState.Owners = append(genState.Owners, genOwner) - }, expPass: false, }, diff --git a/x/crisis/client/cli/cli_test.go b/x/crisis/client/cli/cli_test.go index 92b439614943..f8f40649ee03 100644 --- a/x/crisis/client/cli/cli_test.go +++ b/x/crisis/client/cli/cli_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package cli_test diff --git a/x/crisis/handler_test.go b/x/crisis/handler_test.go index c35af8ee8775..16365847ae81 100644 --- a/x/crisis/handler_test.go +++ b/x/crisis/handler_test.go @@ -82,7 +82,7 @@ func TestHandleMsgVerifyInvariant(t *testing.T) { case "panic": require.Panics(t, func() { - h(ctx, tc.msg) // nolint:errcheck + h(ctx, tc.msg) //nolint:errcheck }) } }) diff --git a/x/crisis/keeper/keeper.go b/x/crisis/keeper/keeper.go index b9c563d5293d..2408b0bd0aa1 100644 --- a/x/crisis/keeper/keeper.go +++ b/x/crisis/keeper/keeper.go @@ -27,7 +27,6 @@ func NewKeeper( paramSpace paramtypes.Subspace, invCheckPeriod uint, supplyKeeper types.SupplyKeeper, feeCollectorName string, ) Keeper { - // set KeyTable if it has not already been set if !paramSpace.HasKeyTable() { paramSpace = paramSpace.WithKeyTable(types.ParamKeyTable()) diff --git a/x/crisis/types/msgs.go b/x/crisis/types/msgs.go index 6161a1d4b73e..fcb7dadd1164 100644 --- a/x/crisis/types/msgs.go +++ b/x/crisis/types/msgs.go @@ -8,6 +8,7 @@ import ( var _ sdk.Msg = &MsgVerifyInvariant{} // NewMsgVerifyInvariant creates a new MsgVerifyInvariant object +// //nolint:interfacer func NewMsgVerifyInvariant(sender sdk.AccAddress, invModeName, invRoute string) *MsgVerifyInvariant { return &MsgVerifyInvariant{ diff --git a/x/crisis/types/params.go b/x/crisis/types/params.go index 880f350f117c..03c8dd82883f 100644 --- a/x/crisis/types/params.go +++ b/x/crisis/types/params.go @@ -7,10 +7,8 @@ import ( paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" ) -var ( - // key for constant fee parameter - ParamStoreKeyConstantFee = []byte("ConstantFee") -) +// key for constant fee parameter +var ParamStoreKeyConstantFee = []byte("ConstantFee") // type declaration for parameters func ParamKeyTable() paramtypes.KeyTable { diff --git a/x/distribution/client/cli/cli_test.go b/x/distribution/client/cli/cli_test.go index 40331db7b994..34c1306fb28c 100644 --- a/x/distribution/client/cli/cli_test.go +++ b/x/distribution/client/cli/cli_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package cli_test diff --git a/x/distribution/client/cli/tx.go b/x/distribution/client/cli/tx.go index 2e6a6eeb3953..5a32a717d108 100644 --- a/x/distribution/client/cli/tx.go +++ b/x/distribution/client/cli/tx.go @@ -53,7 +53,6 @@ func newSplitAndApply( genOrBroadcastFn newGenerateOrBroadcastFunc, clientCtx client.Context, fs *pflag.FlagSet, msgs []sdk.Msg, chunkSize int, ) error { - if chunkSize == 0 { return genOrBroadcastFn(clientCtx, fs, msgs...) } diff --git a/x/distribution/client/cli/utils.go b/x/distribution/client/cli/utils.go index fe531e49b9cb..1cb8bd20757e 100644 --- a/x/distribution/client/cli/utils.go +++ b/x/distribution/client/cli/utils.go @@ -1,7 +1,7 @@ package cli import ( - "io/ioutil" + "os" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/x/distribution/types" @@ -11,7 +11,7 @@ import ( func ParseCommunityPoolSpendProposalWithDeposit(cdc codec.JSONMarshaler, proposalFile string) (types.CommunityPoolSpendProposalWithDeposit, error) { proposal := types.CommunityPoolSpendProposalWithDeposit{} - contents, err := ioutil.ReadFile(proposalFile) + contents, err := os.ReadFile(proposalFile) if err != nil { return proposal, err } diff --git a/x/distribution/client/rest/query.go b/x/distribution/client/rest/query.go index 0fb923afc94d..0cc1c0d358f2 100644 --- a/x/distribution/client/rest/query.go +++ b/x/distribution/client/rest/query.go @@ -62,7 +62,6 @@ func registerQueryRoutes(clientCtx client.Context, r *mux.Router) { "/distribution/community_pool", communityPoolHandler(clientCtx), ).Methods("GET") - } // HTTP request handler to query the total rewards balance from all delegations @@ -152,7 +151,8 @@ type ValidatorDistInfo struct { // NewValidatorDistInfo creates a new instance of ValidatorDistInfo. func NewValidatorDistInfo(operatorAddr sdk.AccAddress, rewards sdk.DecCoins, - commission types.ValidatorAccumulatedCommission) ValidatorDistInfo { + commission types.ValidatorAccumulatedCommission, +) ValidatorDistInfo { return ValidatorDistInfo{ OperatorAddress: operatorAddr, SelfBondRewards: rewards, @@ -299,7 +299,6 @@ func outstandingRewardsHandlerFn(clientCtx client.Context) http.HandlerFunc { func checkResponseQueryDelegationRewards( w http.ResponseWriter, clientCtx client.Context, delAddr, valAddr string, ) (res []byte, height int64, ok bool) { - res, height, err := common.QueryDelegationRewards(clientCtx, delAddr, valAddr) if rest.CheckInternalServerError(w, err) { return nil, 0, false diff --git a/x/distribution/keeper/allocation.go b/x/distribution/keeper/allocation.go index 9436bada9d69..607697c3479f 100644 --- a/x/distribution/keeper/allocation.go +++ b/x/distribution/keeper/allocation.go @@ -15,7 +15,6 @@ func (k Keeper) AllocateTokens( ctx sdk.Context, sumPreviousPrecommitPower, totalPreviousPower int64, previousProposer sdk.ConsAddress, previousVotes []abci.VoteInfo, ) { - logger := k.Logger(ctx) // fetch and clear the collected fees for distribution, since this is diff --git a/x/distribution/keeper/delegation.go b/x/distribution/keeper/delegation.go index 61631da5dc22..3b158c15585e 100644 --- a/x/distribution/keeper/delegation.go +++ b/x/distribution/keeper/delegation.go @@ -29,7 +29,8 @@ func (k Keeper) initializeDelegation(ctx sdk.Context, val sdk.ValAddress, del sd // calculate the rewards accrued by a delegation between two periods func (k Keeper) calculateDelegationRewardsBetween(ctx sdk.Context, val stakingtypes.ValidatorI, - startingPeriod, endingPeriod uint64, stake sdk.Dec) (rewards sdk.DecCoins) { + startingPeriod, endingPeriod uint64, stake sdk.Dec, +) (rewards sdk.DecCoins) { // sanity check if startingPeriod > endingPeriod { panic("startingPeriod cannot be greater than endingPeriod") diff --git a/x/distribution/keeper/grpc_query.go b/x/distribution/keeper/grpc_query.go index 7991634fc401..899d073ffdd8 100644 --- a/x/distribution/keeper/grpc_query.go +++ b/x/distribution/keeper/grpc_query.go @@ -93,7 +93,6 @@ func (k Keeper) ValidatorSlashes(c context.Context, req *types.QueryValidatorSla pageRes, err := query.FilteredPaginate(slashesStore, req.Pagination, func(key []byte, value []byte, accumulate bool) (bool, error) { var result types.ValidatorSlashEvent err := k.cdc.UnmarshalBinaryBare(value, &result) - if err != nil { return false, err } @@ -107,7 +106,6 @@ func (k Keeper) ValidatorSlashes(c context.Context, req *types.QueryValidatorSla } return true, nil }) - if err != nil { return nil, err } diff --git a/x/distribution/keeper/invariants.go b/x/distribution/keeper/invariants.go index 0a23d36be8f7..50300b977379 100644 --- a/x/distribution/keeper/invariants.go +++ b/x/distribution/keeper/invariants.go @@ -64,7 +64,6 @@ func NonNegativeOutstandingInvariant(k Keeper) sdk.Invariant { // CanWithdrawInvariant checks that current rewards can be completely withdrawn func CanWithdrawInvariant(k Keeper) sdk.Invariant { return func(ctx sdk.Context) (string, bool) { - // cache, we don't want to write changes ctx, _ = ctx.CacheContext() @@ -106,7 +105,6 @@ func CanWithdrawInvariant(k Keeper) sdk.Invariant { // ReferenceCountInvariant checks that the number of historical rewards records is correct func ReferenceCountInvariant(k Keeper) sdk.Invariant { return func(ctx sdk.Context) (string, bool) { - valCount := uint64(0) k.stakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { valCount++ @@ -137,7 +135,6 @@ func ReferenceCountInvariant(k Keeper) sdk.Invariant { // is consistent with the sum of validator outstanding rewards func ModuleAccountInvariant(k Keeper) sdk.Invariant { return func(ctx sdk.Context) (string, bool) { - var expectedCoins sdk.DecCoins k.IterateValidatorOutstandingRewards(ctx, func(_ sdk.ValAddress, rewards types.ValidatorOutstandingRewards) (stop bool) { expectedCoins = expectedCoins.Add(rewards.Rewards...) diff --git a/x/distribution/keeper/keeper.go b/x/distribution/keeper/keeper.go index 0d5c32f78eb0..8cb740bffe5f 100644 --- a/x/distribution/keeper/keeper.go +++ b/x/distribution/keeper/keeper.go @@ -32,7 +32,6 @@ func NewKeeper( ak types.AccountKeeper, bk types.BankKeeper, sk types.StakingKeeper, feeCollectorName string, blockedAddrs map[string]bool, ) Keeper { - // ensure distribution module account is set if addr := ak.GetModuleAddress(types.ModuleName); addr == nil { panic(fmt.Sprintf("%s module account has not been set", types.ModuleName)) diff --git a/x/distribution/keeper/store.go b/x/distribution/keeper/store.go index 302e2ee81e92..493e5e7ea744 100644 --- a/x/distribution/keeper/store.go +++ b/x/distribution/keeper/store.go @@ -331,7 +331,8 @@ func (k Keeper) SetValidatorSlashEvent(ctx sdk.Context, val sdk.ValAddress, heig // iterate over slash events between heights, inclusive func (k Keeper) IterateValidatorSlashEventsBetween(ctx sdk.Context, val sdk.ValAddress, startingHeight uint64, endingHeight uint64, - handler func(height uint64, event types.ValidatorSlashEvent) (stop bool)) { + handler func(height uint64, event types.ValidatorSlashEvent) (stop bool), +) { store := ctx.KVStore(k.storeKey) iter := store.Iterator( types.GetValidatorSlashEventKeyPrefix(val, startingHeight), diff --git a/x/distribution/legacy/v036/types.go b/x/distribution/legacy/v036/types.go index e6a5d9232414..cba1c5e990a2 100644 --- a/x/distribution/legacy/v036/types.go +++ b/x/distribution/legacy/v036/types.go @@ -69,7 +69,6 @@ func NewGenesisState( historical []v034distr.ValidatorHistoricalRewardsRecord, cur []v034distr.ValidatorCurrentRewardsRecord, dels []v034distr.DelegatorStartingInfoRecord, slashes []ValidatorSlashEventRecord, ) GenesisState { - return GenesisState{ FeePool: feePool, CommunityTax: communityTax, diff --git a/x/distribution/legacy/v038/types.go b/x/distribution/legacy/v038/types.go index 335fbc1245e2..befa91c2056d 100644 --- a/x/distribution/legacy/v038/types.go +++ b/x/distribution/legacy/v038/types.go @@ -40,7 +40,6 @@ func NewGenesisState( historical []v034distr.ValidatorHistoricalRewardsRecord, cur []v034distr.ValidatorCurrentRewardsRecord, dels []v034distr.DelegatorStartingInfoRecord, slashes []v036distr.ValidatorSlashEventRecord, ) GenesisState { - return GenesisState{ FeePool: feePool, Params: params, diff --git a/x/distribution/simulation/operations.go b/x/distribution/simulation/operations.go index 09090d1f64d6..c86fb370f80d 100644 --- a/x/distribution/simulation/operations.go +++ b/x/distribution/simulation/operations.go @@ -29,7 +29,6 @@ func WeightedOperations( appParams simtypes.AppParams, cdc codec.JSONMarshaler, ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper, sk stakingkeeper.Keeper, ) simulation.WeightedOperations { - var weightMsgSetWithdrawAddress int appParams.GetOrGenerate(cdc, OpWeightMsgSetWithdrawAddress, &weightMsgSetWithdrawAddress, nil, func(_ *rand.Rand) { @@ -181,7 +180,6 @@ func SimulateMsgWithdrawValidatorCommission(ak types.AccountKeeper, bk types.Ban return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - validator, ok := stakingkeeper.RandomValidator(r, sk, ctx) if !ok { return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgWithdrawValidatorCommission, "random validator is not ok"), nil, nil @@ -237,7 +235,6 @@ func SimulateMsgFundCommunityPool(ak types.AccountKeeper, bk types.BankKeeper, k return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - funder, _ := simtypes.RandomAcc(r, accs) account := ak.GetAccount(ctx, funder.Address) diff --git a/x/distribution/simulation/operations_test.go b/x/distribution/simulation/operations_test.go index 4a3dff30878e..727501d0eec5 100644 --- a/x/distribution/simulation/operations_test.go +++ b/x/distribution/simulation/operations_test.go @@ -57,7 +57,6 @@ func (suite *SimTestSuite) TestWeightedOperations() { // TestSimulateMsgSetWithdrawAddress tests the normal scenario of a valid message of type TypeMsgSetWithdrawAddress. // Abonormal scenarios, where the message is created by an errors, are not tested here. func (suite *SimTestSuite) TestSimulateMsgSetWithdrawAddress() { - // setup 3 accounts s := rand.NewSource(1) r := rand.New(s) @@ -267,7 +266,6 @@ func (suite *SimTestSuite) setupValidatorRewards(valAddress sdk.ValAddress) { // setup current revards currentRewards := distrtypes.NewValidatorCurrentRewards(decCoins, 3) suite.app.DistrKeeper.SetValidatorCurrentRewards(suite.ctx, valAddress, currentRewards) - } func TestSimTestSuite(t *testing.T) { diff --git a/x/distribution/types/common_test.go b/x/distribution/types/common_test.go index 4e6ef6b01231..fcba30f4b670 100644 --- a/x/distribution/types/common_test.go +++ b/x/distribution/types/common_test.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -// nolint:deadcode,unused,varcheck +//nolint:deadcode,unused,varcheck var ( delPk1 = ed25519.GenPrivKey().PubKey() delPk2 = ed25519.GenPrivKey().PubKey() diff --git a/x/distribution/types/fee_pool_test.go b/x/distribution/types/fee_pool_test.go index ebf5bc4b0233..8e31069977b9 100644 --- a/x/distribution/types/fee_pool_test.go +++ b/x/distribution/types/fee_pool_test.go @@ -9,11 +9,9 @@ import ( ) func TestValidateGenesis(t *testing.T) { - fp := InitialFeePool() require.Nil(t, fp.ValidateGenesis()) fp2 := FeePool{CommunityPool: sdk.DecCoins{{Denom: "stake", Amount: sdk.NewDec(-1)}}} require.NotNil(t, fp2.ValidateGenesis()) - } diff --git a/x/distribution/types/genesis.go b/x/distribution/types/genesis.go index 3aa251bba997..9ceb0737a13e 100644 --- a/x/distribution/types/genesis.go +++ b/x/distribution/types/genesis.go @@ -10,7 +10,6 @@ func NewGenesisState( acc []ValidatorAccumulatedCommissionRecord, historical []ValidatorHistoricalRewardsRecord, cur []ValidatorCurrentRewardsRecord, dels []DelegatorStartingInfoRecord, slashes []ValidatorSlashEventRecord, ) *GenesisState { - return &GenesisState{ Params: params, FeePool: fp, diff --git a/x/distribution/types/proposal.go b/x/distribution/types/proposal.go index 1a0d0a886ed7..2eed72a2e46e 100644 --- a/x/distribution/types/proposal.go +++ b/x/distribution/types/proposal.go @@ -22,6 +22,7 @@ func init() { } // NewCommunityPoolSpendProposal creates a new community pool spned proposal. +// //nolint:interfacer func NewCommunityPoolSpendProposal(title, description string, recipient sdk.AccAddress, amount sdk.Coins) *CommunityPoolSpendProposal { return &CommunityPoolSpendProposal{title, description, recipient.String(), amount} diff --git a/x/distribution/types/query.go b/x/distribution/types/query.go index caaf2b7860be..40c1678277ab 100644 --- a/x/distribution/types/query.go +++ b/x/distribution/types/query.go @@ -16,7 +16,8 @@ type QueryDelegatorTotalRewardsResponse struct { // NewQueryDelegatorTotalRewardsResponse constructs a QueryDelegatorTotalRewardsResponse func NewQueryDelegatorTotalRewardsResponse(rewards []DelegationDelegatorReward, - total sdk.DecCoins) QueryDelegatorTotalRewardsResponse { + total sdk.DecCoins, +) QueryDelegatorTotalRewardsResponse { return QueryDelegatorTotalRewardsResponse{Rewards: rewards, Total: total} } @@ -33,8 +34,10 @@ func (res QueryDelegatorTotalRewardsResponse) String() string { } // NewDelegationDelegatorReward constructs a DelegationDelegatorReward. +// //nolint:interfacer func NewDelegationDelegatorReward(valAddr sdk.ValAddress, - reward sdk.DecCoins) DelegationDelegatorReward { + reward sdk.DecCoins, +) DelegationDelegatorReward { return DelegationDelegatorReward{ValidatorAddress: valAddr.String(), Reward: reward} } diff --git a/x/evidence/client/cli/query.go b/x/evidence/client/cli/query.go index 9c987fb15e36..bf74325f949f 100644 --- a/x/evidence/client/cli/query.go +++ b/x/evidence/client/cli/query.go @@ -74,7 +74,6 @@ func queryEvidence(clientCtx client.Context, hash string) error { params := &types.QueryEvidenceRequest{EvidenceHash: decodedHash} res, err := queryClient.Evidence(context.Background(), params) - if err != nil { return err } diff --git a/x/evidence/keeper/grpc_query.go b/x/evidence/keeper/grpc_query.go index f084c16717a0..06764fc97a64 100644 --- a/x/evidence/keeper/grpc_query.go +++ b/x/evidence/keeper/grpc_query.go @@ -79,7 +79,6 @@ func (k Keeper) AllEvidence(c context.Context, req *types.QueryAllEvidenceReques evidence = append(evidence, evidenceAny) return nil }) - if err != nil { return &types.QueryAllEvidenceResponse{}, err } diff --git a/x/evidence/keeper/grpc_query_test.go b/x/evidence/keeper/grpc_query_test.go index df760c8edfe0..b6856f19c654 100644 --- a/x/evidence/keeper/grpc_query_test.go +++ b/x/evidence/keeper/grpc_query_test.go @@ -80,9 +80,7 @@ func (suite *KeeperTestSuite) TestQueryEvidence() { } func (suite *KeeperTestSuite) TestQueryAllEvidence() { - var ( - req *types.QueryAllEvidenceRequest - ) + var req *types.QueryAllEvidenceRequest testCases := []struct { msg string diff --git a/x/evidence/keeper/keeper.go b/x/evidence/keeper/keeper.go index aa660bcff13b..c45e12e62115 100644 --- a/x/evidence/keeper/keeper.go +++ b/x/evidence/keeper/keeper.go @@ -29,7 +29,6 @@ func NewKeeper( cdc codec.BinaryMarshaler, storeKey sdk.StoreKey, stakingKeeper types.StakingKeeper, slashingKeeper types.SlashingKeeper, ) *Keeper { - return &Keeper{ cdc: cdc, storeKey: storeKey, diff --git a/x/evidence/legacy/v040/migrate.go b/x/evidence/legacy/v040/migrate.go index f848130f345c..f82f5365adaf 100644 --- a/x/evidence/legacy/v040/migrate.go +++ b/x/evidence/legacy/v040/migrate.go @@ -37,7 +37,7 @@ func migrateEvidence(oldEvidence v038evidence.Evidence) *codectypes.Any { // - Converting Equivocations into Anys. // - Re-encode in v0.40 GenesisState. func Migrate(evidenceState v038evidence.GenesisState) *v040evidence.GenesisState { - var newEvidences = make([]*codectypes.Any, len(evidenceState.Evidence)) + newEvidences := make([]*codectypes.Any, len(evidenceState.Evidence)) for i, oldEvidence := range evidenceState.Evidence { newEvidences[i] = migrateEvidence(oldEvidence) } diff --git a/x/evidence/types/genesis_test.go b/x/evidence/types/genesis_test.go index 339696c82e1f..d2b3e655db11 100644 --- a/x/evidence/types/genesis_test.go +++ b/x/evidence/types/genesis_test.go @@ -22,9 +22,7 @@ func TestDefaultGenesisState(t *testing.T) { } func TestNewGenesisState(t *testing.T) { - var ( - evidence []exported.Evidence - ) + var evidence []exported.Evidence testCases := []struct { msg string @@ -126,7 +124,7 @@ func TestGenesisStateValidate(t *testing.T) { } func TestUnpackInterfaces(t *testing.T) { - var gs = types.GenesisState{ + gs := types.GenesisState{ Evidence: []*codectypes.Any{{}}, } @@ -149,7 +147,6 @@ func TestUnpackInterfaces(t *testing.T) { for _, tc := range testCases { t.Run(fmt.Sprintf("Case %s", tc.msg), func(t *testing.T) { - if tc.expPass { require.NoError(t, gs.UnpackInterfaces(tc.unpacker)) } else { diff --git a/x/evidence/types/msgs.go b/x/evidence/types/msgs.go index cd2e2ba0321d..6d3a86ab7c4c 100644 --- a/x/evidence/types/msgs.go +++ b/x/evidence/types/msgs.go @@ -23,6 +23,7 @@ var ( ) // NewMsgSubmitEvidence returns a new MsgSubmitEvidence with a signer/submitter. +// //nolint:interfacer func NewMsgSubmitEvidence(s sdk.AccAddress, evi exported.Evidence) (*MsgSubmitEvidence, error) { msg, ok := evi.(proto.Message) diff --git a/x/genaccounts/legacy/v036/migrate.go b/x/genaccounts/legacy/v036/migrate.go index 4da938aeaf79..7f240a8cc4ef 100644 --- a/x/genaccounts/legacy/v036/migrate.go +++ b/x/genaccounts/legacy/v036/migrate.go @@ -1,5 +1,5 @@ // DONTCOVER -// nolint +//nolint package v036 import ( diff --git a/x/genaccounts/legacy/v036/migrate_test.go b/x/genaccounts/legacy/v036/migrate_test.go index 09f6bb3e6901..42a4434cc5cf 100644 --- a/x/genaccounts/legacy/v036/migrate_test.go +++ b/x/genaccounts/legacy/v036/migrate_test.go @@ -61,7 +61,6 @@ var ( ) func TestMigrateEmptyRecord(t *testing.T) { - type args struct { accounts v034accounts.GenesisState deposits []v034gov.DepositWithMetadata diff --git a/x/genaccounts/legacy/v036/types.go b/x/genaccounts/legacy/v036/types.go index e91db341db48..107279195ce7 100644 --- a/x/genaccounts/legacy/v036/types.go +++ b/x/genaccounts/legacy/v036/types.go @@ -35,7 +35,6 @@ func NewGenesisAccount( vestingAmount, delFree, delVesting sdk.Coins, vestingStartTime, vestingEndTime int64, module string, permissions []string, ) GenesisAccount { - return GenesisAccount{ Address: address, Coins: coins, diff --git a/x/genutil/client/cli/gentx.go b/x/genutil/client/cli/gentx.go index 42d957346fba..9b601a211507 100644 --- a/x/genutil/client/cli/gentx.go +++ b/x/genutil/client/cli/gentx.go @@ -6,7 +6,6 @@ import ( "encoding/json" "fmt" "io" - "io/ioutil" "os" "path/filepath" @@ -212,7 +211,7 @@ $ %s gentx my-key-name 1000000stake --home=/path/to/home/dir --keyring-backend=o func makeOutputFilepath(rootDir, nodeID string) (string, error) { writePath := filepath.Join(rootDir, "config", "gentx") - if err := tmos.EnsureDir(writePath, 0700); err != nil { + if err := tmos.EnsureDir(writePath, 0o700); err != nil { return "", err } @@ -220,7 +219,7 @@ func makeOutputFilepath(rootDir, nodeID string) (string, error) { } func readUnsignedGenTxFile(clientCtx client.Context, r io.Reader) (sdk.Tx, error) { - bz, err := ioutil.ReadAll(r) + bz, err := io.ReadAll(r) if err != nil { return nil, err } @@ -234,7 +233,7 @@ func readUnsignedGenTxFile(clientCtx client.Context, r io.Reader) (sdk.Tx, error } func writeSignedGenTx(clientCtx client.Context, outputDocument string, tx sdk.Tx) error { - outputFile, err := os.OpenFile(outputDocument, os.O_CREATE|os.O_EXCL|os.O_WRONLY, 0644) + outputFile, err := os.OpenFile(outputDocument, os.O_CREATE|os.O_EXCL|os.O_WRONLY, 0o644) if err != nil { return err } diff --git a/x/genutil/client/cli/gentx_test.go b/x/genutil/client/cli/gentx_test.go index d15ee8896265..41522bcc5aa3 100644 --- a/x/genutil/client/cli/gentx_test.go +++ b/x/genutil/client/cli/gentx_test.go @@ -3,7 +3,7 @@ package cli_test import ( "context" "fmt" - "io/ioutil" + "io" "os" "path/filepath" "testing" @@ -76,7 +76,7 @@ func (s *IntegrationTestSuite) TestGenTxCmd() { open, err := os.Open(genTxFile) s.Require().NoError(err) - all, err := ioutil.ReadAll(open) + all, err := io.ReadAll(open) s.Require().NoError(err) tx, err := val.ClientCtx.TxConfig.TxJSONDecoder()(all) diff --git a/x/genutil/client/cli/init.go b/x/genutil/client/cli/init.go index 377857ae73ac..6736f0984d00 100644 --- a/x/genutil/client/cli/init.go +++ b/x/genutil/client/cli/init.go @@ -15,6 +15,8 @@ import ( tmrand "github.com/tendermint/tendermint/libs/rand" "github.com/tendermint/tendermint/types" + "github.com/cosmos/go-bip39" + "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/input" @@ -22,7 +24,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/x/genutil" - "github.com/cosmos/go-bip39" ) const ( diff --git a/x/genutil/client/cli/init_test.go b/x/genutil/client/cli/init_test.go index 80820052dfa1..0a2858dd5b44 100644 --- a/x/genutil/client/cli/init_test.go +++ b/x/genutil/client/cli/init_test.go @@ -84,7 +84,6 @@ func TestInitCmd(t *testing.T) { } }) } - } func TestInitRecover(t *testing.T) { @@ -208,7 +207,7 @@ func TestInitNodeValidatorFiles(t *testing.T) { // custom tx codec func makeCodec() *codec.LegacyAmino { - var cdc = codec.NewLegacyAmino() + cdc := codec.NewLegacyAmino() sdk.RegisterLegacyAminoCodec(cdc) cryptocodec.RegisterCrypto(cdc) return cdc diff --git a/x/genutil/client/cli/validate_genesis_test.go b/x/genutil/client/cli/validate_genesis_test.go index f62aa1b7a48e..3521bcc21ecd 100644 --- a/x/genutil/client/cli/validate_genesis_test.go +++ b/x/genutil/client/cli/validate_genesis_test.go @@ -73,7 +73,6 @@ func (s *IntegrationTestSuite) TestValidateGenesis() { _, err := clitestutil.ExecTestCLICmd(val0.ClientCtx, cli.ValidateGenesisCmd(nil), []string{genesisFile.Name()}) if tc.expErr { s.Require().Contains(err.Error(), "Make sure that you have correctly migrated all Tendermint consensus params") - } else { s.Require().NoError(err) } diff --git a/x/genutil/collect.go b/x/genutil/collect.go index ea548a5d3de1..bcee602786ce 100644 --- a/x/genutil/collect.go +++ b/x/genutil/collect.go @@ -28,7 +28,6 @@ import ( func GenAppStateFromConfig(cdc codec.JSONMarshaler, txEncodingConfig client.TxEncodingConfig, config *cfg.Config, initCfg types.InitConfig, genDoc tmtypes.GenesisDoc, genBalIterator types.GenesisBalancesIterator, ) (appState json.RawMessage, err error) { - // process genesis transactions, else create default genesis.json appGenTxs, persistentPeers, err := CollectTxs( cdc, txEncodingConfig.TxJSONDecoder(), config.Moniker, initCfg.GenTxsDir, genDoc, genBalIterator, @@ -107,7 +106,7 @@ func CollectTxs(cdc codec.JSONMarshaler, txJSONDecoder sdk.TxDecoder, moniker, g } // get the genTx - jsonRawTx, err := ioutil.ReadFile(filepath.Join(genTxsDir, fo.Name())) + jsonRawTx, err := os.ReadFile(filepath.Join(genTxsDir, fo.Name())) if err != nil { return appGenTxs, persistentPeers, err } diff --git a/x/genutil/collect_test.go b/x/genutil/collect_test.go index 66244cf74448..6e6f8196286d 100644 --- a/x/genutil/collect_test.go +++ b/x/genutil/collect_test.go @@ -2,7 +2,6 @@ package genutil_test import ( "encoding/json" - "io/ioutil" "os" "path/filepath" "testing" @@ -38,7 +37,7 @@ func (dni *doNothingIterator) IterateGenesisBalances(_ codec.JSONMarshaler, _ ma // Ensures that CollectTx correctly traverses directories and won't error out on encountering // a directory during traversal of the first level. See issue https://github.com/cosmos/cosmos-sdk/issues/6788. func TestCollectTxsHandlesDirectories(t *testing.T) { - testDir, err := ioutil.TempDir(os.TempDir(), "testCollectTxs") + testDir, err := os.MkdirTemp(os.TempDir(), "testCollectTxs") if err != nil { t.Fatal(err) } @@ -46,7 +45,7 @@ func TestCollectTxsHandlesDirectories(t *testing.T) { // 1. We'll insert a directory as the first element before JSON file. subDirPath := filepath.Join(testDir, "_adir") - if err := os.MkdirAll(subDirPath, 0755); err != nil { + if err := os.MkdirAll(subDirPath, 0o755); err != nil { t.Fatal(err) } diff --git a/x/genutil/doc.go b/x/genutil/doc.go index bccc82a1af00..6aa85b97755b 100644 --- a/x/genutil/doc.go +++ b/x/genutil/doc.go @@ -1,10 +1,10 @@ /* Package genutil contains a variety of genesis utility functionality for usage within a blockchain application. Namely: - - Genesis transactions related (gentx) - - commands for collection and creation of gentxs - - initchain processing of gentxs - - Genesis file validation - - Tendermint related initialization + - Genesis transactions related (gentx) + - commands for collection and creation of gentxs + - initchain processing of gentxs + - Genesis file validation + - Tendermint related initialization */ package genutil diff --git a/x/genutil/gentx.go b/x/genutil/gentx.go index b5415ffb31f2..ea08d27afa22 100644 --- a/x/genutil/gentx.go +++ b/x/genutil/gentx.go @@ -18,7 +18,6 @@ import ( func SetGenTxsInAppGenesisState( cdc codec.JSONMarshaler, txJSONEncoder sdk.TxEncoder, appGenesisState map[string]json.RawMessage, genTxs []sdk.Tx, ) (map[string]json.RawMessage, error) { - genesisState := types.GetGenesisStateFromAppState(cdc, appGenesisState) genTxsBz := make([]json.RawMessage, 0, len(genTxs)) @@ -41,7 +40,6 @@ func ValidateAccountInGenesis( appGenesisState map[string]json.RawMessage, genBalIterator types.GenesisBalancesIterator, addr sdk.Address, coins sdk.Coins, cdc codec.JSONMarshaler, ) error { - var stakingData stakingtypes.GenesisState cdc.MustUnmarshalJSON(appGenesisState[stakingtypes.ModuleName], &stakingData) bondDenom := stakingData.Params.BondDenom @@ -96,7 +94,6 @@ func DeliverGenTxs( stakingKeeper types.StakingKeeper, deliverTx deliverTxfn, txEncodingConfig client.TxEncodingConfig, ) ([]abci.ValidatorUpdate, error) { - for _, genTx := range genTxs { tx, err := txEncodingConfig.TxJSONDecoder()(genTx) if err != nil { diff --git a/x/genutil/gentx_test.go b/x/genutil/gentx_test.go index b4b843bc986e..d4990d33e22a 100644 --- a/x/genutil/gentx_test.go +++ b/x/genutil/gentx_test.go @@ -199,7 +199,6 @@ func (suite *GenTxTestSuite) TestValidateAccountInGenesis() { } else { suite.Require().Error(err) } - }) } } diff --git a/x/genutil/module.go b/x/genutil/module.go index ba0d76a01a94..8fbffa9cc8d8 100644 --- a/x/genutil/module.go +++ b/x/genutil/module.go @@ -83,7 +83,6 @@ func NewAppModule(accountKeeper types.AccountKeeper, stakingKeeper types.StakingKeeper, deliverTx deliverTxfn, txEncodingConfig client.TxEncodingConfig, ) module.AppModule { - return module.NewGenesisOnlyAppModule(AppModule{ AppModuleBasic: AppModuleBasic{}, accountKeeper: accountKeeper, diff --git a/x/genutil/types/genesis_state.go b/x/genutil/types/genesis_state.go index b3e28bb6de80..7b4944d9271c 100644 --- a/x/genutil/types/genesis_state.go +++ b/x/genutil/types/genesis_state.go @@ -58,7 +58,6 @@ func GetGenesisStateFromAppState(cdc codec.JSONMarshaler, appState map[string]js func SetGenesisStateInAppState( cdc codec.JSONMarshaler, appState map[string]json.RawMessage, genesisState *GenesisState, ) map[string]json.RawMessage { - genesisStateBz := cdc.MustMarshalJSON(genesisState) appState[ModuleName] = genesisStateBz return appState @@ -69,7 +68,6 @@ func SetGenesisStateInAppState( // // NOTE: The pubkey input is this machines pubkey. func GenesisStateFromGenDoc(genDoc tmtypes.GenesisDoc) (genesisState map[string]json.RawMessage, err error) { - if err = json.Unmarshal(genDoc.AppState, &genesisState); err != nil { return genesisState, err } diff --git a/x/genutil/types/genesis_state_test.go b/x/genutil/types/genesis_state_test.go index 01e1db9fd330..9c225fd3f7c4 100644 --- a/x/genutil/types/genesis_state_test.go +++ b/x/genutil/types/genesis_state_test.go @@ -91,5 +91,4 @@ func TestGenesisStateFromGenFile(t *testing.T) { require.Equal(t, "matom", bankGenesis.DenomMetadata[0].GetDenomUnits()[1].GetDenom()) require.Equal(t, []string{"milliatom"}, bankGenesis.DenomMetadata[0].GetDenomUnits()[1].GetAliases()) require.Equal(t, uint32(3), bankGenesis.DenomMetadata[0].GetDenomUnits()[1].GetExponent()) - } diff --git a/x/genutil/utils.go b/x/genutil/utils.go index 4c46bdb6f121..1ca0fd9bcbb3 100644 --- a/x/genutil/utils.go +++ b/x/genutil/utils.go @@ -34,7 +34,6 @@ func ExportGenesisFileWithTime( genFile, chainID string, validators []tmtypes.GenesisValidator, appState json.RawMessage, genTime time.Time, ) error { - genDoc := tmtypes.GenesisDoc{ GenesisTime: genTime, ChainID: chainID, @@ -69,12 +68,12 @@ func InitializeNodeValidatorFilesFromMnemonic(config *cfg.Config, mnemonic strin nodeID = string(nodeKey.ID()) pvKeyFile := config.PrivValidatorKeyFile() - if err := tmos.EnsureDir(filepath.Dir(pvKeyFile), 0777); err != nil { + if err := tmos.EnsureDir(filepath.Dir(pvKeyFile), 0o777); err != nil { return "", nil, err } pvStateFile := config.PrivValidatorStateFile() - if err := tmos.EnsureDir(filepath.Dir(pvStateFile), 0777); err != nil { + if err := tmos.EnsureDir(filepath.Dir(pvStateFile), 0o777); err != nil { return "", nil, err } diff --git a/x/genutil/utils_test.go b/x/genutil/utils_test.go index a845cc68cd96..b406ed3e98cd 100644 --- a/x/genutil/utils_test.go +++ b/x/genutil/utils_test.go @@ -24,7 +24,7 @@ func TestInitializeNodeValidatorFilesFromMnemonic(t *testing.T) { cfg := config.TestConfig() cfg.RootDir = t.TempDir() - require.NoError(t, os.MkdirAll(filepath.Join(cfg.RootDir, "config"), 0755)) + require.NoError(t, os.MkdirAll(filepath.Join(cfg.RootDir, "config"), 0o755)) tests := []struct { name string diff --git a/x/gov/client/cli/cli_test.go b/x/gov/client/cli/cli_test.go index f0ee9b40e5ac..3e237773419f 100644 --- a/x/gov/client/cli/cli_test.go +++ b/x/gov/client/cli/cli_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package cli_test diff --git a/x/gov/client/cli/parse.go b/x/gov/client/cli/parse.go index 90066b645abe..eeb814eb98e7 100644 --- a/x/gov/client/cli/parse.go +++ b/x/gov/client/cli/parse.go @@ -3,7 +3,7 @@ package cli import ( "encoding/json" "fmt" - "io/ioutil" + "os" "github.com/spf13/pflag" @@ -30,7 +30,7 @@ func parseSubmitProposalFlags(fs *pflag.FlagSet) (*proposal, error) { } } - contents, err := ioutil.ReadFile(proposalFile) + contents, err := os.ReadFile(proposalFile) if err != nil { return nil, err } diff --git a/x/gov/client/cli/query.go b/x/gov/client/cli/query.go index 1b7f7995f42e..12df789c6d76 100644 --- a/x/gov/client/cli/query.go +++ b/x/gov/client/cli/query.go @@ -233,7 +233,6 @@ $ %s query gov vote 1 cosmos1skjwj5whet0lpe65qaq4rpq03hjxlwd9nf39lk if vote.Empty() { params := types.NewQueryVoteParams(proposalID, voterAddr) resByTxQuery, err := gcutils.QueryVoteByTxQuery(clientCtx, params) - if err != nil { return err } @@ -318,13 +317,11 @@ $ %[1]s query gov votes 1 --page=2 --limit=100 context.Background(), &types.QueryVotesRequest{ProposalId: proposalID, Pagination: pageReq}, ) - if err != nil { return err } return clientCtx.PrintProto(res) - }, } @@ -470,7 +467,6 @@ $ %s query gov deposits 1 context.Background(), &types.QueryDepositsRequest{ProposalId: proposalID, Pagination: pageReq}, ) - if err != nil { return err } diff --git a/x/gov/client/rest/grpc_query_test.go b/x/gov/client/rest/grpc_query_test.go index 027ce2962ed0..08adccfe680e 100644 --- a/x/gov/client/rest/grpc_query_test.go +++ b/x/gov/client/rest/grpc_query_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package rest_test diff --git a/x/gov/client/rest/rest_test.go b/x/gov/client/rest/rest_test.go index df7f2e4cc6ef..db1d12446204 100644 --- a/x/gov/client/rest/rest_test.go +++ b/x/gov/client/rest/rest_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package rest_test diff --git a/x/gov/client/testutil/cli_test.go b/x/gov/client/testutil/cli_test.go index e28ba13dcd2d..dbbdbdfb99b7 100644 --- a/x/gov/client/testutil/cli_test.go +++ b/x/gov/client/testutil/cli_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package testutil diff --git a/x/gov/client/testutil/deposits.go b/x/gov/client/testutil/deposits.go index 57c3c9363330..6f5030c336d5 100644 --- a/x/gov/client/testutil/deposits.go +++ b/x/gov/client/testutil/deposits.go @@ -4,13 +4,14 @@ import ( "fmt" "time" + "github.com/stretchr/testify/suite" + tmcli "github.com/tendermint/tendermint/libs/cli" + clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" "github.com/cosmos/cosmos-sdk/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/gov/client/cli" "github.com/cosmos/cosmos-sdk/x/gov/types" - "github.com/stretchr/testify/suite" - tmcli "github.com/tendermint/tendermint/libs/cli" ) type DepositTestSuite struct { @@ -33,7 +34,6 @@ func (s *DepositTestSuite) SetupSuite() { _, err := s.network.WaitForHeight(1) s.Require().NoError(err) s.fees = sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(20))).String() - } func (s *DepositTestSuite) TearDownSuite() { @@ -161,7 +161,6 @@ func (s *DepositTestSuite) TestRejectedProposalDeposits() { s.Require().Equal(len(depositsRes), 1) // verify initial deposit s.Require().Equal(depositsRes[0].Amount.String(), initialDeposit.String()) - } func (s *DepositTestSuite) queryDeposits(val *network.Validator, proposalID string, exceptErr bool) types.Deposits { diff --git a/x/gov/client/utils/query.go b/x/gov/client/utils/query.go index c3c590da30fe..cc9a9a207a4b 100644 --- a/x/gov/client/utils/query.go +++ b/x/gov/client/utils/query.go @@ -284,7 +284,6 @@ func queryInitialDepositByTxQuery(clientCtx client.Context, proposalID uint64) ( fmt.Sprintf("%s.%s='%s'", types.EventTypeSubmitProposal, types.AttributeKeyProposalID, []byte(fmt.Sprintf("%d", proposalID))), } searchResult, err := authclient.QueryTxsByEvents(clientCtx, events, defaultPage, defaultLimit, "") - if err != nil { return types.Deposit{}, err } diff --git a/x/gov/client/utils/query_test.go b/x/gov/client/utils/query_test.go index 81b15a457fb1..8c03c827fe5c 100644 --- a/x/gov/client/utils/query_test.go +++ b/x/gov/client/utils/query_test.go @@ -88,7 +88,8 @@ func TestGetPaginatedVotes(t *testing.T) { }, votes: []types.Vote{ types.NewVote(0, acc1, types.OptionYes), - types.NewVote(0, acc2, types.OptionYes)}, + types.NewVote(0, acc2, types.OptionYes), + }, }, { description: "2MsgPerTx1Chunk", @@ -100,7 +101,8 @@ func TestGetPaginatedVotes(t *testing.T) { }, votes: []types.Vote{ types.NewVote(0, acc1, types.OptionYes), - types.NewVote(0, acc1, types.OptionYes)}, + types.NewVote(0, acc1, types.OptionYes), + }, }, { description: "2MsgPerTx2Chunk", @@ -112,7 +114,8 @@ func TestGetPaginatedVotes(t *testing.T) { }, votes: []types.Vote{ types.NewVote(0, acc2, types.OptionYes), - types.NewVote(0, acc2, types.OptionYes)}, + types.NewVote(0, acc2, types.OptionYes), + }, }, { description: "IncompleteSearchTx", diff --git a/x/gov/common_test.go b/x/gov/common_test.go index 5ef50ea5db03..2a0d4f9d2d0e 100644 --- a/x/gov/common_test.go +++ b/x/gov/common_test.go @@ -70,13 +70,11 @@ func SortByteArrays(src [][]byte) [][]byte { const contextKeyBadProposal = "contextKeyBadProposal" -var ( - pubkeys = []cryptotypes.PubKey{ - ed25519.GenPrivKey().PubKey(), - ed25519.GenPrivKey().PubKey(), - ed25519.GenPrivKey().PubKey(), - } -) +var pubkeys = []cryptotypes.PubKey{ + ed25519.GenPrivKey().PubKey(), + ed25519.GenPrivKey().PubKey(), + ed25519.GenPrivKey().PubKey(), +} func createValidators(t *testing.T, stakingHandler sdk.Handler, ctx sdk.Context, addrs []sdk.ValAddress, powerAmt []int64) { require.True(t, len(addrs) <= len(pubkeys), "Not enough pubkeys specified at top of file.") diff --git a/x/gov/keeper/common_test.go b/x/gov/keeper/common_test.go index 7ba9c5827f87..2aa3b5ba6ec8 100644 --- a/x/gov/keeper/common_test.go +++ b/x/gov/keeper/common_test.go @@ -13,9 +13,7 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) -var ( - TestProposal = types.NewTextProposal("Test", "description") -) +var TestProposal = types.NewTextProposal("Test", "description") func createValidators(t *testing.T, ctx sdk.Context, app *simapp.SimApp, powers []int64) ([]sdk.AccAddress, []sdk.ValAddress) { addrs := simapp.AddTestAddrsIncremental(app, ctx, 5, sdk.NewInt(30000000)) diff --git a/x/gov/keeper/grpc_query.go b/x/gov/keeper/grpc_query.go index 93a0e05937ed..0ce38b4c389f 100644 --- a/x/gov/keeper/grpc_query.go +++ b/x/gov/keeper/grpc_query.go @@ -84,7 +84,6 @@ func (q Keeper) Proposals(c context.Context, req *types.QueryProposalsRequest) ( return false, nil }) - if err != nil { return nil, status.Error(codes.Internal, err.Error()) } @@ -146,7 +145,6 @@ func (q Keeper) Votes(c context.Context, req *types.QueryVotesRequest) (*types.Q votes = append(votes, vote) return nil }) - if err != nil { return nil, status.Error(codes.Internal, err.Error()) } @@ -235,7 +233,6 @@ func (q Keeper) Deposits(c context.Context, req *types.QueryDepositsRequest) (*t deposits = append(deposits, deposit) return nil }) - if err != nil { return nil, status.Error(codes.Internal, err.Error()) } diff --git a/x/gov/keeper/keeper.go b/x/gov/keeper/keeper.go index 60db99d32c11..8897a27079b2 100644 --- a/x/gov/keeper/keeper.go +++ b/x/gov/keeper/keeper.go @@ -44,7 +44,6 @@ func NewKeeper( cdc codec.BinaryMarshaler, key sdk.StoreKey, paramSpace types.ParamSubspace, authKeeper types.AccountKeeper, bankKeeper types.BankKeeper, sk types.StakingKeeper, rtr types.Router, ) Keeper { - // ensure governance module account is set if addr := authKeeper.GetModuleAddress(types.ModuleName); addr == nil { panic(fmt.Sprintf("%s module account has not been set", types.ModuleName)) diff --git a/x/gov/keeper/querier.go b/x/gov/keeper/querier.go index 6eb343d070a7..abebe0c2a8a4 100644 --- a/x/gov/keeper/querier.go +++ b/x/gov/keeper/querier.go @@ -72,7 +72,7 @@ func queryParams(ctx sdk.Context, path []string, req abci.RequestQuery, keeper K } } -// nolint: unparam +//nolint: unparam func queryProposal(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryProposalParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -93,7 +93,7 @@ func queryProposal(ctx sdk.Context, path []string, req abci.RequestQuery, keeper return bz, nil } -// nolint: unparam +//nolint: unparam func queryDeposit(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryDepositParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -110,7 +110,7 @@ func queryDeposit(ctx sdk.Context, path []string, req abci.RequestQuery, keeper return bz, nil } -// nolint: unparam +//nolint: unparam func queryVote(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryVoteParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -127,7 +127,7 @@ func queryVote(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Kee return bz, nil } -// nolint: unparam +//nolint: unparam func queryDeposits(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryProposalParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -148,7 +148,7 @@ func queryDeposits(ctx sdk.Context, path []string, req abci.RequestQuery, keeper return bz, nil } -// nolint: unparam +//nolint: unparam func queryTally(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryProposalParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -185,7 +185,7 @@ func queryTally(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Ke return bz, nil } -// nolint: unparam +//nolint: unparam func queryVotes(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryProposalVotesParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) diff --git a/x/gov/keeper/querier_test.go b/x/gov/keeper/querier_test.go index d405b8b49427..c14f44e9d497 100644 --- a/x/gov/keeper/querier_test.go +++ b/x/gov/keeper/querier_test.go @@ -63,7 +63,6 @@ func getQueriedProposals( t *testing.T, ctx sdk.Context, cdc *codec.LegacyAmino, querier sdk.Querier, depositor, voter sdk.AccAddress, status types.ProposalStatus, page, limit int, ) []types.Proposal { - query := abci.RequestQuery{ Path: strings.Join([]string{custom, types.QuerierRoute, types.QueryProposals}, "/"), Data: cdc.MustMarshalJSON(types.NewQueryProposalsParams(page, limit, status, voter, depositor)), @@ -128,7 +127,8 @@ func getQueriedVote(t *testing.T, ctx sdk.Context, cdc *codec.LegacyAmino, queri } func getQueriedVotes(t *testing.T, ctx sdk.Context, cdc *codec.LegacyAmino, querier sdk.Querier, - proposalID uint64, page, limit int) []types.Vote { + proposalID uint64, page, limit int, +) []types.Vote { query := abci.RequestQuery{ Path: strings.Join([]string{custom, types.QuerierRoute, types.QueryVote}, "/"), Data: cdc.MustMarshalJSON(types.NewQueryProposalVotesParams(proposalID, page, limit)), diff --git a/x/gov/keeper/tally.go b/x/gov/keeper/tally.go index cddfd59027dd..897f3d0598e0 100644 --- a/x/gov/keeper/tally.go +++ b/x/gov/keeper/tally.go @@ -36,7 +36,6 @@ func (keeper Keeper) Tally(ctx sdk.Context, proposal types.Proposal) (passes boo keeper.IterateVotes(ctx, proposal.ProposalId, func(vote types.Vote) bool { // if validator, just record it in the map voter, err := sdk.AccAddressFromBech32(vote.Voter) - if err != nil { panic(err) } diff --git a/x/gov/legacy/v034/types.go b/x/gov/legacy/v034/types.go index 14e0b7a26590..5145b476e78a 100644 --- a/x/gov/legacy/v034/types.go +++ b/x/gov/legacy/v034/types.go @@ -10,9 +10,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -var ( - _ ProposalContent = TextProposal{} -) +var _ ProposalContent = TextProposal{} const ( ModuleName = "gov" diff --git a/x/gov/legacy/v036/types.go b/x/gov/legacy/v036/types.go index 6632c6da255c..465ab1b27016 100644 --- a/x/gov/legacy/v036/types.go +++ b/x/gov/legacy/v036/types.go @@ -21,9 +21,7 @@ const ( MaxTitleLength int = 140 ) -var ( - _ Content = TextProposal{} -) +var _ Content = TextProposal{} type ( Proposals []Proposal @@ -73,7 +71,6 @@ func NewGenesisState( startingProposalID uint64, deposits v034gov.Deposits, votes v034gov.Votes, proposals []Proposal, depositParams v034gov.DepositParams, votingParams v034gov.VotingParams, tallyParams v034gov.TallyParams, ) GenesisState { - return GenesisState{ StartingProposalID: startingProposalID, Deposits: deposits, diff --git a/x/gov/simulation/operations.go b/x/gov/simulation/operations.go index 2ea89ca97bb1..b79fd7fc051c 100644 --- a/x/gov/simulation/operations.go +++ b/x/gov/simulation/operations.go @@ -29,7 +29,6 @@ func WeightedOperations( appParams simtypes.AppParams, cdc codec.JSONMarshaler, ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper, wContents []simtypes.WeightedProposalContent, ) simulation.WeightedOperations { - var ( weightMsgDeposit int weightMsgVote int @@ -258,7 +257,8 @@ func SimulateMsgVote(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keepe } func operationSimulateMsgVote(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper, - simAccount simtypes.Account, proposalIDInt int64) simtypes.Operation { + simAccount simtypes.Account, proposalIDInt int64, +) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, @@ -356,7 +356,8 @@ func randomDeposit(r *rand.Rand, ctx sdk.Context, // that matches a given Status. // It does not provide a default ID. func randomProposalID(r *rand.Rand, k keeper.Keeper, - ctx sdk.Context, status types.ProposalStatus) (proposalID uint64, found bool) { + ctx sdk.Context, status types.ProposalStatus, +) (proposalID uint64, found bool) { proposalID, _ = k.GetProposalID(ctx) switch { diff --git a/x/gov/simulation/operations_test.go b/x/gov/simulation/operations_test.go index 9c6e8306f821..e75e3cfc05d8 100644 --- a/x/gov/simulation/operations_test.go +++ b/x/gov/simulation/operations_test.go @@ -47,10 +47,8 @@ func mockWeightedProposalContent(n int) []simtypes.WeightedProposalContent { wpc := make([]simtypes.WeightedProposalContent, n) for i := 0; i < n; i++ { wpc[i] = MockWeightedProposalContent{i} - } return wpc - } // TestWeightedOperations tests the weights of the operations. @@ -205,7 +203,6 @@ func TestSimulateMsgVote(t *testing.T) { require.Equal(t, types.OptionYes, msg.Option) require.Equal(t, "gov", msg.Route()) require.Equal(t, types.TypeMsgVote, msg.Type()) - } // returns context and an app with updated mint keeper diff --git a/x/gov/types/deposit.go b/x/gov/types/deposit.go index e386088737f7..08374341a115 100644 --- a/x/gov/types/deposit.go +++ b/x/gov/types/deposit.go @@ -9,6 +9,7 @@ import ( ) // NewDeposit creates a new Deposit instance +// //nolint:interfacer func NewDeposit(proposalID uint64, depositor sdk.AccAddress, amount sdk.Coins) Deposit { return Deposit{proposalID, depositor.String(), amount} diff --git a/x/gov/types/keys_test.go b/x/gov/types/keys_test.go index 80dfa7d207a3..8e38694f4e3c 100644 --- a/x/gov/types/keys_test.go +++ b/x/gov/types/keys_test.go @@ -37,7 +37,6 @@ func TestProposalKeys(t *testing.T) { } func TestDepositKeys(t *testing.T) { - key := DepositsKey(2) proposalID := SplitProposalKey(key) require.Equal(t, int(proposalID), 2) @@ -54,7 +53,6 @@ func TestDepositKeys(t *testing.T) { } func TestVoteKeys(t *testing.T) { - key := VotesKey(2) proposalID := SplitProposalKey(key) require.Equal(t, int(proposalID), 2) diff --git a/x/gov/types/msgs.go b/x/gov/types/msgs.go index e97c25ce8f01..05cd5734a48e 100644 --- a/x/gov/types/msgs.go +++ b/x/gov/types/msgs.go @@ -25,6 +25,7 @@ var ( ) // NewMsgSubmitProposal creates a new MsgSubmitProposal. +// //nolint:interfacer func NewMsgSubmitProposal(content Content, initialDeposit sdk.Coins, proposer sdk.AccAddress) (*MsgSubmitProposal, error) { m := &MsgSubmitProposal{ @@ -131,6 +132,7 @@ func (m MsgSubmitProposal) UnpackInterfaces(unpacker types.AnyUnpacker) error { } // NewMsgDeposit creates a new MsgDeposit instance +// //nolint:interfacer func NewMsgDeposit(depositor sdk.AccAddress, proposalID uint64, amount sdk.Coins) *MsgDeposit { return &MsgDeposit{proposalID, depositor.String(), amount} @@ -176,6 +178,7 @@ func (msg MsgDeposit) GetSigners() []sdk.AccAddress { } // NewMsgVote creates a message to cast a vote on an active proposal +// //nolint:interfacer func NewMsgVote(voter sdk.AccAddress, proposalID uint64, option VoteOption) *MsgVote { return &MsgVote{proposalID, voter.String(), option} diff --git a/x/gov/types/tally.go b/x/gov/types/tally.go index a4e9ee908608..1fbf01fb9aec 100644 --- a/x/gov/types/tally.go +++ b/x/gov/types/tally.go @@ -17,8 +17,8 @@ type ValidatorGovInfo struct { // NewValidatorGovInfo creates a ValidatorGovInfo instance func NewValidatorGovInfo(address sdk.ValAddress, bondedTokens sdk.Int, delegatorShares, - delegatorDeductions sdk.Dec, vote VoteOption) ValidatorGovInfo { - + delegatorDeductions sdk.Dec, vote VoteOption, +) ValidatorGovInfo { return ValidatorGovInfo{ Address: address, BondedTokens: bondedTokens, diff --git a/x/gov/types/vote.go b/x/gov/types/vote.go index bc67a49a743e..c8181e0b2410 100644 --- a/x/gov/types/vote.go +++ b/x/gov/types/vote.go @@ -9,6 +9,7 @@ import ( ) // NewVote creates a new Vote instance +// //nolint:interfacer func NewVote(proposalID uint64, voter sdk.AccAddress, option VoteOption) Vote { return Vote{proposalID, voter.String(), option} diff --git a/x/ibc/applications/transfer/keeper/grpc_query.go b/x/ibc/applications/transfer/keeper/grpc_query.go index b6347895b42b..4f55c44b08cf 100644 --- a/x/ibc/applications/transfer/keeper/grpc_query.go +++ b/x/ibc/applications/transfer/keeper/grpc_query.go @@ -61,7 +61,6 @@ func (q Keeper) DenomTraces(c context.Context, req *types.QueryDenomTracesReques traces = append(traces, result) return nil }) - if err != nil { return nil, err } diff --git a/x/ibc/applications/transfer/keeper/keeper.go b/x/ibc/applications/transfer/keeper/keeper.go index a2eebb55e1ea..9db0ed74e3c8 100644 --- a/x/ibc/applications/transfer/keeper/keeper.go +++ b/x/ibc/applications/transfer/keeper/keeper.go @@ -36,7 +36,6 @@ func NewKeeper( channelKeeper types.ChannelKeeper, portKeeper types.PortKeeper, authKeeper types.AccountKeeper, bankKeeper types.BankKeeper, scopedKeeper capabilitykeeper.ScopedKeeper, ) Keeper { - // ensure ibc transfer module account is set if addr := authKeeper.GetModuleAddress(types.ModuleName); addr == nil { panic("the IBC transfer module account has not been set") diff --git a/x/ibc/applications/transfer/keeper/mbt_relay_test.go b/x/ibc/applications/transfer/keeper/mbt_relay_test.go index defcbbbc8db6..1d346fa27628 100644 --- a/x/ibc/applications/transfer/keeper/mbt_relay_test.go +++ b/x/ibc/applications/transfer/keeper/mbt_relay_test.go @@ -8,6 +8,7 @@ import ( "encoding/json" "fmt" "io/ioutil" + "os" "strconv" "strings" @@ -297,11 +298,11 @@ func (suite *KeeperTestSuite) TestModelBasedRelay() { panic(fmt.Errorf("Failed to read model-based test files: %w", err)) } for _, file_info := range files { - var tlaTestCases = []TlaOnRecvPacketTestCase{} + tlaTestCases := []TlaOnRecvPacketTestCase{} if !strings.HasSuffix(file_info.Name(), ".json") { continue } - jsonBlob, err := ioutil.ReadFile(dirname + file_info.Name()) + jsonBlob, err := os.ReadFile(dirname + file_info.Name()) if err != nil { panic(fmt.Errorf("Failed to read JSON test fixture: %w", err)) } diff --git a/x/ibc/applications/transfer/keeper/relay.go b/x/ibc/applications/transfer/keeper/relay.go index cbe4a0749b0f..5b887fd28b5d 100644 --- a/x/ibc/applications/transfer/keeper/relay.go +++ b/x/ibc/applications/transfer/keeper/relay.go @@ -58,7 +58,6 @@ func (k Keeper) SendTransfer( timeoutHeight clienttypes.Height, timeoutTimestamp uint64, ) error { - if !k.GetSendEnabled(ctx) { return types.ErrSendDisabled } diff --git a/x/ibc/applications/transfer/keeper/relay_test.go b/x/ibc/applications/transfer/keeper/relay_test.go index 9f303175175f..a00f629f9e14 100644 --- a/x/ibc/applications/transfer/keeper/relay_test.go +++ b/x/ibc/applications/transfer/keeper/relay_test.go @@ -27,28 +27,35 @@ func (suite *KeeperTestSuite) TestSendTransfer() { sendFromSource bool expPass bool }{ - {"successful transfer from source chain", + { + "successful transfer from source chain", func() { _, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) channelA, channelB = suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.UNORDERED) amount = sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100)) - }, true, true}, - {"successful transfer with coin from counterparty chain", + }, true, true, + }, + { + "successful transfer with coin from counterparty chain", func() { // send coin from chainA back to chainB _, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) channelA, channelB = suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.UNORDERED) amount = types.GetTransferCoin(channelA.PortID, channelA.ID, sdk.DefaultBondDenom, 100) - }, false, true}, - {"source channel not found", + }, false, true, + }, + { + "source channel not found", func() { // channel references wrong ID _, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) channelA, channelB = suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.UNORDERED) channelA.ID = ibctesting.InvalidID amount = sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100)) - }, true, false}, - {"next seq send not found", + }, true, false, + }, + { + "next seq send not found", func() { _, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) channelA = suite.chainA.NextTestChannel(connA, ibctesting.TransferPort) @@ -61,24 +68,30 @@ func (suite *KeeperTestSuite) TestSendTransfer() { ) suite.chainA.CreateChannelCapability(channelA.PortID, channelA.ID) amount = sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100)) - }, true, false}, + }, true, false, + }, // createOutgoingPacket tests // - source chain - {"send coin failed", + { + "send coin failed", func() { _, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) channelA, channelB = suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.UNORDERED) amount = sdk.NewCoin("randomdenom", sdk.NewInt(100)) - }, true, false}, + }, true, false, + }, // - receiving chain - {"send from module account failed", + { + "send from module account failed", func() { _, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) channelA, channelB = suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.UNORDERED) amount = types.GetTransferCoin(channelA.PortID, channelA.ID, " randomdenom", 100) - }, false, false}, - {"channel capability not found", + }, false, false, + }, + { + "channel capability not found", func() { _, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) channelA, channelB = suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.UNORDERED) @@ -87,7 +100,8 @@ func (suite *KeeperTestSuite) TestSendTransfer() { // Release channel capability suite.chainA.App.ScopedTransferKeeper.ReleaseCapability(suite.chainA.GetContext(), cap) amount = sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100)) - }, true, false}, + }, true, false, + }, } for _, tc := range testCases { @@ -260,11 +274,14 @@ func (suite *KeeperTestSuite) TestOnAcknowledgementPacket() { err := suite.chainA.App.BankKeeper.AddCoins(suite.chainA.GetContext(), escrow, sdk.NewCoins(coin)) suite.Require().NoError(err) }, false, true}, - {"unsuccessful refund from source", failedAck, + { + "unsuccessful refund from source", failedAck, func() { trace = types.ParseDenomTrace(sdk.DefaultBondDenom) - }, false, false}, - {"successful refund from with coin from external chain", failedAck, + }, false, false, + }, + { + "successful refund from with coin from external chain", failedAck, func() { escrow := types.GetEscrowAddress(channelA.PortID, channelA.ID) trace = types.ParseDenomTrace(types.GetPrefixedDenom(channelA.PortID, channelA.ID, sdk.DefaultBondDenom)) @@ -272,7 +289,8 @@ func (suite *KeeperTestSuite) TestOnAcknowledgementPacket() { err := suite.chainA.App.BankKeeper.AddCoins(suite.chainA.GetContext(), escrow, sdk.NewCoins(coin)) suite.Require().NoError(err) - }, false, true}, + }, false, true, + }, } for _, tc := range testCases { @@ -326,7 +344,8 @@ func (suite *KeeperTestSuite) TestOnTimeoutPacket() { malleate func() expPass bool }{ - {"successful timeout from sender as source chain", + { + "successful timeout from sender as source chain", func() { escrow := types.GetEscrowAddress(channelA.PortID, channelA.ID) trace = types.ParseDenomTrace(sdk.DefaultBondDenom) @@ -334,8 +353,10 @@ func (suite *KeeperTestSuite) TestOnTimeoutPacket() { err := suite.chainA.App.BankKeeper.AddCoins(suite.chainA.GetContext(), escrow, sdk.NewCoins(coin)) suite.Require().NoError(err) - }, true}, - {"successful timeout from external chain", + }, true, + }, + { + "successful timeout from external chain", func() { escrow := types.GetEscrowAddress(channelA.PortID, channelA.ID) trace = types.ParseDenomTrace(types.GetPrefixedDenom(channelA.PortID, channelA.ID, sdk.DefaultBondDenom)) @@ -343,21 +364,28 @@ func (suite *KeeperTestSuite) TestOnTimeoutPacket() { err := suite.chainA.App.BankKeeper.AddCoins(suite.chainA.GetContext(), escrow, sdk.NewCoins(coin)) suite.Require().NoError(err) - }, true}, - {"no balance for coin denom", + }, true, + }, + { + "no balance for coin denom", func() { trace = types.ParseDenomTrace("bitcoin") - }, false}, - {"unescrow failed", + }, false, + }, + { + "unescrow failed", func() { trace = types.ParseDenomTrace(sdk.DefaultBondDenom) - }, false}, - {"mint failed", + }, false, + }, + { + "mint failed", func() { trace = types.ParseDenomTrace(types.GetPrefixedDenom(channelA.PortID, channelA.ID, sdk.DefaultBondDenom)) amount = sdk.OneInt() sender = "invalid address" - }, false}, + }, false, + }, } for _, tc := range testCases { diff --git a/x/ibc/applications/transfer/module_test.go b/x/ibc/applications/transfer/module_test.go index d2acfb404311..2b0fe27e79dd 100644 --- a/x/ibc/applications/transfer/module_test.go +++ b/x/ibc/applications/transfer/module_test.go @@ -24,7 +24,6 @@ func (suite *TransferTestSuite) TestOnChanOpenInit() { malleate func() expPass bool }{ - { "success", func() {}, true, }, @@ -93,7 +92,6 @@ func (suite *TransferTestSuite) TestOnChanOpenInit() { } else { suite.Require().Error(err) } - }) } } @@ -112,7 +110,6 @@ func (suite *TransferTestSuite) TestOnChanOpenTry() { malleate func() expPass bool }{ - { "success", func() {}, true, }, @@ -187,7 +184,6 @@ func (suite *TransferTestSuite) TestOnChanOpenTry() { } else { suite.Require().Error(err) } - }) } } @@ -204,7 +200,6 @@ func (suite *TransferTestSuite) TestOnChanOpenAck() { malleate func() expPass bool }{ - { "success", func() {}, true, }, @@ -240,7 +235,6 @@ func (suite *TransferTestSuite) TestOnChanOpenAck() { } else { suite.Require().Error(err) } - }) } } diff --git a/x/ibc/applications/transfer/simulation/genesis_test.go b/x/ibc/applications/transfer/simulation/genesis_test.go index 12791d7445f9..451f9fd83238 100644 --- a/x/ibc/applications/transfer/simulation/genesis_test.go +++ b/x/ibc/applications/transfer/simulation/genesis_test.go @@ -43,7 +43,6 @@ func TestRandomizedGenState(t *testing.T) { require.True(t, ibcTransferGenesis.Params.SendEnabled) require.True(t, ibcTransferGenesis.Params.ReceiveEnabled) require.Len(t, ibcTransferGenesis.DenomTraces, 0) - } // TestRandomizedGenState tests abnormal scenarios of applying RandomizedGenState. diff --git a/x/ibc/applications/transfer/types/coin.go b/x/ibc/applications/transfer/types/coin.go index 08ae9a8d3254..4a05c705f10d 100644 --- a/x/ibc/applications/transfer/types/coin.go +++ b/x/ibc/applications/transfer/types/coin.go @@ -27,7 +27,6 @@ func ReceiverChainIsSource(sourcePort, sourceChannel, denom string) bool { voucherPrefix := GetDenomPrefix(sourcePort, sourceChannel) return strings.HasPrefix(denom, voucherPrefix) - } // GetDenomPrefix returns the receiving denomination prefix diff --git a/x/ibc/applications/transfer/types/msgs.go b/x/ibc/applications/transfer/types/msgs.go index cf2293213a82..2913b8ac4351 100644 --- a/x/ibc/applications/transfer/types/msgs.go +++ b/x/ibc/applications/transfer/types/msgs.go @@ -15,6 +15,7 @@ const ( ) // NewMsgTransfer creates a new MsgTransfer instance +// //nolint:interfacer func NewMsgTransfer( sourcePort, sourceChannel string, diff --git a/x/ibc/applications/transfer/types/trace.go b/x/ibc/applications/transfer/types/trace.go index f45113efa3ff..0fa9999a9d81 100644 --- a/x/ibc/applications/transfer/types/trace.go +++ b/x/ibc/applications/transfer/types/trace.go @@ -20,8 +20,8 @@ import ( // // Examples: // -// - "portidone/channelidone/uatom" => DenomTrace{Path: "portidone/channelidone", BaseDenom: "uatom"} -// - "uatom" => DenomTrace{Path: "", BaseDenom: "uatom"} +// - "portidone/channelidone/uatom" => DenomTrace{Path: "portidone/channelidone", BaseDenom: "uatom"} +// - "uatom" => DenomTrace{Path: "", BaseDenom: "uatom"} func ParseDenomTrace(rawDenom string) DenomTrace { denomSplit := strings.Split(rawDenom, "/") @@ -143,8 +143,8 @@ func (t Traces) Sort() Traces { // ValidatePrefixedDenom checks that the denomination for an IBC fungible token packet denom is correctly prefixed. // The function will return no error if the given string follows one of the two formats: // -// - Prefixed denomination: '{portIDN}/{channelIDN}/.../{portID0}/{channelID0}/baseDenom' -// - Unprefixed denomination: 'baseDenom' +// - Prefixed denomination: '{portIDN}/{channelIDN}/.../{portID0}/{channelID0}/baseDenom' +// - Unprefixed denomination: 'baseDenom' func ValidatePrefixedDenom(denom string) error { denomSplit := strings.Split(denom, "/") if denomSplit[0] == denom && strings.TrimSpace(denom) != "" { @@ -162,8 +162,8 @@ func ValidatePrefixedDenom(denom string) error { // ValidateIBCDenom validates that the given denomination is either: // -// - A valid base denomination (eg: 'uatom') -// - A valid fungible token representation (i.e 'ibc/{hash}') per ADR 001 https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-001-coin-source-tracing.md +// - A valid base denomination (eg: 'uatom') +// - A valid fungible token representation (i.e 'ibc/{hash}') per ADR 001 https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-001-coin-source-tracing.md func ValidateIBCDenom(denom string) error { if err := sdk.ValidateDenom(denom); err != nil { return err diff --git a/x/ibc/core/02-client/keeper/client.go b/x/ibc/core/02-client/keeper/client.go index b4ca97f81bcd..5a3503c8ad01 100644 --- a/x/ibc/core/02-client/keeper/client.go +++ b/x/ibc/core/02-client/keeper/client.go @@ -104,7 +104,6 @@ func (k Keeper) UpdateClient(ctx sdk.Context, clientID string, header exported.H // This prevents the event value from containing invalid UTF-8 characters // which may cause data to be lost when JSON encoding/decoding. headerStr = hex.EncodeToString(types.MustMarshalHeader(k.cdc, header)) - } // emitting events in the keeper emits for both begin block and handler client updates @@ -124,7 +123,8 @@ func (k Keeper) UpdateClient(ctx sdk.Context, clientID string, header exported.H // UpgradeClient upgrades the client to a new client state if this new client was committed to // by the old client at the specified upgrade height func (k Keeper) UpgradeClient(ctx sdk.Context, clientID string, upgradedClient exported.ClientState, upgradedConsState exported.ConsensusState, - proofUpgradeClient, proofUpgradeConsState []byte) error { + proofUpgradeClient, proofUpgradeConsState []byte, +) error { clientState, found := k.GetClientState(ctx, clientID) if !found { return sdkerrors.Wrapf(types.ErrClientNotFound, "cannot update client with ID %s", clientID) diff --git a/x/ibc/core/02-client/keeper/client_test.go b/x/ibc/core/02-client/keeper/client_test.go index 0f14ef2135bf..ecf4709c6aad 100644 --- a/x/ibc/core/02-client/keeper/client_test.go +++ b/x/ibc/core/02-client/keeper/client_test.go @@ -241,7 +241,6 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { { name: "successful upgrade", setup: func() { - upgradedClient = ibctmtypes.NewClientState("newChainId", ibctmtypes.DefaultTrustLevel, trustingPeriod, ubdPeriod+trustingPeriod, maxClockDrift, newClientHeight, commitmenttypes.GetSDKSpecs(), ibctesting.UpgradePath, false, false) upgradedConsState = &ibctmtypes.ConsensusState{ NextValidatorsHash: []byte("nextValsHash"), @@ -271,7 +270,6 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { { name: "client state not found", setup: func() { - upgradedClient = ibctmtypes.NewClientState("newChainId", ibctmtypes.DefaultTrustLevel, trustingPeriod, ubdPeriod+trustingPeriod, maxClockDrift, newClientHeight, commitmenttypes.GetSDKSpecs(), ibctesting.UpgradePath, false, false) upgradedConsState = &ibctmtypes.ConsensusState{ NextValidatorsHash: []byte("nextValsHash"), @@ -303,7 +301,6 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { { name: "client state frozen", setup: func() { - upgradedClient = ibctmtypes.NewClientState("newChainId", ibctmtypes.DefaultTrustLevel, trustingPeriod, ubdPeriod+trustingPeriod, maxClockDrift, newClientHeight, commitmenttypes.GetSDKSpecs(), ibctesting.UpgradePath, false, false) upgradedConsState = &ibctmtypes.ConsensusState{ NextValidatorsHash: []byte("nextValsHash"), @@ -339,7 +336,6 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { { name: "tendermint client VerifyUpgrade fails", setup: func() { - upgradedClient = ibctmtypes.NewClientState("newChainId", ibctmtypes.DefaultTrustLevel, trustingPeriod, ubdPeriod+trustingPeriod, maxClockDrift, newClientHeight, commitmenttypes.GetSDKSpecs(), ibctesting.UpgradePath, false, false) upgradedConsState = &ibctmtypes.ConsensusState{ NextValidatorsHash: []byte("nextValsHash"), @@ -386,7 +382,6 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { suite.Require().Error(err, "verify upgrade passed on invalid case: %s", tc.name) } } - } func (suite *KeeperTestSuite) TestCheckMisbehaviourAndUpdateState() { @@ -633,8 +628,6 @@ func (suite *KeeperTestSuite) TestUpdateClientEventEmission() { suite.Require().NoError(err) suite.Require().Equal(header, emittedHeader) } - } suite.Require().True(contains) - } diff --git a/x/ibc/core/02-client/keeper/grpc_query.go b/x/ibc/core/02-client/keeper/grpc_query.go index 6328e5de3b81..2371b14a8a11 100644 --- a/x/ibc/core/02-client/keeper/grpc_query.go +++ b/x/ibc/core/02-client/keeper/grpc_query.go @@ -82,7 +82,6 @@ func (q Keeper) ClientStates(c context.Context, req *types.QueryClientStatesRequ clientStates = append(clientStates, identifiedClient) return nil }) - if err != nil { return nil, err } @@ -176,7 +175,6 @@ func (q Keeper) ConsensusStates(c context.Context, req *types.QueryConsensusStat consensusStates = append(consensusStates, types.NewConsensusStateWithHeight(height, consensusState)) return true, nil }) - if err != nil { return nil, err } diff --git a/x/ibc/core/02-client/keeper/grpc_query_test.go b/x/ibc/core/02-client/keeper/grpc_query_test.go index 5e361a76f083..d18b0c97e3cb 100644 --- a/x/ibc/core/02-client/keeper/grpc_query_test.go +++ b/x/ibc/core/02-client/keeper/grpc_query_test.go @@ -26,13 +26,15 @@ func (suite *KeeperTestSuite) TestQueryClientState() { malleate func() expPass bool }{ - {"invalid clientID", + { + "invalid clientID", func() { req = &types.QueryClientStateRequest{} }, false, }, - {"client not found", + { + "client not found", func() { req = &types.QueryClientStateRequest{ ClientId: testClientID, diff --git a/x/ibc/core/02-client/keeper/proposal_test.go b/x/ibc/core/02-client/keeper/proposal_test.go index ada205402b34..bca72473cadc 100644 --- a/x/ibc/core/02-client/keeper/proposal_test.go +++ b/x/ibc/core/02-client/keeper/proposal_test.go @@ -89,5 +89,4 @@ func (suite *KeeperTestSuite) TestClientUpdateProposal() { } }) } - } diff --git a/x/ibc/core/02-client/proposal_handler_test.go b/x/ibc/core/02-client/proposal_handler_test.go index 91c1451b7076..fa4c35cbd858 100644 --- a/x/ibc/core/02-client/proposal_handler_test.go +++ b/x/ibc/core/02-client/proposal_handler_test.go @@ -72,5 +72,4 @@ func (suite *ClientTestSuite) TestNewClientUpdateProposalHandler() { } }) } - } diff --git a/x/ibc/core/02-client/types/client_test.go b/x/ibc/core/02-client/types/client_test.go index 2dfd3967d288..b7da92cc4d76 100644 --- a/x/ibc/core/02-client/types/client_test.go +++ b/x/ibc/core/02-client/types/client_test.go @@ -11,9 +11,7 @@ import ( ) func (suite *TypesTestSuite) TestMarshalConsensusStateWithHeight() { - var ( - cswh types.ConsensusStateWithHeight - ) + var cswh types.ConsensusStateWithHeight testCases := []struct { name string diff --git a/x/ibc/core/02-client/types/codec_test.go b/x/ibc/core/02-client/types/codec_test.go index 75cfc97eb08f..d37bee4340a1 100644 --- a/x/ibc/core/02-client/types/codec_test.go +++ b/x/ibc/core/02-client/types/codec_test.go @@ -17,7 +17,6 @@ type caseAny struct { } func (suite *TypesTestSuite) TestPackClientState() { - testCases := []struct { name string clientState exported.ClientState diff --git a/x/ibc/core/02-client/types/encoding_test.go b/x/ibc/core/02-client/types/encoding_test.go index 89953bc9f1d4..facc9af8a328 100644 --- a/x/ibc/core/02-client/types/encoding_test.go +++ b/x/ibc/core/02-client/types/encoding_test.go @@ -6,7 +6,6 @@ import ( ) func (suite *TypesTestSuite) TestMarshalHeader() { - cdc := suite.chainA.App.AppCodec() h := &ibctmtypes.Header{ TrustedHeight: types.NewHeight(4, 100), @@ -26,5 +25,4 @@ func (suite *TypesTestSuite) TestMarshalHeader() { invalidHeader, err := types.UnmarshalHeader(cdc, []byte("invalid bytes")) suite.Require().Error(err) suite.Require().Nil(invalidHeader) - } diff --git a/x/ibc/core/02-client/types/genesis.go b/x/ibc/core/02-client/types/genesis.go index 3f197208e33a..b1b258f55d6d 100644 --- a/x/ibc/core/02-client/types/genesis.go +++ b/x/ibc/core/02-client/types/genesis.go @@ -195,7 +195,6 @@ func (gs GenesisState) Validate() error { if err := gm.Validate(); err != nil { return fmt.Errorf("invalid client metadata %v clientID %s index %d: %w", gm, clientMetadata.ClientId, i, err) } - } } diff --git a/x/ibc/core/02-client/types/height_test.go b/x/ibc/core/02-client/types/height_test.go index a455b7f58d49..63470bcc81bf 100644 --- a/x/ibc/core/02-client/types/height_test.go +++ b/x/ibc/core/02-client/types/height_test.go @@ -123,7 +123,6 @@ func TestParseChainID(t *testing.T) { revision := types.ParseChainID(tc.chainID) require.Equal(t, tc.revision, revision, "case %d returns incorrect revision", i) } - } func TestSetRevisionNumber(t *testing.T) { diff --git a/x/ibc/core/02-client/types/msgs.go b/x/ibc/core/02-client/types/msgs.go index 1e884123d74b..4d90b3b18cd7 100644 --- a/x/ibc/core/02-client/types/msgs.go +++ b/x/ibc/core/02-client/types/msgs.go @@ -29,11 +29,11 @@ var ( ) // NewMsgCreateClient creates a new MsgCreateClient instance +// //nolint:interfacer func NewMsgCreateClient( clientState exported.ClientState, consensusState exported.ConsensusState, signer sdk.AccAddress, ) (*MsgCreateClient, error) { - anyClientState, err := PackClientState(clientState) if err != nil { return nil, err @@ -118,6 +118,7 @@ func (msg MsgCreateClient) UnpackInterfaces(unpacker codectypes.AnyUnpacker) err } // NewMsgUpdateClient creates a new MsgUpdateClient instance +// //nolint:interfacer func NewMsgUpdateClient(id string, header exported.Header, signer sdk.AccAddress) (*MsgUpdateClient, error) { anyHeader, err := PackHeader(header) @@ -183,9 +184,10 @@ func (msg MsgUpdateClient) UnpackInterfaces(unpacker codectypes.AnyUnpacker) err } // NewMsgUpgradeClient creates a new MsgUpgradeClient instance -// nolint: interfacer +//nolint: interfacer func NewMsgUpgradeClient(clientID string, clientState exported.ClientState, consState exported.ConsensusState, - proofUpgradeClient, proofUpgradeConsState []byte, signer sdk.AccAddress) (*MsgUpgradeClient, error) { + proofUpgradeClient, proofUpgradeConsState []byte, signer sdk.AccAddress, +) (*MsgUpgradeClient, error) { anyClient, err := PackClientState(clientState) if err != nil { return nil, err @@ -275,6 +277,7 @@ func (msg MsgUpgradeClient) UnpackInterfaces(unpacker codectypes.AnyUnpacker) er } // NewMsgSubmitMisbehaviour creates a new MsgSubmitMisbehaviour instance. +// //nolint:interfacer func NewMsgSubmitMisbehaviour(clientID string, misbehaviour exported.Misbehaviour, signer sdk.AccAddress) (*MsgSubmitMisbehaviour, error) { anyMisbehaviour, err := PackMisbehaviour(misbehaviour) diff --git a/x/ibc/core/02-client/types/msgs_test.go b/x/ibc/core/02-client/types/msgs_test.go index e42725bae26f..5666083600d4 100644 --- a/x/ibc/core/02-client/types/msgs_test.go +++ b/x/ibc/core/02-client/types/msgs_test.go @@ -211,7 +211,6 @@ func (suite *TypesTestSuite) TestMarshalMsgUpdateClient() { "tendermint client", func() { msg, err = types.NewMsgUpdateClient("tendermint", suite.chainA.CurrentTMClientHeader(), suite.chainA.SenderAccount.GetAddress()) suite.Require().NoError(err) - }, }, } @@ -496,7 +495,6 @@ func (suite *TypesTestSuite) TestMarshalMsgSubmitMisbehaviour() { misbehaviour := ibctmtypes.NewMisbehaviour("tendermint", header1, header2) msg, err = types.NewMsgSubmitMisbehaviour("tendermint", misbehaviour, suite.chainA.SenderAccount.GetAddress()) suite.Require().NoError(err) - }, }, } diff --git a/x/ibc/core/03-connection/client/cli/tx.go b/x/ibc/core/03-connection/client/cli/tx.go index 339e2e9770f4..9f31ce9017e9 100644 --- a/x/ibc/core/03-connection/client/cli/tx.go +++ b/x/ibc/core/03-connection/client/cli/tx.go @@ -2,7 +2,7 @@ package cli import ( "fmt" - "io/ioutil" + "os" "strings" "github.com/pkg/errors" @@ -142,7 +142,7 @@ func NewConnectionOpenTryCmd() *cobra.Command { if err := cdc.UnmarshalJSON([]byte(ver), version); err != nil { // check for file path if JSON input is not provided - contents, err := ioutil.ReadFile(ver) + contents, err := os.ReadFile(ver) if err != nil { return errors.Wrap(err, "neither JSON input nor path to .json file for version were provided") } @@ -261,7 +261,7 @@ func NewConnectionOpenAckCmd() *cobra.Command { if err := cdc.UnmarshalJSON([]byte(args[8]), version); err != nil { // check for file path if JSON input is not provided - contents, err := ioutil.ReadFile(args[8]) + contents, err := os.ReadFile(args[8]) if err != nil { return errors.Wrap(err, "neither JSON input nor path to .json file for version were provided") } diff --git a/x/ibc/core/03-connection/client/utils/utils.go b/x/ibc/core/03-connection/client/utils/utils.go index e1eb1ce00c55..ce340bca3f60 100644 --- a/x/ibc/core/03-connection/client/utils/utils.go +++ b/x/ibc/core/03-connection/client/utils/utils.go @@ -3,7 +3,7 @@ package utils import ( "context" "fmt" - "io/ioutil" + "os" "github.com/pkg/errors" @@ -105,7 +105,6 @@ func queryClientConnectionsABCI(clientCtx client.Context, clientID string) (*typ func QueryConnectionClientState( clientCtx client.Context, connectionID string, prove bool, ) (*types.QueryConnectionClientStateResponse, error) { - queryClient := types.NewQueryClient(clientCtx) req := &types.QueryConnectionClientStateRequest{ ConnectionId: connectionID, @@ -140,7 +139,6 @@ func QueryConnectionClientState( func QueryConnectionConsensusState( clientCtx client.Context, connectionID string, height clienttypes.Height, prove bool, ) (*types.QueryConnectionConsensusStateResponse, error) { - queryClient := types.NewQueryClient(clientCtx) req := &types.QueryConnectionConsensusStateRequest{ ConnectionId: connectionID, @@ -171,7 +169,7 @@ func ParseClientState(cdc *codec.LegacyAmino, arg string) (exported.ClientState, var clientState exported.ClientState if err := cdc.UnmarshalJSON([]byte(arg), &clientState); err != nil { // check for file path if JSON input is not provided - contents, err := ioutil.ReadFile(arg) + contents, err := os.ReadFile(arg) if err != nil { return nil, errors.New("either JSON input nor path to .json file were provided") } @@ -188,7 +186,7 @@ func ParsePrefix(cdc *codec.LegacyAmino, arg string) (commitmenttypes.MerklePref var prefix commitmenttypes.MerklePrefix if err := cdc.UnmarshalJSON([]byte(arg), &prefix); err != nil { // check for file path if JSON input is not provided - contents, err := ioutil.ReadFile(arg) + contents, err := os.ReadFile(arg) if err != nil { return commitmenttypes.MerklePrefix{}, errors.New("neither JSON input nor path to .json file were provided") } @@ -206,7 +204,7 @@ func ParseProof(cdc *codec.LegacyAmino, arg string) ([]byte, error) { var merkleProof commitmenttypes.MerkleProof if err := cdc.UnmarshalJSON([]byte(arg), &merkleProof); err != nil { // check for file path if JSON input is not provided - contents, err := ioutil.ReadFile(arg) + contents, err := os.ReadFile(arg) if err != nil { return nil, errors.New("neither JSON input nor path to .json file were provided") } diff --git a/x/ibc/core/03-connection/keeper/grpc_query.go b/x/ibc/core/03-connection/keeper/grpc_query.go index 62b1c00a3498..7d13b2d55d30 100644 --- a/x/ibc/core/03-connection/keeper/grpc_query.go +++ b/x/ibc/core/03-connection/keeper/grpc_query.go @@ -68,7 +68,6 @@ func (q Keeper) Connections(c context.Context, req *types.QueryConnectionsReques connections = append(connections, &identifiedConnection) return nil }) - if err != nil { return nil, err } @@ -137,7 +136,6 @@ func (q Keeper) ConnectionClientState(c context.Context, req *types.QueryConnect height := clienttypes.GetSelfHeight(ctx) return types.NewQueryConnectionClientStateResponse(identifiedClientState, nil, height), nil - } // ConnectionConsensusState implements the Query/ConnectionConsensusState gRPC method diff --git a/x/ibc/core/03-connection/keeper/grpc_query_test.go b/x/ibc/core/03-connection/keeper/grpc_query_test.go index 14fdb425d9eb..d17c579a1caf 100644 --- a/x/ibc/core/03-connection/keeper/grpc_query_test.go +++ b/x/ibc/core/03-connection/keeper/grpc_query_test.go @@ -30,13 +30,15 @@ func (suite *KeeperTestSuite) TestQueryConnection() { }, false, }, - {"invalid connectionID", + { + "invalid connectionID", func() { req = &types.QueryConnectionRequest{} }, false, }, - {"connection not found", + { + "connection not found", func() { req = &types.QueryConnectionRequest{ ConnectionId: ibctesting.InvalidID, @@ -180,13 +182,15 @@ func (suite *KeeperTestSuite) TestQueryClientConnections() { }, false, }, - {"invalid connectionID", + { + "invalid connectionID", func() { req = &types.QueryClientConnectionsRequest{} }, false, }, - {"connection not found", + { + "connection not found", func() { req = &types.QueryClientConnectionsRequest{ ClientId: ibctesting.InvalidID, diff --git a/x/ibc/core/03-connection/keeper/handshake.go b/x/ibc/core/03-connection/keeper/handshake.go index b8f7466f159b..90c65843db17 100644 --- a/x/ibc/core/03-connection/keeper/handshake.go +++ b/x/ibc/core/03-connection/keeper/handshake.go @@ -57,8 +57,8 @@ func (k Keeper) ConnOpenInit( // code is executed on chain B). // // NOTE: -// - Here chain A acts as the counterparty -// - Identifiers are checked on msg validation +// - Here chain A acts as the counterparty +// - Identifiers are checked on msg validation func (k Keeper) ConnOpenTry( ctx sdk.Context, previousConnectionID string, // previousIdentifier diff --git a/x/ibc/core/03-connection/types/codec.go b/x/ibc/core/03-connection/types/codec.go index 6105fa9ee1db..29fb708bcb31 100644 --- a/x/ibc/core/03-connection/types/codec.go +++ b/x/ibc/core/03-connection/types/codec.go @@ -37,11 +37,9 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } -var ( - // SubModuleCdc references the global x/ibc/core/03-connection module codec. Note, the codec should - // ONLY be used in certain instances of tests and for JSON encoding. - // - // The actual codec used for serialization should be provided to x/ibc/core/03-connection and - // defined at the application level. - SubModuleCdc = codec.NewProtoCodec(codectypes.NewInterfaceRegistry()) -) +// SubModuleCdc references the global x/ibc/core/03-connection module codec. Note, the codec should +// ONLY be used in certain instances of tests and for JSON encoding. +// +// The actual codec used for serialization should be provided to x/ibc/core/03-connection and +// defined at the application level. +var SubModuleCdc = codec.NewProtoCodec(codectypes.NewInterfaceRegistry()) diff --git a/x/ibc/core/03-connection/types/genesis_test.go b/x/ibc/core/03-connection/types/genesis_test.go index 846837f9af70..88406065d110 100644 --- a/x/ibc/core/03-connection/types/genesis_test.go +++ b/x/ibc/core/03-connection/types/genesis_test.go @@ -11,7 +11,6 @@ import ( ) func TestValidateGenesis(t *testing.T) { - testCases := []struct { name string genState types.GenesisState diff --git a/x/ibc/core/03-connection/types/msgs.go b/x/ibc/core/03-connection/types/msgs.go index 3ba1aed8e7e0..e03b5870adb2 100644 --- a/x/ibc/core/03-connection/types/msgs.go +++ b/x/ibc/core/03-connection/types/msgs.go @@ -22,6 +22,7 @@ var ( // NewMsgConnectionOpenInit creates a new MsgConnectionOpenInit instance. It sets the // counterparty connection identifier to be empty. +// //nolint:interfacer func NewMsgConnectionOpenInit( clientID, counterpartyClientID string, @@ -87,6 +88,7 @@ func (msg MsgConnectionOpenInit) GetSigners() []sdk.AccAddress { } // NewMsgConnectionOpenTry creates a new MsgConnectionOpenTry instance +// //nolint:interfacer func NewMsgConnectionOpenTry( previousConnectionID, clientID, counterpartyConnectionID, @@ -200,6 +202,7 @@ func (msg MsgConnectionOpenTry) GetSigners() []sdk.AccAddress { } // NewMsgConnectionOpenAck creates a new MsgConnectionOpenAck instance +// //nolint:interfacer func NewMsgConnectionOpenAck( connectionID, counterpartyConnectionID string, counterpartyClient exported.ClientState, @@ -297,6 +300,7 @@ func (msg MsgConnectionOpenAck) GetSigners() []sdk.AccAddress { } // NewMsgConnectionOpenConfirm creates a new MsgConnectionOpenConfirm instance +// //nolint:interfacer func NewMsgConnectionOpenConfirm( connectionID string, proofAck []byte, proofHeight clienttypes.Height, diff --git a/x/ibc/core/03-connection/types/msgs_test.go b/x/ibc/core/03-connection/types/msgs_test.go index 57c1925f66db..6f3792cf0633 100644 --- a/x/ibc/core/03-connection/types/msgs_test.go +++ b/x/ibc/core/03-connection/types/msgs_test.go @@ -68,7 +68,6 @@ func (suite *MsgTestSuite) SetupTest() { suite.Require().NoError(err) suite.proof = proof - } func TestMsgTestSuite(t *testing.T) { @@ -82,7 +81,7 @@ func (suite *MsgTestSuite) TestNewMsgConnectionOpenInit() { // will be used in protocol. var version *types.Version - var testCases = []struct { + testCases := []struct { name string msg *types.MsgConnectionOpenInit expPass bool @@ -126,7 +125,7 @@ func (suite *MsgTestSuite) TestNewMsgConnectionOpenTry() { chainID, ibctmtypes.DefaultTrustLevel, ibctesting.TrustingPeriod, ibctesting.UnbondingPeriod, ibctesting.MaxClockDrift, clienttypes.ZeroHeight(), commitmenttypes.GetSDKSpecs(), ibctesting.UpgradePath, false, false, ) - var testCases = []struct { + testCases := []struct { name string msg *types.MsgConnectionOpenTry expPass bool @@ -179,7 +178,7 @@ func (suite *MsgTestSuite) TestNewMsgConnectionOpenAck() { ) connectionID := "connection-0" - var testCases = []struct { + testCases := []struct { name string msg *types.MsgConnectionOpenAck expPass bool @@ -220,7 +219,7 @@ func (suite *MsgTestSuite) TestNewMsgConnectionOpenConfirm() { types.NewMsgConnectionOpenConfirm(connectionID, suite.proof, clientHeight, signer), } - var testCases = []struct { + testCases := []struct { msg *types.MsgConnectionOpenConfirm expPass bool errMsg string diff --git a/x/ibc/core/03-connection/types/version_test.go b/x/ibc/core/03-connection/types/version_test.go index 8f882dd32711..ee125e78b1a1 100644 --- a/x/ibc/core/03-connection/types/version_test.go +++ b/x/ibc/core/03-connection/types/version_test.go @@ -141,7 +141,6 @@ func TestVerifyProposedVersion(t *testing.T) { require.Error(t, err, "test case %d: %s", i, tc.name) } } - } func TestVerifySupportedFeature(t *testing.T) { diff --git a/x/ibc/core/04-channel/client/utils/utils.go b/x/ibc/core/04-channel/client/utils/utils.go index 167e05d048e9..61e1d859e3f9 100644 --- a/x/ibc/core/04-channel/client/utils/utils.go +++ b/x/ibc/core/04-channel/client/utils/utils.go @@ -63,7 +63,6 @@ func queryChannelABCI(clientCtx client.Context, portID, channelID string) (*type func QueryChannelClientState( clientCtx client.Context, portID, channelID string, prove bool, ) (*types.QueryChannelClientStateResponse, error) { - queryClient := types.NewQueryClient(clientCtx) req := &types.QueryChannelClientStateRequest{ PortId: portID, @@ -98,7 +97,6 @@ func QueryChannelClientState( func QueryChannelConsensusState( clientCtx client.Context, portID, channelID string, height clienttypes.Height, prove bool, ) (*types.QueryChannelConsensusStateResponse, error) { - queryClient := types.NewQueryClient(clientCtx) req := &types.QueryChannelConsensusStateRequest{ PortId: portID, diff --git a/x/ibc/core/04-channel/keeper/grpc_query.go b/x/ibc/core/04-channel/keeper/grpc_query.go index 30df0a33ace5..5c896ce21975 100644 --- a/x/ibc/core/04-channel/keeper/grpc_query.go +++ b/x/ibc/core/04-channel/keeper/grpc_query.go @@ -69,7 +69,6 @@ func (q Keeper) Channels(c context.Context, req *types.QueryChannelsRequest) (*t channels = append(channels, &identifiedChannel) return nil }) - if err != nil { return nil, err } @@ -118,7 +117,6 @@ func (q Keeper) ConnectionChannels(c context.Context, req *types.QueryConnection channels = append(channels, &identifiedChannel) return nil }) - if err != nil { return nil, err } @@ -252,7 +250,6 @@ func (q Keeper) PacketCommitments(c context.Context, req *types.QueryPacketCommi commitments = append(commitments, &commitment) return nil }) - if err != nil { return nil, err } @@ -339,7 +336,6 @@ func (q Keeper) PacketAcknowledgements(c context.Context, req *types.QueryPacket acks = append(acks, &ack) return nil }) - if err != nil { return nil, err } @@ -379,7 +375,7 @@ func (q Keeper) UnreceivedPackets(c context.Context, req *types.QueryUnreceivedP ctx := sdk.UnwrapSDKContext(c) - var unreceivedSequences = []uint64{} + unreceivedSequences := []uint64{} for i, seq := range req.PacketCommitmentSequences { if seq == 0 { @@ -428,7 +424,7 @@ func (q Keeper) UnreceivedAcks(c context.Context, req *types.QueryUnreceivedAcks ctx := sdk.UnwrapSDKContext(c) - var unreceivedSequences = []uint64{} + unreceivedSequences := []uint64{} for i, seq := range req.PacketAckSequences { if seq == 0 { diff --git a/x/ibc/core/04-channel/keeper/grpc_query_test.go b/x/ibc/core/04-channel/keeper/grpc_query_test.go index 689c241c7b8b..60a588d845f2 100644 --- a/x/ibc/core/04-channel/keeper/grpc_query_test.go +++ b/x/ibc/core/04-channel/keeper/grpc_query_test.go @@ -50,7 +50,8 @@ func (suite *KeeperTestSuite) TestQueryChannel() { }, false, }, - {"channel not found", + { + "channel not found", func() { req = &types.QueryChannelRequest{ PortId: "test-port-id", @@ -597,7 +598,8 @@ func (suite *KeeperTestSuite) TestQueryPacketCommitment() { }, false, }, - {"invalid sequence", + { + "invalid sequence", func() { req = &types.QueryPacketCommitmentRequest{ PortId: "test-port-id", @@ -607,7 +609,8 @@ func (suite *KeeperTestSuite) TestQueryPacketCommitment() { }, false, }, - {"channel not found", + { + "channel not found", func() { req = &types.QueryPacketCommitmentRequest{ PortId: "test-port-id", @@ -786,7 +789,8 @@ func (suite *KeeperTestSuite) TestQueryPacketReceipt() { }, false, }, - {"invalid sequence", + { + "invalid sequence", func() { req = &types.QueryPacketReceiptRequest{ PortId: "test-port-id", @@ -888,7 +892,8 @@ func (suite *KeeperTestSuite) TestQueryPacketAcknowledgement() { }, false, }, - {"invalid sequence", + { + "invalid sequence", func() { req = &types.QueryPacketAcknowledgementRequest{ PortId: "test-port-id", @@ -898,7 +903,8 @@ func (suite *KeeperTestSuite) TestQueryPacketAcknowledgement() { }, false, }, - {"channel not found", + { + "channel not found", func() { req = &types.QueryPacketAcknowledgementRequest{ PortId: "test-port-id", @@ -1330,7 +1336,8 @@ func (suite *KeeperTestSuite) TestQueryNextSequenceReceive() { }, false, }, - {"channel not found", + { + "channel not found", func() { req = &types.QueryNextSequenceReceiveRequest{ PortId: "test-port-id", diff --git a/x/ibc/core/04-channel/keeper/handshake.go b/x/ibc/core/04-channel/keeper/handshake.go index b7cff480c965..08ac2d5b24c5 100644 --- a/x/ibc/core/04-channel/keeper/handshake.go +++ b/x/ibc/core/04-channel/keeper/handshake.go @@ -311,7 +311,8 @@ func (k Keeper) ChanOpenAck( } // ChanOpenConfirm is called by the counterparty module to close their end of the -// channel, since the other end has been closed. +// +// channel, since the other end has been closed. func (k Keeper) ChanOpenConfirm( ctx sdk.Context, portID, diff --git a/x/ibc/core/04-channel/keeper/packet_test.go b/x/ibc/core/04-channel/keeper/packet_test.go index 232e68758246..547ecf6e4e34 100644 --- a/x/ibc/core/04-channel/keeper/packet_test.go +++ b/x/ibc/core/04-channel/keeper/packet_test.go @@ -189,7 +189,6 @@ func (suite *KeeperTestSuite) TestSendPacket() { } }) } - } // TestRecvPacket test RecvPacket on chainB. Since packet commitment verification will always @@ -388,7 +387,6 @@ func (suite *KeeperTestSuite) TestRecvPacket() { } }) } - } func (suite *KeeperTestSuite) TestWriteAcknowledgement() { diff --git a/x/ibc/core/04-channel/keeper/timeout_test.go b/x/ibc/core/04-channel/keeper/timeout_test.go index 640452e881be..df3404c517c7 100644 --- a/x/ibc/core/04-channel/keeper/timeout_test.go +++ b/x/ibc/core/04-channel/keeper/timeout_test.go @@ -347,5 +347,4 @@ func (suite *KeeperTestSuite) TestTimeoutOnClose() { } }) } - } diff --git a/x/ibc/core/04-channel/types/channel_test.go b/x/ibc/core/04-channel/types/channel_test.go index 30fee4443b2e..eca393cefff4 100644 --- a/x/ibc/core/04-channel/types/channel_test.go +++ b/x/ibc/core/04-channel/types/channel_test.go @@ -115,5 +115,4 @@ func (suite TypesTestSuite) TestAcknowledgement() { }) }) } - } diff --git a/x/ibc/core/04-channel/types/msgs.go b/x/ibc/core/04-channel/types/msgs.go index da14a31030fa..1d7c70abc84c 100644 --- a/x/ibc/core/04-channel/types/msgs.go +++ b/x/ibc/core/04-channel/types/msgs.go @@ -14,7 +14,7 @@ var _ sdk.Msg = &MsgChannelOpenInit{} // NewMsgChannelOpenInit creates a new MsgChannelOpenInit. It sets the counterparty channel // identifier to be empty. -// nolint:interfacer +//nolint:interfacer func NewMsgChannelOpenInit( portID, version string, channelOrder Order, connectionHops []string, counterpartyPortID string, signer sdk.AccAddress, @@ -77,7 +77,7 @@ func (msg MsgChannelOpenInit) GetSigners() []sdk.AccAddress { var _ sdk.Msg = &MsgChannelOpenTry{} // NewMsgChannelOpenTry creates a new MsgChannelOpenTry instance -// nolint:interfacer +//nolint:interfacer func NewMsgChannelOpenTry( portID, previousChannelID, version string, channelOrder Order, connectionHops []string, counterpartyPortID, counterpartyChannelID, counterpartyVersion string, @@ -158,7 +158,7 @@ func (msg MsgChannelOpenTry) GetSigners() []sdk.AccAddress { var _ sdk.Msg = &MsgChannelOpenAck{} // NewMsgChannelOpenAck creates a new MsgChannelOpenAck instance -// nolint:interfacer +//nolint:interfacer func NewMsgChannelOpenAck( portID, channelID, counterpartyChannelID string, cpv string, proofTry []byte, proofHeight clienttypes.Height, signer sdk.AccAddress, @@ -226,7 +226,7 @@ func (msg MsgChannelOpenAck) GetSigners() []sdk.AccAddress { var _ sdk.Msg = &MsgChannelOpenConfirm{} // NewMsgChannelOpenConfirm creates a new MsgChannelOpenConfirm instance -// nolint:interfacer +//nolint:interfacer func NewMsgChannelOpenConfirm( portID, channelID string, proofAck []byte, proofHeight clienttypes.Height, signer sdk.AccAddress, @@ -289,7 +289,7 @@ func (msg MsgChannelOpenConfirm) GetSigners() []sdk.AccAddress { var _ sdk.Msg = &MsgChannelCloseInit{} // NewMsgChannelCloseInit creates a new MsgChannelCloseInit instance -// nolint:interfacer +//nolint:interfacer func NewMsgChannelCloseInit( portID string, channelID string, signer sdk.AccAddress, ) *MsgChannelCloseInit { @@ -343,7 +343,7 @@ func (msg MsgChannelCloseInit) GetSigners() []sdk.AccAddress { var _ sdk.Msg = &MsgChannelCloseConfirm{} // NewMsgChannelCloseConfirm creates a new MsgChannelCloseConfirm instance -// nolint:interfacer +//nolint:interfacer func NewMsgChannelCloseConfirm( portID, channelID string, proofInit []byte, proofHeight clienttypes.Height, signer sdk.AccAddress, @@ -406,7 +406,7 @@ func (msg MsgChannelCloseConfirm) GetSigners() []sdk.AccAddress { var _ sdk.Msg = &MsgRecvPacket{} // NewMsgRecvPacket constructs new MsgRecvPacket -// nolint:interfacer +//nolint:interfacer func NewMsgRecvPacket( packet Packet, proofCommitment []byte, proofHeight clienttypes.Height, signer sdk.AccAddress, @@ -469,7 +469,7 @@ func (msg MsgRecvPacket) Type() string { var _ sdk.Msg = &MsgTimeout{} // NewMsgTimeout constructs new MsgTimeout -// nolint:interfacer +//nolint:interfacer func NewMsgTimeout( packet Packet, nextSequenceRecv uint64, proofUnreceived []byte, proofHeight clienttypes.Height, signer sdk.AccAddress, @@ -527,7 +527,7 @@ func (msg MsgTimeout) Type() string { } // NewMsgTimeoutOnClose constructs new MsgTimeoutOnClose -// nolint:interfacer +//nolint:interfacer func NewMsgTimeoutOnClose( packet Packet, nextSequenceRecv uint64, proofUnreceived, proofClose []byte, @@ -592,7 +592,7 @@ func (msg MsgTimeoutOnClose) Type() string { var _ sdk.Msg = &MsgAcknowledgement{} // NewMsgAcknowledgement constructs a new MsgAcknowledgement -// nolint:interfacer +//nolint:interfacer func NewMsgAcknowledgement( packet Packet, ack, proofAcked []byte, diff --git a/x/ibc/core/23-commitment/types/merkle.go b/x/ibc/core/23-commitment/types/merkle.go index e90fccc34b27..ca7449102558 100644 --- a/x/ibc/core/23-commitment/types/merkle.go +++ b/x/ibc/core/23-commitment/types/merkle.go @@ -271,8 +271,10 @@ func verifyChainedMembershipProof(root []byte, specs []*ics23.ProofSpec, proofs // blankMerkleProof and blankProofOps will be used to compare against their zero values, // and are declared as globals to avoid having to unnecessarily re-allocate on every comparison. -var blankMerkleProof = &MerkleProof{} -var blankProofOps = &tmcrypto.ProofOps{} +var ( + blankMerkleProof = &MerkleProof{} + blankProofOps = &tmcrypto.ProofOps{} +) // Empty returns true if the root is empty func (proof *MerkleProof) Empty() bool { diff --git a/x/ibc/core/23-commitment/types/merkle_test.go b/x/ibc/core/23-commitment/types/merkle_test.go index 3c53847fadd4..592fa0c0503e 100644 --- a/x/ibc/core/23-commitment/types/merkle_test.go +++ b/x/ibc/core/23-commitment/types/merkle_test.go @@ -64,15 +64,14 @@ func (suite *MerkleTestSuite) TestVerifyMembership() { err := proof.VerifyMembership(types.GetSDKSpecs(), &root, path, tc.value) if tc.shouldPass { - // nolint: scopelint + //nolint: scopelint suite.Require().NoError(err, "test case %d should have passed", i) } else { - // nolint: scopelint + //nolint: scopelint suite.Require().Error(err, "test case %d should have failed", i) } }) } - } func (suite *MerkleTestSuite) TestVerifyNonMembership() { @@ -128,15 +127,14 @@ func (suite *MerkleTestSuite) TestVerifyNonMembership() { err := proof.VerifyNonMembership(types.GetSDKSpecs(), &root, path) if tc.shouldPass { - // nolint: scopelint + //nolint: scopelint suite.Require().NoError(err, "test case %d should have passed", i) } else { - // nolint: scopelint + //nolint: scopelint suite.Require().Error(err, "test case %d should have failed", i) } }) } - } func TestApplyPrefix(t *testing.T) { diff --git a/x/ibc/core/ante/ante.go b/x/ibc/core/ante/ante.go index b3cae30245e5..6a526dcd76a2 100644 --- a/x/ibc/core/ante/ante.go +++ b/x/ibc/core/ante/ante.go @@ -60,7 +60,6 @@ func (ad Decorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next s // even if they get batched with redundant packet messages. return next(ctx, tx, simulate) } - } // only return error if all packet messages are redundant diff --git a/x/ibc/core/keeper/msg_server.go b/x/ibc/core/keeper/msg_server.go index 7a65b2a1fd77..b72033aec23b 100644 --- a/x/ibc/core/keeper/msg_server.go +++ b/x/ibc/core/keeper/msg_server.go @@ -16,9 +16,11 @@ import ( coretypes "github.com/cosmos/cosmos-sdk/x/ibc/core/types" ) -var _ clienttypes.MsgServer = Keeper{} -var _ connectiontypes.MsgServer = Keeper{} -var _ channeltypes.MsgServer = Keeper{} +var ( + _ clienttypes.MsgServer = Keeper{} + _ connectiontypes.MsgServer = Keeper{} + _ channeltypes.MsgServer = Keeper{} +) // CreateClient defines a rpc handler method for MsgCreateClient. func (k Keeper) CreateClient(goCtx context.Context, msg *clienttypes.MsgCreateClient) (*clienttypes.MsgCreateClientResponse, error) { diff --git a/x/ibc/core/keeper/msg_server_test.go b/x/ibc/core/keeper/msg_server_test.go index 1af4cdc18eb0..56e9fc4e282c 100644 --- a/x/ibc/core/keeper/msg_server_test.go +++ b/x/ibc/core/keeper/msg_server_test.go @@ -55,9 +55,7 @@ func TestIBCTestSuite(t *testing.T) { // rigorous testing of 'RecvPacket' can be found in the // 04-channel/keeper/packet_test.go. func (suite *KeeperTestSuite) TestHandleRecvPacket() { - var ( - packet channeltypes.Packet - ) + var packet channeltypes.Packet testCases := []struct { name string @@ -173,9 +171,7 @@ func (suite *KeeperTestSuite) TestHandleRecvPacket() { // checks. More rigorous testing of 'AcknowledgePacket' // can be found in the 04-channel/keeper/packet_test.go. func (suite *KeeperTestSuite) TestHandleAcknowledgePacket() { - var ( - packet channeltypes.Packet - ) + var packet channeltypes.Packet testCases := []struct { name string @@ -379,7 +375,6 @@ func (suite *KeeperTestSuite) TestHandleTimeoutPacket() { suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) packetKey = host.NextSequenceRecvKey(packet.GetDestPort(), packet.GetDestChannel()) - }, true}, {"channel does not exist", func() { // any non-nil value of packet is valid @@ -430,7 +425,7 @@ func (suite *KeeperTestSuite) TestHandleTimeoutPacket() { // and unordered channels. It verifies that the deletion of a packet // commitment occurs. It tests high level properties like ordering and basic // sanity checks. More rigorous testing of 'TimeoutOnClose' and -//'TimeoutExecuted' can be found in the 04-channel/keeper/timeout_test.go. +// 'TimeoutExecuted' can be found in the 04-channel/keeper/timeout_test.go. func (suite *KeeperTestSuite) TestHandleTimeoutOnClosePacket() { var ( packet channeltypes.Packet @@ -627,7 +622,6 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { { name: "successful upgrade", setup: func() { - upgradedClient = ibctmtypes.NewClientState("newChainId", ibctmtypes.DefaultTrustLevel, ibctesting.TrustingPeriod, ibctesting.UnbondingPeriod+ibctesting.TrustingPeriod, ibctesting.MaxClockDrift, newClientHeight, commitmenttypes.GetSDKSpecs(), ibctesting.UpgradePath, false, false) // Call ZeroCustomFields on upgraded clients to clear any client-chosen parameters in test-case upgradedClient upgradedClient = upgradedClient.ZeroCustomFields() @@ -664,7 +658,6 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { { name: "VerifyUpgrade fails", setup: func() { - upgradedClient = ibctmtypes.NewClientState("newChainId", ibctmtypes.DefaultTrustLevel, ibctesting.TrustingPeriod, ibctesting.UnbondingPeriod+ibctesting.TrustingPeriod, ibctesting.MaxClockDrift, newClientHeight, commitmenttypes.GetSDKSpecs(), ibctesting.UpgradePath, false, false) // Call ZeroCustomFields on upgraded clients to clear any client-chosen parameters in test-case upgradedClient upgradedClient = upgradedClient.ZeroCustomFields() diff --git a/x/ibc/light-clients/06-solomachine/client/cli/tx.go b/x/ibc/light-clients/06-solomachine/client/cli/tx.go index dea2d2ae7388..d4b175333bee 100644 --- a/x/ibc/light-clients/06-solomachine/client/cli/tx.go +++ b/x/ibc/light-clients/06-solomachine/client/cli/tx.go @@ -2,7 +2,7 @@ package cli import ( "fmt" - "io/ioutil" + "os" "strconv" "github.com/pkg/errors" @@ -47,7 +47,7 @@ func NewCreateClientCmd() *cobra.Command { if err := cdc.UnmarshalJSON([]byte(args[1]), consensusState); err != nil { // check for file path if JSON input is not provided - contents, err := ioutil.ReadFile(args[1]) + contents, err := os.ReadFile(args[1]) if err != nil { return errors.Wrap(err, "neither JSON input nor path to .json file for consensus state were provided") } @@ -100,7 +100,7 @@ func NewUpdateClientCmd() *cobra.Command { if err := cdc.UnmarshalJSON([]byte(args[1]), header); err != nil { // check for file path if JSON input is not provided - contents, err := ioutil.ReadFile(args[1]) + contents, err := os.ReadFile(args[1]) if err != nil { return errors.Wrap(err, "neither JSON input nor path to .json file for header were provided") } @@ -144,7 +144,7 @@ func NewSubmitMisbehaviourCmd() *cobra.Command { if err := cdc.UnmarshalJSON([]byte(args[0]), m); err != nil { // check for file path if JSON input is not provided - contents, err := ioutil.ReadFile(args[0]) + contents, err := os.ReadFile(args[0]) if err != nil { return errors.Wrap(err, "neither JSON input nor path to .json file for misbehaviour were provided") } diff --git a/x/ibc/light-clients/06-solomachine/types/client_state_test.go b/x/ibc/light-clients/06-solomachine/types/client_state_test.go index 4f6c195c898e..47f092adacac 100644 --- a/x/ibc/light-clients/06-solomachine/types/client_state_test.go +++ b/x/ibc/light-clients/06-solomachine/types/client_state_test.go @@ -68,7 +68,6 @@ func (suite *SoloMachineTestSuite) TestClientStateValidateBasic() { tc := tc suite.Run(tc.name, func() { - err := tc.clientState.Validate() if tc.expPass { @@ -235,7 +234,6 @@ func (suite *SoloMachineTestSuite) TestVerifyClientState() { tc := tc suite.Run(tc.name, func() { - var expSeq uint64 if tc.clientState.ConsensusState != nil { expSeq = tc.clientState.Sequence + 1 @@ -363,7 +361,6 @@ func (suite *SoloMachineTestSuite) TestVerifyClientConsensusState() { tc := tc suite.Run(tc.name, func() { - var expSeq uint64 if tc.clientState.ConsensusState != nil { expSeq = tc.clientState.Sequence + 1 diff --git a/x/ibc/light-clients/06-solomachine/types/codec_test.go b/x/ibc/light-clients/06-solomachine/types/codec_test.go index 70be186a10bb..a58a48e8280c 100644 --- a/x/ibc/light-clients/06-solomachine/types/codec_test.go +++ b/x/ibc/light-clients/06-solomachine/types/codec_test.go @@ -55,7 +55,6 @@ func (suite SoloMachineTestSuite) TestUnmarshalDataByType() { path := solomachine.GetConsensusStatePath(counterpartyClientIdentifier, clienttypes.NewHeight(0, 5)) data, err = types.ConsensusStateDataBytes(cdc, path, solomachine.ConsensusState()) suite.Require().NoError(err) - }, true, }, { @@ -73,7 +72,6 @@ func (suite SoloMachineTestSuite) TestUnmarshalDataByType() { data, err = types.ConnectionStateDataBytes(cdc, path, conn) suite.Require().NoError(err) - }, true, }, { @@ -104,7 +102,6 @@ func (suite SoloMachineTestSuite) TestUnmarshalDataByType() { data, err = types.ConnectionStateDataBytes(cdc, path, conn) suite.Require().NoError(err) - }, false, }, { @@ -186,5 +183,4 @@ func (suite SoloMachineTestSuite) TestUnmarshalDataByType() { }) } } - } diff --git a/x/ibc/light-clients/06-solomachine/types/consensus_state_test.go b/x/ibc/light-clients/06-solomachine/types/consensus_state_test.go index e0c22f95957b..ee8e1d250fd7 100644 --- a/x/ibc/light-clients/06-solomachine/types/consensus_state_test.go +++ b/x/ibc/light-clients/06-solomachine/types/consensus_state_test.go @@ -61,7 +61,6 @@ func (suite *SoloMachineTestSuite) TestConsensusStateValidateBasic() { tc := tc suite.Run(tc.name, func() { - err := tc.consensusState.ValidateBasic() if tc.expPass { diff --git a/x/ibc/light-clients/06-solomachine/types/misbehaviour.go b/x/ibc/light-clients/06-solomachine/types/misbehaviour.go index 65b8a4ee4753..1268441e4dcf 100644 --- a/x/ibc/light-clients/06-solomachine/types/misbehaviour.go +++ b/x/ibc/light-clients/06-solomachine/types/misbehaviour.go @@ -9,9 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/ibc/core/exported" ) -var ( - _ exported.Misbehaviour = (*Misbehaviour)(nil) -) +var _ exported.Misbehaviour = (*Misbehaviour)(nil) // ClientType is a Solo Machine light client. func (misbehaviour Misbehaviour) ClientType() string { diff --git a/x/ibc/light-clients/06-solomachine/types/misbehaviour_handle.go b/x/ibc/light-clients/06-solomachine/types/misbehaviour_handle.go index ce5d6351c48f..a28f8b73ee5a 100644 --- a/x/ibc/light-clients/06-solomachine/types/misbehaviour_handle.go +++ b/x/ibc/light-clients/06-solomachine/types/misbehaviour_handle.go @@ -20,7 +20,6 @@ func (cs ClientState) CheckMisbehaviourAndUpdateState( clientStore sdk.KVStore, misbehaviour exported.Misbehaviour, ) (exported.ClientState, error) { - soloMisbehaviour, ok := misbehaviour.(*Misbehaviour) if !ok { return nil, sdkerrors.Wrapf( @@ -54,7 +53,6 @@ func (cs ClientState) CheckMisbehaviourAndUpdateState( // over the provided data and that the data is valid. The data is valid if it can be // unmarshaled into the specified data type. func verifySignatureAndData(cdc codec.BinaryMarshaler, clientState ClientState, misbehaviour *Misbehaviour, sigAndData *SignatureAndData) error { - // do not check misbehaviour timestamp since we want to allow processing of past misbehaviour // ensure data can be unmarshaled to the specified data type @@ -88,5 +86,4 @@ func verifySignatureAndData(cdc codec.BinaryMarshaler, clientState ClientState, } return nil - } diff --git a/x/ibc/light-clients/06-solomachine/types/misbehaviour_handle_test.go b/x/ibc/light-clients/06-solomachine/types/misbehaviour_handle_test.go index 97ce22a3ed9c..97212a2d7350 100644 --- a/x/ibc/light-clients/06-solomachine/types/misbehaviour_handle_test.go +++ b/x/ibc/light-clients/06-solomachine/types/misbehaviour_handle_test.go @@ -237,7 +237,6 @@ func (suite *SoloMachineTestSuite) TestCheckMisbehaviourAndUpdateState() { m.SignatureTwo.Data = msg misbehaviour = m - }, false, }, diff --git a/x/ibc/light-clients/06-solomachine/types/misbehaviour_test.go b/x/ibc/light-clients/06-solomachine/types/misbehaviour_test.go index 7c1f9168aaf6..05ebfcabe5e5 100644 --- a/x/ibc/light-clients/06-solomachine/types/misbehaviour_test.go +++ b/x/ibc/light-clients/06-solomachine/types/misbehaviour_test.go @@ -115,7 +115,6 @@ func (suite *SoloMachineTestSuite) TestMisbehaviourValidateBasic() { tc := tc suite.Run(tc.name, func() { - misbehaviour := solomachine.CreateMisbehaviour() tc.malleateMisbehaviour(misbehaviour) diff --git a/x/ibc/light-clients/06-solomachine/types/proof.go b/x/ibc/light-clients/06-solomachine/types/proof.go index 6c2e0b842886..ec6701346dcc 100644 --- a/x/ibc/light-clients/06-solomachine/types/proof.go +++ b/x/ibc/light-clients/06-solomachine/types/proof.go @@ -54,7 +54,8 @@ func MisbehaviourSignBytes( sequence, timestamp uint64, diversifier string, dataType DataType, - data []byte) ([]byte, error) { + data []byte, +) ([]byte, error) { signBytes := &SignBytes{ Sequence: sequence, Timestamp: timestamp, @@ -121,7 +122,7 @@ func ClientStateSignBytes( // SignBytes. func ClientStateDataBytes( cdc codec.BinaryMarshaler, - path commitmenttypes.MerklePath, // nolint: interfacer + path commitmenttypes.MerklePath, //nolint: interfacer clientState exported.ClientState, ) ([]byte, error) { any, err := clienttypes.PackClientState(clientState) @@ -171,7 +172,7 @@ func ConsensusStateSignBytes( // SignBytes. func ConsensusStateDataBytes( cdc codec.BinaryMarshaler, - path commitmenttypes.MerklePath, // nolint: interfacer + path commitmenttypes.MerklePath, //nolint: interfacer consensusState exported.ConsensusState, ) ([]byte, error) { any, err := clienttypes.PackConsensusState(consensusState) @@ -221,7 +222,7 @@ func ConnectionStateSignBytes( // SignBytes. func ConnectionStateDataBytes( cdc codec.BinaryMarshaler, - path commitmenttypes.MerklePath, // nolint: interfacer + path commitmenttypes.MerklePath, //nolint: interfacer connectionEnd exported.ConnectionI, ) ([]byte, error) { connection, ok := connectionEnd.(connectiontypes.ConnectionEnd) @@ -274,7 +275,7 @@ func ChannelStateSignBytes( // SignBytes. func ChannelStateDataBytes( cdc codec.BinaryMarshaler, - path commitmenttypes.MerklePath, // nolint: interfacer + path commitmenttypes.MerklePath, //nolint: interfacer channelEnd exported.ChannelI, ) ([]byte, error) { channel, ok := channelEnd.(channeltypes.Channel) @@ -326,7 +327,7 @@ func PacketCommitmentSignBytes( // SignBytes. func PacketCommitmentDataBytes( cdc codec.BinaryMarshaler, - path commitmenttypes.MerklePath, // nolint: interfacer + path commitmenttypes.MerklePath, //nolint: interfacer commitmentBytes []byte, ) ([]byte, error) { data := &PacketCommitmentData{ @@ -371,7 +372,7 @@ func PacketAcknowledgementSignBytes( // SignBytes. func PacketAcknowledgementDataBytes( cdc codec.BinaryMarshaler, - path commitmenttypes.MerklePath, // nolint: interfacer + path commitmenttypes.MerklePath, //nolint: interfacer acknowledgement []byte, ) ([]byte, error) { data := &PacketAcknowledgementData{ @@ -415,7 +416,7 @@ func PacketReceiptAbsenceSignBytes( // used in constructing SignBytes. func PacketReceiptAbsenceDataBytes( cdc codec.BinaryMarshaler, - path commitmenttypes.MerklePath, // nolint: interfacer + path commitmenttypes.MerklePath, //nolint: interfacer ) ([]byte, error) { data := &PacketReceiptAbsenceData{ Path: []byte(path.String()), @@ -458,7 +459,7 @@ func NextSequenceRecvSignBytes( // SignBytes. func NextSequenceRecvDataBytes( cdc codec.BinaryMarshaler, - path commitmenttypes.MerklePath, // nolint: interfacer + path commitmenttypes.MerklePath, //nolint: interfacer nextSequenceRecv uint64, ) ([]byte, error) { data := &NextSequenceRecvData{ diff --git a/x/ibc/light-clients/06-solomachine/types/proposal_handle.go b/x/ibc/light-clients/06-solomachine/types/proposal_handle.go index b55e612b3c96..f9ccb70c1b1a 100644 --- a/x/ibc/light-clients/06-solomachine/types/proposal_handle.go +++ b/x/ibc/light-clients/06-solomachine/types/proposal_handle.go @@ -18,7 +18,6 @@ func (cs ClientState) CheckProposedHeaderAndUpdateState( ctx sdk.Context, cdc codec.BinaryMarshaler, clientStore sdk.KVStore, header exported.Header, ) (exported.ClientState, exported.ConsensusState, error) { - if !cs.AllowUpdateAfterProposal { return nil, nil, sdkerrors.Wrapf( clienttypes.ErrUpdateClientFailed, diff --git a/x/ibc/light-clients/06-solomachine/types/update_test.go b/x/ibc/light-clients/06-solomachine/types/update_test.go index e49992cbb551..8cb7f32c77df 100644 --- a/x/ibc/light-clients/06-solomachine/types/update_test.go +++ b/x/ibc/light-clients/06-solomachine/types/update_test.go @@ -121,7 +121,6 @@ func (suite *SoloMachineTestSuite) TestCheckHeaderAndUpdateState() { clientState = cs header = h - }, false, }, diff --git a/x/ibc/light-clients/07-tendermint/client/cli/tx.go b/x/ibc/light-clients/07-tendermint/client/cli/tx.go index f8b925e4f0cc..b63879f4f12f 100644 --- a/x/ibc/light-clients/07-tendermint/client/cli/tx.go +++ b/x/ibc/light-clients/07-tendermint/client/cli/tx.go @@ -2,7 +2,7 @@ package cli import ( "fmt" - "io/ioutil" + "os" "strconv" "strings" "time" @@ -54,7 +54,7 @@ func NewCreateClientCmd() *cobra.Command { var header *types.Header if err := cdc.UnmarshalJSON([]byte(args[0]), header); err != nil { // check for file path if JSON input is not provided - contents, err := ioutil.ReadFile(args[0]) + contents, err := os.ReadFile(args[0]) if err != nil { return errors.New("neither JSON input nor path to .json file were provided for consensus header") } @@ -101,7 +101,7 @@ func NewCreateClientCmd() *cobra.Command { // or wrap lists of proto.Message in some other message) } else if err := legacyAmino.UnmarshalJSON([]byte(spc), &specs); err != nil { // check for file path if JSON input not provided - contents, err := ioutil.ReadFile(spc) + contents, err := os.ReadFile(spc) if err != nil { return errors.New("neither JSON input nor path to .json file was provided for proof specs flag") } @@ -180,7 +180,7 @@ func NewUpdateClientCmd() *cobra.Command { var header *types.Header if err := cdc.UnmarshalJSON([]byte(args[1]), header); err != nil { // check for file path if JSON input is not provided - contents, err := ioutil.ReadFile(args[1]) + contents, err := os.ReadFile(args[1]) if err != nil { return errors.New("neither JSON input nor path to .json file were provided") } @@ -230,7 +230,7 @@ func NewSubmitMisbehaviourCmd() *cobra.Command { var m *types.Misbehaviour if err := cdc.UnmarshalJSON([]byte(args[0]), m); err != nil { // check for file path if JSON input is not provided - contents, err := ioutil.ReadFile(args[0]) + contents, err := os.ReadFile(args[0]) if err != nil { return errors.New("neither JSON input nor path to .json file were provided") } @@ -277,5 +277,4 @@ func parseFraction(fraction string) (types.Fraction, error) { Numerator: numerator, Denominator: denominator, }, nil - } diff --git a/x/ibc/light-clients/07-tendermint/types/client_state_test.go b/x/ibc/light-clients/07-tendermint/types/client_state_test.go index 744b4729f6ef..39c41a4b3d2b 100644 --- a/x/ibc/light-clients/07-tendermint/types/client_state_test.go +++ b/x/ibc/light-clients/07-tendermint/types/client_state_test.go @@ -23,9 +23,7 @@ const ( testSequence = 1 ) -var ( - invalidProof = []byte("invalid proof") -) +var invalidProof = []byte("invalid proof") func (suite *TendermintTestSuite) TestValidate() { testCases := []struct { @@ -101,7 +99,6 @@ func (suite *TendermintTestSuite) TestValidate() { } func (suite *TendermintTestSuite) TestInitialize() { - testCases := []struct { name string consensusState exported.ConsensusState diff --git a/x/ibc/light-clients/07-tendermint/types/consensus_state_test.go b/x/ibc/light-clients/07-tendermint/types/consensus_state_test.go index 313815d0c7b7..e4c3845a79e3 100644 --- a/x/ibc/light-clients/07-tendermint/types/consensus_state_test.go +++ b/x/ibc/light-clients/07-tendermint/types/consensus_state_test.go @@ -14,42 +14,52 @@ func (suite *TendermintTestSuite) TestConsensusStateValidateBasic() { consensusState *types.ConsensusState expectPass bool }{ - {"success", + { + "success", &types.ConsensusState{ Timestamp: suite.now, Root: commitmenttypes.NewMerkleRoot([]byte("app_hash")), NextValidatorsHash: suite.valsHash, }, - true}, - {"root is nil", + true, + }, + { + "root is nil", &types.ConsensusState{ Timestamp: suite.now, Root: commitmenttypes.MerkleRoot{}, NextValidatorsHash: suite.valsHash, }, - false}, - {"root is empty", + false, + }, + { + "root is empty", &types.ConsensusState{ Timestamp: suite.now, Root: commitmenttypes.MerkleRoot{}, NextValidatorsHash: suite.valsHash, }, - false}, - {"nextvalshash is invalid", + false, + }, + { + "nextvalshash is invalid", &types.ConsensusState{ Timestamp: suite.now, Root: commitmenttypes.NewMerkleRoot([]byte("app_hash")), NextValidatorsHash: []byte("hi"), }, - false}, + false, + }, - {"timestamp is zero", + { + "timestamp is zero", &types.ConsensusState{ Timestamp: time.Time{}, Root: commitmenttypes.NewMerkleRoot([]byte("app_hash")), NextValidatorsHash: suite.valsHash, }, - false}, + false, + }, } for i, tc := range testCases { diff --git a/x/ibc/light-clients/07-tendermint/types/header_test.go b/x/ibc/light-clients/07-tendermint/types/header_test.go index 97647f861400..221d836f4cc1 100644 --- a/x/ibc/light-clients/07-tendermint/types/header_test.go +++ b/x/ibc/light-clients/07-tendermint/types/header_test.go @@ -21,9 +21,7 @@ func (suite *TendermintTestSuite) TestGetTime() { } func (suite *TendermintTestSuite) TestHeaderValidateBasic() { - var ( - header *types.Header - ) + var header *types.Header testCases := []struct { name string malleate func() diff --git a/x/ibc/light-clients/07-tendermint/types/misbehaviour_handle.go b/x/ibc/light-clients/07-tendermint/types/misbehaviour_handle.go index 4c55552d3051..b65ad1ad7a4a 100644 --- a/x/ibc/light-clients/07-tendermint/types/misbehaviour_handle.go +++ b/x/ibc/light-clients/07-tendermint/types/misbehaviour_handle.go @@ -76,7 +76,6 @@ func (cs ClientState) CheckMisbehaviourAndUpdateState( func checkMisbehaviourHeader( clientState *ClientState, consState *ConsensusState, header *Header, currentTimestamp time.Time, ) error { - tmTrustedValset, err := tmtypes.ValidatorSetFromProto(header.TrustedValidators) if err != nil { return sdkerrors.Wrap(err, "trusted validator set is not tendermint validator set type") diff --git a/x/ibc/light-clients/07-tendermint/types/proposal_handle.go b/x/ibc/light-clients/07-tendermint/types/proposal_handle.go index 4cd3eb376cbd..ebff5e45ea49 100644 --- a/x/ibc/light-clients/07-tendermint/types/proposal_handle.go +++ b/x/ibc/light-clients/07-tendermint/types/proposal_handle.go @@ -14,8 +14,9 @@ import ( // CheckProposedHeaderAndUpdateState will try to update the client with the new header if and // only if the proposal passes and one of the following two conditions is satisfied: -// 1) AllowUpdateAfterExpiry=true and Expire(ctx.BlockTime) = true -// 2) AllowUpdateAfterMisbehaviour and IsFrozen() = true +// 1. AllowUpdateAfterExpiry=true and Expire(ctx.BlockTime) = true +// 2. AllowUpdateAfterMisbehaviour and IsFrozen() = true +// // In case 2) before trying to update the client, the client will be unfrozen by resetting // the FrozenHeight to the zero Height. If AllowUpdateAfterMisbehaviour is set to true, // expired clients will also be updated even if AllowUpdateAfterExpiry is set to false. @@ -66,7 +67,6 @@ func (cs ClientState) CheckProposedHeaderAndUpdateState( default: return nil, nil, sdkerrors.Wrap(clienttypes.ErrUpdateClientFailed, "client cannot be updated with proposal") } - } // unexpireClient checks if the proposed header is sufficient to update an expired client. @@ -74,7 +74,6 @@ func (cs ClientState) CheckProposedHeaderAndUpdateState( func (cs ClientState) unexpireClient( ctx sdk.Context, clientStore sdk.KVStore, consensusState *ConsensusState, header *Header, currentTimestamp time.Time, ) (exported.ClientState, exported.ConsensusState, error) { - // the client is expired and either AllowUpdateAfterMisbehaviour or AllowUpdateAfterExpiry // is set to true so light validation of the header is executed if err := cs.checkProposedHeader(consensusState, header, currentTimestamp); err != nil { diff --git a/x/ibc/light-clients/07-tendermint/types/proposal_handle_test.go b/x/ibc/light-clients/07-tendermint/types/proposal_handle_test.go index 6863ad1d1c80..83955d338613 100644 --- a/x/ibc/light-clients/07-tendermint/types/proposal_handle_test.go +++ b/x/ibc/light-clients/07-tendermint/types/proposal_handle_test.go @@ -7,9 +7,7 @@ import ( ibctesting "github.com/cosmos/cosmos-sdk/x/ibc/testing" ) -var ( - frozenHeight = clienttypes.NewHeight(0, 1) -) +var frozenHeight = clienttypes.NewHeight(0, 1) // sanity checks func (suite *TendermintTestSuite) TestCheckProposedHeaderAndUpdateStateBasic() { @@ -197,7 +195,6 @@ func (suite *TendermintTestSuite) TestCheckProposedHeaderAndUpdateState() { // a client are each tested to ensure that unexpiry headers cannot update // a client when a unfreezing header is required. suite.Run(tc.name, func() { - // start by testing unexpiring the client suite.SetupTest() // reset @@ -296,7 +293,6 @@ func (suite *TendermintTestSuite) TestCheckProposedHeader() { suite.Require().True(found) clientState.LatestHeight = header.GetHeight().(clienttypes.Height) suite.chainA.App.IBCKeeper.ClientKeeper.SetClientConsensusState(suite.chainA.GetContext(), clientA, clientState.GetLatestHeight(), consensusState) - }, false, }, { diff --git a/x/ibc/light-clients/07-tendermint/types/upgrade.go b/x/ibc/light-clients/07-tendermint/types/upgrade.go index 397e9cfd8374..214eddccdf0a 100644 --- a/x/ibc/light-clients/07-tendermint/types/upgrade.go +++ b/x/ibc/light-clients/07-tendermint/types/upgrade.go @@ -19,10 +19,10 @@ import ( // - the upgradedClient is not a Tendermint ClientState // - the lastest height of the client state does not have the same revision number or has a greater // height than the committed client. -// - the height of upgraded client is not greater than that of current client -// - the latest height of the new client does not match or is greater than the height in committed client -// - any Tendermint chain specified parameter in upgraded client such as ChainID, UnbondingPeriod, -// and ProofSpecs do not match parameters set by committed client +// - the height of upgraded client is not greater than that of current client +// - the latest height of the new client does not match or is greater than the height in committed client +// - any Tendermint chain specified parameter in upgraded client such as ChainID, UnbondingPeriod, +// and ProofSpecs do not match parameters set by committed client func (cs ClientState) VerifyUpgradeAndUpdateState( ctx sdk.Context, cdc codec.BinaryMarshaler, clientStore sdk.KVStore, upgradedClient exported.ClientState, upgradedConsState exported.ConsensusState, diff --git a/x/ibc/light-clients/07-tendermint/types/upgrade_test.go b/x/ibc/light-clients/07-tendermint/types/upgrade_test.go index 7be3a4943f33..2de2bbc4d4a0 100644 --- a/x/ibc/light-clients/07-tendermint/types/upgrade_test.go +++ b/x/ibc/light-clients/07-tendermint/types/upgrade_test.go @@ -25,7 +25,6 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { { name: "successful upgrade", setup: func() { - upgradedClient = types.NewClientState("newChainId", types.DefaultTrustLevel, trustingPeriod, ubdPeriod+trustingPeriod, maxClockDrift, newClientHeight, commitmenttypes.GetSDKSpecs(), upgradePath, false, false) upgradedConsState = &types.ConsensusState{ NextValidatorsHash: []byte("nextValsHash"), @@ -86,7 +85,6 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { { name: "unsuccessful upgrade: upgrade height revision height is more than the current client revision height", setup: func() { - upgradedClient = types.NewClientState("newChainId", types.DefaultTrustLevel, trustingPeriod, ubdPeriod+trustingPeriod, maxClockDrift, newClientHeight, commitmenttypes.GetSDKSpecs(), upgradePath, false, false) upgradedConsState = &types.ConsensusState{ NextValidatorsHash: []byte("nextValsHash"), @@ -116,7 +114,6 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { { name: "unsuccessful upgrade: chain-specified parameters do not match committed client", setup: func() { - upgradedClient = types.NewClientState("newChainId", types.DefaultTrustLevel, trustingPeriod, ubdPeriod+trustingPeriod, maxClockDrift, newClientHeight, commitmenttypes.GetSDKSpecs(), upgradePath, false, false) upgradedConsState = &types.ConsensusState{ NextValidatorsHash: []byte("nextValsHash"), @@ -147,7 +144,6 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { { name: "unsuccessful upgrade: client-specified parameters do not match previous client", setup: func() { - upgradedClient = types.NewClientState("newChainId", types.DefaultTrustLevel, trustingPeriod, ubdPeriod+trustingPeriod, maxClockDrift, lastHeight, commitmenttypes.GetSDKSpecs(), upgradePath, false, false) upgradedConsState = &types.ConsensusState{ NextValidatorsHash: []byte("nextValsHash"), @@ -175,7 +171,6 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { { name: "unsuccessful upgrade: relayer-submitted consensus state does not match counterparty-committed consensus state", setup: func() { - upgradedClient = types.NewClientState("newChainId", types.DefaultTrustLevel, trustingPeriod, ubdPeriod+trustingPeriod, maxClockDrift, newClientHeight, commitmenttypes.GetSDKSpecs(), upgradePath, false, false) upgradedConsState = &types.ConsensusState{ NextValidatorsHash: []byte("nextValsHash"), @@ -291,7 +286,6 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { { name: "unsuccessful upgrade: upgrade path is empty", setup: func() { - upgradedClient = types.NewClientState("newChainId", types.DefaultTrustLevel, trustingPeriod, ubdPeriod+trustingPeriod, maxClockDrift, newClientHeight, commitmenttypes.GetSDKSpecs(), upgradePath, false, false) upgradedConsState = &types.ConsensusState{ NextValidatorsHash: []byte("nextValsHash"), @@ -325,7 +319,6 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { { name: "unsuccessful upgrade: upgraded height is not greater than current height", setup: func() { - upgradedClient = types.NewClientState("newChainId", types.DefaultTrustLevel, trustingPeriod, ubdPeriod+trustingPeriod, maxClockDrift, height, commitmenttypes.GetSDKSpecs(), upgradePath, false, false) upgradedConsState = &types.ConsensusState{ NextValidatorsHash: []byte("nextValsHash"), @@ -354,7 +347,6 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { { name: "unsuccessful upgrade: consensus state for upgrade height cannot be found", setup: func() { - upgradedClient = types.NewClientState("newChainId", types.DefaultTrustLevel, trustingPeriod, ubdPeriod+trustingPeriod, maxClockDrift, newClientHeight, commitmenttypes.GetSDKSpecs(), upgradePath, false, false) upgradedConsState = &types.ConsensusState{ NextValidatorsHash: []byte("nextValsHash"), @@ -383,7 +375,6 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { { name: "unsuccessful upgrade: client is expired", setup: func() { - upgradedClient = types.NewClientState("newChainId", types.DefaultTrustLevel, trustingPeriod, ubdPeriod+trustingPeriod, maxClockDrift, lastHeight, commitmenttypes.GetSDKSpecs(), upgradePath, false, false) upgradedConsState = &types.ConsensusState{ NextValidatorsHash: []byte("nextValsHash"), @@ -412,7 +403,6 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { { name: "unsuccessful upgrade: updated unbonding period is equal to trusting period", setup: func() { - upgradedClient = types.NewClientState("newChainId", types.DefaultTrustLevel, trustingPeriod, trustingPeriod, maxClockDrift, newClientHeight, commitmenttypes.GetSDKSpecs(), upgradePath, false, false) upgradedConsState = &types.ConsensusState{ NextValidatorsHash: []byte("nextValsHash"), @@ -441,7 +431,6 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { { name: "unsuccessful upgrade: final client is not valid", setup: func() { - // new client has smaller unbonding period such that old trusting period is no longer valid upgradedClient = types.NewClientState("newChainId", types.DefaultTrustLevel, trustingPeriod, trustingPeriod, maxClockDrift, newClientHeight, commitmenttypes.GetSDKSpecs(), upgradePath, false, false) upgradedConsState = &types.ConsensusState{ diff --git a/x/ibc/light-clients/09-localhost/types/client_state_test.go b/x/ibc/light-clients/09-localhost/types/client_state_test.go index 13a1367d5c21..752c6161ffd3 100644 --- a/x/ibc/light-clients/09-localhost/types/client_state_test.go +++ b/x/ibc/light-clients/09-localhost/types/client_state_test.go @@ -141,7 +141,6 @@ func (suite *LocalhostTestSuite) TestVerifyClientState() { } }) } - } func (suite *LocalhostTestSuite) TestVerifyClientConsensusState() { @@ -283,7 +282,6 @@ func (suite *LocalhostTestSuite) TestVerifyChannelState() { clientState: types.NewClientState("chainID", clientHeight), malleate: func() { suite.store.Set(host.ChannelKey(testPortID, testChannelID), []byte("channel")) - }, channel: ch1, expPass: false, @@ -295,7 +293,6 @@ func (suite *LocalhostTestSuite) TestVerifyChannelState() { bz, err := suite.cdc.MarshalBinaryBare(&ch2) suite.Require().NoError(err) suite.store.Set(host.ChannelKey(testPortID, testChannelID), bz) - }, channel: ch1, expPass: false, diff --git a/x/ibc/light-clients/09-localhost/types/localhost_test.go b/x/ibc/light-clients/09-localhost/types/localhost_test.go index 8ebaef843b08..48c992ee4d3e 100644 --- a/x/ibc/light-clients/09-localhost/types/localhost_test.go +++ b/x/ibc/light-clients/09-localhost/types/localhost_test.go @@ -17,9 +17,7 @@ const ( height = 4 ) -var ( - clientHeight = clienttypes.NewHeight(0, 10) -) +var clientHeight = clienttypes.NewHeight(0, 10) type LocalhostTestSuite struct { suite.Suite diff --git a/x/ibc/testing/chain.go b/x/ibc/testing/chain.go index b46a404030b1..0294bbe7693c 100644 --- a/x/ibc/testing/chain.go +++ b/x/ibc/testing/chain.go @@ -267,7 +267,6 @@ func (chain *TestChain) NextBlock() { } chain.App.BeginBlock(abci.RequestBeginBlock{Header: chain.CurrentHeader}) - } // sendMsgs delivers a transaction through the application without returning the result. @@ -527,7 +526,6 @@ func (chain *TestChain) ConstructUpdateTMClientHeader(counterparty *TestChain, c header.TrustedValidators = trustedVals return header, nil - } // ExpireClient fast forwards the chain's block time by the provided amount of time which will @@ -614,8 +612,8 @@ func MakeBlockID(hash []byte, partSetSize uint32, partSetHash []byte) tmtypes.Bl // sorting of ValidatorSet. // The sorting is first by .VotingPower (descending), with secondary index of .Address (ascending). func CreateSortedSignerArray(altPrivVal, suitePrivVal tmtypes.PrivValidator, - altVal, suiteVal *tmtypes.Validator) []tmtypes.PrivValidator { - + altVal, suiteVal *tmtypes.Validator, +) []tmtypes.PrivValidator { switch { case altVal.VotingPower > suiteVal.VotingPower: return []tmtypes.PrivValidator{altPrivVal, suitePrivVal} diff --git a/x/ibc/testing/coordinator.go b/x/ibc/testing/coordinator.go index ade28b4df342..4dbe60791bd6 100644 --- a/x/ibc/testing/coordinator.go +++ b/x/ibc/testing/coordinator.go @@ -63,7 +63,6 @@ func (coord *Coordinator) SetupClients( chainA, chainB *TestChain, clientType string, ) (string, string) { - clientA, err := coord.CreateClient(chainA, chainB, clientType) require.NoError(coord.t, err) @@ -80,7 +79,6 @@ func (coord *Coordinator) SetupClientConnections( chainA, chainB *TestChain, clientType string, ) (string, string, *TestConnection, *TestConnection) { - clientA, clientB := coord.SetupClients(chainA, chainB, clientType) connA, connB := coord.CreateConnection(chainA, chainB, clientA, clientB) @@ -147,7 +145,6 @@ func (coord *Coordinator) CreateConnection( chainA, chainB *TestChain, clientA, clientB string, ) (*TestConnection, *TestConnection) { - connA, connB, err := coord.ConnOpenInit(chainA, chainB, clientA, clientB) require.NoError(coord.t, err) @@ -195,7 +192,6 @@ func (coord *Coordinator) CreateChannel( sourcePortID, counterpartyPortID string, order channeltypes.Order, ) (TestChannel, TestChannel) { - channelA, channelB, err := coord.ChanOpenInit(chainA, chainB, connA, connB, sourcePortID, counterpartyPortID, order) require.NoError(coord.t, err) @@ -607,7 +603,6 @@ func (coord *Coordinator) ChanOpenTry( connection *TestConnection, order channeltypes.Order, ) error { - // initialize channel on source if err := source.ChanOpenTry(counterparty, sourceChannel, counterpartyChannel, order, connection.ID); err != nil { return err @@ -627,7 +622,6 @@ func (coord *Coordinator) ChanOpenAck( source, counterparty *TestChain, sourceChannel, counterpartyChannel TestChannel, ) error { - if err := source.ChanOpenAck(counterparty, sourceChannel, counterpartyChannel); err != nil { return err } @@ -646,7 +640,6 @@ func (coord *Coordinator) ChanOpenConfirm( source, counterparty *TestChain, sourceChannel, counterpartyChannel TestChannel, ) error { - if err := source.ChanOpenConfirm(counterparty, sourceChannel, counterpartyChannel); err != nil { return err } @@ -667,7 +660,6 @@ func (coord *Coordinator) ChanCloseInit( source, counterparty *TestChain, channel TestChannel, ) error { - if err := source.ChanCloseInit(counterparty, channel); err != nil { return err } diff --git a/x/mint/client/cli/cli_test.go b/x/mint/client/cli/cli_test.go index 6425f369a9d3..2c14c20da93f 100644 --- a/x/mint/client/cli/cli_test.go +++ b/x/mint/client/cli/cli_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package cli_test diff --git a/x/mint/client/cli/query.go b/x/mint/client/cli/query.go index cce0d7c12bbb..9287209ad86b 100644 --- a/x/mint/client/cli/query.go +++ b/x/mint/client/cli/query.go @@ -46,7 +46,6 @@ func GetCmdQueryParams() *cobra.Command { params := &types.QueryParamsRequest{} res, err := queryClient.Params(context.Background(), params) - if err != nil { return err } @@ -76,7 +75,6 @@ func GetCmdQueryInflation() *cobra.Command { params := &types.QueryInflationRequest{} res, err := queryClient.Inflation(context.Background(), params) - if err != nil { return err } @@ -106,7 +104,6 @@ func GetCmdQueryAnnualProvisions() *cobra.Command { params := &types.QueryAnnualProvisionsRequest{} res, err := queryClient.AnnualProvisions(context.Background(), params) - if err != nil { return err } diff --git a/x/mint/client/rest/grpc_query_test.go b/x/mint/client/rest/grpc_query_test.go index b2024e7d57ae..9a78595245ad 100644 --- a/x/mint/client/rest/grpc_query_test.go +++ b/x/mint/client/rest/grpc_query_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package rest_test diff --git a/x/mint/module.go b/x/mint/module.go index 6cef957040ec..828c3274ca82 100644 --- a/x/mint/module.go +++ b/x/mint/module.go @@ -72,7 +72,6 @@ func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Rout // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the mint module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) - } // GetTxCmd returns no root tx command for the mint module. diff --git a/x/mint/simulation/params_test.go b/x/mint/simulation/params_test.go index 6bc0f624cf37..3334fbd51a97 100644 --- a/x/mint/simulation/params_test.go +++ b/x/mint/simulation/params_test.go @@ -34,5 +34,4 @@ func TestParamChangest(t *testing.T) { require.Equal(t, expected[i].simValue, p.SimValue()(r)) require.Equal(t, expected[i].subspace, p.Subspace()) } - } diff --git a/x/mint/types/codec.go b/x/mint/types/codec.go index b436c10298d5..a7067d90c2c5 100644 --- a/x/mint/types/codec.go +++ b/x/mint/types/codec.go @@ -5,9 +5,7 @@ import ( cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" ) -var ( - amino = codec.NewLegacyAmino() -) +var amino = codec.NewLegacyAmino() func init() { cryptocodec.RegisterCrypto(amino) diff --git a/x/mint/types/minter_test.go b/x/mint/types/minter_test.go index 8760a66f4466..29fc1d1bc62a 100644 --- a/x/mint/types/minter_test.go +++ b/x/mint/types/minter_test.go @@ -25,12 +25,16 @@ func TestNextInflation(t *testing.T) { // 100% bonded, starting at 20% inflation and being reduced // (1 - (1/0.67))*(0.13/8667) - {sdk.OneDec(), sdk.NewDecWithPrec(20, 2), - sdk.OneDec().Sub(sdk.OneDec().Quo(params.GoalBonded)).Mul(params.InflationRateChange).Quo(blocksPerYr)}, + { + sdk.OneDec(), sdk.NewDecWithPrec(20, 2), + sdk.OneDec().Sub(sdk.OneDec().Quo(params.GoalBonded)).Mul(params.InflationRateChange).Quo(blocksPerYr), + }, // 50% bonded, starting at 10% inflation and being increased - {sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(10, 2), - sdk.OneDec().Sub(sdk.NewDecWithPrec(5, 1).Quo(params.GoalBonded)).Mul(params.InflationRateChange).Quo(blocksPerYr)}, + { + sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(10, 2), + sdk.OneDec().Sub(sdk.NewDecWithPrec(5, 1).Quo(params.GoalBonded)).Mul(params.InflationRateChange).Quo(blocksPerYr), + }, // test 7% minimum stop (testing with 100% bonded) {sdk.OneDec(), sdk.NewDecWithPrec(7, 2), sdk.ZeroDec()}, @@ -113,7 +117,6 @@ func BenchmarkNextInflation(b *testing.B) { for n := 0; n < b.N; n++ { minter.NextInflationRate(params, bondedRatio) } - } // Next annual provisions benchmarking @@ -127,5 +130,4 @@ func BenchmarkNextAnnualProvisions(b *testing.B) { for n := 0; n < b.N; n++ { minter.NextAnnualProvisions(params, totalSupply) } - } diff --git a/x/mint/types/params.go b/x/mint/types/params.go index f0f9ef494bb9..2140f946ae23 100644 --- a/x/mint/types/params.go +++ b/x/mint/types/params.go @@ -29,7 +29,6 @@ func ParamKeyTable() paramtypes.KeyTable { func NewParams( mintDenom string, inflationRateChange, inflationMax, inflationMin, goalBonded sdk.Dec, blocksPerYear uint64, ) Params { - return Params{ MintDenom: mintDenom, InflationRateChange: inflationRateChange, @@ -80,7 +79,6 @@ func (p Params) Validate() error { } return nil - } // String implements the Stringer interface. diff --git a/x/params/client/cli/cli_test.go b/x/params/client/cli/cli_test.go index 6254a45eaf39..69e071118b17 100644 --- a/x/params/client/cli/cli_test.go +++ b/x/params/client/cli/cli_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package cli_test diff --git a/x/params/client/utils/utils.go b/x/params/client/utils/utils.go index b4c680fdde24..5db09902bb4c 100644 --- a/x/params/client/utils/utils.go +++ b/x/params/client/utils/utils.go @@ -2,7 +2,7 @@ package utils import ( "encoding/json" - "io/ioutil" + "os" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" @@ -68,7 +68,7 @@ func (pcj ParamChangesJSON) ToParamChanges() []proposal.ParamChange { func ParseParamChangeProposalJSON(cdc *codec.LegacyAmino, proposalFile string) (ParamChangeProposalJSON, error) { proposal := ParamChangeProposalJSON{} - contents, err := ioutil.ReadFile(proposalFile) + contents, err := os.ReadFile(proposalFile) if err != nil { return proposal, err } diff --git a/x/params/simulation/operations.go b/x/params/simulation/operations.go index a5097968ce70..711e7212fab0 100644 --- a/x/params/simulation/operations.go +++ b/x/params/simulation/operations.go @@ -13,7 +13,6 @@ import ( // the total amount of defined parameters changes, all of which have random valid values. func SimulateParamChangeProposalContent(paramChangePool []simulation.ParamChange) simulation.ContentSimulatorFn { return func(r *rand.Rand, _ sdk.Context, _ []simulation.Account) simulation.Content { - lenParamChange := len(paramChangePool) if lenParamChange == 0 { panic("param changes array is empty") diff --git a/x/params/types/subspace_test.go b/x/params/types/subspace_test.go index ed508d00e93c..134bf97a21cd 100644 --- a/x/params/types/subspace_test.go +++ b/x/params/types/subspace_test.go @@ -114,7 +114,7 @@ func (suite *SubspaceTestSuite) TestModified() { func (suite *SubspaceTestSuite) TestUpdate() { suite.Require().Panics(func() { - suite.ss.Update(suite.ctx, []byte("invalid_key"), nil) // nolint:errcheck + suite.ss.Update(suite.ctx, []byte("invalid_key"), nil) //nolint:errcheck }) t := time.Hour * 48 diff --git a/x/simulation/doc.go b/x/simulation/doc.go index 6543bc5c1532..f92a6cac8bab 100644 --- a/x/simulation/doc.go +++ b/x/simulation/doc.go @@ -2,7 +2,7 @@ Package simulation implements a full fledged Cosmos SDK application used for executing simulation test suites. -Simulation App +# Simulation App The SimApp type defines an application used for running extensive simulation testing suites. It contains all core modules, including governance, staking, @@ -30,7 +30,7 @@ still be pseudo-randomly simulated. The simulation test suite also supports testing determinism and import/export functionality. -Randomness +# Randomness Currently, simulation uses a single seed (integer) as a source for a PRNG by which all random operations are executed from. Any call to the PRNG changes all @@ -44,75 +44,74 @@ the simulation suite is expected to support a series of PRNGs that can be used uniquely per module and simulation component so that they will not effect each others state execution outcome. -Usage +# Usage To execute a completely pseudo-random simulation: - $ go test -mod=readonly github.com/cosmos/cosmos-sdk/simapp \ - -run=TestFullAppSimulation \ - -Enabled=true \ - -NumBlocks=100 \ - -BlockSize=200 \ - -Commit=true \ - -Seed=99 \ - -Period=5 \ - -v -timeout 24h + $ go test -mod=readonly github.com/cosmos/cosmos-sdk/simapp \ + -run=TestFullAppSimulation \ + -Enabled=true \ + -NumBlocks=100 \ + -BlockSize=200 \ + -Commit=true \ + -Seed=99 \ + -Period=5 \ + -v -timeout 24h To execute simulation from a genesis file: - $ go test -mod=readonly github.com/cosmos/cosmos-sdk/simapp \ - -run=TestFullAppSimulation \ - -Enabled=true \ - -NumBlocks=100 \ - -BlockSize=200 \ - -Commit=true \ - -Seed=99 \ - -Period=5 \ - -Genesis=/path/to/genesis.json \ - -v -timeout 24h + $ go test -mod=readonly github.com/cosmos/cosmos-sdk/simapp \ + -run=TestFullAppSimulation \ + -Enabled=true \ + -NumBlocks=100 \ + -BlockSize=200 \ + -Commit=true \ + -Seed=99 \ + -Period=5 \ + -Genesis=/path/to/genesis.json \ + -v -timeout 24h To execute simulation from a simulation params file: - $ go test -mod=readonly github.com/cosmos/cosmos-sdk/simapp \ - -run=TestFullAppSimulation \ - -Enabled=true \ - -NumBlocks=100 \ - -BlockSize=200 \ - -Commit=true \ - -Seed=99 \ - -Period=5 \ - -Params=/path/to/params.json \ - -v -timeout 24h + $ go test -mod=readonly github.com/cosmos/cosmos-sdk/simapp \ + -run=TestFullAppSimulation \ + -Enabled=true \ + -NumBlocks=100 \ + -BlockSize=200 \ + -Commit=true \ + -Seed=99 \ + -Period=5 \ + -Params=/path/to/params.json \ + -v -timeout 24h To export the simulation params to a file at a given block height: - $ go test -mod=readonly github.com/cosmos/cosmos-sdk/simapp \ - -run=TestFullAppSimulation \ - -Enabled=true \ - -NumBlocks=100 \ - -BlockSize=200 \ - -Commit=true \ - -Seed=99 \ - -Period=5 \ - -ExportParamsPath=/path/to/params.json \ - -ExportParamsHeight=50 \ - -v -timeout 24h - + $ go test -mod=readonly github.com/cosmos/cosmos-sdk/simapp \ + -run=TestFullAppSimulation \ + -Enabled=true \ + -NumBlocks=100 \ + -BlockSize=200 \ + -Commit=true \ + -Seed=99 \ + -Period=5 \ + -ExportParamsPath=/path/to/params.json \ + -ExportParamsHeight=50 \ + -v -timeout 24h To export the simulation app state (i.e genesis) to a file: - $ go test -mod=readonly github.com/cosmos/cosmos-sdk/simapp \ - -run=TestFullAppSimulation \ - -Enabled=true \ - -NumBlocks=100 \ - -BlockSize=200 \ - -Commit=true \ - -Seed=99 \ - -Period=5 \ - -ExportStatePath=/path/to/genesis.json \ - v -timeout 24h - -Params + $ go test -mod=readonly github.com/cosmos/cosmos-sdk/simapp \ + -run=TestFullAppSimulation \ + -Enabled=true \ + -NumBlocks=100 \ + -BlockSize=200 \ + -Commit=true \ + -Seed=99 \ + -Period=5 \ + -ExportStatePath=/path/to/genesis.json \ + v -timeout 24h + +# Params Params that are provided to simulation from a JSON file are used to used to set both module parameters and simulation parameters. See sim_test.go for the full diff --git a/x/simulation/event_stats.go b/x/simulation/event_stats.go index 0e4289fd243e..675380e8215a 100644 --- a/x/simulation/event_stats.go +++ b/x/simulation/event_stats.go @@ -4,7 +4,7 @@ import ( "encoding/json" "fmt" "io" - "io/ioutil" + "os" ) // EventStats defines an object that keeps a tally of each event that has occurred @@ -48,7 +48,7 @@ func (es EventStats) ExportJSON(path string) { panic(err) } - err = ioutil.WriteFile(path, bz, 0600) + err = os.WriteFile(path, bz, 0o600) if err != nil { panic(err) } diff --git a/x/simulation/log.go b/x/simulation/log.go index b50163b33c33..80632d04b53a 100644 --- a/x/simulation/log.go +++ b/x/simulation/log.go @@ -40,7 +40,6 @@ func (lw *StandardLogWriter) PrintLogs() { for i := 0; i < len(lw.OpEntries); i++ { writeEntry := fmt.Sprintf("%s\n", (lw.OpEntries[i]).MustMarshal()) _, err := f.WriteString(writeEntry) - if err != nil { panic("Failed to write logs to file") } diff --git a/x/simulation/mock_tendermint.go b/x/simulation/mock_tendermint.go index aea7cb2cf7a7..8df71dbcc2f4 100644 --- a/x/simulation/mock_tendermint.go +++ b/x/simulation/mock_tendermint.go @@ -88,7 +88,6 @@ func updateValidators( updates []abci.ValidatorUpdate, event func(route, op, evResult string), ) map[string]mockValidator { - for _, update := range updates { str := fmt.Sprintf("%X", update.PubKey.GetEd25519()) @@ -102,7 +101,6 @@ func updateValidators( } else if _, ok := current[str]; ok { // validator already exists event("end_block", "validator_updates", "updated") - } else { // Set this new validator current[str] = mockValidator{ @@ -121,7 +119,8 @@ func updateValidators( func RandomRequestBeginBlock(r *rand.Rand, params Params, validators mockValidators, pastTimes []time.Time, pastVoteInfos [][]abci.VoteInfo, - event func(route, op, evResult string), header tmproto.Header) abci.RequestBeginBlock { + event func(route, op, evResult string), header tmproto.Header, +) abci.RequestBeginBlock { if len(validators) == 0 { return abci.RequestBeginBlock{ Header: header, diff --git a/x/simulation/params_test.go b/x/simulation/params_test.go index d0b538c26e4d..90eb4f22a0a4 100644 --- a/x/simulation/params_test.go +++ b/x/simulation/params_test.go @@ -43,8 +43,7 @@ func TestNewWeightedProposalContent(t *testing.T) { require.Equal(t, content, pContent.ContentSimulatorFn()(nil, ctx, nil)) } -type testContent struct { -} +type testContent struct{} func (t testContent) GetTitle() string { return "" } func (t testContent) GetDescription() string { return "" } diff --git a/x/simulation/simulate.go b/x/simulation/simulate.go index a60f6b7feaa2..1f13cffb783f 100644 --- a/x/simulation/simulate.go +++ b/x/simulation/simulate.go @@ -250,8 +250,8 @@ type blockSimFn func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, func createBlockSimulator(testingMode bool, tb testing.TB, w io.Writer, params Params, event func(route, op, evResult string), ops WeightedOperations, operationQueue OperationQueue, timeOperationQueue []simulation.FutureOperation, - logWriter LogWriter, config simulation.Config) blockSimFn { - + logWriter LogWriter, config simulation.Config, +) blockSimFn { lastBlockSizeState := 0 // state for [4 * uniform distribution] blocksize := 0 selectOp := ops.getSelectOpFn() @@ -318,8 +318,8 @@ Comment: %s`, func runQueuedOperations(queueOps map[int][]simulation.Operation, height int, tb testing.TB, r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accounts []simulation.Account, logWriter LogWriter, - event func(route, op, evResult string), lean bool, chainID string) (numOpsRan int) { - + event func(route, op, evResult string), lean bool, chainID string, +) (numOpsRan int) { queuedOp, ok := queueOps[height] if !ok { return 0 @@ -352,8 +352,8 @@ func runQueuedTimeOperations(queueOps []simulation.FutureOperation, height int, currentTime time.Time, tb testing.TB, r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accounts []simulation.Account, logWriter LogWriter, event func(route, op, evResult string), - lean bool, chainID string) (numOpsRan int) { - + lean bool, chainID string, +) (numOpsRan int) { numOpsRan = 0 for len(queueOps) > 0 && currentTime.After(queueOps[0].BlockTime) { diff --git a/x/simulation/util.go b/x/simulation/util.go index c600bc2a369a..dff59a355386 100644 --- a/x/simulation/util.go +++ b/x/simulation/util.go @@ -23,9 +23,9 @@ func getTestingMode(tb testing.TB) (testingMode bool, t *testing.T, b *testing.B // getBlockSize returns a block size as determined from the transition matrix. // It targets making average block size the provided parameter. The three // states it moves between are: -// - "over stuffed" blocks with average size of 2 * avgblocksize, -// - normal sized blocks, hitting avgBlocksize on average, -// - and empty blocks, with no txs / only txs scheduled from the past. +// - "over stuffed" blocks with average size of 2 * avgblocksize, +// - normal sized blocks, hitting avgBlocksize on average, +// - and empty blocks, with no txs / only txs scheduled from the past. func getBlockSize(r *rand.Rand, params Params, lastBlockSizeState, avgBlockSize int) (state, blockSize int) { // TODO: Make default blocksize transition matrix actually make the average // blocksize equal to avgBlockSize. diff --git a/x/slashing/client/cli/cli_test.go b/x/slashing/client/cli/cli_test.go index 41fac414c7af..c49af2768a17 100644 --- a/x/slashing/client/cli/cli_test.go +++ b/x/slashing/client/cli/cli_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package cli_test diff --git a/x/slashing/client/cli/query.go b/x/slashing/client/cli/query.go index b6b71a344cd3..07f3b70288c6 100644 --- a/x/slashing/client/cli/query.go +++ b/x/slashing/client/cli/query.go @@ -31,7 +31,6 @@ func GetQueryCmd() *cobra.Command { ) return slashingQueryCmd - } // GetCmdQuerySigningInfo implements the command to query signing info. diff --git a/x/slashing/init_test.go b/x/slashing/init_test.go index 25a38a2d5e53..289ddb05d842 100644 --- a/x/slashing/init_test.go +++ b/x/slashing/init_test.go @@ -4,6 +4,4 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -var ( - InitTokens = sdk.TokensFromConsensusPower(200) -) +var InitTokens = sdk.TokensFromConsensusPower(200) diff --git a/x/slashing/keeper/common_test.go b/x/slashing/keeper/common_test.go index 940d995cacc7..3408c1a33d47 100644 --- a/x/slashing/keeper/common_test.go +++ b/x/slashing/keeper/common_test.go @@ -2,6 +2,4 @@ package keeper_test import sdk "github.com/cosmos/cosmos-sdk/types" -var ( - InitTokens = sdk.TokensFromConsensusPower(200) -) +var InitTokens = sdk.TokensFromConsensusPower(200) diff --git a/x/slashing/keeper/grpc_query_test.go b/x/slashing/keeper/grpc_query_test.go index d923b822c76c..b4401d65da23 100644 --- a/x/slashing/keeper/grpc_query_test.go +++ b/x/slashing/keeper/grpc_query_test.go @@ -91,7 +91,7 @@ func (suite *SlashingTestSuite) TestGRPCSigningInfos() { }) // verify all values are returned without pagination - var infoResp, err = queryClient.SigningInfos(gocontext.Background(), + infoResp, err := queryClient.SigningInfos(gocontext.Background(), &types.QuerySigningInfosRequest{Pagination: nil}) suite.NoError(err) suite.Equal(signingInfos, infoResp.Info) diff --git a/x/slashing/keeper/keeper_test.go b/x/slashing/keeper/keeper_test.go index e083df637a0f..09ac59785bb2 100644 --- a/x/slashing/keeper/keeper_test.go +++ b/x/slashing/keeper/keeper_test.go @@ -175,7 +175,6 @@ func TestHandleAlreadyJailed(t *testing.T) { // Ensure that missed blocks are tracked correctly and that // the start height of the signing info is reset correctly func TestValidatorDippingInAndOut(t *testing.T) { - // initial setup // TestParams set the SignedBlocksWindow to 1000 and MaxMissedBlocksPerWindow to 500 app := simapp.Setup(false) diff --git a/x/slashing/keeper/signing_info.go b/x/slashing/keeper/signing_info.go index 0a4473d60e62..c81ec90ce787 100644 --- a/x/slashing/keeper/signing_info.go +++ b/x/slashing/keeper/signing_info.go @@ -39,8 +39,8 @@ func (k Keeper) SetValidatorSigningInfo(ctx sdk.Context, address sdk.ConsAddress // IterateValidatorSigningInfos iterates over the stored ValidatorSigningInfo func (k Keeper) IterateValidatorSigningInfos(ctx sdk.Context, - handler func(address sdk.ConsAddress, info types.ValidatorSigningInfo) (stop bool)) { - + handler func(address sdk.ConsAddress, info types.ValidatorSigningInfo) (stop bool), +) { store := ctx.KVStore(k.storeKey) iter := sdk.KVStorePrefixIterator(store, types.ValidatorSigningInfoKeyPrefix) defer iter.Close() @@ -71,8 +71,8 @@ func (k Keeper) GetValidatorMissedBlockBitArray(ctx sdk.Context, address sdk.Con // IterateValidatorMissedBlockBitArray iterates over the signed blocks window // and performs a callback function func (k Keeper) IterateValidatorMissedBlockBitArray(ctx sdk.Context, - address sdk.ConsAddress, handler func(index int64, missed bool) (stop bool)) { - + address sdk.ConsAddress, handler func(index int64, missed bool) (stop bool), +) { store := ctx.KVStore(k.storeKey) index := int64(0) // Array may be sparse diff --git a/x/slashing/legacy/v039/types.go b/x/slashing/legacy/v039/types.go index 34eed337173b..1261861e81ad 100644 --- a/x/slashing/legacy/v039/types.go +++ b/x/slashing/legacy/v039/types.go @@ -37,7 +37,6 @@ func NewParams( signedBlocksWindow int64, minSignedPerWindow sdk.Dec, downtimeJailDuration time.Duration, slashFractionDoubleSign, slashFractionDowntime sdk.Dec, ) Params { - return Params{ SignedBlocksWindow: signedBlocksWindow, MinSignedPerWindow: minSignedPerWindow, diff --git a/x/slashing/legacy/v040/migrate.go b/x/slashing/legacy/v040/migrate.go index ba494dcad14a..d8a4c124e2e6 100644 --- a/x/slashing/legacy/v040/migrate.go +++ b/x/slashing/legacy/v040/migrate.go @@ -16,7 +16,7 @@ import ( func Migrate(oldGenState v039slashing.GenesisState) *v040slashing.GenesisState { // Note that the two following `for` loop over a map's keys, so are not // deterministic. - var newSigningInfos = make([]v040slashing.SigningInfo, 0, len(oldGenState.SigningInfos)) + newSigningInfos := make([]v040slashing.SigningInfo, 0, len(oldGenState.SigningInfos)) for address, signingInfo := range oldGenState.SigningInfos { newSigningInfos = append(newSigningInfos, v040slashing.SigningInfo{ Address: address, @@ -30,9 +30,9 @@ func Migrate(oldGenState v039slashing.GenesisState) *v040slashing.GenesisState { }, }) } - var newValidatorMissedBlocks = make([]v040slashing.ValidatorMissedBlocks, 0, len(oldGenState.MissedBlocks)) + newValidatorMissedBlocks := make([]v040slashing.ValidatorMissedBlocks, 0, len(oldGenState.MissedBlocks)) for address, validatorMissedBlocks := range oldGenState.MissedBlocks { - var newMissedBlocks = make([]v040slashing.MissedBlock, len(validatorMissedBlocks)) + newMissedBlocks := make([]v040slashing.MissedBlock, len(validatorMissedBlocks)) for i, missedBlock := range validatorMissedBlocks { newMissedBlocks[i] = v040slashing.MissedBlock{ Index: missedBlock.Index, diff --git a/x/slashing/simulation/decoder_test.go b/x/slashing/simulation/decoder_test.go index e6122f0e0a98..08c7c6914d85 100644 --- a/x/slashing/simulation/decoder_test.go +++ b/x/slashing/simulation/decoder_test.go @@ -16,7 +16,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/slashing/types" ) -// nolint:deadcode,unused,varcheck +//nolint:deadcode,unused,varcheck var ( delPk1 = ed25519.GenPrivKey().PubKey() delAddr1 = sdk.AccAddress(delPk1.Address()) diff --git a/x/slashing/simulation/genesis_test.go b/x/slashing/simulation/genesis_test.go index a386588d8369..92b8a97b4fbf 100644 --- a/x/slashing/simulation/genesis_test.go +++ b/x/slashing/simulation/genesis_test.go @@ -52,7 +52,6 @@ func TestRandomizedGenState(t *testing.T) { require.Equal(t, time.Duration(34800000000000), slashingGenesis.Params.DowntimeJailDuration) require.Len(t, slashingGenesis.MissedBlocks, 0) require.Len(t, slashingGenesis.SigningInfos, 0) - } // TestRandomizedGenState tests abnormal scenarios of applying RandomizedGenState. diff --git a/x/slashing/simulation/operations.go b/x/slashing/simulation/operations.go index 753def5fa5c3..25f7190f73b1 100644 --- a/x/slashing/simulation/operations.go +++ b/x/slashing/simulation/operations.go @@ -26,7 +26,6 @@ func WeightedOperations( appParams simtypes.AppParams, cdc codec.JSONMarshaler, ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper, sk stakingkeeper.Keeper, ) simulation.WeightedOperations { - var weightMsgUnjail int appParams.GetOrGenerate(cdc, OpWeightMsgUnjail, &weightMsgUnjail, nil, func(_ *rand.Rand) { @@ -48,7 +47,6 @@ func SimulateMsgUnjail(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Kee r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - validator, ok := stakingkeeper.RandomValidator(r, sk, ctx) if !ok { return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgUnjail, "validator is not ok"), nil, nil // skip diff --git a/x/slashing/types/genesis.go b/x/slashing/types/genesis.go index ee765c8c37e6..5457ee104b15 100644 --- a/x/slashing/types/genesis.go +++ b/x/slashing/types/genesis.go @@ -11,7 +11,6 @@ import ( func NewGenesisState( params Params, signingInfos []SigningInfo, missedBlocks []ValidatorMissedBlocks, ) *GenesisState { - return &GenesisState{ Params: params, SigningInfos: signingInfos, diff --git a/x/slashing/types/msg.go b/x/slashing/types/msg.go index d86ff5eb7249..64948d8f8d36 100644 --- a/x/slashing/types/msg.go +++ b/x/slashing/types/msg.go @@ -13,6 +13,7 @@ const ( var _ sdk.Msg = &MsgUnjail{} // NewMsgUnjail creates a new MsgUnjail instance +// //nolint:interfacer func NewMsgUnjail(validatorAddr sdk.ValAddress) *MsgUnjail { return &MsgUnjail{ diff --git a/x/slashing/types/params.go b/x/slashing/types/params.go index aa9cd559e7db..ad1d98c37f15 100644 --- a/x/slashing/types/params.go +++ b/x/slashing/types/params.go @@ -39,7 +39,6 @@ func NewParams( signedBlocksWindow int64, minSignedPerWindow sdk.Dec, downtimeJailDuration time.Duration, slashFractionDoubleSign, slashFractionDowntime sdk.Dec, ) Params { - return Params{ SignedBlocksWindow: signedBlocksWindow, MinSignedPerWindow: minSignedPerWindow, diff --git a/x/slashing/types/signing_info.go b/x/slashing/types/signing_info.go index ad359c3a5180..3107fdaf75fd 100644 --- a/x/slashing/types/signing_info.go +++ b/x/slashing/types/signing_info.go @@ -9,12 +9,12 @@ import ( ) // NewValidatorSigningInfo creates a new ValidatorSigningInfo instance +// //nolint:interfacer func NewValidatorSigningInfo( condAddr sdk.ConsAddress, startHeight, indexOffset int64, jailedUntil time.Time, tombstoned bool, missedBlocksCounter int64, ) ValidatorSigningInfo { - return ValidatorSigningInfo{ Address: condAddr.String(), StartHeight: startHeight, diff --git a/x/staking/app_test.go b/x/staking/app_test.go index 207ac03e0cf6..c8817a471209 100644 --- a/x/staking/app_test.go +++ b/x/staking/app_test.go @@ -26,7 +26,6 @@ func checkDelegation( t *testing.T, app *simapp.SimApp, delegatorAddr sdk.AccAddress, validatorAddr sdk.ValAddress, expFound bool, expShares sdk.Dec, ) { - ctxCheck := app.BaseApp.NewContext(true, tmproto.Header{}) delegation, found := app.StakingKeeper.GetDelegation(ctxCheck, delegatorAddr, validatorAddr) if expFound { diff --git a/x/staking/client/cli/cli_test.go b/x/staking/client/cli/cli_test.go index f1ef9edc6b8a..f5a0c2263b43 100644 --- a/x/staking/client/cli/cli_test.go +++ b/x/staking/client/cli/cli_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package cli_test diff --git a/x/staking/client/cli/query.go b/x/staking/client/cli/query.go index 1e8b0a5c539a..cae429bb7807 100644 --- a/x/staking/client/cli/query.go +++ b/x/staking/client/cli/query.go @@ -661,7 +661,6 @@ $ %s query staking historical-info 5 params := &types.QueryHistoricalInfoRequest{Height: height} res, err := queryClient.HistoricalInfo(context.Background(), params) - if err != nil { return err } diff --git a/x/staking/client/cli/tx.go b/x/staking/client/cli/tx.go index 10ceba6a45e0..386440b3173f 100644 --- a/x/staking/client/cli/tx.go +++ b/x/staking/client/cli/tx.go @@ -504,7 +504,6 @@ func PrepareConfigForTxCreateValidator(flagSet *flag.FlagSet, moniker, nodeID, c func BuildCreateValidatorMsg(clientCtx client.Context, config TxCreateValidatorConfig, txBldr tx.Factory, generateOnly bool) (tx.Factory, sdk.Msg, error) { amounstStr := config.Amount amount, err := sdk.ParseCoinNormalized(amounstStr) - if err != nil { return txBldr, nil, err } @@ -530,7 +529,6 @@ func BuildCreateValidatorMsg(clientCtx client.Context, config TxCreateValidatorC maxRateStr := config.CommissionMaxRate maxChangeRateStr := config.CommissionMaxChangeRate commissionRates, err := buildCommissionRates(rateStr, maxRateStr, maxChangeRateStr) - if err != nil { return txBldr, nil, err } diff --git a/x/staking/client/rest/grpc_query_test.go b/x/staking/client/rest/grpc_query_test.go index 42d79745177a..3698d3d3e42e 100644 --- a/x/staking/client/rest/grpc_query_test.go +++ b/x/staking/client/rest/grpc_query_test.go @@ -1,10 +1,11 @@ +//go:build norace // +build norace package rest_test import ( "fmt" - "io/ioutil" + "io" "net/http" "testing" @@ -422,7 +423,7 @@ func (s *IntegrationTestSuite) TestQueryDelegationsResponseCode() { func getRequest(url string) ([]byte, int, error) { res, err := http.Get(url) // nolint:gosec - body, err := ioutil.ReadAll(res.Body) + body, err := io.ReadAll(res.Body) if err != nil { return nil, res.StatusCode, err } diff --git a/x/staking/client/rest/rest_test.go b/x/staking/client/rest/rest_test.go index 43b9afdb6ddf..78a46f82f1f0 100644 --- a/x/staking/client/rest/rest_test.go +++ b/x/staking/client/rest/rest_test.go @@ -1,3 +1,4 @@ +//go:build norace // +build norace package rest_test diff --git a/x/staking/client/testutil/test_helpers.go b/x/staking/client/testutil/test_helpers.go index 1a2a4b84bcbf..8481c0aacb88 100644 --- a/x/staking/client/testutil/test_helpers.go +++ b/x/staking/client/testutil/test_helpers.go @@ -19,8 +19,8 @@ var commonArgs = []string{ // MsgRedelegateExec creates a redelegate message. func MsgRedelegateExec(clientCtx client.Context, from, src, dst, amount fmt.Stringer, - extraArgs ...string) (testutil.BufferWriter, error) { - + extraArgs ...string, +) (testutil.BufferWriter, error) { args := []string{ src.String(), dst.String(), @@ -34,8 +34,8 @@ func MsgRedelegateExec(clientCtx client.Context, from, src, dst, amount fmt.Stri // MsgUnbondExec creates a unbond message. func MsgUnbondExec(clientCtx client.Context, from fmt.Stringer, valAddress, - amount fmt.Stringer, extraArgs ...string) (testutil.BufferWriter, error) { - + amount fmt.Stringer, extraArgs ...string, +) (testutil.BufferWriter, error) { args := []string{ valAddress.String(), amount.String(), diff --git a/x/staking/common_test.go b/x/staking/common_test.go index 0c26e6830d5a..b392bceb61b2 100644 --- a/x/staking/common_test.go +++ b/x/staking/common_test.go @@ -18,7 +18,7 @@ func init() { sdk.PowerReduction = sdk.NewIntFromBigInt(new(big.Int).Exp(big.NewInt(10), big.NewInt(18), nil)) } -// nolint:deadcode,unused,varcheck +//nolint:deadcode,unused,varcheck var ( priv1 = secp256k1.GenPrivKey() addr1 = sdk.AccAddress(priv1.PubKey().Address()) diff --git a/x/staking/handler_test.go b/x/staking/handler_test.go index 4b48f09427c9..dfd08caeacbe 100644 --- a/x/staking/handler_test.go +++ b/x/staking/handler_test.go @@ -328,7 +328,7 @@ func TestIncrementsMsgDelegate(t *testing.T) { tstaking.Ctx = ctx tstaking.Delegate(delegatorAddr, validatorAddr, bondAmount) - //Check that the accounts and the bond account have the appropriate values + validator, found := app.StakingKeeper.GetValidator(ctx, validatorAddr) require.True(t, found) bond, found := app.StakingKeeper.GetDelegation(ctx, delegatorAddr, validatorAddr) @@ -489,7 +489,7 @@ func TestIncrementsMsgUnbond(t *testing.T) { // these are more than we have bonded now errorCases := []sdk.Int{ - //1<<64 - 1, // more than int64 power + //1<<63 + 1, // more than int64 power sdk.TokensFromConsensusPower(1<<63 - 1), sdk.TokensFromConsensusPower(1 << 31), diff --git a/x/staking/keeper/alias_functions.go b/x/staking/keeper/alias_functions.go index 17ae5df2655c..0e81312aa0ce 100644 --- a/x/staking/keeper/alias_functions.go +++ b/x/staking/keeper/alias_functions.go @@ -116,7 +116,8 @@ func (k Keeper) Delegation(ctx sdk.Context, addrDel sdk.AccAddress, addrVal sdk. // iterate through all of the delegations from a delegator func (k Keeper) IterateDelegations(ctx sdk.Context, delAddr sdk.AccAddress, - fn func(index int64, del types.DelegationI) (stop bool)) { + fn func(index int64, del types.DelegationI) (stop bool), +) { store := ctx.KVStore(k.storeKey) delegatorPrefixKey := types.GetDelegationsKey(delAddr) diff --git a/x/staking/keeper/common_test.go b/x/staking/keeper/common_test.go index 7ec4e9677cbc..e6b650658267 100644 --- a/x/staking/keeper/common_test.go +++ b/x/staking/keeper/common_test.go @@ -13,9 +13,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/staking/types" ) -var ( - PKs = simapp.CreateTestPubKeys(500) -) +var PKs = simapp.CreateTestPubKeys(500) func init() { sdk.PowerReduction = sdk.NewIntFromBigInt(new(big.Int).Exp(big.NewInt(10), big.NewInt(18), nil)) diff --git a/x/staking/keeper/delegation.go b/x/staking/keeper/delegation.go index 283b308e767b..2e3031eba7ac 100644 --- a/x/staking/keeper/delegation.go +++ b/x/staking/keeper/delegation.go @@ -12,7 +12,8 @@ import ( // return a specific delegation func (k Keeper) GetDelegation(ctx sdk.Context, - delAddr sdk.AccAddress, valAddr sdk.ValAddress) (delegation types.Delegation, found bool) { + delAddr sdk.AccAddress, valAddr sdk.ValAddress, +) (delegation types.Delegation, found bool) { store := ctx.KVStore(k.storeKey) key := types.GetDelegationKey(delAddr, valAddr) @@ -70,7 +71,8 @@ func (k Keeper) GetValidatorDelegations(ctx sdk.Context, valAddr sdk.ValAddress) // return a given amount of all the delegations from a delegator func (k Keeper) GetDelegatorDelegations(ctx sdk.Context, delegator sdk.AccAddress, - maxRetrieve uint16) (delegations []types.Delegation) { + maxRetrieve uint16, +) (delegations []types.Delegation) { delegations = make([]types.Delegation, maxRetrieve) store := ctx.KVStore(k.storeKey) delegatorPrefixKey := types.GetDelegationsKey(delegator) @@ -114,7 +116,8 @@ func (k Keeper) RemoveDelegation(ctx sdk.Context, delegation types.Delegation) { // return a given amount of all the delegator unbonding-delegations func (k Keeper) GetUnbondingDelegations(ctx sdk.Context, delegator sdk.AccAddress, - maxRetrieve uint16) (unbondingDelegations []types.UnbondingDelegation) { + maxRetrieve uint16, +) (unbondingDelegations []types.UnbondingDelegation) { unbondingDelegations = make([]types.UnbondingDelegation, maxRetrieve) store := ctx.KVStore(k.storeKey) @@ -185,7 +188,8 @@ func (k Keeper) IterateUnbondingDelegations(ctx sdk.Context, fn func(index int64 // HasMaxUnbondingDelegationEntries - check if unbonding delegation has maximum number of entries func (k Keeper) HasMaxUnbondingDelegationEntries(ctx sdk.Context, - delegatorAddr sdk.AccAddress, validatorAddr sdk.ValAddress) bool { + delegatorAddr sdk.AccAddress, validatorAddr sdk.ValAddress, +) bool { ubd, found := k.GetUnbondingDelegation(ctx, delegatorAddr, validatorAddr) if !found { return false @@ -273,7 +277,8 @@ func (k Keeper) SetUBDQueueTimeSlice(ctx sdk.Context, timestamp time.Time, keys // Insert an unbonding delegation to the appropriate timeslice in the unbonding queue func (k Keeper) InsertUBDQueue(ctx sdk.Context, ubd types.UnbondingDelegation, - completionTime time.Time) { + completionTime time.Time, +) { dvPair := types.DVPair{DelegatorAddress: ubd.DelegatorAddress, ValidatorAddress: ubd.ValidatorAddress} timeSlice := k.GetUBDQueueTimeSlice(ctx, completionTime) @@ -316,7 +321,8 @@ func (k Keeper) DequeueAllMatureUBDQueue(ctx sdk.Context, currTime time.Time) (m // return a given amount of all the delegator redelegations func (k Keeper) GetRedelegations(ctx sdk.Context, delegator sdk.AccAddress, - maxRetrieve uint16) (redelegations []types.Redelegation) { + maxRetrieve uint16, +) (redelegations []types.Redelegation) { redelegations = make([]types.Redelegation, maxRetrieve) store := ctx.KVStore(k.storeKey) @@ -337,7 +343,8 @@ func (k Keeper) GetRedelegations(ctx sdk.Context, delegator sdk.AccAddress, // return a redelegation func (k Keeper) GetRedelegation(ctx sdk.Context, - delAddr sdk.AccAddress, valSrcAddr, valDstAddr sdk.ValAddress) (red types.Redelegation, found bool) { + delAddr sdk.AccAddress, valSrcAddr, valDstAddr sdk.ValAddress, +) (red types.Redelegation, found bool) { store := ctx.KVStore(k.storeKey) key := types.GetREDKey(delAddr, valSrcAddr, valDstAddr) @@ -370,7 +377,8 @@ func (k Keeper) GetRedelegationsFromSrcValidator(ctx sdk.Context, valAddr sdk.Va // check if validator is receiving a redelegation func (k Keeper) HasReceivingRedelegation(ctx sdk.Context, - delAddr sdk.AccAddress, valDstAddr sdk.ValAddress) bool { + delAddr sdk.AccAddress, valDstAddr sdk.ValAddress, +) bool { store := ctx.KVStore(k.storeKey) prefix := types.GetREDsByDelToValDstIndexKey(delAddr, valDstAddr) @@ -383,7 +391,8 @@ func (k Keeper) HasReceivingRedelegation(ctx sdk.Context, // HasMaxRedelegationEntries - redelegation has maximum number of entries func (k Keeper) HasMaxRedelegationEntries(ctx sdk.Context, delegatorAddr sdk.AccAddress, validatorSrcAddr, - validatorDstAddr sdk.ValAddress) bool { + validatorDstAddr sdk.ValAddress, +) bool { red, found := k.GetRedelegation(ctx, delegatorAddr, validatorSrcAddr, validatorDstAddr) if !found { return false @@ -421,7 +430,8 @@ func (k Keeper) SetRedelegationEntry(ctx sdk.Context, delegatorAddr sdk.AccAddress, validatorSrcAddr, validatorDstAddr sdk.ValAddress, creationHeight int64, minTime time.Time, balance sdk.Int, - sharesSrc, sharesDst sdk.Dec) types.Redelegation { + sharesSrc, sharesDst sdk.Dec, +) types.Redelegation { red, found := k.GetRedelegation(ctx, delegatorAddr, validatorSrcAddr, validatorDstAddr) if found { red.AddEntry(creationHeight, minTime, balance, sharesDst) @@ -499,12 +509,14 @@ func (k Keeper) SetRedelegationQueueTimeSlice(ctx sdk.Context, timestamp time.Ti // Insert an redelegation delegation to the appropriate timeslice in the redelegation queue func (k Keeper) InsertRedelegationQueue(ctx sdk.Context, red types.Redelegation, - completionTime time.Time) { + completionTime time.Time, +) { timeSlice := k.GetRedelegationQueueTimeSlice(ctx, completionTime) dvvTriplet := types.DVVTriplet{ DelegatorAddress: red.DelegatorAddress, ValidatorSrcAddress: red.ValidatorSrcAddress, - ValidatorDstAddress: red.ValidatorDstAddress} + ValidatorDstAddress: red.ValidatorDstAddress, + } if len(timeSlice) == 0 { k.SetRedelegationQueueTimeSlice(ctx, completionTime, []types.DVVTriplet{dvvTriplet}) diff --git a/x/staking/keeper/delegation_test.go b/x/staking/keeper/delegation_test.go index 77f4cb8e2c81..d97e7e547f7c 100644 --- a/x/staking/keeper/delegation_test.go +++ b/x/staking/keeper/delegation_test.go @@ -21,7 +21,7 @@ func TestDelegation(t *testing.T) { addrDels := simapp.AddTestAddrsIncremental(app, ctx, 3, sdk.NewInt(10000)) valAddrs := simapp.ConvertAddrsToValAddrs(addrDels) - //construct the validators + amts := []sdk.Int{sdk.NewInt(9), sdk.NewInt(8), sdk.NewInt(7)} var validators [3]types.Validator for i, amt := range amts { @@ -303,8 +303,8 @@ func TestUnbondingDelegationsMaxEntries(t *testing.T) { require.True(sdk.IntEq(t, newNotBonded, oldNotBonded.AddRaw(1))) } -//// test undelegating self delegation from a validator pushing it below MinSelfDelegation -//// shift it from the bonded to unbonding state and jailed +// // test undelegating self delegation from a validator pushing it below MinSelfDelegation +// // shift it from the bonded to unbonding state and jailed func TestUndelegateSelfDelegationBelowMinSelfDelegation(t *testing.T) { _, app, ctx := createTestInput() @@ -313,7 +313,7 @@ func TestUndelegateSelfDelegationBelowMinSelfDelegation(t *testing.T) { delTokens := sdk.TokensFromConsensusPower(10) delCoins := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), delTokens)) - //create a validator with a self-delegation + validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) validator.MinSelfDelegation = delTokens @@ -379,7 +379,7 @@ func TestUndelegateFromUnbondingValidator(t *testing.T) { addrDels := simapp.AddTestAddrsIncremental(app, ctx, 2, sdk.NewInt(0)) addrVals := simapp.ConvertAddrsToValAddrs(addrDels) - //create a validator with a self-delegation + validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) @@ -563,7 +563,7 @@ func TestUnbondingAllDelegationFromValidator(t *testing.T) { require.NoError(t, err) app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) - //create a validator with a self-delegation + validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) @@ -819,7 +819,7 @@ func TestRedelegateSelfDelegation(t *testing.T) { require.NoError(t, err) app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) - //create a validator with a self-delegation + validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) @@ -877,7 +877,7 @@ func TestRedelegateFromUnbondingValidator(t *testing.T) { require.NoError(t, err) app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) - //create a validator with a self-delegation + validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) @@ -924,7 +924,7 @@ func TestRedelegateFromUnbondingValidator(t *testing.T) { params := app.StakingKeeper.GetParams(ctx) require.True(t, blockTime.Add(params.UnbondingTime).Equal(validator.UnbondingTime)) - //change the context + header = ctx.BlockHeader() blockHeight2 := int64(20) header.Height = blockHeight2 @@ -961,7 +961,7 @@ func TestRedelegateFromUnbondedValidator(t *testing.T) { require.NoError(t, err) app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) - //create a validator with a self-delegation + validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) diff --git a/x/staking/keeper/grpc_query.go b/x/staking/keeper/grpc_query.go index 49d9b92ce26d..56f46330ea26 100644 --- a/x/staking/keeper/grpc_query.go +++ b/x/staking/keeper/grpc_query.go @@ -53,7 +53,6 @@ func (k Querier) Validators(c context.Context, req *types.QueryValidatorsRequest return true, nil }) - if err != nil { return nil, status.Error(codes.Internal, err.Error()) } @@ -129,7 +128,8 @@ func (k Querier) ValidatorDelegations(c context.Context, req *types.QueryValidat } return &types.QueryValidatorDelegationsResponse{ - DelegationResponses: delResponses, Pagination: pageRes}, nil + DelegationResponses: delResponses, Pagination: pageRes, + }, nil } // ValidatorUnbondingDelegations queries unbonding delegations of a validator @@ -292,7 +292,6 @@ func (k Querier) DelegatorDelegations(c context.Context, req *types.QueryDelegat } return &types.QueryDelegatorDelegationsResponse{DelegationResponses: delegationResps, Pagination: pageRes}, nil - } // DelegatorValidator queries validator info for given delegator validator pair @@ -359,7 +358,8 @@ func (k Querier) DelegatorUnbondingDelegations(c context.Context, req *types.Que } return &types.QueryDelegatorUnbondingDelegationsResponse{ - UnbondingResponses: unbondingDelegations, Pagination: pageRes}, nil + UnbondingResponses: unbondingDelegations, Pagination: pageRes, + }, nil } // HistoricalInfo queries the historical info for given height @@ -442,7 +442,6 @@ func (k Querier) DelegatorValidators(c context.Context, req *types.QueryDelegato validators = append(validators, validator) return nil }) - if err != nil { return nil, status.Error(codes.Internal, err.Error()) } @@ -474,7 +473,6 @@ func (k Querier) Params(c context.Context, _ *types.QueryParamsRequest) (*types. } func queryRedelegation(ctx sdk.Context, k Querier, req *types.QueryRedelegationsRequest) (redels types.Redelegations, err error) { - delAddr, err := sdk.AccAddressFromBech32(req.DelegatorAddr) if err != nil { return nil, err diff --git a/x/staking/keeper/grpc_query_test.go b/x/staking/keeper/grpc_query_test.go index acf6f9cb5bfb..9f7682929805 100644 --- a/x/staking/keeper/grpc_query_test.go +++ b/x/staking/keeper/grpc_query_test.go @@ -35,7 +35,8 @@ func (suite *KeeperTestSuite) TestGRPCQueryValidators() { len(vals), false, }, - {"empty status returns all the validators", + { + "empty status returns all the validators", func() { req = &types.QueryValidatorsRequest{Status: ""} }, @@ -52,10 +53,13 @@ func (suite *KeeperTestSuite) TestGRPCQueryValidators() { 0, false, }, - {"valid request", + { + "valid request", func() { - req = &types.QueryValidatorsRequest{Status: types.Bonded.String(), - Pagination: &query.PageRequest{Limit: 1, CountTotal: true}} + req = &types.QueryValidatorsRequest{ + Status: types.Bonded.String(), + Pagination: &query.PageRequest{Limit: 1, CountTotal: true}, + } }, true, 1, @@ -101,7 +105,8 @@ func (suite *KeeperTestSuite) TestGRPCValidator() { }, false, }, - {"valid request", + { + "valid request", func() { req = &types.QueryValidatorRequest{ValidatorAddr: vals[0].OperatorAddress} }, @@ -141,11 +146,13 @@ func (suite *KeeperTestSuite) TestGRPCQueryDelegatorValidators() { }, false, }, - {"valid request", + { + "valid request", func() { req = &types.QueryDelegatorValidatorsRequest{ DelegatorAddr: addrs[0].String(), - Pagination: &query.PageRequest{Limit: 1, CountTotal: true}} + Pagination: &query.PageRequest{Limit: 1, CountTotal: true}, + } }, true, }, @@ -185,7 +192,8 @@ func (suite *KeeperTestSuite) TestGRPCQueryDelegatorValidator() { }, false, }, - {"invalid delegator, validator pair", + { + "invalid delegator, validator pair", func() { req = &types.QueryDelegatorValidatorRequest{ DelegatorAddr: addr.String(), @@ -194,7 +202,8 @@ func (suite *KeeperTestSuite) TestGRPCQueryDelegatorValidator() { }, false, }, - {"valid request", + { + "valid request", func() { req = &types.QueryDelegatorValidatorRequest{ DelegatorAddr: addr.String(), @@ -235,13 +244,15 @@ func (suite *KeeperTestSuite) TestGRPCQueryDelegation() { malleate func() expPass bool }{ - {"empty request", + { + "empty request", func() { req = &types.QueryDelegationRequest{} }, false, }, - {"invalid validator, delegator pair", + { + "invalid validator, delegator pair", func() { req = &types.QueryDelegationRequest{ DelegatorAddr: addrAcc1.String(), @@ -250,7 +261,8 @@ func (suite *KeeperTestSuite) TestGRPCQueryDelegation() { }, false, }, - {"valid request", + { + "valid request", func() { req = &types.QueryDelegationRequest{DelegatorAddr: addrAcc.String(), ValidatorAddr: addrVal} }, @@ -289,21 +301,27 @@ func (suite *KeeperTestSuite) TestGRPCQueryDelegatorDelegations() { malleate func() expPass bool }{ - {"empty request", + { + "empty request", func() { req = &types.QueryDelegatorDelegationsRequest{} }, false, - }, {"invalid request", + }, + { + "invalid request", func() { req = &types.QueryDelegatorDelegationsRequest{DelegatorAddr: addrs[4].String()} }, false, }, - {"valid request", + { + "valid request", func() { - req = &types.QueryDelegatorDelegationsRequest{DelegatorAddr: addrAcc.String(), - Pagination: &query.PageRequest{Limit: 1, CountTotal: true}} + req = &types.QueryDelegatorDelegationsRequest{ + DelegatorAddr: addrAcc.String(), + Pagination: &query.PageRequest{Limit: 1, CountTotal: true}, + } }, true, }, @@ -344,24 +362,29 @@ func (suite *KeeperTestSuite) TestGRPCQueryValidatorDelegations() { expPass bool expErr bool }{ - {"empty request", + { + "empty request", func() { req = &types.QueryValidatorDelegationsRequest{} }, false, true, }, - {"invalid validator delegator pair", + { + "invalid validator delegator pair", func() { req = &types.QueryValidatorDelegationsRequest{ValidatorAddr: addrVal2.String()} }, false, false, }, - {"valid request", + { + "valid request", func() { - req = &types.QueryValidatorDelegationsRequest{ValidatorAddr: addrVal1, - Pagination: &query.PageRequest{Limit: 1, CountTotal: true}} + req = &types.QueryValidatorDelegationsRequest{ + ValidatorAddr: addrVal1, + Pagination: &query.PageRequest{Limit: 1, CountTotal: true}, + } }, true, false, @@ -409,22 +432,26 @@ func (suite *KeeperTestSuite) TestGRPCQueryUnbondingDelegation() { malleate func() expPass bool }{ - {"empty request", + { + "empty request", func() { req = &types.QueryUnbondingDelegationRequest{} }, false, }, - {"invalid request", + { + "invalid request", func() { req = &types.QueryUnbondingDelegationRequest{} }, false, }, - {"valid request", + { + "valid request", func() { req = &types.QueryUnbondingDelegationRequest{ - DelegatorAddr: addrAcc2.String(), ValidatorAddr: addrVal2} + DelegatorAddr: addrAcc2.String(), ValidatorAddr: addrVal2, + } }, true, }, @@ -469,24 +496,29 @@ func (suite *KeeperTestSuite) TestGRPCQueryDelegatorUnbondingDelegations() { expPass bool expErr bool }{ - {"empty request", + { + "empty request", func() { req = &types.QueryDelegatorUnbondingDelegationsRequest{} }, false, true, }, - {"invalid request", + { + "invalid request", func() { req = &types.QueryDelegatorUnbondingDelegationsRequest{DelegatorAddr: addrAcc1.String()} }, false, false, }, - {"valid request", + { + "valid request", func() { - req = &types.QueryDelegatorUnbondingDelegationsRequest{DelegatorAddr: addrAcc.String(), - Pagination: &query.PageRequest{Limit: 1, CountTotal: true}} + req = &types.QueryDelegatorUnbondingDelegationsRequest{ + DelegatorAddr: addrAcc.String(), + Pagination: &query.PageRequest{Limit: 1, CountTotal: true}, + } }, true, false, @@ -544,25 +576,29 @@ func (suite *KeeperTestSuite) TestGRPCQueryHistoricalInfo() { malleate func() expPass bool }{ - {"empty request", + { + "empty request", func() { req = &types.QueryHistoricalInfoRequest{} }, false, }, - {"invalid request with negative height", + { + "invalid request with negative height", func() { req = &types.QueryHistoricalInfoRequest{Height: -1} }, false, }, - {"valid request with old height", + { + "valid request with old height", func() { req = &types.QueryHistoricalInfoRequest{Height: 4} }, false, }, - {"valid request with current height", + { + "valid request with current height", func() { req = &types.QueryHistoricalInfoRequest{Height: 5} }, @@ -612,44 +648,54 @@ func (suite *KeeperTestSuite) TestGRPCQueryRedelegation() { expPass bool expErr bool }{ - {"request redelegations for non existent addr", + { + "request redelegations for non existent addr", func() { req = &types.QueryRedelegationsRequest{DelegatorAddr: addrAcc.String()} }, false, false, }, - {"request redelegations with non existent pairs", + { + "request redelegations with non existent pairs", func() { - req = &types.QueryRedelegationsRequest{DelegatorAddr: addrAcc.String(), SrcValidatorAddr: val3.String(), - DstValidatorAddr: val4.String()} + req = &types.QueryRedelegationsRequest{ + DelegatorAddr: addrAcc.String(), SrcValidatorAddr: val3.String(), + DstValidatorAddr: val4.String(), + } }, false, true, }, - {"request redelegations with delegatoraddr, sourceValAddr, destValAddr", + { + "request redelegations with delegatoraddr, sourceValAddr, destValAddr", func() { req = &types.QueryRedelegationsRequest{ DelegatorAddr: addrAcc1.String(), SrcValidatorAddr: val1.OperatorAddress, - DstValidatorAddr: val2.OperatorAddress, Pagination: &query.PageRequest{}} + DstValidatorAddr: val2.OperatorAddress, Pagination: &query.PageRequest{}, + } }, true, false, }, - {"request redelegations with delegatoraddr and sourceValAddr", + { + "request redelegations with delegatoraddr and sourceValAddr", func() { req = &types.QueryRedelegationsRequest{ DelegatorAddr: addrAcc1.String(), SrcValidatorAddr: val1.OperatorAddress, - Pagination: &query.PageRequest{}} + Pagination: &query.PageRequest{}, + } }, true, false, }, - {"query redelegations with sourceValAddr only", + { + "query redelegations with sourceValAddr only", func() { req = &types.QueryRedelegationsRequest{ SrcValidatorAddr: val1.GetOperator().String(), - Pagination: &query.PageRequest{Limit: 1, CountTotal: true}} + Pagination: &query.PageRequest{Limit: 1, CountTotal: true}, + } }, true, false, @@ -695,17 +741,20 @@ func (suite *KeeperTestSuite) TestGRPCQueryValidatorUnbondingDelegations() { malleate func() expPass bool }{ - {"empty request", + { + "empty request", func() { req = &types.QueryValidatorUnbondingDelegationsRequest{} }, false, }, - {"valid request", + { + "valid request", func() { req = &types.QueryValidatorUnbondingDelegationsRequest{ ValidatorAddr: val1.GetOperator().String(), - Pagination: &query.PageRequest{Limit: 1, CountTotal: true}} + Pagination: &query.PageRequest{Limit: 1, CountTotal: true}, + } }, true, }, diff --git a/x/staking/keeper/historical_info.go b/x/staking/keeper/historical_info.go index 20c5a8ce85c9..dc978e01de6e 100644 --- a/x/staking/keeper/historical_info.go +++ b/x/staking/keeper/historical_info.go @@ -35,7 +35,9 @@ func (k Keeper) DeleteHistoricalInfo(ctx sdk.Context, height int64) { } // IterateHistoricalInfo provides an interator over all stored HistoricalInfo -// objects. For each HistoricalInfo object, cb will be called. If the cb returns +// +// objects. For each HistoricalInfo object, cb will be called. If the cb returns +// // true, the iterator will close and stop. func (k Keeper) IterateHistoricalInfo(ctx sdk.Context, cb func(types.HistoricalInfo) bool) { store := ctx.KVStore(k.storeKey) diff --git a/x/staking/keeper/keeper_test.go b/x/staking/keeper/keeper_test.go index 2f9819989ff0..b765a1687bb9 100644 --- a/x/staking/keeper/keeper_test.go +++ b/x/staking/keeper/keeper_test.go @@ -50,17 +50,18 @@ func (suite *KeeperTestSuite) SetupTest() { suite.app, suite.ctx, suite.queryClient, suite.addrs, suite.vals = app, ctx, queryClient, addrs, validators } + func TestParams(t *testing.T) { app := simapp.Setup(false) ctx := app.BaseApp.NewContext(false, tmproto.Header{}) expParams := types.DefaultParams() - //check that the empty keeper loads the default + resParams := app.StakingKeeper.GetParams(ctx) require.True(t, expParams.Equal(resParams)) - //modify a params, save, and retrieve + expParams.MaxValidators = 777 app.StakingKeeper.SetParams(ctx, expParams) resParams = app.StakingKeeper.GetParams(ctx) diff --git a/x/staking/keeper/querier.go b/x/staking/keeper/querier.go index dc27ce6bb795..6e3be1526ada 100644 --- a/x/staking/keeper/querier.go +++ b/x/staking/keeper/querier.go @@ -190,7 +190,6 @@ func queryDelegatorDelegations(ctx sdk.Context, req abci.RequestQuery, k Keeper, delegations := k.GetAllDelegatorDelegations(ctx, params.DelegatorAddr) delegationResps, err := DelegationsToDelegationResponses(ctx, k, delegations) - if err != nil { return nil, err } diff --git a/x/staking/keeper/slash.go b/x/staking/keeper/slash.go index a36f6f2e6e20..0130a4dc42f4 100644 --- a/x/staking/keeper/slash.go +++ b/x/staking/keeper/slash.go @@ -12,15 +12,22 @@ import ( // of it, updating unbonding delegations & redelegations appropriately // // CONTRACT: -// slashFactor is non-negative +// +// slashFactor is non-negative +// // CONTRACT: -// Infraction was committed equal to or less than an unbonding period in the past, -// so all unbonding delegations and redelegations from that height are stored +// +// Infraction was committed equal to or less than an unbonding period in the past, +// so all unbonding delegations and redelegations from that height are stored +// // CONTRACT: -// Slash will not slash unbonded validators (for the above reason) +// +// Slash will not slash unbonded validators (for the above reason) +// // CONTRACT: -// Infraction was committed at the current height or at a past height, -// not at a height in the future +// +// Infraction was committed at the current height or at a past height, +// not at a height in the future func (k Keeper) Slash(ctx sdk.Context, consAddr sdk.ConsAddress, infractionHeight int64, power int64, slashFactor sdk.Dec) { logger := k.Logger(ctx) @@ -164,7 +171,8 @@ func (k Keeper) Unjail(ctx sdk.Context, consAddr sdk.ConsAddress) { // (the amount actually slashed may be less if there's // insufficient stake remaining) func (k Keeper) SlashUnbondingDelegation(ctx sdk.Context, unbondingDelegation types.UnbondingDelegation, - infractionHeight int64, slashFactor sdk.Dec) (totalSlashAmount sdk.Int) { + infractionHeight int64, slashFactor sdk.Dec, +) (totalSlashAmount sdk.Int) { now := ctx.BlockHeader().Time totalSlashAmount = sdk.ZeroInt() burnedAmount := sdk.ZeroInt() @@ -217,7 +225,8 @@ func (k Keeper) SlashUnbondingDelegation(ctx sdk.Context, unbondingDelegation ty // insufficient stake remaining) // NOTE this is only slashing for prior infractions from the source validator func (k Keeper) SlashRedelegation(ctx sdk.Context, srcValidator types.Validator, redelegation types.Redelegation, - infractionHeight int64, slashFactor sdk.Dec) (totalSlashAmount sdk.Int) { + infractionHeight int64, slashFactor sdk.Dec, +) (totalSlashAmount sdk.Int) { now := ctx.BlockHeader().Time totalSlashAmount = sdk.ZeroInt() bondedBurnedAmount, notBondedBurnedAmount := sdk.ZeroInt(), sdk.ZeroInt() diff --git a/x/staking/keeper/validator.go b/x/staking/keeper/validator.go index 0cc27098d87c..1ec4e60022ae 100644 --- a/x/staking/keeper/validator.go +++ b/x/staking/keeper/validator.go @@ -96,7 +96,8 @@ func (k Keeper) SetNewValidatorByPowerIndex(ctx sdk.Context, validator types.Val // Update the tokens of an existing validator, update the validators power index key func (k Keeper) AddValidatorTokensAndShares(ctx sdk.Context, validator types.Validator, - tokensToAdd sdk.Int) (valOut types.Validator, addedShares sdk.Dec) { + tokensToAdd sdk.Int, +) (valOut types.Validator, addedShares sdk.Dec) { k.DeleteValidatorByPowerIndex(ctx, validator) validator, addedShares = validator.AddTokensFromDel(tokensToAdd) k.SetValidator(ctx, validator) @@ -107,7 +108,8 @@ func (k Keeper) AddValidatorTokensAndShares(ctx sdk.Context, validator types.Val // Update the tokens of an existing validator, update the validators power index key func (k Keeper) RemoveValidatorTokensAndShares(ctx sdk.Context, validator types.Validator, - sharesToRemove sdk.Dec) (valOut types.Validator, removedTokens sdk.Int) { + sharesToRemove sdk.Dec, +) (valOut types.Validator, removedTokens sdk.Int) { k.DeleteValidatorByPowerIndex(ctx, validator) validator, removedTokens = validator.RemoveDelShares(sharesToRemove) k.SetValidator(ctx, validator) @@ -118,7 +120,8 @@ func (k Keeper) RemoveValidatorTokensAndShares(ctx sdk.Context, validator types. // Update the tokens of an existing validator, update the validators power index key func (k Keeper) RemoveValidatorTokens(ctx sdk.Context, - validator types.Validator, tokensToRemove sdk.Int) types.Validator { + validator types.Validator, tokensToRemove sdk.Int, +) types.Validator { k.DeleteValidatorByPowerIndex(ctx, validator) validator = validator.RemoveTokens(tokensToRemove) k.SetValidator(ctx, validator) @@ -130,7 +133,8 @@ func (k Keeper) RemoveValidatorTokens(ctx sdk.Context, // UpdateValidatorCommission attempts to update a validator's commission rate. // An error is returned if the new commission rate is invalid. func (k Keeper) UpdateValidatorCommission(ctx sdk.Context, - validator types.Validator, newRate sdk.Dec) (types.Commission, error) { + validator types.Validator, newRate sdk.Dec, +) (types.Commission, error) { commission := validator.Commission blockTime := ctx.BlockHeader().Time diff --git a/x/staking/keeper/validator_bench_test.go b/x/staking/keeper/validator_bench_test.go index 54a616c90e50..ea727b72457d 100644 --- a/x/staking/keeper/validator_bench_test.go +++ b/x/staking/keeper/validator_bench_test.go @@ -5,10 +5,10 @@ import "testing" func BenchmarkGetValidator(b *testing.B) { // 900 is the max number we are allowed to use in order to avoid simapp.CreateTestPubKeys // panic: encoding/hex: odd length hex string - var powersNumber = 900 + powersNumber := 900 var totalPower int64 = 0 - var powers = make([]int64, powersNumber) + powers := make([]int64, powersNumber) for i := range powers { powers[i] = int64(i) totalPower += int64(i) diff --git a/x/staking/keeper/validator_test.go b/x/staking/keeper/validator_test.go index 869644070507..ca4b916c664d 100644 --- a/x/staking/keeper/validator_test.go +++ b/x/staking/keeper/validator_test.go @@ -250,7 +250,7 @@ func TestSlashToZeroPowerRemoved(t *testing.T) { func TestValidatorBasics(t *testing.T) { app, ctx, _, addrVals := bootstrapValidatorTest(t, 1000, 20) - //construct the validators + var validators [3]types.Validator powers := []int64{9, 8, 7} for i, power := range powers { @@ -355,7 +355,8 @@ func TestGetValidatorSortingUnmixed(t *testing.T) { sdk.PowerReduction.MulRaw(100), sdk.PowerReduction, sdk.PowerReduction.MulRaw(400), - sdk.PowerReduction.MulRaw(200)} + sdk.PowerReduction.MulRaw(200), + } n := len(amts) var validators [5]types.Validator for i, amt := range amts { @@ -451,7 +452,8 @@ func TestGetValidatorSortingMixed(t *testing.T) { sdk.PowerReduction.MulRaw(100), sdk.PowerReduction, sdk.PowerReduction.MulRaw(400), - sdk.PowerReduction.MulRaw(200)} + sdk.PowerReduction.MulRaw(200), + } var validators [5]types.Validator for i, amt := range amts { diff --git a/x/staking/legacy/v036/types.go b/x/staking/legacy/v036/types.go index 44cf3746d153..240615116b2a 100644 --- a/x/staking/legacy/v036/types.go +++ b/x/staking/legacy/v036/types.go @@ -73,7 +73,6 @@ func NewGenesisState( validators Validators, delegations v034staking.Delegations, ubds []v034staking.UnbondingDelegation, reds []v034staking.Redelegation, exported bool, ) GenesisState { - return GenesisState{ Params: params, LastTotalPower: lastTotalPower, diff --git a/x/staking/legacy/v038/types.go b/x/staking/legacy/v038/types.go index e11157d0e473..e16e2f55aaea 100644 --- a/x/staking/legacy/v038/types.go +++ b/x/staking/legacy/v038/types.go @@ -91,7 +91,6 @@ func NewGenesisState( validators Validators, delegations v034staking.Delegations, ubds []v034staking.UnbondingDelegation, reds []v034staking.Redelegation, exported bool, ) GenesisState { - return GenesisState{ Params: Params{ UnbondingTime: params.UnbondingTime, diff --git a/x/staking/simulation/genesis_test.go b/x/staking/simulation/genesis_test.go index aba85cd2bf5f..b823d70d6c1b 100644 --- a/x/staking/simulation/genesis_test.go +++ b/x/staking/simulation/genesis_test.go @@ -96,7 +96,8 @@ func TestRandomizedGenState1(t *testing.T) { Accounts: simtypes.RandomAccounts(r, 3), InitialStake: 1000, GenState: make(map[string]json.RawMessage), - }, "invalid memory address or nil pointer dereference"}, + }, "invalid memory address or nil pointer dereference", + }, } for _, tt := range tests { diff --git a/x/staking/simulation/operations_test.go b/x/staking/simulation/operations_test.go index fca3b78125a9..42475bf2ca34 100644 --- a/x/staking/simulation/operations_test.go +++ b/x/staking/simulation/operations_test.go @@ -22,7 +22,6 @@ import ( // TestWeightedOperations tests the weights of the operations. func TestWeightedOperations(t *testing.T) { - app, ctx := createTestApp(false) ctx.WithChainID("test-chain") @@ -42,7 +41,8 @@ func TestWeightedOperations(t *testing.T) { weight int opMsgRoute string opMsgName string - }{{simappparams.DefaultWeightMsgCreateValidator, types.ModuleName, types.TypeMsgCreateValidator}, + }{ + {simappparams.DefaultWeightMsgCreateValidator, types.ModuleName, types.TypeMsgCreateValidator}, {simappparams.DefaultWeightMsgEditValidator, types.ModuleName, types.TypeMsgEditValidator}, {simappparams.DefaultWeightMsgDelegate, types.ModuleName, types.TypeMsgDelegate}, {simappparams.DefaultWeightMsgUndelegate, types.ModuleName, types.TypeMsgUndelegate}, @@ -208,7 +208,6 @@ func TestSimulateMsgUndelegate(t *testing.T) { require.Equal(t, types.TypeMsgUndelegate, msg.Type()) require.Equal(t, "cosmosvaloper1tnh2q55v8wyygtt9srz5safamzdengsn9dsd7z", msg.ValidatorAddress) require.Len(t, futureOperations, 0) - } // TestSimulateMsgBeginRedelegate tests the normal scenario of a valid message of type TypeMsgBeginRedelegate. @@ -258,7 +257,6 @@ func TestSimulateMsgBeginRedelegate(t *testing.T) { require.Equal(t, "cosmosvaloper1h6a7shta7jyc72hyznkys683z98z36e0zdk8g9", msg.ValidatorDstAddress) require.Equal(t, "cosmosvaloper17s94pzwhsn4ah25tec27w70n65h5t2scgxzkv2", msg.ValidatorSrcAddress) require.Len(t, futureOperations, 0) - } // returns context and an app with updated mint keeper @@ -323,5 +321,4 @@ func setupValidatorRewards(app *simapp.SimApp, ctx sdk.Context, valAddress sdk.V // setup current revards currentRewards := distrtypes.NewValidatorCurrentRewards(decCoins, 3) app.DistrKeeper.SetValidatorCurrentRewards(ctx, valAddress, currentRewards) - } diff --git a/x/staking/types/delegation.go b/x/staking/types/delegation.go index a83321597297..a299528b7c90 100644 --- a/x/staking/types/delegation.go +++ b/x/staking/types/delegation.go @@ -28,6 +28,7 @@ func (dvv DVVTriplet) String() string { } // NewDelegation creates a new delegation object +// //nolint:interfacer func NewDelegation(delegatorAddr sdk.AccAddress, validatorAddr sdk.ValAddress, shares sdk.Dec) Delegation { return Delegation{ @@ -66,6 +67,7 @@ func (d Delegation) GetDelegatorAddr() sdk.AccAddress { } return delAddr } + func (d Delegation) GetValidatorAddr() sdk.ValAddress { addr, err := sdk.ValAddressFromBech32(d.ValidatorAddress) if err != nil { @@ -113,6 +115,7 @@ func (e UnbondingDelegationEntry) IsMature(currentTime time.Time) bool { } // NewUnbondingDelegation - create a new unbonding delegation object +// //nolint:interfacer func NewUnbondingDelegation( delegatorAddr sdk.AccAddress, validatorAddr sdk.ValAddress, @@ -334,6 +337,7 @@ func (d DelegationResponses) String() (out string) { } // NewRedelegationResponse crates a new RedelegationEntryResponse instance. +// //nolint:interfacer func NewRedelegationResponse( delegatorAddr sdk.AccAddress, validatorSrc, validatorDst sdk.ValAddress, entries []RedelegationEntryResponse, @@ -350,7 +354,8 @@ func NewRedelegationResponse( // NewRedelegationEntryResponse creates a new RedelegationEntryResponse instance. func NewRedelegationEntryResponse( - creationHeight int64, completionTime time.Time, sharesDst sdk.Dec, initialBalance, balance sdk.Int) RedelegationEntryResponse { + creationHeight int64, completionTime time.Time, sharesDst sdk.Dec, initialBalance, balance sdk.Int, +) RedelegationEntryResponse { return RedelegationEntryResponse{ RedelegationEntry: NewRedelegationEntry(creationHeight, completionTime, initialBalance, sharesDst), Balance: balance, diff --git a/x/staking/types/hooks.go b/x/staking/types/hooks.go index 694caca5405a..d21749d34ff7 100644 --- a/x/staking/types/hooks.go +++ b/x/staking/types/hooks.go @@ -16,46 +16,55 @@ func (h MultiStakingHooks) AfterValidatorCreated(ctx sdk.Context, valAddr sdk.Va h[i].AfterValidatorCreated(ctx, valAddr) } } + func (h MultiStakingHooks) BeforeValidatorModified(ctx sdk.Context, valAddr sdk.ValAddress) { for i := range h { h[i].BeforeValidatorModified(ctx, valAddr) } } + func (h MultiStakingHooks) AfterValidatorRemoved(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) { for i := range h { h[i].AfterValidatorRemoved(ctx, consAddr, valAddr) } } + func (h MultiStakingHooks) AfterValidatorBonded(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) { for i := range h { h[i].AfterValidatorBonded(ctx, consAddr, valAddr) } } + func (h MultiStakingHooks) AfterValidatorBeginUnbonding(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) { for i := range h { h[i].AfterValidatorBeginUnbonding(ctx, consAddr, valAddr) } } + func (h MultiStakingHooks) BeforeDelegationCreated(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) { for i := range h { h[i].BeforeDelegationCreated(ctx, delAddr, valAddr) } } + func (h MultiStakingHooks) BeforeDelegationSharesModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) { for i := range h { h[i].BeforeDelegationSharesModified(ctx, delAddr, valAddr) } } + func (h MultiStakingHooks) BeforeDelegationRemoved(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) { for i := range h { h[i].BeforeDelegationRemoved(ctx, delAddr, valAddr) } } + func (h MultiStakingHooks) AfterDelegationModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) { for i := range h { h[i].AfterDelegationModified(ctx, delAddr, valAddr) } } + func (h MultiStakingHooks) BeforeValidatorSlashed(ctx sdk.Context, valAddr sdk.ValAddress, fraction sdk.Dec) { for i := range h { h[i].BeforeValidatorSlashed(ctx, valAddr, fraction) diff --git a/x/staking/types/keys_test.go b/x/staking/types/keys_test.go index 0f63617f26b3..696f38218d39 100644 --- a/x/staking/types/keys_test.go +++ b/x/staking/types/keys_test.go @@ -56,12 +56,18 @@ func TestGetREDByValDstIndexKey(t *testing.T) { valDstAddr sdk.ValAddress wantHex string }{ - {sdk.AccAddress(keysAddr1), sdk.ValAddress(keysAddr1), sdk.ValAddress(keysAddr1), - "3663d771218209d8bd03c482f69dfba57310f0860963d771218209d8bd03c482f69dfba57310f0860963d771218209d8bd03c482f69dfba57310f08609"}, - {sdk.AccAddress(keysAddr1), sdk.ValAddress(keysAddr2), sdk.ValAddress(keysAddr3), - "363ab62f0d93849be495e21e3e9013a517038f45bd63d771218209d8bd03c482f69dfba57310f086095ef3b5f25c54946d4a89fc0d09d2f126614540f2"}, - {sdk.AccAddress(keysAddr2), sdk.ValAddress(keysAddr1), sdk.ValAddress(keysAddr3), - "363ab62f0d93849be495e21e3e9013a517038f45bd5ef3b5f25c54946d4a89fc0d09d2f126614540f263d771218209d8bd03c482f69dfba57310f08609"}, + { + sdk.AccAddress(keysAddr1), sdk.ValAddress(keysAddr1), sdk.ValAddress(keysAddr1), + "3663d771218209d8bd03c482f69dfba57310f0860963d771218209d8bd03c482f69dfba57310f0860963d771218209d8bd03c482f69dfba57310f08609", + }, + { + sdk.AccAddress(keysAddr1), sdk.ValAddress(keysAddr2), sdk.ValAddress(keysAddr3), + "363ab62f0d93849be495e21e3e9013a517038f45bd63d771218209d8bd03c482f69dfba57310f086095ef3b5f25c54946d4a89fc0d09d2f126614540f2", + }, + { + sdk.AccAddress(keysAddr2), sdk.ValAddress(keysAddr1), sdk.ValAddress(keysAddr3), + "363ab62f0d93849be495e21e3e9013a517038f45bd5ef3b5f25c54946d4a89fc0d09d2f126614540f263d771218209d8bd03c482f69dfba57310f08609", + }, } for i, tt := range tests { got := hex.EncodeToString(types.GetREDByValDstIndexKey(tt.delAddr, tt.valSrcAddr, tt.valDstAddr)) @@ -77,12 +83,18 @@ func TestGetREDByValSrcIndexKey(t *testing.T) { valDstAddr sdk.ValAddress wantHex string }{ - {sdk.AccAddress(keysAddr1), sdk.ValAddress(keysAddr1), sdk.ValAddress(keysAddr1), - "3563d771218209d8bd03c482f69dfba57310f0860963d771218209d8bd03c482f69dfba57310f0860963d771218209d8bd03c482f69dfba57310f08609"}, - {sdk.AccAddress(keysAddr1), sdk.ValAddress(keysAddr2), sdk.ValAddress(keysAddr3), - "355ef3b5f25c54946d4a89fc0d09d2f126614540f263d771218209d8bd03c482f69dfba57310f086093ab62f0d93849be495e21e3e9013a517038f45bd"}, - {sdk.AccAddress(keysAddr2), sdk.ValAddress(keysAddr1), sdk.ValAddress(keysAddr3), - "3563d771218209d8bd03c482f69dfba57310f086095ef3b5f25c54946d4a89fc0d09d2f126614540f23ab62f0d93849be495e21e3e9013a517038f45bd"}, + { + sdk.AccAddress(keysAddr1), sdk.ValAddress(keysAddr1), sdk.ValAddress(keysAddr1), + "3563d771218209d8bd03c482f69dfba57310f0860963d771218209d8bd03c482f69dfba57310f0860963d771218209d8bd03c482f69dfba57310f08609", + }, + { + sdk.AccAddress(keysAddr1), sdk.ValAddress(keysAddr2), sdk.ValAddress(keysAddr3), + "355ef3b5f25c54946d4a89fc0d09d2f126614540f263d771218209d8bd03c482f69dfba57310f086093ab62f0d93849be495e21e3e9013a517038f45bd", + }, + { + sdk.AccAddress(keysAddr2), sdk.ValAddress(keysAddr1), sdk.ValAddress(keysAddr3), + "3563d771218209d8bd03c482f69dfba57310f086095ef3b5f25c54946d4a89fc0d09d2f126614540f23ab62f0d93849be495e21e3e9013a517038f45bd", + }, } for i, tt := range tests { got := hex.EncodeToString(types.GetREDByValSrcIndexKey(tt.delAddr, tt.valSrcAddr, tt.valDstAddr)) diff --git a/x/staking/types/msg.go b/x/staking/types/msg.go index 2525aa66468f..f986f7ebedb2 100644 --- a/x/staking/types/msg.go +++ b/x/staking/types/msg.go @@ -147,6 +147,7 @@ func (msg MsgCreateValidator) UnpackInterfaces(unpacker codectypes.AnyUnpacker) } // NewMsgEditValidator creates a new MsgEditValidator instance +// //nolint:interfacer func NewMsgEditValidator(valAddr sdk.ValAddress, description Description, newRate *sdk.Dec, newMinSelfDelegation *sdk.Int) *MsgEditValidator { return &MsgEditValidator{ @@ -202,6 +203,7 @@ func (msg MsgEditValidator) ValidateBasic() error { } // NewMsgDelegate creates a new MsgDelegate instance. +// //nolint:interfacer func NewMsgDelegate(delAddr sdk.AccAddress, valAddr sdk.ValAddress, amount sdk.Coin) *MsgDelegate { return &MsgDelegate{ @@ -250,6 +252,7 @@ func (msg MsgDelegate) ValidateBasic() error { } // NewMsgBeginRedelegate creates a new MsgBeginRedelegate instance. +// //nolint:interfacer func NewMsgBeginRedelegate( delAddr sdk.AccAddress, valSrcAddr, valDstAddr sdk.ValAddress, amount sdk.Coin, @@ -305,6 +308,7 @@ func (msg MsgBeginRedelegate) ValidateBasic() error { } // NewMsgUndelegate creates a new MsgUndelegate instance. +// //nolint:interfacer func NewMsgUndelegate(delAddr sdk.AccAddress, valAddr sdk.ValAddress, amount sdk.Coin) *MsgUndelegate { return &MsgUndelegate{ diff --git a/x/staking/types/validator.go b/x/staking/types/validator.go index b23a7708f094..08b69f48ffd5 100644 --- a/x/staking/types/validator.go +++ b/x/staking/types/validator.go @@ -38,6 +38,7 @@ var ( var _ ValidatorI = Validator{} // NewValidator constructs a new Validator +// //nolint:interfacer func NewValidator(operator sdk.ValAddress, pubKey cryptotypes.PubKey, description Description) (Validator, error) { pkAny, err := codectypes.NewAnyWithValue(pubKey) @@ -406,7 +407,8 @@ func (v Validator) RemoveTokens(tokens sdk.Int) Validator { // RemoveDelShares removes delegator shares from a validator. // NOTE: because token fractions are left in the valiadator, -// the exchange rate of future shares of this validator can increase. +// +// the exchange rate of future shares of this validator can increase. func (v Validator) RemoveDelShares(delShares sdk.Dec) (Validator, sdk.Int) { remainingShares := v.DelegatorShares.Sub(delShares) @@ -443,7 +445,6 @@ func (v *Validator) MinEqual(other *Validator) bool { v.Jailed == other.Jailed && v.MinSelfDelegation.Equal(other.MinSelfDelegation) && v.ConsensusPubkey.Equal(other.ConsensusPubkey) - } // Equal checks if the receiver equals the parameter @@ -475,7 +476,6 @@ func (v Validator) ConsPubKey() (cryptotypes.PubKey, error) { } return pk, nil - } // TmConsPublicKey casts Validator.ConsensusPubkey to tmprotocrypto.PubKey. diff --git a/x/staking/types/validator_test.go b/x/staking/types/validator_test.go index 08204215d595..6ab036e69038 100644 --- a/x/staking/types/validator_test.go +++ b/x/staking/types/validator_test.go @@ -121,7 +121,6 @@ func TestAddTokensValidatorUnbonding(t *testing.T) { } func TestAddTokensValidatorUnbonded(t *testing.T) { - validator := newValidator(t, valAddr1, pk1) validator = validator.UpdateStatus(types.Unbonded) validator, delShares := validator.AddTokensFromDel(sdk.NewInt(10)) diff --git a/x/upgrade/abci_test.go b/x/upgrade/abci_test.go index eb31857961bc..41e136c1d99a 100644 --- a/x/upgrade/abci_test.go +++ b/x/upgrade/abci_test.go @@ -4,7 +4,6 @@ import ( "encoding/json" "errors" "fmt" - "io/ioutil" "os" "testing" "time" @@ -324,9 +323,7 @@ func VerifySet(t *testing.T, skipUpgradeHeights map[int64]bool) { } func TestContains(t *testing.T) { - var ( - skipOne int64 = 11 - ) + var skipOne int64 = 11 s := setupTest(10, map[int64]bool{skipOne: true}) VerifySet(t, map[int64]bool{skipOne: true}) @@ -500,7 +497,7 @@ func TestDumpUpgradeInfoToFile(t *testing.T) { upgradeInfoFilePath, err := s.keeper.GetUpgradeInfoPath() require.Nil(t, err) - data, err := ioutil.ReadFile(upgradeInfoFilePath) + data, err := os.ReadFile(upgradeInfoFilePath) require.NoError(t, err) var upgradeInfo storetypes.UpgradeInfo diff --git a/x/upgrade/client/proposal_handler.go b/x/upgrade/client/proposal_handler.go index a4b64f7ac76a..ba310a1fbeb8 100644 --- a/x/upgrade/client/proposal_handler.go +++ b/x/upgrade/client/proposal_handler.go @@ -6,5 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/upgrade/client/rest" ) -var ProposalHandler = govclient.NewProposalHandler(cli.NewCmdSubmitUpgradeProposal, rest.ProposalRESTHandler) -var CancelProposalHandler = govclient.NewProposalHandler(cli.NewCmdSubmitCancelUpgradeProposal, rest.ProposalCancelRESTHandler) +var ( + ProposalHandler = govclient.NewProposalHandler(cli.NewCmdSubmitUpgradeProposal, rest.ProposalRESTHandler) + CancelProposalHandler = govclient.NewProposalHandler(cli.NewCmdSubmitCancelUpgradeProposal, rest.ProposalCancelRESTHandler) +) diff --git a/x/upgrade/client/rest/tx.go b/x/upgrade/client/rest/tx.go index 51bdb8f9235a..1da528043fb8 100644 --- a/x/upgrade/client/rest/tx.go +++ b/x/upgrade/client/rest/tx.go @@ -19,7 +19,8 @@ import ( func registerTxHandlers( clientCtx client.Context, - r *mux.Router) { + r *mux.Router, +) { r.HandleFunc("/upgrade/plan", newPostPlanHandler(clientCtx)).Methods("POST") r.HandleFunc("/upgrade/cancel", newCancelPlanHandler(clientCtx)).Methods("POST") } diff --git a/x/upgrade/doc.go b/x/upgrade/doc.go index 4ac16c878c16..27a64e6b7516 100644 --- a/x/upgrade/doc.go +++ b/x/upgrade/doc.go @@ -7,7 +7,7 @@ Without software support for upgrades, upgrading a live chain is risky because a their state machines at exactly the same point in the process. If this is not done correctly, there can be state inconsistencies which are hard to recover from. -General Workflow +# General Workflow Let's assume we are running v0.38.0 of our software in our testnet and want to upgrade to v0.40.0. How would this look in practice? First of all, we want to finalize the v0.40.0 release candidate @@ -40,25 +40,27 @@ the rest of the block as normal. Once 2/3 of the voting power has upgraded, the resume the consensus mechanism. If the majority of operators add a custom `do-upgrade` script, this should be a matter of minutes and not even require them to be awake at that time. -Integrating With An App +# Integrating With An App Setup an upgrade Keeper for the app and then define a BeginBlocker that calls the upgrade keeper's BeginBlocker method: - func (app *myApp) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock { - app.upgradeKeeper.BeginBlocker(ctx, req) - return abci.ResponseBeginBlock{} - } + + func (app *myApp) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock { + app.upgradeKeeper.BeginBlocker(ctx, req) + return abci.ResponseBeginBlock{} + } The app must then integrate the upgrade keeper with its governance module as appropriate. The governance module should call ScheduleUpgrade to schedule an upgrade and ClearUpgradePlan to cancel a pending upgrade. -Performing Upgrades +# Performing Upgrades Upgrades can be scheduled at either a predefined block height or time. Once this block height or time is reached, the existing software will cease to process ABCI messages and a new version with code that handles the upgrade must be deployed. All upgrades are coordinated by a unique upgrade name that cannot be reused on the same blockchain. In order for the upgrade module to know that the upgrade has been safely applied, a handler with the name of the upgrade must be installed. Here is an example handler for an upgrade named "my-fancy-upgrade": + app.upgradeKeeper.SetUpgradeHandler("my-fancy-upgrade", func(ctx sdk.Context, plan upgrade.Plan) { // Perform any migrations of the state store needed for this upgrade }) @@ -93,18 +95,20 @@ Here is a sample code to set store migrations with an upgrade: app.SetStoreLoader(upgrade.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades)) } -Halt Behavior +# Halt Behavior Before halting the ABCI state machine in the BeginBlocker method, the upgrade module will log an error that looks like: + UPGRADE "" NEEDED at height : + where Name are Info are the values of the respective fields on the upgrade Plan. To perform the actual halt of the blockchain, the upgrade keeper simply panics which prevents the ABCI state machine from proceeding but doesn't actually exit the process. Exiting the process can cause issues for other nodes that start to lose connectivity with the exiting nodes, thus this module prefers to just halt but not exit. -Automation and Plan.Info +# Automation and Plan.Info We have deprecated calling out to scripts, instead with propose https://github.com/cosmos/cosmos-sdk/tree/v0.40.0-rc5/cosmovisor as a model for a watcher daemon that can launch simd as a subprocess and then read the upgrade log message @@ -113,7 +117,7 @@ specified here https://github.com/cosmos/cosmos-sdk/tree/v0.40.0-rc5/cosmovisor/ This will allow a properly configured cosmsod daemon to auto-download new binaries and auto-upgrade. As noted there, this is intended more for full nodes than validators. -Cancelling Upgrades +# Cancelling Upgrades There are two ways to cancel a planned upgrade - with on-chain governance or off-chain social consensus. For the first one, there is a CancelSoftwareUpgrade proposal type, which can be voted on and will @@ -134,6 +138,7 @@ If over two-thirds run their nodes with this flag on the old binary, it will all the upgrade with a manual override. (This must be well-documented for anyone syncing from genesis later on). Example: + simd start --unsafe-skip-upgrades ... NOTE: Here simd is used as an example binary, replace it with original binary diff --git a/x/upgrade/keeper/keeper.go b/x/upgrade/keeper/keeper.go index 1092885bcb3f..482da7f96fb6 100644 --- a/x/upgrade/keeper/keeper.go +++ b/x/upgrade/keeper/keeper.go @@ -3,7 +3,6 @@ package keeper import ( "encoding/binary" "encoding/json" - "io/ioutil" "os" "path" "path/filepath" @@ -251,7 +250,7 @@ func (k Keeper) DumpUpgradeInfoToDisk(height int64, name string) error { return err } - return ioutil.WriteFile(upgradeInfoFilePath, info, 0600) + return os.WriteFile(upgradeInfoFilePath, info, 0o600) } // GetUpgradeInfoPath returns the upgrade info file path @@ -282,7 +281,7 @@ func (k Keeper) ReadUpgradeInfoFromDisk() (store.UpgradeInfo, error) { return upgradeInfo, err } - data, err := ioutil.ReadFile(upgradeInfoPath) + data, err := os.ReadFile(upgradeInfoPath) if err != nil { // if file does not exist, assume there are no upgrades if os.IsNotExist(err) { diff --git a/x/upgrade/keeper/keeper_test.go b/x/upgrade/keeper/keeper_test.go index 6e91ef3c2372..f0b306b1a96b 100644 --- a/x/upgrade/keeper/keeper_test.go +++ b/x/upgrade/keeper/keeper_test.go @@ -251,9 +251,7 @@ func (s *KeeperTestSuite) TestScheduleUpgrade() { } func (s *KeeperTestSuite) TestSetUpgradedClient() { - var ( - clientState ibcexported.ClientState - ) + var clientState ibcexported.ClientState cases := []struct { name string height int64 @@ -293,7 +291,6 @@ func (s *KeeperTestSuite) TestSetUpgradedClient() { s.Require().Error(err, "invalid case: %s did not return error", tc.name) } } - } func TestKeeperTestSuite(t *testing.T) { diff --git a/x/upgrade/legacy/v038/types.go b/x/upgrade/legacy/v038/types.go index db833477bf23..ea24f59bbc46 100644 --- a/x/upgrade/legacy/v038/types.go +++ b/x/upgrade/legacy/v038/types.go @@ -150,6 +150,7 @@ func (sup CancelSoftwareUpgradeProposal) ProposalRoute() string { return Router func (sup CancelSoftwareUpgradeProposal) ProposalType() string { return ProposalTypeCancelSoftwareUpgrade } + func (sup CancelSoftwareUpgradeProposal) ValidateBasic() error { return v036gov.ValidateAbstract(sup) } diff --git a/x/upgrade/types/plan_test.go b/x/upgrade/types/plan_test.go index 436cb83a94e3..96d951f7fe9f 100644 --- a/x/upgrade/types/plan_test.go +++ b/x/upgrade/types/plan_test.go @@ -147,7 +147,6 @@ func TestPlanValid(t *testing.T) { } }) } - } func TestShouldExecute(t *testing.T) { diff --git a/x/upgrade/types/proposal.go b/x/upgrade/types/proposal.go index a8ea9b629062..570ab3703320 100644 --- a/x/upgrade/types/proposal.go +++ b/x/upgrade/types/proposal.go @@ -17,8 +17,10 @@ func NewSoftwareUpgradeProposal(title, description string, plan Plan) gov.Conten } // Implements Proposal Interface -var _ gov.Content = &SoftwareUpgradeProposal{} -var _ codectypes.UnpackInterfacesMessage = SoftwareUpgradeProposal{} +var ( + _ gov.Content = &SoftwareUpgradeProposal{} + _ codectypes.UnpackInterfacesMessage = SoftwareUpgradeProposal{} +) func init() { gov.RegisterProposalType(ProposalTypeSoftwareUpgrade) @@ -63,6 +65,7 @@ func (csup *CancelSoftwareUpgradeProposal) ProposalRoute() string { return Rout func (csup *CancelSoftwareUpgradeProposal) ProposalType() string { return ProposalTypeCancelSoftwareUpgrade } + func (csup *CancelSoftwareUpgradeProposal) ValidateBasic() error { return gov.ValidateAbstract(csup) } diff --git a/x/upgrade/types/proposal_test.go b/x/upgrade/types/proposal_test.go index d39b89135c3d..8f2aecd74888 100644 --- a/x/upgrade/types/proposal_test.go +++ b/x/upgrade/types/proposal_test.go @@ -73,7 +73,6 @@ func TestContentAccessors(t *testing.T) { assert.Equal(t, tc.typ, unwrap.Prop.ProposalType()) assert.Equal(t, "upgrade", unwrap.Prop.ProposalRoute()) assert.Equal(t, tc.str, unwrap.Prop.String()) - }) } diff --git a/x/upgrade/types/storeloader_test.go b/x/upgrade/types/storeloader_test.go index ec2bfa824d07..4f2e241b0587 100644 --- a/x/upgrade/types/storeloader_test.go +++ b/x/upgrade/types/storeloader_test.go @@ -2,7 +2,6 @@ package types import ( "encoding/json" - "io/ioutil" "os" "path/filepath" "testing" @@ -77,7 +76,7 @@ func TestSetLoader(t *testing.T) { data, err := json.Marshal(upgradeInfo) require.NoError(t, err) - err = ioutil.WriteFile(upgradeInfoFilePath, data, 0644) + err = os.WriteFile(upgradeInfoFilePath, data, 0o644) require.NoError(t, err) // make sure it exists before running everything From 4ed07f6a8e1682a818d992d4473463922d8dff03 Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Tue, 27 Dec 2022 18:25:37 +0700 Subject: [PATCH 28/98] 182 scopelint issues remaining, 660 lint issues remaining --- client/flags/flags.go | 2 +- client/grpc/reflection/reflection_test.go | 2 +- client/grpc/tmservice/service_test.go | 13 ++++----- client/tx/tx_test.go | 1 + crypto/keys/ed25519/ed25519_test.go | 4 +++ crypto/keys/multisig/multisig_test.go | 2 ++ crypto/keys/secp256k1/secp256k1_test.go | 4 +++ crypto/ledger/encode_test.go | 2 +- server/export_test.go | 1 + server/mock/app_test.go | 1 - store/internal/proofs/convert_test.go | 1 + store/internal/proofs/create_test.go | 3 ++ types/coin_test.go | 1 + types/context_test.go | 6 ---- types/errors/abci_test.go | 2 +- types/handler_test.go | 2 +- types/int_test.go | 1 + types/kv/list.go | 2 +- x/auth/ante/ante_test.go | 28 +++++++++++++++++-- x/auth/ante/basic_test.go | 1 + x/auth/keeper/grpc_query_test.go | 2 ++ x/auth/tx/builder_test.go | 4 +-- x/auth/tx/direct_test.go | 1 + x/auth/tx/service_test.go | 26 +++++++++++------ x/auth/types/genesis_test.go | 1 + x/auth/vesting/types/common_test.go | 5 +--- x/bank/client/testutil/cli_helpers.go | 2 +- x/bank/keeper/keeper_test.go | 6 ++-- x/bank/simulation/genesis_test.go | 1 + x/capability/keeper/keeper_test.go | 2 +- x/capability/simulation/genesis_test.go | 1 + x/crisis/types/params.go | 2 +- x/distribution/keeper/grpc_query_test.go | 9 ++++++ x/distribution/simulation/genesis_test.go | 1 + x/evidence/genesis_test.go | 2 ++ x/evidence/handler_test.go | 2 ++ x/evidence/keeper/grpc_query_test.go | 4 +++ x/evidence/types/genesis_test.go | 6 ++++ x/genutil/client/cli/migrate_test.go | 2 ++ x/genutil/client/cli/validate_genesis_test.go | 2 ++ x/genutil/gentx_test.go | 6 ++++ x/gov/client/utils/utils_test.go | 1 + x/gov/keeper/proposal_test.go | 2 ++ x/gov/keeper/querier.go | 12 ++++---- x/gov/simulation/genesis_test.go | 1 + .../transfer/keeper/grpc_query_test.go | 2 ++ .../transfer/simulation/genesis_test.go | 1 + .../core/02-client/keeper/grpc_query_test.go | 1 + x/ibc/core/02-client/keeper/keeper_test.go | 10 +++---- x/ibc/core/02-client/types/msgs.go | 2 +- .../core/03-connection/keeper/keeper_test.go | 5 ++-- x/ibc/core/04-channel/keeper/keeper_test.go | 6 ++-- x/ibc/core/04-channel/types/channel_test.go | 2 +- x/ibc/core/04-channel/types/msgs.go | 10 +++++++ .../06-solomachine/types/codec_test.go | 2 +- x/staking/handler_test.go | 4 +-- x/staking/keeper/delegation_test.go | 8 ------ x/staking/keeper/grpc_query_test.go | 7 +++++ x/staking/keeper/keeper_test.go | 2 -- x/staking/keeper/validator_test.go | 1 - x/staking/simulation/genesis_test.go | 1 + 61 files changed, 169 insertions(+), 77 deletions(-) diff --git a/client/flags/flags.go b/client/flags/flags.go index 7d4de556b69c..e506e2ff7b80 100644 --- a/client/flags/flags.go +++ b/client/flags/flags.go @@ -86,7 +86,7 @@ func AddQueryFlagsToCmd(cmd *cobra.Command) { cmd.Flags().Int64(FlagHeight, 0, "Use a specific height to query state at (this can error if the node is pruning state)") cmd.Flags().StringP(tmcli.OutputFlag, "o", "text", "Output format (text|json)") - cmd.MarkFlagRequired(FlagChainID) + cmd.MarkFlagRequired(FlagChainID) // nolint: errcheck cmd.SetErr(cmd.ErrOrStderr()) cmd.SetOut(cmd.OutOrStdout()) diff --git a/client/grpc/reflection/reflection_test.go b/client/grpc/reflection/reflection_test.go index 5fff8d541f69..330ca53340c1 100644 --- a/client/grpc/reflection/reflection_test.go +++ b/client/grpc/reflection/reflection_test.go @@ -27,7 +27,7 @@ func (s *IntegrationTestSuite) SetupSuite() { s.queryClient = queryClient } -func (s IntegrationTestSuite) TestSimulateService() { +func (s IntegrationTestSuite) TestSimulateService() { //nolint:govet // this is a test and we're ok with copying locks. // We will test the following interface for testing. iface := "cosmos.evidence.v1beta1.Evidence" diff --git a/client/grpc/tmservice/service_test.go b/client/grpc/tmservice/service_test.go index 54256e76a6f6..89aed8d4a4de 100644 --- a/client/grpc/tmservice/service_test.go +++ b/client/grpc/tmservice/service_test.go @@ -47,7 +47,7 @@ func (s *IntegrationTestSuite) TearDownSuite() { s.network.Cleanup() } -func (s IntegrationTestSuite) TestQueryNodeInfo() { +func (s IntegrationTestSuite) TestQueryNodeInfo() { //nolint:govet // this is a test and we're ok with copying locks. val := s.network.Validators[0] res, err := s.queryClient.GetNodeInfo(context.Background(), &tmservice.GetNodeInfoRequest{}) @@ -61,7 +61,7 @@ func (s IntegrationTestSuite) TestQueryNodeInfo() { s.Require().Equal(getInfoRes.ApplicationVersion.AppName, version.NewInfo().AppName) } -func (s IntegrationTestSuite) TestQuerySyncing() { +func (s IntegrationTestSuite) TestQuerySyncing() { //nolint:govet // this is a test and we're ok with copying locks. val := s.network.Validators[0] _, err := s.queryClient.GetSyncing(context.Background(), &tmservice.GetSyncingRequest{}) @@ -73,7 +73,7 @@ func (s IntegrationTestSuite) TestQuerySyncing() { s.Require().NoError(val.ClientCtx.JSONMarshaler.UnmarshalJSON(restRes, &syncingRes)) } -func (s IntegrationTestSuite) TestQueryLatestBlock() { +func (s IntegrationTestSuite) TestQueryLatestBlock() { //nolint:govet // this is a test and we're ok with copying locks. val := s.network.Validators[0] _, err := s.queryClient.GetLatestBlock(context.Background(), &tmservice.GetLatestBlockRequest{}) @@ -85,7 +85,7 @@ func (s IntegrationTestSuite) TestQueryLatestBlock() { s.Require().NoError(val.ClientCtx.JSONMarshaler.UnmarshalJSON(restRes, &blockInfoRes)) } -func (s IntegrationTestSuite) TestQueryBlockByHeight() { +func (s IntegrationTestSuite) TestQueryBlockByHeight() { //nolint:govet // this is a test and we're ok with copying locks. val := s.network.Validators[0] _, err := s.queryClient.GetBlockByHeight(context.Background(), &tmservice.GetBlockByHeightRequest{Height: 1}) s.Require().NoError(err) @@ -96,7 +96,7 @@ func (s IntegrationTestSuite) TestQueryBlockByHeight() { s.Require().NoError(val.ClientCtx.JSONMarshaler.UnmarshalJSON(restRes, &blockInfoRes)) } -func (s IntegrationTestSuite) TestQueryLatestValidatorSet() { +func (s IntegrationTestSuite) TestQueryLatestValidatorSet() { //nolint:govet // this is a test and we're ok with copying locks. val := s.network.Validators[0] // nil pagination @@ -109,7 +109,6 @@ func (s IntegrationTestSuite) TestQueryLatestValidatorSet() { s.Require().Equal(true, ok) s.Require().Equal(content, val.PubKey) - _, err = s.queryClient.GetLatestValidatorSet(context.Background(), &tmservice.GetLatestValidatorSetRequest{Pagination: &qtypes.PageRequest{ Offset: 0, Limit: 10, @@ -131,7 +130,7 @@ func (s IntegrationTestSuite) TestQueryLatestValidatorSet() { s.Require().Equal(validatorSetRes.Validators[0].PubKey, anyPub) } -func (s IntegrationTestSuite) TestQueryValidatorSetByHeight() { +func (s IntegrationTestSuite) TestQueryValidatorSetByHeight() { //nolint:govet // this is a test and we're ok with copying locks. val := s.network.Validators[0] // nil pagination diff --git a/client/tx/tx_test.go b/client/tx/tx_test.go index e4455f3bb142..24da2fc8c7cf 100644 --- a/client/tx/tx_test.go +++ b/client/tx/tx_test.go @@ -240,6 +240,7 @@ func TestSign(t *testing.T) { } var prevSigs []signingtypes.SignatureV2 for _, tc := range testCases { + tc := tc t.Run(tc.name, func(t *testing.T) { err = tx.Sign(tc.txf, tc.from, tc.txb, tc.overwrite) if len(tc.expectedPKs) == 0 { diff --git a/crypto/keys/ed25519/ed25519_test.go b/crypto/keys/ed25519/ed25519_test.go index 59cce4066ac2..d0d195e7875a 100644 --- a/crypto/keys/ed25519/ed25519_test.go +++ b/crypto/keys/ed25519/ed25519_test.go @@ -77,6 +77,7 @@ func TestPubKeyEquals(t *testing.T) { } for _, tc := range testCases { + tc := tc t.Run(tc.msg, func(t *testing.T) { eq := tc.pubKey.Equals(tc.other) require.Equal(t, eq, tc.expectEq) @@ -116,6 +117,7 @@ func TestPrivKeyEquals(t *testing.T) { } for _, tc := range testCases { + tc := tc t.Run(tc.msg, func(t *testing.T) { eq := tc.privKey.Equals(tc.other) require.Equal(t, eq, tc.expectEq) @@ -152,6 +154,7 @@ func TestMarshalAmino(t *testing.T) { } for _, tc := range testCases { + tc := tc t.Run(tc.desc, func(t *testing.T) { // Do a round trip of encoding/decoding binary. bz, err := aminoCdc.MarshalBinaryBare(tc.msg) @@ -218,6 +221,7 @@ func TestMarshalAmino_BackwardsCompatibility(t *testing.T) { } for _, tc := range testCases { + tc := tc t.Run(tc.desc, func(t *testing.T) { // Make sure Amino encoding override is not breaking backwards compatibility. bz1, err := tc.marshalFn(tc.tmKey) diff --git a/crypto/keys/multisig/multisig_test.go b/crypto/keys/multisig/multisig_test.go index 0285ae0ef9ae..6bc59a624d0a 100644 --- a/crypto/keys/multisig/multisig_test.go +++ b/crypto/keys/multisig/multisig_test.go @@ -79,6 +79,7 @@ func TestEquals(t *testing.T) { } for _, tc := range testCases { + tc := tc t.Run(tc.msg, func(t *testing.T) { eq := multisigKey.Equals(tc.other) require.Equal(t, eq, tc.expectEq) @@ -200,6 +201,7 @@ func TestVerifyMultisignature(t *testing.T) { } for _, tc := range testCases { + tc := tc t.Run(tc.msg, func(t *testing.T) { tc.malleate() err := pk.VerifyMultisignature(signBytesFn, sig) diff --git a/crypto/keys/secp256k1/secp256k1_test.go b/crypto/keys/secp256k1/secp256k1_test.go index 13a5daf6ad5b..44b52429a3e7 100644 --- a/crypto/keys/secp256k1/secp256k1_test.go +++ b/crypto/keys/secp256k1/secp256k1_test.go @@ -170,6 +170,7 @@ func TestPubKeyEquals(t *testing.T) { } for _, tc := range testCases { + tc := tc t.Run(tc.msg, func(t *testing.T) { eq := tc.pubKey.Equals(tc.other) require.Equal(t, eq, tc.expectEq) @@ -209,6 +210,7 @@ func TestPrivKeyEquals(t *testing.T) { } for _, tc := range testCases { + tc := tc t.Run(tc.msg, func(t *testing.T) { eq := tc.privKey.Equals(tc.other) require.Equal(t, eq, tc.expectEq) @@ -245,6 +247,7 @@ func TestMarshalAmino(t *testing.T) { } for _, tc := range testCases { + tc := tc t.Run(tc.desc, func(t *testing.T) { // Do a round trip of encoding/decoding binary. bz, err := aminoCdc.MarshalBinaryBare(tc.msg) @@ -311,6 +314,7 @@ func TestMarshalAmino_BackwardsCompatibility(t *testing.T) { } for _, tc := range testCases { + tc := tc t.Run(tc.desc, func(t *testing.T) { // Make sure Amino encoding override is not breaking backwards compatibility. bz1, err := tc.marshalFn(tc.tmKey) diff --git a/crypto/ledger/encode_test.go b/crypto/ledger/encode_test.go index b4268d4425d7..c3c7482a47de 100644 --- a/crypto/ledger/encode_test.go +++ b/crypto/ledger/encode_test.go @@ -28,7 +28,7 @@ func checkAminoJSON(t *testing.T, src interface{}, dst interface{}, isNil bool) require.Nil(t, err, "%+v", err) } -//nolint: govet +// nolint: govet func ExamplePrintRegisteredTypes() { cdc.PrintTypes(os.Stdout) // | Type | Name | Prefix | Length | Notes | diff --git a/server/export_test.go b/server/export_test.go index a04676fbba1c..bf18c59c8f71 100644 --- a/server/export_test.go +++ b/server/export_test.go @@ -94,6 +94,7 @@ func TestExportCmd_Height(t *testing.T) { } for _, tc := range testCases { + tc := tc t.Run(tc.name, func(t *testing.T) { tempDir := t.TempDir() app, ctx, _, cmd := setupApp(t, tempDir) diff --git a/server/mock/app_test.go b/server/mock/app_test.go index 42be0c1d0b76..13da03785c4f 100644 --- a/server/mock/app_test.go +++ b/server/mock/app_test.go @@ -24,7 +24,6 @@ func TestInitApp(t *testing.T) { appState, err := AppGenState(nil, types.GenesisDoc{}, nil) require.NoError(t, err) - req := abci.RequestInitChain{ AppStateBytes: appState, } diff --git a/store/internal/proofs/convert_test.go b/store/internal/proofs/convert_test.go index 19c5a6761507..2603cc405bd3 100644 --- a/store/internal/proofs/convert_test.go +++ b/store/internal/proofs/convert_test.go @@ -68,6 +68,7 @@ func TestBuildPath(t *testing.T) { } for name, tc := range cases { + tc := tc t.Run(name, func(t *testing.T) { path := buildPath(tc.idx, tc.total) if len(path) != len(tc.expected) { diff --git a/store/internal/proofs/create_test.go b/store/internal/proofs/create_test.go index dc95ee3d9697..d90165e2f188 100644 --- a/store/internal/proofs/create_test.go +++ b/store/internal/proofs/create_test.go @@ -22,6 +22,7 @@ func TestCreateMembership(t *testing.T) { } for name, tc := range cases { + tc := tc t.Run(name, func(t *testing.T) { data := BuildMap(tc.size) allkeys := SortedKeys(data) @@ -63,6 +64,7 @@ func TestCreateNonMembership(t *testing.T) { } for name, tc := range cases { + tc := tc t.Run(name, func(t *testing.T) { data := BuildMap(tc.size) allkeys := SortedKeys(data) @@ -104,6 +106,7 @@ func TestInvalidKey(t *testing.T) { {"CreateNonMembershipProof empty key in data", CreateNonMembershipProof, map[string][]byte{"": nil}, []byte(" "), ErrEmptyKeyInData}, } for _, tc := range tests { + tc := tc t.Run(tc.name, func(t *testing.T) { _, err := tc.f(tc.data, tc.key) assert.True(t, errors.Is(err, tc.err)) diff --git a/types/coin_test.go b/types/coin_test.go index bc5095b9fd15..109e2272583a 100644 --- a/types/coin_test.go +++ b/types/coin_test.go @@ -880,6 +880,7 @@ func (s *coinTestSuite) TestNewCoins() { {"panic on invalid coin", []sdk.Coin{invalidCoin, tenatom}, sdk.Coins{}, true}, } for _, tt := range tests { + tt := tt if tt.wantPanic { s.Require().Panics(func() { sdk.NewCoins(tt.coins...) }) continue diff --git a/types/context_test.go b/types/context_test.go index 88b6dab6ba19..51f0847de564 100644 --- a/types/context_test.go +++ b/types/context_test.go @@ -79,12 +79,6 @@ func (s *contextTestSuite) TestLogContext() { ctx.Logger().Error("error") } -type dummy int64 //nolint:unused - -func (d dummy) Clone() interface{} { - return d -} - // Testing saving/loading sdk type values to/from the context func (s *contextTestSuite) TestContextWithCustom() { var ctx types.Context diff --git a/types/errors/abci_test.go b/types/errors/abci_test.go index 0ae93896da07..fbdcc2ce9bc2 100644 --- a/types/errors/abci_test.go +++ b/types/errors/abci_test.go @@ -85,7 +85,7 @@ func (s *abciTestSuite) TestABCInfo() { // debug: true, // wantLog: "cannot read file: EOF", // wantCode: 1, - //}, + // }, "custom error": { err: customErr{}, debug: false, diff --git a/types/handler_test.go b/types/handler_test.go index 398e734f5061..10301a5eba69 100644 --- a/types/handler_test.go +++ b/types/handler_test.go @@ -36,7 +36,7 @@ func (s *handlerTestSuite) TestChainAnteDecorators() { mockAnteDecorator2 := mocks.NewMockAnteDecorator(mockCtrl) // NOTE: we can't check that mockAnteDecorator2 is passed as the last argument because // ChainAnteDecorators wraps the decorators into closures, so each decorator is - // receving a closure. + // receiving a closure. mockAnteDecorator1.EXPECT().AnteHandle(gomock.Eq(ctx), gomock.Eq(tx), true, gomock.Any()).Times(1) // mockAnteDecorator2.EXPECT().AnteHandle(gomock.Eq(ctx), gomock.Eq(tx), true, gomock.Any()).Times(1) diff --git a/types/int_test.go b/types/int_test.go index 06f30b29869c..e6683d8edba7 100644 --- a/types/int_test.go +++ b/types/int_test.go @@ -368,6 +368,7 @@ func (s *intTestSuite) TestIntMod() { } for _, tt := range tests { + tt := tt if tt.wantPanic { s.Require().Panics(func() { sdk.NewInt(tt.x).Mod(sdk.NewInt(tt.y)) }) s.Require().Panics(func() { sdk.NewInt(tt.x).ModRaw(tt.y) }) diff --git a/types/kv/list.go b/types/kv/list.go index 1c59207f1ff3..9e928c84912b 100644 --- a/types/kv/list.go +++ b/types/kv/list.go @@ -113,7 +113,7 @@ func (l *List) remove(e *Element) *Element { } // move moves e to next to at and returns e. -//nolint: unparam +// nolint: unparam func (l *List) move(e, at *Element) *Element { if e == at { return e diff --git a/x/auth/ante/ante_test.go b/x/auth/ante/ante_test.go index 165ac165d590..d4ec1368a260 100644 --- a/x/auth/ante/ante_test.go +++ b/x/auth/ante/ante_test.go @@ -65,6 +65,7 @@ func (suite *AnteTestSuite) TestSimulateGasCost() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.desc), func() { suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder() tc.malleate() @@ -147,6 +148,7 @@ func (suite *AnteTestSuite) TestAnteHandlerSigErrors() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.desc), func() { suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder() tc.malleate() @@ -228,6 +230,8 @@ func (suite *AnteTestSuite) TestAnteHandlerAccountNumbers() { } for _, tc := range testCases { + tc := tc + suite.Run(fmt.Sprintf("Case %s", tc.desc), func() { suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder() tc.malleate() @@ -312,6 +316,8 @@ func (suite *AnteTestSuite) TestAnteHandlerAccountNumbersAtBlockHeightZero() { } for _, tc := range testCases { + tc := tc + suite.Run(fmt.Sprintf("Case %s", tc.desc), func() { suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder() tc.malleate() @@ -424,6 +430,8 @@ func (suite *AnteTestSuite) TestAnteHandlerSequences() { } for _, tc := range testCases { + tc := tc + suite.Run(fmt.Sprintf("Case %s", tc.desc), func() { suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder() tc.malleate() @@ -501,6 +509,8 @@ func (suite *AnteTestSuite) TestAnteHandlerFees() { } for _, tc := range testCases { + tc := tc + suite.Run(fmt.Sprintf("Case %s", tc.desc), func() { suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder() tc.malleate() @@ -572,6 +582,8 @@ func (suite *AnteTestSuite) TestAnteHandlerMemoGas() { } for _, tc := range testCases { + tc := tc + suite.Run(fmt.Sprintf("Case %s", tc.desc), func() { suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder() tc.malleate() @@ -645,6 +657,7 @@ func (suite *AnteTestSuite) TestAnteHandlerMultiSigner() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.desc), func() { suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder() tc.malleate() @@ -771,6 +784,8 @@ func (suite *AnteTestSuite) TestAnteHandlerBadSignBytes() { } for _, tc := range testCases { + tc := tc + suite.Run(fmt.Sprintf("Case %s", tc.desc), func() { suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder() tc.malleate() @@ -879,6 +894,8 @@ func (suite *AnteTestSuite) TestAnteHandlerSetPubKey() { } for _, tc := range testCases { + tc := tc + suite.Run(fmt.Sprintf("Case %s", tc.desc), func() { suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder() tc.malleate() @@ -892,15 +909,14 @@ func generatePubKeysAndSignatures(n int, msg []byte, _ bool) (pubkeys []cryptoty pubkeys = make([]cryptotypes.PubKey, n) signatures = make([][]byte, n) for i := 0; i < n; i++ { - var privkey cryptotypes.PrivKey - privkey = secp256k1.GenPrivKey() + privkey := secp256k1.GenPrivKey() // TODO: also generate ed25519 keys as below when ed25519 keys are // actually supported, https://github.com/cosmos/cosmos-sdk/issues/4789 // for now this fails: // if rand.Int63()%2 == 0 { // privkey = ed25519.GenPrivKey() - //} else { + // } else { // privkey = secp256k1.GenPrivKey() //} @@ -954,6 +970,8 @@ func TestCountSubkeys(t *testing.T) { {"multi level multikey", args{multiLevelMultiKey}, 11}, } for _, tc := range testCases { + tc := tc + t.Run(tc.name, func(T *testing.T) { require.Equal(t, tc.want, ante.CountSubKeys(tc.args.pub)) }) @@ -987,6 +1005,8 @@ func (suite *AnteTestSuite) TestAnteHandlerSigLimitExceeded() { } for _, tc := range testCases { + tc := tc + suite.Run(fmt.Sprintf("Case %s", tc.desc), func() { suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder() tc.malleate() @@ -1038,6 +1058,8 @@ func (suite *AnteTestSuite) TestCustomSignatureVerificationGasConsumer() { } for _, tc := range testCases { + tc := tc + suite.Run(fmt.Sprintf("Case %s", tc.desc), func() { suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder() tc.malleate() diff --git a/x/auth/ante/basic_test.go b/x/auth/ante/basic_test.go index a3cfff696113..5f24462c3988 100644 --- a/x/auth/ante/basic_test.go +++ b/x/auth/ante/basic_test.go @@ -111,6 +111,7 @@ func (suite *AnteTestSuite) TestConsumeGasForTxSize() { } for _, tc := range testCases { + tc := tc suite.Run(tc.name, func() { suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder() suite.Require().NoError(suite.txBuilder.SetMsgs(msg)) diff --git a/x/auth/keeper/grpc_query_test.go b/x/auth/keeper/grpc_query_test.go index d70b9ec5d3e0..e9075d4ee41d 100644 --- a/x/auth/keeper/grpc_query_test.go +++ b/x/auth/keeper/grpc_query_test.go @@ -69,6 +69,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryAccount() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -112,6 +113,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryParameters() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset diff --git a/x/auth/tx/builder_test.go b/x/auth/tx/builder_test.go index ddec560851be..6c103c367ad2 100644 --- a/x/auth/tx/builder_test.go +++ b/x/auth/tx/builder_test.go @@ -40,8 +40,7 @@ func TestTxBuilder(t *testing.T) { Sequence: accSeq, }) - var sig signing.SignatureV2 - sig = signing.SignatureV2{ + sig := signing.SignatureV2{ PubKey: pubkey, Data: &signing.SingleSignatureData{ SignMode: signing.SignMode_SIGN_MODE_DIRECT, @@ -272,6 +271,7 @@ func TestBuilderFeePayer(t *testing.T) { } for name, tc := range cases { + tc := tc t.Run(name, func(t *testing.T) { // setup basic tx txBuilder := newBuilder() diff --git a/x/auth/tx/direct_test.go b/x/auth/tx/direct_test.go index 731a5968da65..c4d2ad014552 100644 --- a/x/auth/tx/direct_test.go +++ b/x/auth/tx/direct_test.go @@ -136,6 +136,7 @@ func TestDirectModeHandler_nonDIRECT_MODE(t *testing.T) { signingtypes.SignMode_SIGN_MODE_UNSPECIFIED, } for _, invalidMode := range invalidModes { + invalidMode := invalidMode t.Run(invalidMode.String(), func(t *testing.T) { var dh signModeDirectHandler var signingData signing.SignerData diff --git a/x/auth/tx/service_test.go b/x/auth/tx/service_test.go index 4eb25467a8f4..a233551f34e0 100644 --- a/x/auth/tx/service_test.go +++ b/x/auth/tx/service_test.go @@ -77,7 +77,7 @@ func (s *IntegrationTestSuite) TearDownSuite() { s.network.Cleanup() } -func (s IntegrationTestSuite) TestSimulateTx_GRPC() { +func (s IntegrationTestSuite) TestSimulateTx_GRPC() { //nolint:govet // this is a test and we're ok with copying locks. txBuilder := s.mkTxBuilder() // Convert the txBuilder to a tx.Tx. protoTx, err := txBuilderToProtoTx(txBuilder) @@ -113,7 +113,7 @@ func (s IntegrationTestSuite) TestSimulateTx_GRPC() { } } -func (s IntegrationTestSuite) TestSimulateTx_GRPCGateway() { +func (s IntegrationTestSuite) TestSimulateTx_GRPCGateway() { //nolint:govet // this is a test and we're ok with copying locks. val := s.network.Validators[0] txBuilder := s.mkTxBuilder() // Convert the txBuilder to a tx.Tx. @@ -131,6 +131,7 @@ func (s IntegrationTestSuite) TestSimulateTx_GRPCGateway() { } for _, tc := range testCases { + tc := tc s.Run(tc.name, func() { req, err := val.ClientCtx.JSONMarshaler.MarshalJSON(tc.req) s.Require().NoError(err) @@ -150,7 +151,7 @@ func (s IntegrationTestSuite) TestSimulateTx_GRPCGateway() { } } -func (s IntegrationTestSuite) TestGetTxEvents_GRPC() { +func (s IntegrationTestSuite) TestGetTxEvents_GRPC() { //nolint:govet // this is a test and we're ok with copying locks. testCases := []struct { name string req *tx.GetTxsEventRequest @@ -208,6 +209,7 @@ func (s IntegrationTestSuite) TestGetTxEvents_GRPC() { }, } for _, tc := range testCases { + tc := tc s.Run(tc.name, func() { // Query the tx via gRPC. grpcRes, err := s.queryClient.GetTxsEvent(context.Background(), tc.req) @@ -229,7 +231,7 @@ func (s IntegrationTestSuite) TestGetTxEvents_GRPC() { } } -func (s IntegrationTestSuite) TestGetTxEvents_GRPCGateway() { +func (s IntegrationTestSuite) TestGetTxEvents_GRPCGateway() { //nolint:govet // this is a test and we're ok with copying locks. val := s.network.Validators[0] testCases := []struct { name string @@ -287,6 +289,7 @@ func (s IntegrationTestSuite) TestGetTxEvents_GRPCGateway() { }, } for _, tc := range testCases { + tc := tc s.Run(tc.name, func() { res, err := rest.GetRequest(tc.url) s.Require().NoError(err) @@ -304,7 +307,7 @@ func (s IntegrationTestSuite) TestGetTxEvents_GRPCGateway() { } } -func (s IntegrationTestSuite) TestGetTx_GRPC() { +func (s IntegrationTestSuite) TestGetTx_GRPC() { //nolint:govet // this is a test and we're ok with copying locks. testCases := []struct { name string req *tx.GetTxRequest @@ -317,6 +320,8 @@ func (s IntegrationTestSuite) TestGetTx_GRPC() { {"good request", &tx.GetTxRequest{Hash: s.txRes.TxHash}, false, ""}, } for _, tc := range testCases { + tc := tc + s.Run(tc.name, func() { // Query the tx via gRPC. grpcRes, err := s.queryClient.GetTx(context.Background(), tc.req) @@ -331,7 +336,7 @@ func (s IntegrationTestSuite) TestGetTx_GRPC() { } } -func (s IntegrationTestSuite) TestGetTx_GRPCGateway() { +func (s IntegrationTestSuite) TestGetTx_GRPCGateway() { //nolint:govet // this is a test and we're ok with copying locks. val := s.network.Validators[0] testCases := []struct { name string @@ -356,6 +361,8 @@ func (s IntegrationTestSuite) TestGetTx_GRPCGateway() { }, } for _, tc := range testCases { + tc := tc + s.Run(tc.name, func() { res, err := rest.GetRequest(tc.url) s.Require().NoError(err) @@ -378,7 +385,7 @@ func (s IntegrationTestSuite) TestGetTx_GRPCGateway() { } } -func (s IntegrationTestSuite) TestBroadcastTx_GRPC() { +func (s IntegrationTestSuite) TestBroadcastTx_GRPC() { //nolint:govet // this is a test and we're ok with copying locks. val := s.network.Validators[0] txBuilder := s.mkTxBuilder() txBytes, err := val.ClientCtx.TxConfig.TxEncoder()(txBuilder.GetTx()) @@ -418,7 +425,7 @@ func (s IntegrationTestSuite) TestBroadcastTx_GRPC() { } } -func (s IntegrationTestSuite) TestBroadcastTx_GRPCGateway() { +func (s IntegrationTestSuite) TestBroadcastTx_GRPCGateway() { //nolint:govet // this is a test and we're ok with copying locks. val := s.network.Validators[0] txBuilder := s.mkTxBuilder() txBytes, err := val.ClientCtx.TxConfig.TxEncoder()(txBuilder.GetTx()) @@ -439,6 +446,7 @@ func (s IntegrationTestSuite) TestBroadcastTx_GRPCGateway() { } for _, tc := range testCases { + tc := tc s.Run(tc.name, func() { req, err := val.ClientCtx.JSONMarshaler.MarshalJSON(tc.req) s.Require().NoError(err) @@ -460,7 +468,7 @@ func TestIntegrationTestSuite(t *testing.T) { suite.Run(t, new(IntegrationTestSuite)) } -func (s IntegrationTestSuite) mkTxBuilder() client.TxBuilder { +func (s IntegrationTestSuite) mkTxBuilder() client.TxBuilder { //nolint:govet // this is a test and we're ok with copying locks. val := s.network.Validators[0] s.Require().NoError(s.network.WaitForNextBlock()) diff --git a/x/auth/types/genesis_test.go b/x/auth/types/genesis_test.go index 7e96036053fc..72c3468080e7 100644 --- a/x/auth/types/genesis_test.go +++ b/x/auth/types/genesis_test.go @@ -114,6 +114,7 @@ func TestPackAccountsAny(t *testing.T) { } for _, tc := range testCases { + tc := tc t.Run(tc.msg, func(t *testing.T) { tc.malleate() diff --git a/x/auth/vesting/types/common_test.go b/x/auth/vesting/types/common_test.go index 4f361059ad3c..5b4324b80b73 100644 --- a/x/auth/vesting/types/common_test.go +++ b/x/auth/vesting/types/common_test.go @@ -4,7 +4,4 @@ import ( "github.com/cosmos/cosmos-sdk/simapp" ) -var ( - app = simapp.Setup(false) - appCodec, _ = simapp.MakeCodecs() -) +var app = simapp.Setup(false) diff --git a/x/bank/client/testutil/cli_helpers.go b/x/bank/client/testutil/cli_helpers.go index 820c668c4558..54b8f0267ba0 100644 --- a/x/bank/client/testutil/cli_helpers.go +++ b/x/bank/client/testutil/cli_helpers.go @@ -74,7 +74,7 @@ func newSendTxMsgServiceCmd() *cobra.Command { ignored as it is implied from [from_key_or_address].`, Args: cobra.ExactArgs(3), RunE: func(cmd *cobra.Command, args []string) error { - cmd.Flags().Set(flags.FlagFrom, args[0]) + cmd.Flags().Set(flags.FlagFrom, args[0]) //nolint:errcheck clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err diff --git a/x/bank/keeper/keeper_test.go b/x/bank/keeper/keeper_test.go index 441e6d4e57a5..39d52393678b 100644 --- a/x/bank/keeper/keeper_test.go +++ b/x/bank/keeper/keeper_test.go @@ -1064,9 +1064,9 @@ func (suite *IntegrationTestSuite) getTestMetadata() []types.Metadata { { Description: "The native staking token of the Token Hub.", DenomUnits: []*types.DenomUnit{ - {"1token", uint32(5), []string{"decitoken"}}, - {"2token", uint32(4), []string{"centitoken"}}, - {"3token", uint32(7), []string{"dekatoken"}}, + {Denom: "1token", Exponent: uint32(5), Aliases: []string{"decitoken"}}, + {Denom: "2token", Exponent: uint32(4), Aliases: []string{"centitoken"}}, + {Denom: "3token", Exponent: uint32(7), Aliases: []string{"dekatoken"}}, }, Base: "utoken", Display: "token", diff --git a/x/bank/simulation/genesis_test.go b/x/bank/simulation/genesis_test.go index fc31ca38e9ef..941dee3b3870 100644 --- a/x/bank/simulation/genesis_test.go +++ b/x/bank/simulation/genesis_test.go @@ -70,6 +70,7 @@ func TestRandomizedGenState1(t *testing.T) { } for _, tt := range tests { + tt := tt require.Panicsf(t, func() { simulation.RandomizedGenState(&tt.simState) }, tt.panicMsg) } } diff --git a/x/capability/keeper/keeper_test.go b/x/capability/keeper/keeper_test.go index 094b12811391..2e419faa3287 100644 --- a/x/capability/keeper/keeper_test.go +++ b/x/capability/keeper/keeper_test.go @@ -287,7 +287,7 @@ func (suite *KeeperTestSuite) TestReleaseCapability() { suite.Require().Error(sk1.ReleaseCapability(suite.ctx, nil)) } -func (suite KeeperTestSuite) TestRevertCapability() { +func (suite KeeperTestSuite) TestRevertCapability() { //nolint:govet // this is a test and we're ok with copying locks. sk := suite.keeper.ScopeToModule(banktypes.ModuleName) ms := suite.ctx.MultiStore() diff --git a/x/capability/simulation/genesis_test.go b/x/capability/simulation/genesis_test.go index 16d54c177a50..525b24314361 100644 --- a/x/capability/simulation/genesis_test.go +++ b/x/capability/simulation/genesis_test.go @@ -66,6 +66,7 @@ func TestRandomizedGenState1(t *testing.T) { } for _, tt := range tests { + tt := tt require.Panicsf(t, func() { simulation.RandomizedGenState(&tt.simState) }, tt.panicMsg) } } diff --git a/x/crisis/types/params.go b/x/crisis/types/params.go index 03c8dd82883f..0d7fc279d25a 100644 --- a/x/crisis/types/params.go +++ b/x/crisis/types/params.go @@ -7,7 +7,7 @@ import ( paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" ) -// key for constant fee parameter +// ParamStoreKeyConstantFee key for constant fee parameter var ParamStoreKeyConstantFee = []byte("ConstantFee") // type declaration for parameters diff --git a/x/distribution/keeper/grpc_query_test.go b/x/distribution/keeper/grpc_query_test.go index 412144094626..046bc1d713a1 100644 --- a/x/distribution/keeper/grpc_query_test.go +++ b/x/distribution/keeper/grpc_query_test.go @@ -85,6 +85,7 @@ func (suite *KeeperTestSuite) TestGRPCParams() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() @@ -136,6 +137,7 @@ func (suite *KeeperTestSuite) TestGRPCValidatorOutstandingRewards() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() @@ -183,6 +185,7 @@ func (suite *KeeperTestSuite) TestGRPCValidatorCommission() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() @@ -322,6 +325,7 @@ func (suite *KeeperTestSuite) TestGRPCValidatorSlashes() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() @@ -423,6 +427,7 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() @@ -476,6 +481,7 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() @@ -536,6 +542,7 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() @@ -582,6 +589,7 @@ func (suite *KeeperTestSuite) TestGRPCDelegatorWithdrawAddress() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() @@ -636,6 +644,7 @@ func (suite *KeeperTestSuite) TestGRPCCommunityPool() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() diff --git a/x/distribution/simulation/genesis_test.go b/x/distribution/simulation/genesis_test.go index e923fbd4c833..8edadb6d8fc6 100644 --- a/x/distribution/simulation/genesis_test.go +++ b/x/distribution/simulation/genesis_test.go @@ -76,6 +76,7 @@ func TestRandomizedGenState1(t *testing.T) { } for _, tt := range tests { + tt := tt require.Panicsf(t, func() { simulation.RandomizedGenState(&tt.simState) }, tt.panicMsg) } } diff --git a/x/evidence/genesis_test.go b/x/evidence/genesis_test.go index 3ae8eee03cd8..7cde8bd2fff3 100644 --- a/x/evidence/genesis_test.go +++ b/x/evidence/genesis_test.go @@ -88,6 +88,7 @@ func (suite *GenesisTestSuite) TestInitGenesis() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() @@ -133,6 +134,7 @@ func (suite *GenesisTestSuite) TestExportGenesis() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() diff --git a/x/evidence/handler_test.go b/x/evidence/handler_test.go index b3f95c300a4f..9f739c8b96c7 100644 --- a/x/evidence/handler_test.go +++ b/x/evidence/handler_test.go @@ -104,6 +104,8 @@ func (suite *HandlerTestSuite) TestMsgSubmitEvidence() { } for i, tc := range testCases { + i := i + tc := tc ctx := suite.app.BaseApp.NewContext(false, tmproto.Header{Height: suite.app.LastBlockHeight() + 1}) res, err := suite.handler(ctx, tc.msg) diff --git a/x/evidence/keeper/grpc_query_test.go b/x/evidence/keeper/grpc_query_test.go index b6856f19c654..3004046dbf88 100644 --- a/x/evidence/keeper/grpc_query_test.go +++ b/x/evidence/keeper/grpc_query_test.go @@ -58,6 +58,8 @@ func (suite *KeeperTestSuite) TestQueryEvidence() { } for _, tc := range testCases { + tc := tc + suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() @@ -119,6 +121,8 @@ func (suite *KeeperTestSuite) TestQueryAllEvidence() { } for _, tc := range testCases { + tc := tc + suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() diff --git a/x/evidence/types/genesis_test.go b/x/evidence/types/genesis_test.go index d2b3e655db11..bd2a82b30bcd 100644 --- a/x/evidence/types/genesis_test.go +++ b/x/evidence/types/genesis_test.go @@ -39,6 +39,8 @@ func TestNewGenesisState(t *testing.T) { } for _, tc := range testCases { + tc := tc + t.Run(fmt.Sprintf("Case %s", tc.msg), func(t *testing.T) { tc.malleate() @@ -111,6 +113,8 @@ func TestGenesisStateValidate(t *testing.T) { } for _, tc := range testCases { + tc := tc + t.Run(fmt.Sprintf("Case %s", tc.msg), func(t *testing.T) { tc.malleate() @@ -146,6 +150,8 @@ func TestUnpackInterfaces(t *testing.T) { } for _, tc := range testCases { + tc := tc + t.Run(fmt.Sprintf("Case %s", tc.msg), func(t *testing.T) { if tc.expPass { require.NoError(t, gs.UnpackInterfaces(tc.unpacker)) diff --git a/x/genutil/client/cli/migrate_test.go b/x/genutil/client/cli/migrate_test.go index d31f8962a958..6c22a653a0f0 100644 --- a/x/genutil/client/cli/migrate_test.go +++ b/x/genutil/client/cli/migrate_test.go @@ -47,6 +47,8 @@ func (s *IntegrationTestSuite) TestMigrateGenesis() { } for _, tc := range testCases { + tc := tc + s.Run(tc.name, func() { genesisFile := testutil.WriteToNewTempFile(s.T(), tc.genesis) _, err := clitestutil.ExecTestCLICmd(val0.ClientCtx, cli.MigrateGenesisCmd(), []string{tc.target, genesisFile.Name()}) diff --git a/x/genutil/client/cli/validate_genesis_test.go b/x/genutil/client/cli/validate_genesis_test.go index 3521bcc21ecd..d83e64b12f09 100644 --- a/x/genutil/client/cli/validate_genesis_test.go +++ b/x/genutil/client/cli/validate_genesis_test.go @@ -68,6 +68,8 @@ func (s *IntegrationTestSuite) TestValidateGenesis() { } for _, tc := range testCases { + tc := tc + s.Run(tc.name, func() { genesisFile := testutil.WriteToNewTempFile(s.T(), tc.genesis) _, err := clitestutil.ExecTestCLICmd(val0.ClientCtx, cli.ValidateGenesisCmd(nil), []string{genesisFile.Name()}) diff --git a/x/genutil/gentx_test.go b/x/genutil/gentx_test.go index d4990d33e22a..7d398353a673 100644 --- a/x/genutil/gentx_test.go +++ b/x/genutil/gentx_test.go @@ -110,6 +110,8 @@ func (suite *GenTxTestSuite) TestSetGenTxsInAppGenesisState() { } for _, tc := range testCases { + tc := tc + suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() cdc := suite.encodingConfig.Marshaler @@ -177,6 +179,8 @@ func (suite *GenTxTestSuite) TestValidateAccountInGenesis() { }, } for _, tc := range testCases { + tc := tc + suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() cdc := suite.encodingConfig.Marshaler @@ -256,6 +260,8 @@ func (suite *GenTxTestSuite) TestDeliverGenTxs() { } for _, tc := range testCases { + tc := tc + suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() diff --git a/x/gov/client/utils/utils_test.go b/x/gov/client/utils/utils_test.go index 11098c380e50..51d4aa80ec13 100644 --- a/x/gov/client/utils/utils_test.go +++ b/x/gov/client/utils/utils_test.go @@ -28,6 +28,7 @@ func TestNormalizeProposalStatus(t *testing.T) { {"rejected", args{"rejected"}, "PROPOSAL_STATUS_REJECTED"}, } for _, tt := range tests { + tt := tt t.Run(tt.name, func(t *testing.T) { require.Equal(t, tt.want, utils.NormalizeProposalStatus(tt.args.status)) }) diff --git a/x/gov/keeper/proposal_test.go b/x/gov/keeper/proposal_test.go index 1a833737d940..a84cc4551896 100644 --- a/x/gov/keeper/proposal_test.go +++ b/x/gov/keeper/proposal_test.go @@ -130,6 +130,8 @@ func TestGetProposalsFiltered(t *testing.T) { } for i, tc := range testCases { + i := i + tc := tc t.Run(fmt.Sprintf("Test Case %d", i), func(t *testing.T) { proposals := app.GovKeeper.GetProposalsFiltered(ctx, tc.params) require.Len(t, proposals, tc.expectedNumResults) diff --git a/x/gov/keeper/querier.go b/x/gov/keeper/querier.go index abebe0c2a8a4..6eb343d070a7 100644 --- a/x/gov/keeper/querier.go +++ b/x/gov/keeper/querier.go @@ -72,7 +72,7 @@ func queryParams(ctx sdk.Context, path []string, req abci.RequestQuery, keeper K } } -//nolint: unparam +// nolint: unparam func queryProposal(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryProposalParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -93,7 +93,7 @@ func queryProposal(ctx sdk.Context, path []string, req abci.RequestQuery, keeper return bz, nil } -//nolint: unparam +// nolint: unparam func queryDeposit(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryDepositParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -110,7 +110,7 @@ func queryDeposit(ctx sdk.Context, path []string, req abci.RequestQuery, keeper return bz, nil } -//nolint: unparam +// nolint: unparam func queryVote(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryVoteParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -127,7 +127,7 @@ func queryVote(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Kee return bz, nil } -//nolint: unparam +// nolint: unparam func queryDeposits(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryProposalParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -148,7 +148,7 @@ func queryDeposits(ctx sdk.Context, path []string, req abci.RequestQuery, keeper return bz, nil } -//nolint: unparam +// nolint: unparam func queryTally(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryProposalParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -185,7 +185,7 @@ func queryTally(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Ke return bz, nil } -//nolint: unparam +// nolint: unparam func queryVotes(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryProposalVotesParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) diff --git a/x/gov/simulation/genesis_test.go b/x/gov/simulation/genesis_test.go index db8b98bff103..b97823911254 100644 --- a/x/gov/simulation/genesis_test.go +++ b/x/gov/simulation/genesis_test.go @@ -79,6 +79,7 @@ func TestRandomizedGenState1(t *testing.T) { } for _, tt := range tests { + tt := tt require.Panicsf(t, func() { simulation.RandomizedGenState(&tt.simState) }, tt.panicMsg) } } diff --git a/x/ibc/applications/transfer/keeper/grpc_query_test.go b/x/ibc/applications/transfer/keeper/grpc_query_test.go index 0b16e0726b58..9f166a658448 100644 --- a/x/ibc/applications/transfer/keeper/grpc_query_test.go +++ b/x/ibc/applications/transfer/keeper/grpc_query_test.go @@ -55,6 +55,7 @@ func (suite *KeeperTestSuite) TestQueryDenomTrace() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -115,6 +116,7 @@ func (suite *KeeperTestSuite) TestQueryDenomTraces() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset diff --git a/x/ibc/applications/transfer/simulation/genesis_test.go b/x/ibc/applications/transfer/simulation/genesis_test.go index 451f9fd83238..75023f8668db 100644 --- a/x/ibc/applications/transfer/simulation/genesis_test.go +++ b/x/ibc/applications/transfer/simulation/genesis_test.go @@ -68,6 +68,7 @@ func TestRandomizedGenState1(t *testing.T) { } for _, tt := range tests { + tt := tt require.Panicsf(t, func() { simulation.RandomizedGenState(&tt.simState) }, tt.panicMsg) } } diff --git a/x/ibc/core/02-client/keeper/grpc_query_test.go b/x/ibc/core/02-client/keeper/grpc_query_test.go index d18b0c97e3cb..e0c112385a92 100644 --- a/x/ibc/core/02-client/keeper/grpc_query_test.go +++ b/x/ibc/core/02-client/keeper/grpc_query_test.go @@ -61,6 +61,7 @@ func (suite *KeeperTestSuite) TestQueryClientState() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset diff --git a/x/ibc/core/02-client/keeper/keeper_test.go b/x/ibc/core/02-client/keeper/keeper_test.go index c22e80cc9ec8..4f425dbf9047 100644 --- a/x/ibc/core/02-client/keeper/keeper_test.go +++ b/x/ibc/core/02-client/keeper/keeper_test.go @@ -231,7 +231,7 @@ func (suite *KeeperTestSuite) TestValidateSelfClient() { } } -func (suite KeeperTestSuite) TestGetAllGenesisClients() { +func (suite KeeperTestSuite) TestGetAllGenesisClients() { //nolint:govet // this is a test and we're ok with copying locks. clientIDs := []string{ testClientID2, testClientID3, testClientID, } @@ -258,7 +258,7 @@ func (suite KeeperTestSuite) TestGetAllGenesisClients() { suite.Require().Equal(expGenClients.Sort(), genClients) } -func (suite KeeperTestSuite) TestGetAllGenesisMetadata() { +func (suite KeeperTestSuite) TestGetAllGenesisMetadata() { //nolint:govet // this is a test and we're ok with copying locks. expectedGenMetadata := []types.IdentifiedGenesisMetadata{ types.NewIdentifiedGenesisMetadata( "clientA", @@ -289,7 +289,7 @@ func (suite KeeperTestSuite) TestGetAllGenesisMetadata() { suite.Require().Equal(expectedGenMetadata, actualGenMetadata, "retrieved metadata is unexpected") } -func (suite KeeperTestSuite) TestGetConsensusState() { +func (suite KeeperTestSuite) TestGetConsensusState() { //nolint:govet // this is a test and we're ok with copying locks. suite.ctx = suite.ctx.WithBlockHeight(10) cases := []struct { name string @@ -315,7 +315,7 @@ func (suite KeeperTestSuite) TestGetConsensusState() { } } -func (suite KeeperTestSuite) TestConsensusStateHelpers() { +func (suite KeeperTestSuite) TestConsensusStateHelpers() { //nolint:govet // this is a test and we're ok with copying locks. // initial setup clientState := ibctmtypes.NewClientState(testChainID, ibctmtypes.DefaultTrustLevel, trustingPeriod, ubdPeriod, maxClockDrift, testClientHeight, commitmenttypes.GetSDKSpecs(), ibctesting.UpgradePath, false, false) @@ -341,7 +341,7 @@ func (suite KeeperTestSuite) TestConsensusStateHelpers() { // 2 clients in total are created on chainA. The first client is updated so it contains an initial consensus state // and a consensus state at the update height. -func (suite KeeperTestSuite) TestGetAllConsensusStates() { +func (suite KeeperTestSuite) TestGetAllConsensusStates() { //nolint:govet // this is a test and we're ok with copying locks. clientA, _ := suite.coordinator.SetupClients(suite.chainA, suite.chainB, exported.Tendermint) clientState := suite.chainA.GetClientState(clientA) diff --git a/x/ibc/core/02-client/types/msgs.go b/x/ibc/core/02-client/types/msgs.go index 4d90b3b18cd7..dd94bf93fe8c 100644 --- a/x/ibc/core/02-client/types/msgs.go +++ b/x/ibc/core/02-client/types/msgs.go @@ -184,7 +184,7 @@ func (msg MsgUpdateClient) UnpackInterfaces(unpacker codectypes.AnyUnpacker) err } // NewMsgUpgradeClient creates a new MsgUpgradeClient instance -//nolint: interfacer +// nolint: interfacer func NewMsgUpgradeClient(clientID string, clientState exported.ClientState, consState exported.ConsensusState, proofUpgradeClient, proofUpgradeConsState []byte, signer sdk.AccAddress, ) (*MsgUpgradeClient, error) { diff --git a/x/ibc/core/03-connection/keeper/keeper_test.go b/x/ibc/core/03-connection/keeper/keeper_test.go index f2a1124b551b..611339f739a7 100644 --- a/x/ibc/core/03-connection/keeper/keeper_test.go +++ b/x/ibc/core/03-connection/keeper/keeper_test.go @@ -55,7 +55,7 @@ func (suite *KeeperTestSuite) TestSetAndGetClientConnectionPaths() { } // create 2 connections: A0 - B0, A1 - B1 -func (suite KeeperTestSuite) TestGetAllConnections() { +func (suite KeeperTestSuite) TestGetAllConnections() { //nolint:govet // this is a test and we're ok with copying locks. clientA, clientB, connA0, connB0 := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) connA1, connB1 := suite.coordinator.CreateConnection(suite.chainA, suite.chainB, clientA, clientB) @@ -77,7 +77,7 @@ func (suite KeeperTestSuite) TestGetAllConnections() { // the test creates 2 clients clientA0 and clientA1. clientA0 has a single // connection and clientA1 has 2 connections. -func (suite KeeperTestSuite) TestGetAllClientConnectionPaths() { +func (suite KeeperTestSuite) TestGetAllClientConnectionPaths() { //nolint:govet // this is a test and we're ok with copying locks. clientA0, _, connA0, _ := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) clientA1, clientB1, connA1, _ := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) connA2, _ := suite.coordinator.CreateConnection(suite.chainA, suite.chainB, clientA1, clientB1) @@ -113,6 +113,7 @@ func (suite *KeeperTestSuite) TestGetTimestampAtHeight() { } for _, tc := range cases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset diff --git a/x/ibc/core/04-channel/keeper/keeper_test.go b/x/ibc/core/04-channel/keeper/keeper_test.go index a9b7dd6cf1c6..ab3bad23d9cf 100644 --- a/x/ibc/core/04-channel/keeper/keeper_test.go +++ b/x/ibc/core/04-channel/keeper/keeper_test.go @@ -63,7 +63,7 @@ func (suite *KeeperTestSuite) TestSetChannel() { // TestGetAllChannels creates multiple channels on chain A through various connections // and tests their retrieval. 2 channels are on connA0 and 1 channel is on connA1 -func (suite KeeperTestSuite) TestGetAllChannels() { +func (suite KeeperTestSuite) TestGetAllChannels() { //nolint:govet // this is a test and we're ok with copying locks. clientA, clientB, connA0, connB0, testchannel0, _ := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED) // channel0 on first connection on chainA counterparty0 := types.Counterparty{ @@ -118,7 +118,7 @@ func (suite KeeperTestSuite) TestGetAllChannels() { // TestGetAllSequences sets all packet sequences for two different channels on chain A and // tests their retrieval. -func (suite KeeperTestSuite) TestGetAllSequences() { +func (suite KeeperTestSuite) TestGetAllSequences() { //nolint:govet // this is a test and we're ok with copying locks. _, _, connA, connB, channelA0, _ := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED) channelA1, _ := suite.coordinator.CreateMockChannels(suite.chainA, suite.chainB, connA, connB, types.UNORDERED) @@ -151,7 +151,7 @@ func (suite KeeperTestSuite) TestGetAllSequences() { // TestGetAllPacketState creates a set of acks, packet commitments, and receipts on two different // channels on chain A and tests their retrieval. -func (suite KeeperTestSuite) TestGetAllPacketState() { +func (suite KeeperTestSuite) TestGetAllPacketState() { //nolint:govet // this is a test and we're ok with copying locks. _, _, connA, connB, channelA0, _ := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED) channelA1, _ := suite.coordinator.CreateMockChannels(suite.chainA, suite.chainB, connA, connB, types.UNORDERED) diff --git a/x/ibc/core/04-channel/types/channel_test.go b/x/ibc/core/04-channel/types/channel_test.go index eca393cefff4..581fdc45f01c 100644 --- a/x/ibc/core/04-channel/types/channel_test.go +++ b/x/ibc/core/04-channel/types/channel_test.go @@ -59,7 +59,7 @@ func TestCounterpartyValidateBasic(t *testing.T) { } // tests acknowledgement.ValidateBasic and acknowledgement.GetBytes -func (suite TypesTestSuite) TestAcknowledgement() { +func (suite TypesTestSuite) TestAcknowledgement() { //nolint:govet // this is a test and we're ok with copying locks. testCases := []struct { name string ack types.Acknowledgement diff --git a/x/ibc/core/04-channel/types/msgs.go b/x/ibc/core/04-channel/types/msgs.go index 1d7c70abc84c..96553744988c 100644 --- a/x/ibc/core/04-channel/types/msgs.go +++ b/x/ibc/core/04-channel/types/msgs.go @@ -14,6 +14,7 @@ var _ sdk.Msg = &MsgChannelOpenInit{} // NewMsgChannelOpenInit creates a new MsgChannelOpenInit. It sets the counterparty channel // identifier to be empty. +// //nolint:interfacer func NewMsgChannelOpenInit( portID, version string, channelOrder Order, connectionHops []string, @@ -77,6 +78,7 @@ func (msg MsgChannelOpenInit) GetSigners() []sdk.AccAddress { var _ sdk.Msg = &MsgChannelOpenTry{} // NewMsgChannelOpenTry creates a new MsgChannelOpenTry instance +// //nolint:interfacer func NewMsgChannelOpenTry( portID, previousChannelID, version string, channelOrder Order, connectionHops []string, @@ -158,6 +160,7 @@ func (msg MsgChannelOpenTry) GetSigners() []sdk.AccAddress { var _ sdk.Msg = &MsgChannelOpenAck{} // NewMsgChannelOpenAck creates a new MsgChannelOpenAck instance +// //nolint:interfacer func NewMsgChannelOpenAck( portID, channelID, counterpartyChannelID string, cpv string, proofTry []byte, proofHeight clienttypes.Height, @@ -226,6 +229,7 @@ func (msg MsgChannelOpenAck) GetSigners() []sdk.AccAddress { var _ sdk.Msg = &MsgChannelOpenConfirm{} // NewMsgChannelOpenConfirm creates a new MsgChannelOpenConfirm instance +// //nolint:interfacer func NewMsgChannelOpenConfirm( portID, channelID string, proofAck []byte, proofHeight clienttypes.Height, @@ -289,6 +293,7 @@ func (msg MsgChannelOpenConfirm) GetSigners() []sdk.AccAddress { var _ sdk.Msg = &MsgChannelCloseInit{} // NewMsgChannelCloseInit creates a new MsgChannelCloseInit instance +// //nolint:interfacer func NewMsgChannelCloseInit( portID string, channelID string, signer sdk.AccAddress, @@ -343,6 +348,7 @@ func (msg MsgChannelCloseInit) GetSigners() []sdk.AccAddress { var _ sdk.Msg = &MsgChannelCloseConfirm{} // NewMsgChannelCloseConfirm creates a new MsgChannelCloseConfirm instance +// //nolint:interfacer func NewMsgChannelCloseConfirm( portID, channelID string, proofInit []byte, proofHeight clienttypes.Height, @@ -406,6 +412,7 @@ func (msg MsgChannelCloseConfirm) GetSigners() []sdk.AccAddress { var _ sdk.Msg = &MsgRecvPacket{} // NewMsgRecvPacket constructs new MsgRecvPacket +// //nolint:interfacer func NewMsgRecvPacket( packet Packet, proofCommitment []byte, proofHeight clienttypes.Height, @@ -469,6 +476,7 @@ func (msg MsgRecvPacket) Type() string { var _ sdk.Msg = &MsgTimeout{} // NewMsgTimeout constructs new MsgTimeout +// //nolint:interfacer func NewMsgTimeout( packet Packet, nextSequenceRecv uint64, proofUnreceived []byte, @@ -527,6 +535,7 @@ func (msg MsgTimeout) Type() string { } // NewMsgTimeoutOnClose constructs new MsgTimeoutOnClose +// //nolint:interfacer func NewMsgTimeoutOnClose( packet Packet, nextSequenceRecv uint64, @@ -592,6 +601,7 @@ func (msg MsgTimeoutOnClose) Type() string { var _ sdk.Msg = &MsgAcknowledgement{} // NewMsgAcknowledgement constructs a new MsgAcknowledgement +// //nolint:interfacer func NewMsgAcknowledgement( packet Packet, diff --git a/x/ibc/light-clients/06-solomachine/types/codec_test.go b/x/ibc/light-clients/06-solomachine/types/codec_test.go index a58a48e8280c..f3f64b203e08 100644 --- a/x/ibc/light-clients/06-solomachine/types/codec_test.go +++ b/x/ibc/light-clients/06-solomachine/types/codec_test.go @@ -8,7 +8,7 @@ import ( ibctesting "github.com/cosmos/cosmos-sdk/x/ibc/testing" ) -func (suite SoloMachineTestSuite) TestUnmarshalDataByType() { +func (suite SoloMachineTestSuite) TestUnmarshalDataByType() { //nolint:govet // this is a test and we're ok with copying locks. var ( data []byte err error diff --git a/x/staking/handler_test.go b/x/staking/handler_test.go index dfd08caeacbe..7fd19f833981 100644 --- a/x/staking/handler_test.go +++ b/x/staking/handler_test.go @@ -328,7 +328,6 @@ func TestIncrementsMsgDelegate(t *testing.T) { tstaking.Ctx = ctx tstaking.Delegate(delegatorAddr, validatorAddr, bondAmount) - validator, found := app.StakingKeeper.GetValidator(ctx, validatorAddr) require.True(t, found) bond, found := app.StakingKeeper.GetDelegation(ctx, delegatorAddr, validatorAddr) @@ -489,8 +488,7 @@ func TestIncrementsMsgUnbond(t *testing.T) { // these are more than we have bonded now errorCases := []sdk.Int{ - - //1<<63 + 1, // more than int64 power + // 1<<63 + 1, // more than int64 power sdk.TokensFromConsensusPower(1<<63 - 1), sdk.TokensFromConsensusPower(1 << 31), initBond, diff --git a/x/staking/keeper/delegation_test.go b/x/staking/keeper/delegation_test.go index d97e7e547f7c..c32113986bc0 100644 --- a/x/staking/keeper/delegation_test.go +++ b/x/staking/keeper/delegation_test.go @@ -21,7 +21,6 @@ func TestDelegation(t *testing.T) { addrDels := simapp.AddTestAddrsIncremental(app, ctx, 3, sdk.NewInt(10000)) valAddrs := simapp.ConvertAddrsToValAddrs(addrDels) - amts := []sdk.Int{sdk.NewInt(9), sdk.NewInt(8), sdk.NewInt(7)} var validators [3]types.Validator for i, amt := range amts { @@ -313,7 +312,6 @@ func TestUndelegateSelfDelegationBelowMinSelfDelegation(t *testing.T) { delTokens := sdk.TokensFromConsensusPower(10) delCoins := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), delTokens)) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) validator.MinSelfDelegation = delTokens @@ -379,7 +377,6 @@ func TestUndelegateFromUnbondingValidator(t *testing.T) { addrDels := simapp.AddTestAddrsIncremental(app, ctx, 2, sdk.NewInt(0)) addrVals := simapp.ConvertAddrsToValAddrs(addrDels) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) @@ -563,7 +560,6 @@ func TestUnbondingAllDelegationFromValidator(t *testing.T) { require.NoError(t, err) app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) @@ -819,7 +815,6 @@ func TestRedelegateSelfDelegation(t *testing.T) { require.NoError(t, err) app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) @@ -877,7 +872,6 @@ func TestRedelegateFromUnbondingValidator(t *testing.T) { require.NoError(t, err) app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) @@ -924,7 +918,6 @@ func TestRedelegateFromUnbondingValidator(t *testing.T) { params := app.StakingKeeper.GetParams(ctx) require.True(t, blockTime.Add(params.UnbondingTime).Equal(validator.UnbondingTime)) - header = ctx.BlockHeader() blockHeight2 := int64(20) header.Height = blockHeight2 @@ -961,7 +954,6 @@ func TestRedelegateFromUnbondedValidator(t *testing.T) { require.NoError(t, err) app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) diff --git a/x/staking/keeper/grpc_query_test.go b/x/staking/keeper/grpc_query_test.go index 9f7682929805..06fbf9e93525 100644 --- a/x/staking/keeper/grpc_query_test.go +++ b/x/staking/keeper/grpc_query_test.go @@ -67,6 +67,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryValidators() { }, } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { tc.malleate() valsResp, err := queryClient.Validators(gocontext.Background(), req) @@ -115,6 +116,7 @@ func (suite *KeeperTestSuite) TestGRPCValidator() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { tc.malleate() res, err := queryClient.Validator(gocontext.Background(), req) @@ -159,6 +161,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryDelegatorValidators() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { tc.malleate() res, err := queryClient.DelegatorValidators(gocontext.Background(), req) @@ -215,6 +218,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryDelegatorValidator() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { tc.malleate() res, err := queryClient.DelegatorValidator(gocontext.Background(), req) @@ -271,6 +275,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryDelegation() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { tc.malleate() res, err := queryClient.Delegation(gocontext.Background(), req) @@ -328,6 +333,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryDelegatorDelegations() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { tc.malleate() res, err := queryClient.DelegatorDelegations(gocontext.Background(), req) @@ -458,6 +464,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryUnbondingDelegation() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { tc.malleate() res, err := queryClient.UnbondingDelegation(gocontext.Background(), req) diff --git a/x/staking/keeper/keeper_test.go b/x/staking/keeper/keeper_test.go index b765a1687bb9..391fe559ddda 100644 --- a/x/staking/keeper/keeper_test.go +++ b/x/staking/keeper/keeper_test.go @@ -57,11 +57,9 @@ func TestParams(t *testing.T) { expParams := types.DefaultParams() - resParams := app.StakingKeeper.GetParams(ctx) require.True(t, expParams.Equal(resParams)) - expParams.MaxValidators = 777 app.StakingKeeper.SetParams(ctx, expParams) resParams = app.StakingKeeper.GetParams(ctx) diff --git a/x/staking/keeper/validator_test.go b/x/staking/keeper/validator_test.go index ca4b916c664d..6d00413c030a 100644 --- a/x/staking/keeper/validator_test.go +++ b/x/staking/keeper/validator_test.go @@ -250,7 +250,6 @@ func TestSlashToZeroPowerRemoved(t *testing.T) { func TestValidatorBasics(t *testing.T) { app, ctx, _, addrVals := bootstrapValidatorTest(t, 1000, 20) - var validators [3]types.Validator powers := []int64{9, 8, 7} for i, power := range powers { diff --git a/x/staking/simulation/genesis_test.go b/x/staking/simulation/genesis_test.go index b823d70d6c1b..bce50afd101e 100644 --- a/x/staking/simulation/genesis_test.go +++ b/x/staking/simulation/genesis_test.go @@ -101,6 +101,7 @@ func TestRandomizedGenState1(t *testing.T) { } for _, tt := range tests { + tt := tt require.Panicsf(t, func() { simulation.RandomizedGenState(&tt.simState) }, tt.panicMsg) } } From 0b0a26da7db314969033425dd60b76b793d26d08 Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Tue, 27 Dec 2022 18:35:25 +0700 Subject: [PATCH 29/98] 55 scopelint issues remaining, 522 lint issues remaining --- x/gov/keeper/grpc_query_test.go | 12 ++++++++++-- x/ibc/applications/transfer/keeper/relay_test.go | 2 +- x/ibc/core/02-client/keeper/grpc_query_test.go | 4 ++++ x/ibc/core/03-connection/keeper/grpc_query_test.go | 5 +++++ x/ibc/core/04-channel/keeper/grpc_query_test.go | 14 ++++++++++++++ x/ibc/core/genesis_test.go | 2 ++ .../06-solomachine/types/client_state_test.go | 2 ++ .../06-solomachine/types/codec_test.go | 1 + .../types/misbehaviour_handle_test.go | 1 + .../06-solomachine/types/misbehaviour_test.go | 1 + .../06-solomachine/types/proposal_handle_test.go | 1 + 11 files changed, 42 insertions(+), 3 deletions(-) diff --git a/x/gov/keeper/grpc_query_test.go b/x/gov/keeper/grpc_query_test.go index dc330d734829..c1f855a08974 100644 --- a/x/gov/keeper/grpc_query_test.go +++ b/x/gov/keeper/grpc_query_test.go @@ -61,6 +61,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryProposal() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() @@ -198,6 +199,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryProposals() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() @@ -317,6 +319,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryVote() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() @@ -395,8 +398,8 @@ func (suite *KeeperTestSuite) TestGRPCQueryVotes() { app.GovKeeper.SetProposal(ctx, proposal) votes = []types.Vote{ - {proposal.ProposalId, addrs[0].String(), types.OptionAbstain}, - {proposal.ProposalId, addrs[1].String(), types.OptionYes}, + {ProposalId: proposal.ProposalId, Voter: addrs[0].String(), Option: types.OptionAbstain}, + {ProposalId: proposal.ProposalId, Voter: addrs[1].String(), Option: types.OptionYes}, } accAddr1, err1 := sdk.AccAddressFromBech32(votes[0].Voter) accAddr2, err2 := sdk.AccAddressFromBech32(votes[1].Voter) @@ -418,6 +421,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryVotes() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() @@ -497,6 +501,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryParams() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() @@ -600,6 +605,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryDeposit() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() @@ -694,6 +700,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryDeposits() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() @@ -801,6 +808,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryTally() { } for _, testCase := range testCases { + testCase := testCase suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() { testCase.malleate() diff --git a/x/ibc/applications/transfer/keeper/relay_test.go b/x/ibc/applications/transfer/keeper/relay_test.go index a00f629f9e14..f8b0f1d21b96 100644 --- a/x/ibc/applications/transfer/keeper/relay_test.go +++ b/x/ibc/applications/transfer/keeper/relay_test.go @@ -98,7 +98,7 @@ func (suite *KeeperTestSuite) TestSendTransfer() { cap := suite.chainA.GetChannelCapability(channelA.PortID, channelA.ID) // Release channel capability - suite.chainA.App.ScopedTransferKeeper.ReleaseCapability(suite.chainA.GetContext(), cap) + suite.chainA.App.ScopedTransferKeeper.ReleaseCapability(suite.chainA.GetContext(), cap) //nolint:errcheck amount = sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100)) }, true, false, }, diff --git a/x/ibc/core/02-client/keeper/grpc_query_test.go b/x/ibc/core/02-client/keeper/grpc_query_test.go index e0c112385a92..2cee91809655 100644 --- a/x/ibc/core/02-client/keeper/grpc_query_test.go +++ b/x/ibc/core/02-client/keeper/grpc_query_test.go @@ -140,7 +140,9 @@ func (suite *KeeperTestSuite) TestQueryClientStates() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { + suite.SetupTest() // reset expClientStates = nil @@ -250,6 +252,7 @@ func (suite *KeeperTestSuite) TestQueryConsensusState() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -349,6 +352,7 @@ func (suite *KeeperTestSuite) TestQueryConsensusStates() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset diff --git a/x/ibc/core/03-connection/keeper/grpc_query_test.go b/x/ibc/core/03-connection/keeper/grpc_query_test.go index d17c579a1caf..b7d67fb3e1b5 100644 --- a/x/ibc/core/03-connection/keeper/grpc_query_test.go +++ b/x/ibc/core/03-connection/keeper/grpc_query_test.go @@ -66,6 +66,7 @@ func (suite *KeeperTestSuite) TestQueryConnection() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -145,6 +146,7 @@ func (suite *KeeperTestSuite) TestQueryConnections() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -215,6 +217,7 @@ func (suite *KeeperTestSuite) TestQueryClientConnections() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -300,6 +303,7 @@ func (suite *KeeperTestSuite) TestQueryConnectionClientState() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -397,6 +401,7 @@ func (suite *KeeperTestSuite) TestQueryConnectionConsensusState() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset diff --git a/x/ibc/core/04-channel/keeper/grpc_query_test.go b/x/ibc/core/04-channel/keeper/grpc_query_test.go index 60a588d845f2..302ff21cd94f 100644 --- a/x/ibc/core/04-channel/keeper/grpc_query_test.go +++ b/x/ibc/core/04-channel/keeper/grpc_query_test.go @@ -80,6 +80,7 @@ func (suite *KeeperTestSuite) TestQueryChannel() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -168,6 +169,7 @@ func (suite *KeeperTestSuite) TestQueryChannels() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -276,6 +278,7 @@ func (suite *KeeperTestSuite) TestQueryConnectionChannels() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -396,6 +399,7 @@ func (suite *KeeperTestSuite) TestQueryChannelClientState() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -532,6 +536,7 @@ func (suite *KeeperTestSuite) TestQueryChannelConsensusState() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -638,6 +643,7 @@ func (suite *KeeperTestSuite) TestQueryPacketCommitment() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -730,6 +736,7 @@ func (suite *KeeperTestSuite) TestQueryPacketCommitments() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -833,6 +840,7 @@ func (suite *KeeperTestSuite) TestQueryPacketReceipt() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -932,6 +940,7 @@ func (suite *KeeperTestSuite) TestQueryPacketAcknowledgement() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -1024,6 +1033,7 @@ func (suite *KeeperTestSuite) TestQueryPacketAcknowledgements() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -1153,6 +1163,7 @@ func (suite *KeeperTestSuite) TestQueryUnreceivedPackets() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -1279,6 +1290,7 @@ func (suite *KeeperTestSuite) TestQueryUnreceivedAcks() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset @@ -1363,6 +1375,8 @@ func (suite *KeeperTestSuite) TestQueryNextSequenceReceive() { } for _, tc := range testCases { + + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset diff --git a/x/ibc/core/genesis_test.go b/x/ibc/core/genesis_test.go index c29feef7f8fd..c6354a9d9087 100644 --- a/x/ibc/core/genesis_test.go +++ b/x/ibc/core/genesis_test.go @@ -314,6 +314,7 @@ func (suite *IBCTestSuite) TestInitGenesis() { } for _, tc := range testCases { + tc := tc app := simapp.Setup(false) suite.NotPanics(func() { @@ -340,6 +341,7 @@ func (suite *IBCTestSuite) TestExportGenesis() { } for _, tc := range testCases { + tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() diff --git a/x/ibc/light-clients/06-solomachine/types/client_state_test.go b/x/ibc/light-clients/06-solomachine/types/client_state_test.go index 47f092adacac..bceb5d7a5ce4 100644 --- a/x/ibc/light-clients/06-solomachine/types/client_state_test.go +++ b/x/ibc/light-clients/06-solomachine/types/client_state_test.go @@ -137,6 +137,7 @@ func (suite *SoloMachineTestSuite) TestVerifyClientState() { // test singlesig and multisig public keys for _, solomachine := range []*ibctesting.Solomachine{suite.solomachine, suite.solomachineMulti} { + solomachine := solomachine value, err := types.ClientStateSignBytes(suite.chainA.Codec, solomachine.Sequence, solomachine.Time, solomachine.Diversifier, path, clientState) suite.Require().NoError(err) @@ -265,6 +266,7 @@ func (suite *SoloMachineTestSuite) TestVerifyClientConsensusState() { // test singlesig and multisig public keys for _, solomachine := range []*ibctesting.Solomachine{suite.solomachine, suite.solomachineMulti} { + solomachine := solomachine value, err := types.ConsensusStateSignBytes(suite.chainA.Codec, solomachine.Sequence, solomachine.Time, solomachine.Diversifier, path, consensusState) suite.Require().NoError(err) diff --git a/x/ibc/light-clients/06-solomachine/types/codec_test.go b/x/ibc/light-clients/06-solomachine/types/codec_test.go index f3f64b203e08..2bc56d79664b 100644 --- a/x/ibc/light-clients/06-solomachine/types/codec_test.go +++ b/x/ibc/light-clients/06-solomachine/types/codec_test.go @@ -16,6 +16,7 @@ func (suite SoloMachineTestSuite) TestUnmarshalDataByType() { //nolint:govet // // test singlesig and multisig public keys for _, solomachine := range []*ibctesting.Solomachine{suite.solomachine, suite.solomachineMulti} { + solomachine := solomachine cdc := suite.chainA.App.AppCodec() cases := []struct { diff --git a/x/ibc/light-clients/06-solomachine/types/misbehaviour_handle_test.go b/x/ibc/light-clients/06-solomachine/types/misbehaviour_handle_test.go index 97212a2d7350..730c2dd96ec5 100644 --- a/x/ibc/light-clients/06-solomachine/types/misbehaviour_handle_test.go +++ b/x/ibc/light-clients/06-solomachine/types/misbehaviour_handle_test.go @@ -15,6 +15,7 @@ func (suite *SoloMachineTestSuite) TestCheckMisbehaviourAndUpdateState() { // test singlesig and multisig public keys for _, solomachine := range []*ibctesting.Solomachine{suite.solomachine, suite.solomachineMulti} { + solomachine := solomachine testCases := []struct { name string diff --git a/x/ibc/light-clients/06-solomachine/types/misbehaviour_test.go b/x/ibc/light-clients/06-solomachine/types/misbehaviour_test.go index 05ebfcabe5e5..d0c0293a7b94 100644 --- a/x/ibc/light-clients/06-solomachine/types/misbehaviour_test.go +++ b/x/ibc/light-clients/06-solomachine/types/misbehaviour_test.go @@ -18,6 +18,7 @@ func (suite *SoloMachineTestSuite) TestMisbehaviour() { func (suite *SoloMachineTestSuite) TestMisbehaviourValidateBasic() { // test singlesig and multisig public keys for _, solomachine := range []*ibctesting.Solomachine{suite.solomachine, suite.solomachineMulti} { + solomachine := solomachine testCases := []struct { name string diff --git a/x/ibc/light-clients/06-solomachine/types/proposal_handle_test.go b/x/ibc/light-clients/06-solomachine/types/proposal_handle_test.go index da5c815ecbc8..9b072d22ef36 100644 --- a/x/ibc/light-clients/06-solomachine/types/proposal_handle_test.go +++ b/x/ibc/light-clients/06-solomachine/types/proposal_handle_test.go @@ -12,6 +12,7 @@ func (suite *SoloMachineTestSuite) TestCheckProposedHeaderAndUpdateState() { // test singlesig and multisig public keys for _, solomachine := range []*ibctesting.Solomachine{suite.solomachine, suite.solomachineMulti} { + solomachine := solomachine testCases := []struct { name string From 9414e7d1aa10a9259062224693ea99dcdc330cfd Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Tue, 27 Dec 2022 18:38:56 +0700 Subject: [PATCH 30/98] modify readme.md --- README.md | 48 +++++++++++------------------------------------- 1 file changed, 11 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 39904e8d516a..39f14301d5ad 100644 --- a/README.md +++ b/README.md @@ -3,45 +3,19 @@ parent: order: false --> -
-

Cosmos SDK

-
- -![banner](docs/cosmos-sdk-image.jpg) - -
- +# This version of the SDK is deprecated +## Cosmos-SDK v0.42.x +This build of the cosmos-sdk has been updated for easier migrations: +* it uses iavl v0.19.4 with fast node on by default +* it's been linted so that if you encounter issues in your migration, those issues stand out when using a linter. +* it uses tendermint v0.34.24 + +**Please kindly note that this is unsupported software.** + +## Cosmos-SDK Propaganda The Cosmos-SDK is a framework for building blockchain applications in Golang. It is being used to build [`Gaia`](https://github.com/cosmos/gaia), the first implementation of the Cosmos Hub. @@ -49,7 +23,7 @@ It is being used to build [`Gaia`](https://github.com/cosmos/gaia), the first im **WARNING**: The SDK has mostly stabilized, but we are still making some breaking changes. -**Note**: Requires [Go 1.15+](https://golang.org/dl/) +**Note**: Requires [Go 1.18+](https://golang.org/dl/) ## Quick Start From e67c862ee71e5e46790604770db6384d64052e7f Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Tue, 27 Dec 2022 19:44:26 +0700 Subject: [PATCH 31/98] 373 linter issues remain --- .golangci.yml | 7 ++--- README.md | 2 +- baseapp/baseapp_test.go | 9 ++++--- client/config/config_test.go | 5 ++-- client/flags/flags.go | 4 +-- client/grpc/tmservice/service.go | 2 +- client/keys/list_test.go | 2 +- client/keys/show_test.go | 18 ++++++++----- codec/any_test.go | 2 +- codec/codec_common_test.go | 2 +- codec/types/any.go | 4 --- crypto/keyring/legacy.go | 1 - crypto/keys/ed25519/ed25519_test.go | 2 +- crypto/keys/multisig/multisig_test.go | 10 +++---- .../keys/secp256k1/secp256k1_internal_test.go | 2 +- crypto/ledger/encode_test.go | 7 +---- server/export_test.go | 2 +- server/start.go | 7 +++-- server/util.go | 7 +++-- server/util_test.go | 24 ++++++++--------- simapp/simd/cmd/testnet.go | 2 +- snapshots/helpers_test.go | 7 +++-- snapshots/store_test.go | 7 +++-- snapshots/util_test.go | 3 +-- store/cachekv/store.go | 5 +++- store/iavl/store_test.go | 4 +-- store/rootmulti/store_test.go | 9 +++---- store/types/utils_test.go | 2 +- testutil/ioutil.go | 7 +++-- testutil/ioutil_test.go | 6 ++--- types/address_test.go | 18 ++++++------- x/auth/ante/testutil_test.go | 3 +-- x/auth/legacy/legacytx/stdtx_test.go | 13 +++++----- x/bank/bench_test.go | 3 +-- x/bank/keeper/keeper_test.go | 8 +++--- x/distribution/simulation/operations_test.go | 7 +++-- x/ibc/core/02-client/keeper/client_test.go | 26 +++++++++---------- .../core/02-client/keeper/grpc_query_test.go | 1 - x/ibc/core/02-client/keeper/keeper_test.go | 4 +-- x/ibc/core/02-client/keeper/params_test.go | 2 +- x/ibc/core/02-client/keeper/proposal_test.go | 13 +++++----- .../06-solomachine/types/proof_test.go | 7 +++-- .../06-solomachine/types/solomachine_test.go | 5 ++-- x/staking/types/data_test.go | 3 --- 44 files changed, 137 insertions(+), 147 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 41bba262e2e6..789f07f210e9 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,7 +1,7 @@ run: tests: true timeout: 5m - concurrency: 4 + concurrency: 10 linters: disable-all: true @@ -10,19 +10,16 @@ linters: - depguard - dogsled - errcheck + - exportloopref - goconst - gocritic - gofumpt - - golint - gosec - gosimple - govet - ineffassign - - interfacer - misspell - nakedret - - prealloc - - scopelint - staticcheck - stylecheck - typecheck diff --git a/README.md b/README.md index 39f14301d5ad..59eb94b6e5f4 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ This build of the cosmos-sdk has been updated for easier migrations: * it uses iavl v0.19.4 with fast node on by default * it's been linted so that if you encounter issues in your migration, those issues stand out when using a linter. -* it uses tendermint v0.34.24 +* it uses tendermint v0.34.24 so that you don't need to concern yourself with the various changes needed to support the latest tendermint consensus. **Please kindly note that this is unsupported software.** diff --git a/baseapp/baseapp_test.go b/baseapp/baseapp_test.go index 2a286e383b3f..6c76370efa79 100644 --- a/baseapp/baseapp_test.go +++ b/baseapp/baseapp_test.go @@ -46,7 +46,10 @@ func (ps *paramStore) Set(_ sdk.Context, key []byte, value interface{}) { panic(err) } - ps.db.Set(key, bz) + err = ps.db.Set(key, bz) + if err != nil { + panic(err) + } } func (ps *paramStore) Has(_ sdk.Context, key []byte) bool { @@ -120,7 +123,7 @@ func setupBaseApp(t *testing.T, options ...func(*BaseApp)) *BaseApp { } // simple one store baseapp with data and snapshots. Each tx is 1 MB in size (uncompressed). -func setupBaseAppWithSnapshots(t *testing.T, blocks uint, blockTxs int, options ...func(*BaseApp)) (*BaseApp, func()) { +func setupBaseAppWithSnapshots(t *testing.T, blocks uint, blockTxs int, options ...func(*BaseApp)) (*BaseApp, func()) { //nolint:unparam codec := codec.NewLegacyAmino() registerTestCodec(codec) routerOpt := func(bapp *BaseApp) { @@ -1491,7 +1494,7 @@ func TestCustomRunTxPanicHandler(t *testing.T) { { tx := newTxCounter(0, 0) - require.PanicsWithValue(t, customPanicMsg, func() { app.Deliver(aminoTxEncoder(), tx) }) + require.PanicsWithValue(t, customPanicMsg, func() { app.Deliver(aminoTxEncoder(), tx) }) //nolint:errcheck } } diff --git a/client/config/config_test.go b/client/config/config_test.go index 49115aa543a5..2543a9a762bb 100644 --- a/client/config/config_test.go +++ b/client/config/config_test.go @@ -29,7 +29,7 @@ func initClientContext(t *testing.T, envVar string) (client.Context, func()) { WithHomeDir(home). WithViper("") - clientCtx.Viper.BindEnv(nodeEnv) + clientCtx.Viper.BindEnv(nodeEnv) //nolint:errcheck if envVar != "" { os.Setenv(nodeEnv, envVar) } @@ -57,7 +57,8 @@ func TestConfigCmd(t *testing.T) { b := bytes.NewBufferString("") cmd.SetOut(b) cmd.SetArgs([]string{"node"}) - cmd.Execute() + err = cmd.Execute() + require.NoError(t, err) out, err := io.ReadAll(b) require.NoError(t, err) require.Equal(t, string(out), testNode1+"\n") diff --git a/client/flags/flags.go b/client/flags/flags.go index e506e2ff7b80..548ded976f7f 100644 --- a/client/flags/flags.go +++ b/client/flags/flags.go @@ -86,7 +86,7 @@ func AddQueryFlagsToCmd(cmd *cobra.Command) { cmd.Flags().Int64(FlagHeight, 0, "Use a specific height to query state at (this can error if the node is pruning state)") cmd.Flags().StringP(tmcli.OutputFlag, "o", "text", "Output format (text|json)") - cmd.MarkFlagRequired(FlagChainID) // nolint: errcheck + cmd.MarkFlagRequired(FlagChainID) //nolint: errcheck cmd.SetErr(cmd.ErrOrStderr()) cmd.SetOut(cmd.OutOrStdout()) @@ -117,7 +117,7 @@ func AddTxFlagsToCmd(cmd *cobra.Command) { // --gas can accept integers and "auto" cmd.Flags().String(FlagGas, "", fmt.Sprintf("gas limit to set per-transaction; set to %q to calculate sufficient gas automatically (default %d)", GasFlagAuto, DefaultGasLimit)) - cmd.MarkFlagRequired(FlagChainID) + cmd.MarkFlagRequired(FlagChainID) //nolint:errcheck cmd.SetErr(cmd.ErrOrStderr()) cmd.SetOut(cmd.OutOrStdout()) diff --git a/client/grpc/tmservice/service.go b/client/grpc/tmservice/service.go index 114dcfe6e18e..59349004c1f4 100644 --- a/client/grpc/tmservice/service.go +++ b/client/grpc/tmservice/service.go @@ -225,5 +225,5 @@ func RegisterTendermintService( // RegisterGRPCGatewayRoutes mounts the tendermint service's GRPC-gateway routes on the // given Mux. func RegisterGRPCGatewayRoutes(clientConn gogogrpc.ClientConn, mux *runtime.ServeMux) { - RegisterServiceHandlerClient(context.Background(), mux, NewServiceClient(clientConn)) + RegisterServiceHandlerClient(context.Background(), mux, NewServiceClient(clientConn)) //nolint:errcheck } diff --git a/client/keys/list_test.go b/client/keys/list_test.go index a05127bfdf64..23d6f3d62da7 100644 --- a/client/keys/list_test.go +++ b/client/keys/list_test.go @@ -38,7 +38,7 @@ func Test_runListCmd(t *testing.T) { kb.Delete("something") //nolint:errcheck }) - type args struct { + type args struct { //nolint:unused,structcheck cmd *cobra.Command args []string } diff --git a/client/keys/show_test.go b/client/keys/show_test.go index c2013cc51d0d..091a0d867b4d 100644 --- a/client/keys/show_test.go +++ b/client/keys/show_test.go @@ -60,9 +60,12 @@ func TestShowCmdWithMultisigAccount(t *testing.T) { threshold := 2 t.Cleanup(func() { - kb.Delete(fakeKeyName1) - kb.Delete(fakeKeyName2) - kb.Delete(myMultiSig) + err = kb.Delete(fakeKeyName1) + require.NoError(t, err) + err = kb.Delete(fakeKeyName2) + require.NoError(t, err) + err = kb.Delete(myMultiSig) + require.NoError(t, err) }) path := hd.NewFundraiserParams(1, sdk.CoinType, 0).String() @@ -98,7 +101,8 @@ func TestShowCmdWithMultisigAccount(t *testing.T) { out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, args) require.NoError(t, err) - KeysCdc.Amino.UnmarshalJSON(out.Bytes(), &res) + err = KeysCdc.Amino.UnmarshalJSON(out.Bytes(), &res) + require.NoError(t, err) require.Equal(t, res.Threshold, uint(threshold)) require.Len(t, res.PubKeys, 2) require.Equal(t, strings.TrimSpace(out.String()), string(multiSigInfoBytes)) @@ -128,8 +132,10 @@ func Test_runShowCmd(t *testing.T) { fakeKeyName2 := "runShowCmd_Key2" t.Cleanup(func() { - kb.Delete("runShowCmd_Key1") - kb.Delete("runShowCmd_Key2") + err = kb.Delete("runShowCmd_Key1") + require.NoError(t, err) + err = kb.Delete("runShowCmd_Key2") + require.NoError(t, err) }) path := hd.NewFundraiserParams(1, sdk.CoinType, 0).String() diff --git a/codec/any_test.go b/codec/any_test.go index 16e1b7b7788d..a1022221b3c8 100644 --- a/codec/any_test.go +++ b/codec/any_test.go @@ -49,7 +49,7 @@ func TestMarshalAny(t *testing.T) { require.Equal(t, kitty, animal) // nil should fail - registry = NewTestInterfaceRegistry() + _ = NewTestInterfaceRegistry() err = cdc.UnmarshalInterface(bz, nil) require.Error(t, err) } diff --git a/codec/codec_common_test.go b/codec/codec_common_test.go index b2624b444ce6..94c8df541319 100644 --- a/codec/codec_common_test.go +++ b/codec/codec_common_test.go @@ -28,7 +28,7 @@ func testInterfaceMarshaling(require *require.Assertions, cdc interfaceMarshaler var animal testdata.Animal if isAminoBin { require.PanicsWithValue("Unmarshal expects a pointer", func() { - cdc.unmarshal(bz, animal) + cdc.unmarshal(bz, animal) //nolint:errcheck }) } else { err = cdc.unmarshal(bz, animal) diff --git a/codec/types/any.go b/codec/types/any.go index e83da5344493..0da5e0fd1861 100644 --- a/codec/types/any.go +++ b/codec/types/any.go @@ -35,18 +35,14 @@ type Any struct { // Schemes other than `http`, `https` (or the empty scheme) might be // used with implementation specific semantics. - //nolint TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"` // Must be a valid serialized protocol buffer of the above specified type. Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - //nolint XXX_NoUnkeyedLiteral struct{} `json:"-"` - //nolint XXX_unrecognized []byte `json:"-"` - //nolint XXX_sizecache int32 `json:"-"` cachedValue interface{} diff --git a/crypto/keyring/legacy.go b/crypto/keyring/legacy.go index 26c027cf7311..a536cabb0468 100644 --- a/crypto/keyring/legacy.go +++ b/crypto/keyring/legacy.go @@ -40,7 +40,6 @@ func NewLegacy(name, dir string, opts ...KeybaseOption) (LegacyKeybase, error) { var _ LegacyKeybase = dbKeybase{} -// nolint // dbKeybase combines encryption and storage implementation to provide a // full-featured key manager. // diff --git a/crypto/keys/ed25519/ed25519_test.go b/crypto/keys/ed25519/ed25519_test.go index d0d195e7875a..4c7be12eadf0 100644 --- a/crypto/keys/ed25519/ed25519_test.go +++ b/crypto/keys/ed25519/ed25519_test.go @@ -29,7 +29,7 @@ func TestSignAndValidateEd25519(t *testing.T) { // ---- // Test cross packages verification - stdPrivKey := stded25519.PrivateKey(privKey.Key) + stdPrivKey := privKey.Key stdPubKey := stdPrivKey.Public().(stded25519.PublicKey) assert.Equal(t, stdPubKey, pubKey.(*ed25519.PubKey).Key) diff --git a/crypto/keys/multisig/multisig_test.go b/crypto/keys/multisig/multisig_test.go index 6bc59a624d0a..bf48a038b4eb 100644 --- a/crypto/keys/multisig/multisig_test.go +++ b/crypto/keys/multisig/multisig_test.go @@ -93,7 +93,7 @@ func TestVerifyMultisignature(t *testing.T) { sig *signing.MultiSignatureData ) msg := []byte{1, 2, 3, 4} - signBytesFn := func(mode signing.SignMode) ([]byte, error) { return msg, nil } + signBytesFn := func(mode signing.SignMode) ([]byte, error) { return msg, nil } //nolint:unparam testCases := []struct { msg string @@ -180,7 +180,7 @@ func TestVerifyMultisignature(t *testing.T) { sig = multisig.NewMultisig(5) require.Error(t, pk.VerifyMultisignature(signBytesFn, sig)) - multisig.AddSignatureFromPubKey(sig, sigs[0], pubKeys[0], pubKeys) + multisig.AddSignatureFromPubKey(sig, sigs[0], pubKeys[0], pubKeys) //nolint:errcheck // Add second signature manually sig.Signatures = append(sig.Signatures, sigs[0]) }, @@ -193,8 +193,8 @@ func TestVerifyMultisignature(t *testing.T) { _, sigs := generatePubKeysAndSignatures(2, msg) pk = kmultisig.NewLegacyAminoPubKey(2, pubKeys) sig = multisig.NewMultisig(2) - multisig.AddSignatureFromPubKey(sig, sigs[0], pubKeys[0], pubKeys) - multisig.AddSignatureFromPubKey(sig, sigs[1], pubKeys[1], pubKeys) + multisig.AddSignatureFromPubKey(sig, sigs[0], pubKeys[0], pubKeys) //nolint:errcheck + multisig.AddSignatureFromPubKey(sig, sigs[1], pubKeys[1], pubKeys) //nolint:errcheck }, false, }, @@ -248,7 +248,7 @@ func TestMultiSigMigration(t *testing.T) { require.NoError(t, multisig.AddSignatureFromPubKey(multisignature, sigs[0], pkSet[0], pkSet)) // create a StdSignature for msg, and convert it to sigV2 - sig := legacytx.StdSignature{PubKey: pkSet[1], Signature: sigs[1].(*signing.SingleSignatureData).Signature} + sig := legacytx.StdSignature{PubKey: pkSet[1], Signature: sigs[1].(*signing.SingleSignatureData).Signature} //nolint:staticcheck sigV2, err := legacytx.StdSignatureToSignatureV2(cdc, sig) require.NoError(t, multisig.AddSignatureV2(multisignature, sigV2, pkSet)) diff --git a/crypto/keys/secp256k1/secp256k1_internal_test.go b/crypto/keys/secp256k1/secp256k1_internal_test.go index b3f6f3e82f83..d28602fd148b 100644 --- a/crypto/keys/secp256k1/secp256k1_internal_test.go +++ b/crypto/keys/secp256k1/secp256k1_internal_test.go @@ -16,7 +16,7 @@ func Test_genPrivKey(t *testing.T) { copy(onePadded[32-len(oneB):32], oneB) t.Logf("one padded: %v, len=%v", onePadded, len(onePadded)) - validOne := append(empty, onePadded...) + validOne := append(empty, onePadded...) //nolint:gocritic tests := []struct { name string notSoRand []byte diff --git a/crypto/ledger/encode_test.go b/crypto/ledger/encode_test.go index c3c7482a47de..779cfe28c06b 100644 --- a/crypto/ledger/encode_test.go +++ b/crypto/ledger/encode_test.go @@ -9,10 +9,6 @@ import ( cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" ) -type byter interface { - Bytes() []byte -} - func checkAminoJSON(t *testing.T, src interface{}, dst interface{}, isNil bool) { // Marshal to JSON bytes. js, err := cdc.MarshalJSON(src) @@ -28,9 +24,8 @@ func checkAminoJSON(t *testing.T, src interface{}, dst interface{}, isNil bool) require.Nil(t, err, "%+v", err) } -// nolint: govet func ExamplePrintRegisteredTypes() { - cdc.PrintTypes(os.Stdout) + cdc.PrintTypes(os.Stdout) //nolint:errcheck // | Type | Name | Prefix | Length | Notes | // | ---- | ---- | ------ | ----- | ------ | // | PrivKeyLedgerSecp256k1 | tendermint/PrivKeyLedgerSecp256k1 | 0x10CAB393 | variable | | diff --git a/server/export_test.go b/server/export_test.go index bf18c59c8f71..3b59a3b7b5d0 100644 --- a/server/export_test.go +++ b/server/export_test.go @@ -107,7 +107,7 @@ func TestExportCmd_Height(t *testing.T) { output := &bytes.Buffer{} cmd.SetOut(output) - args := append(tc.flags, fmt.Sprintf("--%s=%s", flags.FlagHome, tempDir)) + args := append(tc.flags, fmt.Sprintf("--%s=%s", flags.FlagHome, tempDir)) //nolint:gocritic cmd.SetArgs(args) require.NoError(t, cmd.ExecuteContext(ctx)) diff --git a/server/start.go b/server/start.go index 0763996d89b0..c06e07aa89c7 100644 --- a/server/start.go +++ b/server/start.go @@ -96,9 +96,12 @@ which accepts a path for the resulting pprof file. // Bind flags to the Context's Viper so the app construction can set // options accordingly. - serverCtx.Viper.BindPFlags(cmd.Flags()) + err := serverCtx.Viper.BindPFlags(cmd.Flags()) + if err != nil { + return err + } - _, err := GetPruningOptionsFromFlags(serverCtx.Viper) + _, err = GetPruningOptionsFromFlags(serverCtx.Viper) return err }, RunE: func(cmd *cobra.Command, _ []string) error { diff --git a/server/util.go b/server/util.go index 923f260062c3..c2838d9bf6a4 100644 --- a/server/util.go +++ b/server/util.go @@ -66,7 +66,10 @@ func NewContext(v *viper.Viper, config *tmcfg.Config, logger tmlog.Logger) *Cont func bindFlags(basename string, cmd *cobra.Command, v *viper.Viper) (err error) { defer func() { - recover() + err := recover() + if err != nil { + panic(err) + } }() cmd.Flags().VisitAll(func(f *pflag.Flag) { @@ -92,7 +95,7 @@ func bindFlags(basename string, cmd *cobra.Command, v *viper.Viper) (err error) } }) - return + return nil } // InterceptConfigsPreRunHandler performs a pre-run function for the root daemon diff --git a/server/util_test.go b/server/util_test.go index e20f5d667753..3a79b270fca7 100644 --- a/server/util_test.go +++ b/server/util_test.go @@ -15,7 +15,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" ) -var CancelledInPreRun = errors.New("Canelled in prerun") +var ErrCancelledInPreRun = errors.New("canceled in prerun") // Used in each test to run the function under test via Cobra // but to always halt the command @@ -25,7 +25,7 @@ func preRunETestImpl(cmd *cobra.Command, args []string) error { return err } - return CancelledInPreRun + return ErrCancelledInPreRun } func TestInterceptConfigsPreRunHandlerCreatesConfigFilesWhenMissing(t *testing.T) { @@ -39,7 +39,7 @@ func TestInterceptConfigsPreRunHandlerCreatesConfigFilesWhenMissing(t *testing.T serverCtx := &Context{} ctx := context.WithValue(context.Background(), ServerContextKey, serverCtx) - if err := cmd.ExecuteContext(ctx); err != CancelledInPreRun { + if err := cmd.ExecuteContext(ctx); err != ErrCancelledInPreRun { t.Fatalf("function failed with [%T] %v", err, err) } @@ -116,7 +116,7 @@ func TestInterceptConfigsPreRunHandlerReadsConfigToml(t *testing.T) { serverCtx := &Context{} ctx := context.WithValue(context.Background(), ServerContextKey, serverCtx) - if err := cmd.ExecuteContext(ctx); err != CancelledInPreRun { + if err := cmd.ExecuteContext(ctx); err != ErrCancelledInPreRun { t.Fatalf("function failed with [%T] %v", err, err) } @@ -153,7 +153,7 @@ func TestInterceptConfigsPreRunHandlerReadsAppToml(t *testing.T) { serverCtx := &Context{} ctx := context.WithValue(context.Background(), ServerContextKey, serverCtx) - if err := cmd.ExecuteContext(ctx); err != CancelledInPreRun { + if err := cmd.ExecuteContext(ctx); err != ErrCancelledInPreRun { t.Fatalf("function failed with [%T] %v", err, err) } @@ -181,7 +181,7 @@ func TestInterceptConfigsPreRunHandlerReadsFlags(t *testing.T) { serverCtx := &Context{} ctx := context.WithValue(context.Background(), ServerContextKey, serverCtx) - if err := cmd.ExecuteContext(ctx); err != CancelledInPreRun { + if err := cmd.ExecuteContext(ctx); err != ErrCancelledInPreRun { t.Fatalf("function failed with [%T] %v", err, err) } @@ -216,7 +216,7 @@ func TestInterceptConfigsPreRunHandlerReadsEnvVars(t *testing.T) { serverCtx := &Context{} ctx := context.WithValue(context.Background(), ServerContextKey, serverCtx) - if err := cmd.ExecuteContext(ctx); err != CancelledInPreRun { + if err := cmd.ExecuteContext(ctx); err != ErrCancelledInPreRun { t.Fatalf("function failed with [%T] %v", err, err) } @@ -320,7 +320,7 @@ func TestInterceptConfigsPreRunHandlerPrecedenceFlag(t *testing.T) { serverCtx := &Context{} ctx := context.WithValue(context.Background(), ServerContextKey, serverCtx) - if err := testCommon.cmd.ExecuteContext(ctx); err != CancelledInPreRun { + if err := testCommon.cmd.ExecuteContext(ctx); err != ErrCancelledInPreRun { t.Fatalf("function failed with [%T] %v", err, err) } @@ -336,7 +336,7 @@ func TestInterceptConfigsPreRunHandlerPrecedenceEnvVar(t *testing.T) { serverCtx := &Context{} ctx := context.WithValue(context.Background(), ServerContextKey, serverCtx) - if err := testCommon.cmd.ExecuteContext(ctx); err != CancelledInPreRun { + if err := testCommon.cmd.ExecuteContext(ctx); err != ErrCancelledInPreRun { t.Fatalf("function failed with [%T] %v", err, err) } @@ -352,7 +352,7 @@ func TestInterceptConfigsPreRunHandlerPrecedenceConfigFile(t *testing.T) { serverCtx := &Context{} ctx := context.WithValue(context.Background(), ServerContextKey, serverCtx) - if err := testCommon.cmd.ExecuteContext(ctx); err != CancelledInPreRun { + if err := testCommon.cmd.ExecuteContext(ctx); err != ErrCancelledInPreRun { t.Fatalf("function failed with [%T] %v", err, err) } @@ -368,11 +368,11 @@ func TestInterceptConfigsPreRunHandlerPrecedenceConfigDefault(t *testing.T) { serverCtx := &Context{} ctx := context.WithValue(context.Background(), ServerContextKey, serverCtx) - if err := testCommon.cmd.ExecuteContext(ctx); err != CancelledInPreRun { + if err := testCommon.cmd.ExecuteContext(ctx); err != ErrCancelledInPreRun { t.Fatalf("function failed with [%T] %v", err, err) } - if "tcp://127.0.0.1:26657" != serverCtx.Config.RPC.ListenAddress { + if "tcp://127.0.0.1:26657" != serverCtx.Config.RPC.ListenAddress { //nolint:stylecheck t.Error("RPCListenAddress is not using default") } } diff --git a/simapp/simd/cmd/testnet.go b/simapp/simd/cmd/testnet.go index a5c0ecc36e1a..d08ee72f38ad 100644 --- a/simapp/simd/cmd/testnet.go +++ b/simapp/simd/cmd/testnet.go @@ -383,7 +383,7 @@ func calculateIP(ip string, i int) (string, error) { } func writeFile(name string, dir string, contents []byte) error { - writePath := filepath.Join(dir) + writePath := filepath.Join(dir) //nolint:gocritic file := filepath.Join(writePath, name) err := tmos.EnsureDir(writePath, 0o755) diff --git a/snapshots/helpers_test.go b/snapshots/helpers_test.go index eb900c11074a..cdd319d9b13f 100644 --- a/snapshots/helpers_test.go +++ b/snapshots/helpers_test.go @@ -5,7 +5,6 @@ import ( "crypto/sha256" "errors" "io" - "io/ioutil" "os" "testing" "time" @@ -39,7 +38,7 @@ func hash(chunks [][]byte) []byte { func makeChunks(chunks [][]byte) <-chan io.ReadCloser { ch := make(chan io.ReadCloser, len(chunks)) for _, chunk := range chunks { - ch <- ioutil.NopCloser(bytes.NewReader(chunk)) + ch <- io.NopCloser(bytes.NewReader(chunk)) } close(ch) return ch @@ -92,7 +91,7 @@ func (m *mockSnapshotter) Snapshot(height uint64, format uint32) (<-chan io.Read } ch := make(chan io.ReadCloser, len(m.chunks)) for _, chunk := range m.chunks { - ch <- ioutil.NopCloser(bytes.NewReader(chunk)) + ch <- io.NopCloser(bytes.NewReader(chunk)) } close(ch) return ch, nil @@ -138,7 +137,7 @@ func (m *hungSnapshotter) Close() { func (m *hungSnapshotter) Snapshot(height uint64, format uint32) (<-chan io.ReadCloser, error) { <-m.ch ch := make(chan io.ReadCloser, 1) - ch <- ioutil.NopCloser(bytes.NewReader([]byte{})) + ch <- io.NopCloser(bytes.NewReader([]byte{})) return ch, nil } diff --git a/snapshots/store_test.go b/snapshots/store_test.go index be1a34497e5b..20cfa392d8af 100644 --- a/snapshots/store_test.go +++ b/snapshots/store_test.go @@ -4,7 +4,6 @@ import ( "bytes" "errors" "io" - "io/ioutil" "os" "path/filepath" "testing" @@ -86,7 +85,7 @@ func TestStore_Delete(t *testing.T) { // Deleting a snapshot being saved should error ch := make(chan io.ReadCloser) - go store.Save(9, 1, ch) + go store.Save(9, 1, ch) //nolint:errcheck time.Sleep(10 * time.Millisecond) err = store.Delete(9, 1) @@ -320,7 +319,7 @@ func TestStore_Save(t *testing.T) { ch := make(chan io.ReadCloser, 2) ch <- pr - ch <- ioutil.NopCloser(bytes.NewBuffer([]byte{0xff})) + ch <- io.NopCloser(bytes.NewBuffer([]byte{0xff})) close(ch) _, err = store.Save(6, 1, ch) @@ -331,7 +330,7 @@ func TestStore_Save(t *testing.T) { // Saving a snapshot should error if a snapshot is already in progress for the same height, // regardless of format. However, a different height should succeed. ch = make(chan io.ReadCloser) - go store.Save(7, 1, ch) + go store.Save(7, 1, ch) //nolint:errcheck time.Sleep(10 * time.Millisecond) _, err = store.Save(7, 2, makeChunks(nil)) require.Error(t, err) diff --git a/snapshots/util_test.go b/snapshots/util_test.go index 42b17779c2a1..6935c082ad75 100644 --- a/snapshots/util_test.go +++ b/snapshots/util_test.go @@ -4,7 +4,6 @@ import ( "bytes" "errors" "io" - "io/ioutil" "testing" "github.com/stretchr/testify/assert" @@ -144,7 +143,7 @@ func TestChunkReader(t *testing.T) { // Closing the reader should close the writer pr, pw = io.Pipe() pch = make(chan io.ReadCloser, 2) - pch <- ioutil.NopCloser(bytes.NewBuffer([]byte{1, 2, 3})) + pch <- io.NopCloser(bytes.NewBuffer([]byte{1, 2, 3})) pch <- pr close(pch) diff --git a/store/cachekv/store.go b/store/cachekv/store.go index 2544e18c2ae9..cdf5f8829bbf 100644 --- a/store/cachekv/store.go +++ b/store/cachekv/store.go @@ -246,7 +246,10 @@ func (store *Store) clearUnsortedCacheSubset(unsorted []*kv.Pair) { if item.Value == nil { // deleted element, tracked by store.deleted // setting arbitrary value - store.sortedCache.Set(item.Key, []byte{}) + err := store.sortedCache.Set(item.Key, []byte{}) + if err != nil { + panic(err) + } continue } err := store.sortedCache.Set(item.Key, item.Value) diff --git a/store/iavl/store_test.go b/store/iavl/store_test.go index 46268d921986..49ac5035e07a 100644 --- a/store/iavl/store_test.go +++ b/store/iavl/store_test.go @@ -108,12 +108,12 @@ func TestLoadStore(t *testing.T) { func TestGetImmutable(t *testing.T) { db := dbm.NewMemDB() - tree, cID := newAlohaTree(t, db) + tree, _ := newAlohaTree(t, db) store := UnsafeNewStore(tree) require.True(t, tree.Set([]byte("hello"), []byte("adios"))) hash, ver, err := tree.SaveVersion() - cID = types.CommitID{Version: ver, Hash: hash} + cID := types.CommitID{Version: ver, Hash: hash} require.Nil(t, err) _, err = store.GetImmutable(cID.Version + 1) diff --git a/store/rootmulti/store_test.go b/store/rootmulti/store_test.go index 81348022c0f8..e1812152b8ca 100644 --- a/store/rootmulti/store_test.go +++ b/store/rootmulti/store_test.go @@ -7,7 +7,6 @@ import ( "errors" "fmt" "io" - "io/ioutil" "math/rand" "testing" @@ -404,7 +403,7 @@ func TestMultiStoreQuery(t *testing.T) { k2, v2 := []byte("water"), []byte("flows") // v3 := []byte("is cold") - cid := multi.Commit() + _ = multi.Commit() // Make sure we can get by name. garbage := multi.getStoreByName("bad-name") @@ -419,7 +418,7 @@ func TestMultiStoreQuery(t *testing.T) { store2.Set(k2, v2) // Commit the multistore. - cid = multi.Commit() + cid := multi.Commit() ver := cid.Version // Reload multistore from database @@ -709,7 +708,7 @@ func benchmarkMultistoreSnapshot(b *testing.B, stores uint8, storeKeys uint64) { chunks, err := source.Snapshot(uint64(version), snapshottypes.CurrentFormat) require.NoError(b, err) for reader := range chunks { - _, err := io.Copy(ioutil.Discard, reader) + _, err := io.Copy(io.Discard, reader) require.NoError(b, err) err = reader.Close() require.NoError(b, err) @@ -764,7 +763,7 @@ func newMultiStoreWithMixedMounts(db dbm.DB) *Store { store.MountStoreWithDB(types.NewKVStoreKey("iavl2"), types.StoreTypeIAVL, nil) store.MountStoreWithDB(types.NewKVStoreKey("iavl3"), types.StoreTypeIAVL, nil) store.MountStoreWithDB(types.NewTransientStoreKey("trans1"), types.StoreTypeTransient, nil) - store.LoadLatestVersion() + store.LoadLatestVersion() //nolint:errcheck return store } diff --git a/store/types/utils_test.go b/store/types/utils_test.go index 32064d7e1821..2d24e38fd011 100644 --- a/store/types/utils_test.go +++ b/store/types/utils_test.go @@ -62,7 +62,7 @@ func TestDiffKVStores(t *testing.T) { // Same keys, different value. Comparisons will be nil as prefixes are skipped. prefix := []byte("prefix:") - k1Prefixed := append(prefix, k1...) + k1Prefixed := append(prefix, k1...) //nolint:gocritic store1.Set(k1Prefixed, v1) store2.Set(k1Prefixed, v2) kvAs, kvBs = types.DiffKVStores(store1, store2, [][]byte{prefix}) diff --git a/testutil/ioutil.go b/testutil/ioutil.go index 6a7e4fff9cee..6ff54d24ecb0 100644 --- a/testutil/ioutil.go +++ b/testutil/ioutil.go @@ -3,7 +3,6 @@ package testutil import ( "bytes" "io" - "io/ioutil" "os" "strings" "testing" @@ -45,8 +44,8 @@ func ApplyMockIODiscardOutErr(c *cobra.Command) BufferReader { mockIn := strings.NewReader("") c.SetIn(mockIn) - c.SetOut(ioutil.Discard) - c.SetErr(ioutil.Discard) + c.SetOut(io.Discard) + c.SetErr(io.Discard) return mockIn } @@ -68,7 +67,7 @@ func WriteToNewTempFile(t testing.TB, s string) *os.File { func TempFile(t testing.TB) *os.File { t.Helper() - fp, err := ioutil.TempFile(t.TempDir(), "") + fp, err := os.CreateTemp(t.TempDir(), "") require.NoError(t, err) return fp diff --git a/testutil/ioutil_test.go b/testutil/ioutil_test.go index 9f2d414c65c7..03250fbab6a3 100644 --- a/testutil/ioutil_test.go +++ b/testutil/ioutil_test.go @@ -1,7 +1,7 @@ package testutil_test import ( - "io/ioutil" + "io" "os" "testing" @@ -40,6 +40,6 @@ func TestApplyMockIODiscardOutErr(t *testing.T) { testutil.ApplyMockIODiscardOutErr(cmd) require.NotEqual(t, cmd.InOrStdin(), oldStdin) - require.Equal(t, cmd.OutOrStdout(), ioutil.Discard) - require.Equal(t, cmd.ErrOrStderr(), ioutil.Discard) + require.Equal(t, cmd.OutOrStdout(), io.Discard) + require.Equal(t, cmd.ErrOrStderr(), io.Discard) } diff --git a/types/address_test.go b/types/address_test.go index 3af871e7caa3..5d274c9d4326 100644 --- a/types/address_test.go +++ b/types/address_test.go @@ -470,25 +470,25 @@ func (s *addressTestSuite) TestAddressTypesEquals() { valAddr2 := types.ValAddress(addr2) // equality - s.Require().True(accAddr1.Equals(accAddr1)) - s.Require().True(consAddr1.Equals(consAddr1)) - s.Require().True(valAddr1.Equals(valAddr1)) + s.Require().True(accAddr1.Equals(accAddr1)) //nolint:gocritic + s.Require().True(consAddr1.Equals(consAddr1)) //nolint:gocritic + s.Require().True(valAddr1.Equals(valAddr1)) //nolint:gocritic // emptiness - s.Require().True(types.AccAddress{}.Equals(types.AccAddress{})) + s.Require().True(types.AccAddress{}.Equals(types.AccAddress{})) //nolint:gocritic s.Require().True(types.AccAddress{}.Equals(types.AccAddress(nil))) s.Require().True(types.AccAddress(nil).Equals(types.AccAddress{})) - s.Require().True(types.AccAddress(nil).Equals(types.AccAddress(nil))) + s.Require().True(types.AccAddress(nil).Equals(types.AccAddress(nil))) //nolint:gocritic - s.Require().True(types.ConsAddress{}.Equals(types.ConsAddress{})) + s.Require().True(types.ConsAddress{}.Equals(types.ConsAddress{})) //nolint:gocritic s.Require().True(types.ConsAddress{}.Equals(types.ConsAddress(nil))) s.Require().True(types.ConsAddress(nil).Equals(types.ConsAddress{})) - s.Require().True(types.ConsAddress(nil).Equals(types.ConsAddress(nil))) + s.Require().True(types.ConsAddress(nil).Equals(types.ConsAddress(nil))) //nolint:gocritic - s.Require().True(types.ValAddress{}.Equals(types.ValAddress{})) + s.Require().True(types.ValAddress{}.Equals(types.ValAddress{})) //nolint:gocritic s.Require().True(types.ValAddress{}.Equals(types.ValAddress(nil))) s.Require().True(types.ValAddress(nil).Equals(types.ValAddress{})) - s.Require().True(types.ValAddress(nil).Equals(types.ValAddress(nil))) + s.Require().True(types.ValAddress(nil).Equals(types.ValAddress(nil))) //nolint:gocritic s.Require().False(accAddr1.Equals(accAddr2)) s.Require().Equal(accAddr1.Equals(accAddr2), accAddr2.Equals(accAddr1)) diff --git a/x/auth/ante/testutil_test.go b/x/auth/ante/testutil_test.go index 5a1cfc4ec44c..2d9326524857 100644 --- a/x/auth/ante/testutil_test.go +++ b/x/auth/ante/testutil_test.go @@ -18,7 +18,6 @@ import ( "github.com/cosmos/cosmos-sdk/x/auth/ante" xauthsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" "github.com/cosmos/cosmos-sdk/x/auth/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" ) // TestAccount represents an account used in the tests in x/auth/ante. @@ -42,7 +41,7 @@ type AnteTestSuite struct { func createTestApp(isCheckTx bool) (*simapp.SimApp, sdk.Context) { app := simapp.Setup(isCheckTx) ctx := app.BaseApp.NewContext(isCheckTx, tmproto.Header{}) - app.AccountKeeper.SetParams(ctx, authtypes.DefaultParams()) + app.AccountKeeper.SetParams(ctx, types.DefaultParams()) return app, ctx } diff --git a/x/auth/legacy/legacytx/stdtx_test.go b/x/auth/legacy/legacytx/stdtx_test.go index 9a7a15d47fd9..f1c887d61c72 100644 --- a/x/auth/legacy/legacytx/stdtx_test.go +++ b/x/auth/legacy/legacytx/stdtx_test.go @@ -13,8 +13,7 @@ import ( cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" kmultisig "github.com/cosmos/cosmos-sdk/crypto/keys/multisig" - "github.com/cosmos/cosmos-sdk/crypto/types" - cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + types "github.com/cosmos/cosmos-sdk/crypto/types" "github.com/cosmos/cosmos-sdk/testutil/testdata" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -39,7 +38,7 @@ func NewTestStdFee() StdFee { } // Deprecated, use TxBuilder. -func NewTestTx(ctx sdk.Context, msgs []sdk.Msg, privs []cryptotypes.PrivKey, accNums []uint64, seqs []uint64, timeout uint64, fee StdFee) sdk.Tx { +func NewTestTx(ctx sdk.Context, msgs []sdk.Msg, privs []types.PrivKey, accNums []uint64, seqs []uint64, timeout uint64, fee StdFee) sdk.Tx { sigs := make([]StdSignature, len(privs)) for i, priv := range privs { signBytes := StdSignBytes(ctx.ChainID(), accNums[i], seqs[i], timeout, fee, msgs, "") @@ -126,7 +125,7 @@ func TestTxValidateBasic(t *testing.T) { require.Equal(t, sdkerrors.ErrInsufficientFee.ABCICode(), code) // require to fail validation when no signatures exist - privs, accNums, seqs := []cryptotypes.PrivKey{}, []uint64{}, []uint64{} + privs, accNums, seqs := []types.PrivKey{}, []uint64{}, []uint64{} tx = NewTestTx(ctx, msgs, privs, accNums, seqs, 0, fee) err = tx.ValidateBasic() @@ -135,7 +134,7 @@ func TestTxValidateBasic(t *testing.T) { require.Equal(t, sdkerrors.ErrNoSignatures.ABCICode(), code) // require to fail validation when signatures do not match expected signers - privs, accNums, seqs = []cryptotypes.PrivKey{priv1}, []uint64{0, 1}, []uint64{0, 0} + privs, accNums, seqs = []types.PrivKey{priv1}, []uint64{0, 1}, []uint64{0, 0} tx = NewTestTx(ctx, msgs, privs, accNums, seqs, 0, fee) err = tx.ValidateBasic() @@ -154,7 +153,7 @@ func TestTxValidateBasic(t *testing.T) { require.Equal(t, sdkerrors.ErrInvalidRequest.ABCICode(), code) // require to pass when above criteria are matched - privs, accNums, seqs = []cryptotypes.PrivKey{priv1, priv2}, []uint64{0, 1}, []uint64{0, 0} + privs, accNums, seqs = []types.PrivKey{priv1, priv2}, []uint64{0, 1}, []uint64{0, 0} tx = NewTestTx(ctx, msgs, privs, accNums, seqs, 0, fee) err = tx.ValidateBasic() @@ -231,7 +230,7 @@ func TestSignatureV2Conversions(t *testing.T) { // multisigs _, pubKey2, _ := testdata.KeyTestPubAddr() - multiPK := kmultisig.NewLegacyAminoPubKey(1, []cryptotypes.PubKey{ + multiPK := kmultisig.NewLegacyAminoPubKey(1, []types.PubKey{ pubKey, pubKey2, }) dummy2 := []byte("dummySig2") diff --git a/x/bank/bench_test.go b/x/bank/bench_test.go index 529911943498..0cbe903b8ae4 100644 --- a/x/bank/bench_test.go +++ b/x/bank/bench_test.go @@ -10,7 +10,6 @@ import ( "github.com/cosmos/cosmos-sdk/simapp" simappparams "github.com/cosmos/cosmos-sdk/simapp/params" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/auth/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -24,7 +23,7 @@ func BenchmarkOneBankSendTxPerBlock(b *testing.B) { } // construct genesis state - genAccs := []types.GenesisAccount{&acc} + genAccs := []authtypes.GenesisAccount{&acc} benchmarkApp := simapp.SetupWithGenesisAccounts(genAccs) ctx := benchmarkApp.BaseApp.NewContext(false, tmproto.Header{}) diff --git a/x/bank/keeper/keeper_test.go b/x/bank/keeper/keeper_test.go index 39d52393678b..2cf622d5d866 100644 --- a/x/bank/keeper/keeper_test.go +++ b/x/bank/keeper/keeper_test.go @@ -47,7 +47,7 @@ func newBarCoin(amt int64) sdk.Coin { return sdk.NewInt64Coin(barDenom, amt) } -// nolint: interfacer +//nolint: interfacer func getCoinsByName(ctx sdk.Context, bk keeper.Keeper, ak types.AccountKeeper, moduleName string) sdk.Coins { moduleAddress := ak.GetModuleAddress(moduleName) macc := ak.GetAccount(ctx, moduleAddress) @@ -1054,9 +1054,9 @@ func (suite *IntegrationTestSuite) getTestMetadata() []types.Metadata { { Description: "The native staking token of the Cosmos Hub.", DenomUnits: []*types.DenomUnit{ - {"uatom", uint32(0), []string{"microatom"}}, - {"matom", uint32(3), []string{"milliatom"}}, - {"atom", uint32(6), nil}, + {Denom: "uatom", Exponent: uint32(0), Aliases: []string{"microatom"}}, + {Denom: "matom", Exponent: uint32(3), Aliases: []string{"milliatom"}}, + {Denom: "atom", Exponent: uint32(6), Aliases: nil}, }, Base: "uatom", Display: "atom", diff --git a/x/distribution/simulation/operations_test.go b/x/distribution/simulation/operations_test.go index 727501d0eec5..3292017ffc15 100644 --- a/x/distribution/simulation/operations_test.go +++ b/x/distribution/simulation/operations_test.go @@ -14,7 +14,6 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/distribution/simulation" "github.com/cosmos/cosmos-sdk/x/distribution/types" - distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -99,7 +98,7 @@ func (suite *SimTestSuite) TestSimulateMsgWithdrawDelegatorReward() { delegator := accounts[1] delegation := stakingtypes.NewDelegation(delegator.Address, validator0.GetOperator(), issuedShares) suite.app.StakingKeeper.SetDelegation(suite.ctx, delegation) - suite.app.DistrKeeper.SetDelegatorStartingInfo(suite.ctx, validator0.GetOperator(), delegator.Address, distrtypes.NewDelegatorStartingInfo(2, sdk.OneDec(), 200)) + suite.app.DistrKeeper.SetDelegatorStartingInfo(suite.ctx, validator0.GetOperator(), delegator.Address, types.NewDelegatorStartingInfo(2, sdk.OneDec(), 200)) suite.setupValidatorRewards(validator0.GetOperator()) @@ -261,10 +260,10 @@ func (suite *SimTestSuite) getTestingValidator(accounts []simtypes.Account, comm func (suite *SimTestSuite) setupValidatorRewards(valAddress sdk.ValAddress) { decCoins := sdk.DecCoins{sdk.NewDecCoinFromDec(sdk.DefaultBondDenom, sdk.OneDec())} - historicalRewards := distrtypes.NewValidatorHistoricalRewards(decCoins, 2) + historicalRewards := types.NewValidatorHistoricalRewards(decCoins, 2) suite.app.DistrKeeper.SetValidatorHistoricalRewards(suite.ctx, valAddress, 2, historicalRewards) // setup current revards - currentRewards := distrtypes.NewValidatorCurrentRewards(decCoins, 3) + currentRewards := types.NewValidatorCurrentRewards(decCoins, 3) suite.app.DistrKeeper.SetValidatorCurrentRewards(suite.ctx, valAddress, currentRewards) } diff --git a/x/ibc/core/02-client/keeper/client_test.go b/x/ibc/core/02-client/keeper/client_test.go index ecf4709c6aad..f34414eab4f7 100644 --- a/x/ibc/core/02-client/keeper/client_test.go +++ b/x/ibc/core/02-client/keeper/client_test.go @@ -8,7 +8,6 @@ import ( tmtypes "github.com/tendermint/tendermint/types" "github.com/cosmos/cosmos-sdk/x/ibc/core/02-client/types" - clienttypes "github.com/cosmos/cosmos-sdk/x/ibc/core/02-client/types" commitmenttypes "github.com/cosmos/cosmos-sdk/x/ibc/core/23-commitment/types" "github.com/cosmos/cosmos-sdk/x/ibc/core/exported" ibctmtypes "github.com/cosmos/cosmos-sdk/x/ibc/light-clients/07-tendermint/types" @@ -25,7 +24,7 @@ func (suite *KeeperTestSuite) TestCreateClient() { expPass bool }{ {"success", ibctmtypes.NewClientState(testChainID, ibctmtypes.DefaultTrustLevel, trustingPeriod, ubdPeriod, maxClockDrift, testClientHeight, commitmenttypes.GetSDKSpecs(), ibctesting.UpgradePath, false, false), true}, - {"client type not supported", localhosttypes.NewClientState(testChainID, clienttypes.NewHeight(0, 1)), false}, + {"client type not supported", localhosttypes.NewClientState(testChainID, types.NewHeight(0, 1)), false}, } for i, tc := range cases { @@ -44,15 +43,15 @@ func (suite *KeeperTestSuite) TestCreateClient() { func (suite *KeeperTestSuite) TestUpdateClientTendermint() { // Must create header creation functions since suite.header gets recreated on each test case createFutureUpdateFn := func(s *KeeperTestSuite) *ibctmtypes.Header { - heightPlus3 := clienttypes.NewHeight(suite.header.GetHeight().GetRevisionNumber(), suite.header.GetHeight().GetRevisionHeight()+3) - height := suite.header.GetHeight().(clienttypes.Height) + heightPlus3 := types.NewHeight(suite.header.GetHeight().GetRevisionNumber(), suite.header.GetHeight().GetRevisionHeight()+3) + height := suite.header.GetHeight().(types.Height) return suite.chainA.CreateTMClientHeader(testChainID, int64(heightPlus3.RevisionHeight), height, suite.header.Header.Time.Add(time.Hour), suite.valSet, suite.valSet, []tmtypes.PrivValidator{suite.privVal}) } createPastUpdateFn := func(s *KeeperTestSuite) *ibctmtypes.Header { - heightMinus2 := clienttypes.NewHeight(suite.header.GetHeight().GetRevisionNumber(), suite.header.GetHeight().GetRevisionHeight()-2) - heightMinus4 := clienttypes.NewHeight(suite.header.GetHeight().GetRevisionNumber(), suite.header.GetHeight().GetRevisionHeight()-4) + heightMinus2 := types.NewHeight(suite.header.GetHeight().GetRevisionNumber(), suite.header.GetHeight().GetRevisionHeight()-2) + heightMinus4 := types.NewHeight(suite.header.GetHeight().GetRevisionNumber(), suite.header.GetHeight().GetRevisionHeight()-4) return suite.chainA.CreateTMClientHeader(testChainID, int64(heightMinus2.RevisionHeight), heightMinus4, suite.header.Header.Time, suite.valSet, suite.valSet, []tmtypes.PrivValidator{suite.privVal}) @@ -247,7 +246,7 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { } // last Height is at next block - lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) + lastHeight = types.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) @@ -276,7 +275,7 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { } // last Height is at next block - lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) + lastHeight = types.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) @@ -307,7 +306,7 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { } // last Height is at next block - lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) + lastHeight = types.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) @@ -342,7 +341,7 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { } // last Height is at next block - lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) + lastHeight = types.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) @@ -603,22 +602,23 @@ func (suite *KeeperTestSuite) TestUpdateClientEventEmission() { header, err := suite.chainA.ConstructUpdateTMClientHeader(suite.chainB, clientID) suite.Require().NoError(err) - msg, err := clienttypes.NewMsgUpdateClient( + msg, err := types.NewMsgUpdateClient( clientID, header, suite.chainA.SenderAccount.GetAddress(), ) + suite.Require().NoError(err) result, err := suite.chainA.SendMsgs(msg) suite.Require().NoError(err) // first 3 event type are "tx.signature", "tx.acc_seq", and "message" updateEvent := result.Events[3] - suite.Require().Equal(clienttypes.EventTypeUpdateClient, updateEvent.Type) + suite.Require().Equal(types.EventTypeUpdateClient, updateEvent.Type) // use a boolean to ensure the update event contains the header contains := false for _, attr := range updateEvent.Attributes { - if string(attr.Key) == clienttypes.AttributeKeyHeader { + if string(attr.Key) == types.AttributeKeyHeader { contains = true bz, err := hex.DecodeString(string(attr.Value)) diff --git a/x/ibc/core/02-client/keeper/grpc_query_test.go b/x/ibc/core/02-client/keeper/grpc_query_test.go index 2cee91809655..7fc28a4e45bb 100644 --- a/x/ibc/core/02-client/keeper/grpc_query_test.go +++ b/x/ibc/core/02-client/keeper/grpc_query_test.go @@ -142,7 +142,6 @@ func (suite *KeeperTestSuite) TestQueryClientStates() { for _, tc := range testCases { tc := tc suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { - suite.SetupTest() // reset expClientStates = nil diff --git a/x/ibc/core/02-client/keeper/keeper_test.go b/x/ibc/core/02-client/keeper/keeper_test.go index 4f425dbf9047..7b69859cbf97 100644 --- a/x/ibc/core/02-client/keeper/keeper_test.go +++ b/x/ibc/core/02-client/keeper/keeper_test.go @@ -176,7 +176,7 @@ func (suite *KeeperTestSuite) TestValidateSelfClient() { }, { "frozen client", - &ibctmtypes.ClientState{suite.chainA.ChainID, ibctmtypes.DefaultTrustLevel, trustingPeriod, ubdPeriod, maxClockDrift, testClientHeight, testClientHeight, commitmenttypes.GetSDKSpecs(), ibctesting.UpgradePath, false, false}, + &ibctmtypes.ClientState{ChainId: suite.chainA.ChainID, TrustLevel: ibctmtypes.DefaultTrustLevel, TrustingPeriod: trustingPeriod, UnbondingPeriod: ubdPeriod, MaxClockDrift: maxClockDrift, FrozenHeight: testClientHeight, LatestHeight: testClientHeight, ProofSpecs: commitmenttypes.GetSDKSpecs(), UpgradePath: ibctesting.UpgradePath, AllowUpdateAfterExpiry: false, AllowUpdateAfterMisbehaviour: false}, false, }, { @@ -201,7 +201,7 @@ func (suite *KeeperTestSuite) TestValidateSelfClient() { }, { "invalid trust level", - ibctmtypes.NewClientState(suite.chainA.ChainID, ibctmtypes.Fraction{0, 1}, trustingPeriod, ubdPeriod, maxClockDrift, testClientHeight, commitmenttypes.GetSDKSpecs(), ibctesting.UpgradePath, false, false), + ibctmtypes.NewClientState(suite.chainA.ChainID, ibctmtypes.Fraction{Numerator: 0, Denominator: 1}, trustingPeriod, ubdPeriod, maxClockDrift, testClientHeight, commitmenttypes.GetSDKSpecs(), ibctesting.UpgradePath, false, false), false, }, { diff --git a/x/ibc/core/02-client/keeper/params_test.go b/x/ibc/core/02-client/keeper/params_test.go index 9df08597100b..d736c38d7938 100644 --- a/x/ibc/core/02-client/keeper/params_test.go +++ b/x/ibc/core/02-client/keeper/params_test.go @@ -12,6 +12,6 @@ func (suite *KeeperTestSuite) TestParams() { expParams.AllowedClients = []string{} suite.chainA.App.IBCKeeper.ClientKeeper.SetParams(suite.chainA.GetContext(), expParams) - params = suite.chainA.App.IBCKeeper.ClientKeeper.GetParams(suite.chainA.GetContext()) + _ = suite.chainA.App.IBCKeeper.ClientKeeper.GetParams(suite.chainA.GetContext()) suite.Require().Empty(expParams.AllowedClients) } diff --git a/x/ibc/core/02-client/keeper/proposal_test.go b/x/ibc/core/02-client/keeper/proposal_test.go index bca72473cadc..0a3bd44d6f08 100644 --- a/x/ibc/core/02-client/keeper/proposal_test.go +++ b/x/ibc/core/02-client/keeper/proposal_test.go @@ -2,7 +2,6 @@ package keeper_test import ( "github.com/cosmos/cosmos-sdk/x/ibc/core/02-client/types" - clienttypes "github.com/cosmos/cosmos-sdk/x/ibc/core/02-client/types" "github.com/cosmos/cosmos-sdk/x/ibc/core/exported" ibctmtypes "github.com/cosmos/cosmos-sdk/x/ibc/light-clients/07-tendermint/types" ibctesting "github.com/cosmos/cosmos-sdk/x/ibc/testing" @@ -34,39 +33,39 @@ func (suite *KeeperTestSuite) TestClientUpdateProposal() { header, err := suite.chainA.ConstructUpdateTMClientHeader(suite.chainB, clientA) suite.Require().NoError(err) - content, err = clienttypes.NewClientUpdateProposal(ibctesting.Title, ibctesting.Description, clientA, header) + content, err = types.NewClientUpdateProposal(ibctesting.Title, ibctesting.Description, clientA, header) suite.Require().NoError(err) }, true, }, { "client type does not exist", func() { - content, err = clienttypes.NewClientUpdateProposal(ibctesting.Title, ibctesting.Description, ibctesting.InvalidID, &ibctmtypes.Header{}) + content, err = types.NewClientUpdateProposal(ibctesting.Title, ibctesting.Description, ibctesting.InvalidID, &ibctmtypes.Header{}) suite.Require().NoError(err) }, false, }, { "cannot update localhost", func() { - content, err = clienttypes.NewClientUpdateProposal(ibctesting.Title, ibctesting.Description, exported.Localhost, &ibctmtypes.Header{}) + content, err = types.NewClientUpdateProposal(ibctesting.Title, ibctesting.Description, exported.Localhost, &ibctmtypes.Header{}) suite.Require().NoError(err) }, false, }, { "client does not exist", func() { - content, err = clienttypes.NewClientUpdateProposal(ibctesting.Title, ibctesting.Description, ibctesting.InvalidID, &ibctmtypes.Header{}) + content, err = types.NewClientUpdateProposal(ibctesting.Title, ibctesting.Description, ibctesting.InvalidID, &ibctmtypes.Header{}) suite.Require().NoError(err) }, false, }, { "cannot unpack header, header is nil", func() { clientA, _ := suite.coordinator.SetupClients(suite.chainA, suite.chainB, exported.Tendermint) - content = &clienttypes.ClientUpdateProposal{ibctesting.Title, ibctesting.Description, clientA, nil} + content = &types.ClientUpdateProposal{Title: ibctesting.Title, Description: ibctesting.Description, ClientId: clientA, Header: nil} }, false, }, { "update fails", func() { header := &ibctmtypes.Header{} clientA, _ := suite.coordinator.SetupClients(suite.chainA, suite.chainB, exported.Tendermint) - content, err = clienttypes.NewClientUpdateProposal(ibctesting.Title, ibctesting.Description, clientA, header) + content, err = types.NewClientUpdateProposal(ibctesting.Title, ibctesting.Description, clientA, header) suite.Require().NoError(err) }, false, }, diff --git a/x/ibc/light-clients/06-solomachine/types/proof_test.go b/x/ibc/light-clients/06-solomachine/types/proof_test.go index e2ba679a5b98..0e9b7b10db20 100644 --- a/x/ibc/light-clients/06-solomachine/types/proof_test.go +++ b/x/ibc/light-clients/06-solomachine/types/proof_test.go @@ -4,7 +4,6 @@ import ( cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" "github.com/cosmos/cosmos-sdk/types/tx/signing" "github.com/cosmos/cosmos-sdk/x/ibc/light-clients/06-solomachine/types" - solomachinetypes "github.com/cosmos/cosmos-sdk/x/ibc/light-clients/06-solomachine/types" ibctesting "github.com/cosmos/cosmos-sdk/x/ibc/testing" ) @@ -13,11 +12,11 @@ func (suite *SoloMachineTestSuite) TestVerifySignature() { signBytes := []byte("sign bytes") singleSignature := suite.solomachine.GenerateSignature(signBytes) - singleSigData, err := solomachinetypes.UnmarshalSignatureData(cdc, singleSignature) + singleSigData, err := types.UnmarshalSignatureData(cdc, singleSignature) suite.Require().NoError(err) multiSignature := suite.solomachineMulti.GenerateSignature(signBytes) - multiSigData, err := solomachinetypes.UnmarshalSignatureData(cdc, multiSignature) + multiSigData, err := types.UnmarshalSignatureData(cdc, multiSignature) suite.Require().NoError(err) testCases := []struct { @@ -56,7 +55,7 @@ func (suite *SoloMachineTestSuite) TestVerifySignature() { tc := tc suite.Run(tc.name, func() { - err := solomachinetypes.VerifySignature(tc.publicKey, signBytes, tc.sigData) + err := types.VerifySignature(tc.publicKey, signBytes, tc.sigData) if tc.expPass { suite.Require().NoError(err) diff --git a/x/ibc/light-clients/06-solomachine/types/solomachine_test.go b/x/ibc/light-clients/06-solomachine/types/solomachine_test.go index 50555e45145a..750442915ecb 100644 --- a/x/ibc/light-clients/06-solomachine/types/solomachine_test.go +++ b/x/ibc/light-clients/06-solomachine/types/solomachine_test.go @@ -9,7 +9,6 @@ import ( codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" "github.com/cosmos/cosmos-sdk/testutil/testdata" sdk "github.com/cosmos/cosmos-sdk/types" host "github.com/cosmos/cosmos-sdk/x/ibc/core/24-host" @@ -68,7 +67,7 @@ func TestUnpackInterfaces_Header(t *testing.T) { registry := testdata.NewTestInterfaceRegistry() cryptocodec.RegisterInterfaces(registry) - pk := secp256k1.GenPrivKey().PubKey().(cryptotypes.PubKey) + pk := secp256k1.GenPrivKey().PubKey() any, err := codectypes.NewAnyWithValue(pk) require.NoError(t, err) @@ -92,7 +91,7 @@ func TestUnpackInterfaces_HeaderData(t *testing.T) { registry := testdata.NewTestInterfaceRegistry() cryptocodec.RegisterInterfaces(registry) - pk := secp256k1.GenPrivKey().PubKey().(cryptotypes.PubKey) + pk := secp256k1.GenPrivKey().PubKey() any, err := codectypes.NewAnyWithValue(pk) require.NoError(t, err) diff --git a/x/staking/types/data_test.go b/x/staking/types/data_test.go index ed9c64c57a2f..d875b088fdbb 100644 --- a/x/staking/types/data_test.go +++ b/x/staking/types/data_test.go @@ -14,9 +14,6 @@ var ( pk1Any *codectypes.Any pk2 = ed25519.GenPrivKey().PubKey() pk3 = ed25519.GenPrivKey().PubKey() - addr1, _ = sdk.Bech32ifyAddressBytes(sdk.Bech32PrefixAccAddr, pk1.Address().Bytes()) - addr2, _ = sdk.Bech32ifyAddressBytes(sdk.Bech32PrefixAccAddr, pk2.Address().Bytes()) - addr3, _ = sdk.Bech32ifyAddressBytes(sdk.Bech32PrefixAccAddr, pk3.Address().Bytes()) valAddr1 = sdk.ValAddress(pk1.Address()) valAddr2 = sdk.ValAddress(pk2.Address()) valAddr3 = sdk.ValAddress(pk3.Address()) From d5f66a2ca722c20b84b2548fedda246a03062395 Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Tue, 27 Dec 2022 20:09:25 +0700 Subject: [PATCH 32/98] 42-fixup --- client/grpc/tmservice/service_test.go | 1 + server/util.go | 4 ++-- store/rootmulti/store.go | 10 ++++++++-- store/rootmulti/store_test.go | 3 ++- store/tracekv/store.go | 2 +- testutil/network/util.go | 2 +- x/auth/signing/verify_test.go | 1 + x/auth/tx/legacy_amino_json_test.go | 4 ++-- x/bank/client/cli/cli_test.go | 2 +- x/genutil/gentx_test.go | 6 +++--- x/gov/simulation/operations.go | 2 ++ x/ibc/applications/transfer/keeper/mbt_relay_test.go | 7 +++---- x/ibc/applications/transfer/module.go | 2 +- x/ibc/core/02-client/types/genesis_test.go | 5 +++-- x/ibc/core/04-channel/keeper/keeper_test.go | 2 +- 15 files changed, 32 insertions(+), 21 deletions(-) diff --git a/client/grpc/tmservice/service_test.go b/client/grpc/tmservice/service_test.go index 89aed8d4a4de..22323f79e569 100644 --- a/client/grpc/tmservice/service_test.go +++ b/client/grpc/tmservice/service_test.go @@ -155,6 +155,7 @@ func (s IntegrationTestSuite) TestQueryValidatorSetByHeight() { //nolint:govet / // rest query with pagination restRes, err := rest.GetRequest(fmt.Sprintf("%s/cosmos/base/tendermint/v1beta1/validatorsets/%d?pagination.offset=%d&pagination.limit=%d", val.APIAddress, 1, 0, 1)) + s.Require().NoError(err) var validatorSetRes tmservice.GetValidatorSetByHeightResponse s.Require().NoError(val.ClientCtx.JSONMarshaler.UnmarshalJSON(restRes, &validatorSetRes)) } diff --git a/server/util.go b/server/util.go index c2838d9bf6a4..0c49358a8fa2 100644 --- a/server/util.go +++ b/server/util.go @@ -119,8 +119,8 @@ func InterceptConfigsPreRunHandler(cmd *cobra.Command) error { basename := path.Base(executableName) // Configure the viper instance - serverCtx.Viper.BindPFlags(cmd.Flags()) - serverCtx.Viper.BindPFlags(cmd.PersistentFlags()) + serverCtx.Viper.BindPFlags(cmd.Flags()) //nolint: errcheck + serverCtx.Viper.BindPFlags(cmd.PersistentFlags()) //nolint: errcheck serverCtx.Viper.SetEnvPrefix(basename) serverCtx.Viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_", "-", "_")) serverCtx.Viper.AutomaticEnv() diff --git a/store/rootmulti/store.go b/store/rootmulti/store.go index 610285c91b30..3c06e3a6772f 100644 --- a/store/rootmulti/store.go +++ b/store/rootmulti/store.go @@ -963,7 +963,10 @@ func setCommitInfo(batch dbm.Batch, version int64, cInfo *types.CommitInfo) { } cInfoKey := fmt.Sprintf(commitInfoKeyFmt, version) - batch.Set([]byte(cInfoKey), bz) + err = batch.Set([]byte(cInfoKey), bz) + if err != nil { + panic(err) + } } func setLatestVersion(batch dbm.Batch, version int64) { @@ -972,7 +975,10 @@ func setLatestVersion(batch dbm.Batch, version int64) { panic(err) } - batch.Set([]byte(latestVersionKey), bz) + err = batch.Set([]byte(latestVersionKey), bz) + if err != nil { + panic(err) + } } func setPruningHeights(batch dbm.Batch, pruneHeights []int64) { diff --git a/store/rootmulti/store_test.go b/store/rootmulti/store_test.go index e1812152b8ca..1ceecc2b07e7 100644 --- a/store/rootmulti/store_test.go +++ b/store/rootmulti/store_test.go @@ -658,7 +658,8 @@ func TestSetInitialVersion(t *testing.T) { require.NoError(t, multi.LoadLatestVersion()) - multi.SetInitialVersion(5) + err := multi.SetInitialVersion(5) + require.NoError(t, err) require.Equal(t, int64(5), multi.initialVersion) multi.Commit() diff --git a/store/tracekv/store.go b/store/tracekv/store.go index 2958d968267a..98966ae856c4 100644 --- a/store/tracekv/store.go +++ b/store/tracekv/store.go @@ -195,5 +195,5 @@ func writeOperation(w io.Writer, op operation, tc types.TraceContext, key, value panic(errors.Wrap(err, "failed to write trace operation")) } - io.WriteString(w, "\n") + io.WriteString(w, "\n") //nolint: errcheck } diff --git a/testutil/network/util.go b/testutil/network/util.go index f42452268e28..4e8d265d0080 100644 --- a/testutil/network/util.go +++ b/testutil/network/util.go @@ -181,7 +181,7 @@ func initGenFiles(cfg Config, genAccounts []authtypes.GenesisAccount, genBalance } func writeFile(name string, dir string, contents []byte) error { - writePath := filepath.Join(dir) + writePath := filepath.Join(dir) //nolint:gocritic file := filepath.Join(writePath, name) err := tmos.EnsureDir(writePath, 0o755) diff --git a/x/auth/signing/verify_test.go b/x/auth/signing/verify_test.go index 7e842d13537c..075ee6d44994 100644 --- a/x/auth/signing/verify_test.go +++ b/x/auth/signing/verify_test.go @@ -42,6 +42,7 @@ func TestVerifySignature(t *testing.T) { balances := sdk.NewCoins(sdk.NewInt64Coin("atom", 200)) require.NoError(t, app.BankKeeper.SetBalances(ctx, addr, balances)) acc, err := ante.GetSignerAcc(ctx, app.AccountKeeper, addr) + require.NoError(t, err) require.NoError(t, app.BankKeeper.SetBalances(ctx, addr, balances)) msgs := []sdk.Msg{testdata.NewTestMsg(addr)} diff --git a/x/auth/tx/legacy_amino_json_test.go b/x/auth/tx/legacy_amino_json_test.go index 3db335286901..4c08ea48b8ab 100644 --- a/x/auth/tx/legacy_amino_json_test.go +++ b/x/auth/tx/legacy_amino_json_test.go @@ -70,7 +70,7 @@ func TestLegacyAminoJSONHandler_GetSignBytes(t *testing.T) { require.NoError(t, err) bldr.tx.Body.ExtensionOptions = []*cdctypes.Any{any} tx = bldr.GetTx() - signBz, err = handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx) + _, err = handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx) require.Error(t, err) // expect error with non-critical extension options @@ -78,7 +78,7 @@ func TestLegacyAminoJSONHandler_GetSignBytes(t *testing.T) { buildTx(t, bldr) bldr.tx.Body.NonCriticalExtensionOptions = []*cdctypes.Any{any} tx = bldr.GetTx() - signBz, err = handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx) + _, err = handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx) require.Error(t, err) } diff --git a/x/bank/client/cli/cli_test.go b/x/bank/client/cli/cli_test.go index 14767e06b8ca..00ff18572bbe 100644 --- a/x/bank/client/cli/cli_test.go +++ b/x/bank/client/cli/cli_test.go @@ -354,7 +354,7 @@ func (s *IntegrationTestSuite) TestNewSendTxCmdGenOnly() { clientCtx := val.ClientCtx ctx := context.Background() - ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx) + _ = context.WithValue(ctx, client.ClientContextKey, &clientCtx) from := val.Address to := val.Address diff --git a/x/genutil/gentx_test.go b/x/genutil/gentx_test.go index 7d398353a673..f182b8d4ba10 100644 --- a/x/genutil/gentx_test.go +++ b/x/genutil/gentx_test.go @@ -60,7 +60,7 @@ func (suite *GenTxTestSuite) SetupTest() { suite.NoError(err) } -func (suite *GenTxTestSuite) setAccountBalance(addr sdk.AccAddress, amount int64) json.RawMessage { +func (suite *GenTxTestSuite) setAccountBalance(addr sdk.AccAddress, amount int64) json.RawMessage { //nolint:unparam acc := suite.app.AccountKeeper.NewAccountWithAddress(suite.ctx, addr) suite.app.AccountKeeper.SetAccount(suite.ctx, acc) @@ -269,14 +269,14 @@ func (suite *GenTxTestSuite) TestDeliverGenTxs() { if tc.expPass { suite.Require().NotPanics(func() { - genutil.DeliverGenTxs( + genutil.DeliverGenTxs( //nolint:errcheck suite.ctx, genTxs, suite.app.StakingKeeper, suite.app.BaseApp.DeliverTx, suite.encodingConfig.TxConfig, ) }) } else { suite.Require().Panics(func() { - genutil.DeliverGenTxs( + genutil.DeliverGenTxs( //nolint:errcheck suite.ctx, genTxs, suite.app.StakingKeeper, suite.app.BaseApp.DeliverTx, suite.encodingConfig.TxConfig, ) diff --git a/x/gov/simulation/operations.go b/x/gov/simulation/operations.go index b79fd7fc051c..51e6279c8b77 100644 --- a/x/gov/simulation/operations.go +++ b/x/gov/simulation/operations.go @@ -19,6 +19,8 @@ import ( var initialProposalID = uint64(100000000000000) // Simulation operation weights constants +// +//nolint:gosec const ( OpWeightMsgDeposit = "op_weight_msg_deposit" OpWeightMsgVote = "op_weight_msg_vote" diff --git a/x/ibc/applications/transfer/keeper/mbt_relay_test.go b/x/ibc/applications/transfer/keeper/mbt_relay_test.go index 1d346fa27628..01ebecfd5db2 100644 --- a/x/ibc/applications/transfer/keeper/mbt_relay_test.go +++ b/x/ibc/applications/transfer/keeper/mbt_relay_test.go @@ -7,7 +7,6 @@ package keeper_test import ( "encoding/json" "fmt" - "io/ioutil" "os" "strconv" "strings" @@ -100,7 +99,7 @@ func AddressFromTla(addr []string) string { panic("failed to convert from TLA+ address: wrong number of address components") } s := "" - if len(addr[0]) == 0 && len(addr[1]) == 0 { + if len(addr[0]) == 0 && len(addr[1]) == 0 { //nolint:gocritic // simple address: id s = addr[2] } else if len(addr[2]) == 0 { @@ -293,7 +292,7 @@ func (suite *KeeperTestSuite) CheckBankBalances(chain *ibctesting.TestChain, ban func (suite *KeeperTestSuite) TestModelBasedRelay() { dirname := "model_based_tests/" - files, err := ioutil.ReadDir(dirname) + files, err := os.ReadDir(dirname) if err != nil { panic(fmt.Errorf("Failed to read model-based test files: %w", err)) } @@ -306,7 +305,7 @@ func (suite *KeeperTestSuite) TestModelBasedRelay() { if err != nil { panic(fmt.Errorf("Failed to read JSON test fixture: %w", err)) } - err = json.Unmarshal([]byte(jsonBlob), &tlaTestCases) + err = json.Unmarshal(jsonBlob, &tlaTestCases) if err != nil { panic(fmt.Errorf("Failed to parse JSON test fixture: %w", err)) } diff --git a/x/ibc/applications/transfer/module.go b/x/ibc/applications/transfer/module.go index 79de4e77b4cf..282243e46476 100644 --- a/x/ibc/applications/transfer/module.go +++ b/x/ibc/applications/transfer/module.go @@ -77,7 +77,7 @@ func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Rout // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the ibc-transfer module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) + types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) //nolint:errcheck } // GetTxCmd implements AppModuleBasic interface diff --git a/x/ibc/core/02-client/types/genesis_test.go b/x/ibc/core/02-client/types/genesis_test.go index d57b8d1ba532..ab3bb9ebdcbf 100644 --- a/x/ibc/core/02-client/types/genesis_test.go +++ b/x/ibc/core/02-client/types/genesis_test.go @@ -30,8 +30,9 @@ var clientHeight = types.NewHeight(0, 10) func (suite *TypesTestSuite) TestMarshalGenesisState() { cdc := suite.chainA.App.AppCodec() - clientA, _, _, _, _, _ := suite.coordinator.Setup(suite.chainA, suite.chainB, channeltypes.ORDERED) - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + clientA, _, _, _, _, _ := suite.coordinator.Setup(suite.chainA, suite.chainB, channeltypes.ORDERED) //nolint:dogsled + err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.Require().NoError(err) genesis := client.ExportGenesis(suite.chainA.GetContext(), suite.chainA.App.IBCKeeper.ClientKeeper) diff --git a/x/ibc/core/04-channel/keeper/keeper_test.go b/x/ibc/core/04-channel/keeper/keeper_test.go index ab3bad23d9cf..e932feecc566 100644 --- a/x/ibc/core/04-channel/keeper/keeper_test.go +++ b/x/ibc/core/04-channel/keeper/keeper_test.go @@ -218,7 +218,7 @@ func (suite KeeperTestSuite) TestGetAllPacketState() { //nolint:govet // this is // TestSetSequence verifies that the keeper correctly sets the sequence counters. func (suite *KeeperTestSuite) TestSetSequence() { - _, _, _, _, channelA, _ := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED) + _, _, _, _, channelA, _ := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED) //nolint:dogsled ctxA := suite.chainA.GetContext() one := uint64(1) From e0003c94cff00de9e1f980d844992ef0062a3343 Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Tue, 3 Jan 2023 18:35:41 +0700 Subject: [PATCH 33/98] v0.42.x-modern --- types/kv/list.go | 2 +- x/bank/keeper/keeper_test.go | 2 +- x/gov/keeper/querier.go | 12 ++++++------ x/ibc/core/02-client/types/msgs.go | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/types/kv/list.go b/types/kv/list.go index 9e928c84912b..1c59207f1ff3 100644 --- a/types/kv/list.go +++ b/types/kv/list.go @@ -113,7 +113,7 @@ func (l *List) remove(e *Element) *Element { } // move moves e to next to at and returns e. -// nolint: unparam +//nolint: unparam func (l *List) move(e, at *Element) *Element { if e == at { return e diff --git a/x/bank/keeper/keeper_test.go b/x/bank/keeper/keeper_test.go index 2cf622d5d866..a2116ce71218 100644 --- a/x/bank/keeper/keeper_test.go +++ b/x/bank/keeper/keeper_test.go @@ -47,7 +47,7 @@ func newBarCoin(amt int64) sdk.Coin { return sdk.NewInt64Coin(barDenom, amt) } -//nolint: interfacer +// nolint: interfacer func getCoinsByName(ctx sdk.Context, bk keeper.Keeper, ak types.AccountKeeper, moduleName string) sdk.Coins { moduleAddress := ak.GetModuleAddress(moduleName) macc := ak.GetAccount(ctx, moduleAddress) diff --git a/x/gov/keeper/querier.go b/x/gov/keeper/querier.go index 6eb343d070a7..abebe0c2a8a4 100644 --- a/x/gov/keeper/querier.go +++ b/x/gov/keeper/querier.go @@ -72,7 +72,7 @@ func queryParams(ctx sdk.Context, path []string, req abci.RequestQuery, keeper K } } -// nolint: unparam +//nolint: unparam func queryProposal(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryProposalParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -93,7 +93,7 @@ func queryProposal(ctx sdk.Context, path []string, req abci.RequestQuery, keeper return bz, nil } -// nolint: unparam +//nolint: unparam func queryDeposit(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryDepositParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -110,7 +110,7 @@ func queryDeposit(ctx sdk.Context, path []string, req abci.RequestQuery, keeper return bz, nil } -// nolint: unparam +//nolint: unparam func queryVote(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryVoteParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -127,7 +127,7 @@ func queryVote(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Kee return bz, nil } -// nolint: unparam +//nolint: unparam func queryDeposits(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryProposalParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -148,7 +148,7 @@ func queryDeposits(ctx sdk.Context, path []string, req abci.RequestQuery, keeper return bz, nil } -// nolint: unparam +//nolint: unparam func queryTally(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryProposalParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -185,7 +185,7 @@ func queryTally(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Ke return bz, nil } -// nolint: unparam +//nolint: unparam func queryVotes(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryProposalVotesParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) diff --git a/x/ibc/core/02-client/types/msgs.go b/x/ibc/core/02-client/types/msgs.go index dd94bf93fe8c..4d90b3b18cd7 100644 --- a/x/ibc/core/02-client/types/msgs.go +++ b/x/ibc/core/02-client/types/msgs.go @@ -184,7 +184,7 @@ func (msg MsgUpdateClient) UnpackInterfaces(unpacker codectypes.AnyUnpacker) err } // NewMsgUpgradeClient creates a new MsgUpgradeClient instance -// nolint: interfacer +//nolint: interfacer func NewMsgUpgradeClient(clientID string, clientState exported.ClientState, consState exported.ConsensusState, proofUpgradeClient, proofUpgradeConsState []byte, signer sdk.AccAddress, ) (*MsgUpgradeClient, error) { From ca03d20557acfae807f0724c3715ba213b7e6038 Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Wed, 4 Jan 2023 18:18:49 +0700 Subject: [PATCH 34/98] errchecks --- .golangci.yml | 2 +- baseapp/baseapp_test.go | 4 +- crypto/hd/hdpath_test.go | 2 +- go.mod | 70 +- go.sum | 2050 +-------------------------------- store/rootmulti/store.go | 2 +- store/rootmulti/store_test.go | 10 +- 7 files changed, 90 insertions(+), 2050 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 789f07f210e9..da18bde6c548 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -62,6 +62,6 @@ linters-settings: suggest-new: true nolintlint: allow-unused: false - allow-leading-space: true + allow-leading-space: false require-explanation: false require-specific: false diff --git a/baseapp/baseapp_test.go b/baseapp/baseapp_test.go index 6c76370efa79..ca315fb2bb5c 100644 --- a/baseapp/baseapp_test.go +++ b/baseapp/baseapp_test.go @@ -715,7 +715,7 @@ type msgCounter struct { // dummy implementation of proto.Message func (msg msgCounter) Reset() {} -func (msg msgCounter) String() string { return "TODO" } +func (msg msgCounter) String() string { return "TODO" } //nolint:goconst func (msg msgCounter) ProtoMessage() {} // Implements Msg @@ -897,7 +897,7 @@ func setIntOnStore(store sdk.KVStore, key []byte, i int64) { // check counter matches what's in store. // increment and store -func incrementingCounter(t *testing.T, store sdk.KVStore, counterKey []byte, counter int64) (*sdk.Result, error) { +func incrementingCounter(t *testing.T, store sdk.KVStore, counterKey []byte, counter int64) (*sdk.Result, error) { //nolint:unparam storedCounter := getIntFromStore(store, counterKey) require.Equal(t, storedCounter, counter) setIntOnStore(store, counterKey, counter+1) diff --git a/crypto/hd/hdpath_test.go b/crypto/hd/hdpath_test.go index d8f2e44f002a..84be97c6c3c6 100644 --- a/crypto/hd/hdpath_test.go +++ b/crypto/hd/hdpath_test.go @@ -299,7 +299,7 @@ func TestDerivePrivateKeyForPathDoNotCrash(t *testing.T) { for _, path := range paths { path := path t.Run(path, func(t *testing.T) { - hd.DerivePrivateKeyForPath([32]byte{}, [32]byte{}, path) + hd.DerivePrivateKeyForPath([32]byte{}, [32]byte{}, path) //nolint:errcheck }) } } diff --git a/go.mod b/go.mod index 1a27838af457..fc268601bbdc 100644 --- a/go.mod +++ b/go.mod @@ -1,10 +1,9 @@ -go 1.16 +go 1.18 module github.com/cosmos/cosmos-sdk require ( github.com/99designs/keyring v1.1.6 - github.com/DataDog/zstd v1.4.5 // indirect github.com/armon/go-metrics v0.3.10 github.com/bgentry/speakeasy v0.1.0 github.com/btcsuite/btcd v0.22.1 @@ -13,8 +12,6 @@ require ( github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/iavl v0.17.3 github.com/cosmos/ledger-cosmos-go v0.11.1 - github.com/dgraph-io/ristretto v0.0.3 // indirect - github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/gogo/gateway v1.1.0 github.com/gogo/protobuf v1.3.3 github.com/golang/mock v1.6.0 @@ -48,7 +45,72 @@ require ( google.golang.org/grpc v1.50.1 google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 gopkg.in/yaml.v2 v2.4.0 +) +require ( + github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect + github.com/DataDog/zstd v1.4.5 // indirect + github.com/Workiva/go-datastructures v1.0.53 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash v1.1.0 // indirect + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/cosmos/gorocksdb v1.2.0 // indirect + github.com/cosmos/ledger-go v0.9.2 // indirect + github.com/creachadair/taskgroup v0.3.2 // indirect + github.com/danieljoos/wincred v1.0.2 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dgraph-io/badger/v2 v2.2007.2 // indirect + github.com/dgraph-io/ristretto v0.0.3 // indirect + github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect + github.com/dustin/go-humanize v1.0.0 // indirect + github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b // indirect + github.com/felixge/httpsnoop v1.0.1 // indirect + github.com/fsnotify/fsnotify v1.5.4 // indirect + github.com/go-kit/kit v0.12.0 // indirect + github.com/go-kit/log v0.2.1 // indirect + github.com/go-logfmt/logfmt v0.5.1 // indirect + github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/google/btree v1.0.0 // indirect + github.com/google/orderedcode v0.0.1 // indirect + github.com/gorilla/websocket v1.5.0 // indirect + github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect + github.com/gtank/merlin v0.1.1 // indirect + github.com/gtank/ristretto255 v0.1.2 // indirect + github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/inconshreveable/mousetrap v1.0.1 // indirect + github.com/jmhodges/levigo v1.0.0 // indirect + github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d // indirect + github.com/lib/pq v1.10.6 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect + github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect + github.com/minio/highwayhash v1.0.2 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mtibben/percent v0.2.1 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect + github.com/pelletier/go-toml/v2 v2.0.5 // indirect + github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_model v0.2.0 // indirect + github.com/prometheus/procfs v0.8.0 // indirect + github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/rs/cors v1.8.2 // indirect + github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/spf13/afero v1.8.2 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/subosito/gotenv v1.4.1 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect + github.com/zondax/hid v0.9.0 // indirect + go.etcd.io/bbolt v1.3.6 // indirect + golang.org/x/net v0.1.0 // indirect + golang.org/x/sys v0.1.0 // indirect + golang.org/x/term v0.1.0 // indirect + golang.org/x/text v0.4.0 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) replace google.golang.org/grpc => google.golang.org/grpc v1.33.2 diff --git a/go.sum b/go.sum index 9dd05b1892c7..09ffb380dfd8 100644 --- a/go.sum +++ b/go.sum @@ -1,338 +1,62 @@ -4d63.com/gochecknoglobals v0.1.0/go.mod h1:wfdC5ZjKSPr7CybKEcgJhUOgeAQW1+7WcyK8OvUilfo= -bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= -bazil.org/fuse v0.0.0-20180421153158-65cc252bf669/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= -bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM= -bitbucket.org/creachadair/shell v0.0.6/go.mod h1:8Qqi/cYk7vPnsOePHroKXDJYmb5x7ENhtiFtfZq8K+M= -cloud.google.com/go v0.25.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.37.2/go.mod h1:H8IAquKe2L30IxoupDgqTaQvKSwF/c8prYHynGIWQbA= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.39.0/go.mod h1:rVLT6fkc8chs9sfPtFc1SBH6em7n+ZoXaG+87tDISts= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.60.0/go.mod h1:yw2G51M9IfRboUH61Us8GqCeF1PzPblB823Mn2q2eAU= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/pubsub v1.5.0/go.mod h1:ZEwJccE3z93Z2HWvstpri00jOg7oO4UZDtKhwDwqF0w= -cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/spanner v1.7.0/go.mod h1:sd3K2gZ9Fd0vMPLXzeCrF6fq4i63Q7aTLW/lBIfBkIk= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -code.gitea.io/sdk/gitea v0.12.0/go.mod h1:z3uwDV/b9Ls47NGukYM9XhnHtqPh/J+t40lsUrR6JDY= -contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= -contrib.go.opencensus.io/exporter/ocagent v0.5.0/go.mod h1:ImxhfLRpxoYiSq891pBrLVhN+qmP8BTVvdH2YLs7Gl0= -contrib.go.opencensus.io/exporter/stackdriver v0.12.1/go.mod h1:iwB6wGarfphGGe/e5CWqyUk/cLzKnWsOKPVW3no6OTw= -contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= -contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= -contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcigGlFvXwEGEnkRLA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= -git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= -git.apache.org/thrift.git v0.12.0/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= -git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= -github.com/Abirdcfly/dupword v0.0.7/go.mod h1:K/4M1kj+Zh39d2aotRwypvasonOyAMH1c/IZJzE0dmk= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= -github.com/AkihiroSuda/containerd-fuse-overlayfs v1.0.0/go.mod h1:0mMDvQFeLbbn1Wy8P2j3hwFhqBq+FKn8OZPno8WLmp8= -github.com/Antonboom/errname v0.1.7/go.mod h1:g0ONh16msHIPgJSGsecu1G/dcF2hlYR/0SddnIAGavU= -github.com/Antonboom/nilnil v0.1.1/go.mod h1:L1jBqoWM7AOeTD+tSquifKSesRHs4ZdaxvZR+xdJEaI= -github.com/Azure/azure-amqp-common-go/v2 v2.1.0/go.mod h1:R8rea+gJRuJR6QxTir/XuEd+YuKoUiazDC/N96FiDEU= -github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= -github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= -github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v19.1.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v29.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v30.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v35.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v38.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v42.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8= -github.com/Azure/azure-service-bus-go v0.9.1/go.mod h1:yzBx6/BUGfjfeqbRZny9AQIbIe3AcV9WZbAdpkoXOa0= -github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest v10.15.5+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest v12.0.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest v14.1.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= -github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= -github.com/Azure/go-autorest/autorest v0.10.2/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= -github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= -github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= -github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.8.3/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= -github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= -github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/azure/auth v0.4.2/go.mod h1:90gmfKdlmKgfjUpnCEpOJzsUEjrWDSLwHIG73tSXddM= -github.com/Azure/go-autorest/autorest/azure/cli v0.3.1/go.mod h1:ZG5p860J94/0kI9mNJVoIoLgXcirM2gF5i2kWloofxw= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= -github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocmRAJWqST1wQYhyyjXJ3SJc= -github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= -github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= -github.com/Azure/go-autorest/autorest/validation v0.2.0/go.mod h1:3EEqHnBxQGHXRYq3HT1WyXAvT7LLY3tl70hw6tQIbjI= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= 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.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= -github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/Djarvur/go-err113 v0.0.0-20200410182137-af658d038157/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= -github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= -github.com/Djarvur/go-err113 v0.1.0/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= -github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0/go.mod h1:b3g59n2Y+T5xmcxJL+UEG2f8cQploZm1mR/v6BW0mU0= -github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20191009163259-e802c2cb94ae/go.mod h1:mjwGPas4yKduTyubHvD1Atl9r1rUq8DfVy+gkVvZ+oo= -github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14= -github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= -github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/semver/v3 v3.0.3/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= -github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= -github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= -github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= -github.com/Microsoft/go-winio v0.4.15/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= -github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= -github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= -github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= -github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= -github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= -github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= -github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM= -github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= -github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= -github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= -github.com/Microsoft/hcsshim v0.8.20/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= -github.com/Microsoft/hcsshim v0.8.21/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= -github.com/Microsoft/hcsshim v0.8.23/go.mod h1:4zegtUJth7lAvFyc6cH2gGQ5B3OFQim01nnU2M8jKDg= -github.com/Microsoft/hcsshim v0.9.2/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc= -github.com/Microsoft/hcsshim v0.9.4/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc= -github.com/Microsoft/hcsshim/test v0.0.0-20200826032352-301c83a30e7c/go.mod h1:30A5igQ91GEmhYJF8TaRP79pMBOYynRsyOByfVV0dU4= -github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= -github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM= -github.com/OpenPeeDeeP/depguard v1.1.1/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/Workiva/go-datastructures v1.0.52/go.mod h1:Z+F2Rca0qCsVYDS8z7bAGm8f3UkzuWYS/oBZz5a7VVA= @@ -340,117 +64,45 @@ github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSa github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= github.com/adlio/schema v1.1.13/go.mod h1:L5Z7tw+7lRK1Fnpi/LT/ooCP1elkXn0krMWBQHUhEDE= github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= -github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= -github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= -github.com/alecthomas/kingpin v2.2.6+incompatible/go.mod h1:59OFYbFVLKQKq+mqrL6Rw5bR0c3ACQaawgXx0QYndlE= 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/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= -github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= -github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= -github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= -github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= -github.com/andybalholm/brotli v1.0.3/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= -github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apex/log v1.1.4/go.mod h1:AlpoD9aScyQfJDVHmLMEcx4oU6LqzkWp4Mg9GdAcEvQ= -github.com/apex/log v1.3.0/go.mod h1:jd8Vpsr46WAe3EZSQ/IUMs2qQD/GOycT5rPWCO1yGcs= -github.com/apex/logs v0.0.4/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDwo= -github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy8kCu4PNA+aP7WUV72eXWJeP9/r3/K9aLE= -github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3stzu0Xys= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-metrics v0.3.10 h1:FR+drcQStOe+32sYyJYyZ7FIdgoGGBnwLl+flodp8Uo= github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= 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/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/ashanbrown/forbidigo v1.3.0/go.mod h1:vVW7PEdqEFqapJe95xHkTfB1+XvZXBFg8t0sG2FIxmI= -github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= -github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= -github.com/aws/aws-sdk-go v1.15.90/go.mod h1:es1KtYUFs7le0xQ3rOihkuoVD90z7D0fR2Qm4S00/gU= -github.com/aws/aws-sdk-go v1.16.26/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.19.45/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.25.11/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.27.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.31.6/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= -github.com/aws/aws-sdk-go v1.36.30/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= -github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= -github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= -github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= 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 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= -github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI= -github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI= -github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/bombsimon/wsl/v2 v2.0.0/go.mod h1:mf25kr/SqFEPhhcxW1+7pxzGlW+hIl/hYTKY95VwV8U= -github.com/bombsimon/wsl/v2 v2.2.0/go.mod h1:Azh8c3XGEJl9LyX0/sFC+CKMc7Ssgua0g+6abzXN4Pg= -github.com/bombsimon/wsl/v3 v3.0.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= -github.com/bombsimon/wsl/v3 v3.1.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= -github.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= -github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= -github.com/breml/bidichk v0.2.3/go.mod h1:8u2C6DnAy0g2cEq+k/A2+tr9O1s+vHGxWn0LTc70T2A= -github.com/breml/errchkjson v0.3.0/go.mod h1:9Cogkyv9gcT8HREpzi3TiqBxCqDzo8awa92zSDFcofU= -github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= -github.com/btcsuite/btcd v0.22.0-beta/go.mod h1:9n5ntfhhHQBIhUvlhDvD3Qg6fRUj4jkN0VB8L8svzOA= github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= @@ -458,210 +110,48 @@ github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= -github.com/bufbuild/buf v1.9.0/go.mod h1:1Q+rMHiMVcfgScEF/GOldxmu4o9TrQ2sQQh58K6MscE= -github.com/bufbuild/connect-go v1.0.0/go.mod h1:9iNvh/NOsfhNBUH5CtvXeVUskQO1xsrEviH7ZArwZ3I= -github.com/bufbuild/protocompile v0.1.0/go.mod h1:ix/MMMdsT3fzxfw91dvbfzKW3fRRnuPCP47kpAm5m/4= -github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= -github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= -github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= -github.com/butuzov/ireturn v0.1.1/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= -github.com/caarlos0/ctrlc v1.0.0/go.mod h1:CdXpj4rmq0q/1Eb44M9zi2nKB0QraNKuRGYGrrHhcQw= -github.com/campoy/unique v0.0.0-20180121183637-88950e537e7e/go.mod h1:9IOqJGCPMSc6E5ydlp5NIonxObaeu/Iub/X03EKPVYo= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= -github.com/cavaliercoder/go-cpio v0.0.0-20180626203310-925f9528c45e/go.mod h1:oDpT4efm8tSYHXV5tHSdRvBet/b/QzxZ+XyyPehvm3A= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/charithe/durationcheck v0.0.9/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg= -github.com/chavacava/garif v0.0.0-20220630083739-93517212f375/go.mod h1:4m1Rv7xfuwWPNKXlThldNuJvutYM6J95wNuuVmn55To= -github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= -github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= 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= -github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= -github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= -github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= -github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= -github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= -github.com/codahale/hdrhistogram v0.0.0-20160425231609-f8ad88b59a58/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/confio/ics23/go v0.6.6 h1:pkOy18YxxJ/r0XFDCnrl4Bjv6h4LkBSpLS6F38mrKL8= github.com/confio/ics23/go v0.6.6/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= -github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= -github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= -github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= -github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= -github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= -github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= -github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= -github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= -github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= -github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= -github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= -github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= -github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= -github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= -github.com/containerd/cgroups v1.0.3/go.mod h1:/ofk34relqNjSGyqPrmEULrO4Sc8LJhvJmWbUCUKqj8= -github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= -github.com/containerd/console v1.0.0/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= -github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= -github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= -github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.1-0.20201117152358-0edc412565dc/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.9/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= -github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= -github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= -github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= -github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= -github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= -github.com/containerd/containerd v1.5.8/go.mod h1:YdFSv5bTFLpG2HIYmfqDpSYYTDX+mc5qtSuYx1YUb/s= -github.com/containerd/containerd v1.6.1/go.mod h1:1nJz5xCZPusx6jJU8Frfct988y0NpumIq9ODB0kLtoE= -github.com/containerd/containerd v1.6.3-0.20220401172941-5ff8fce1fcc6/go.mod h1:WSt2SnDLAGWlu+Vl+EWay37seZLKqgRt6XLjIMy8SYM= -github.com/containerd/containerd v1.6.8/go.mod h1:By6p5KqPK0/7/CgO/A6t/Gz+CUYUu2zf1hUaaymVXB0= -github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= -github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= -github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= -github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= -github.com/containerd/continuity v0.2.2/go.mod h1:pWygW9u7LtS1o4N/Tn0FoCFDIXZ7rxcMX7HX1Dmibvk= -github.com/containerd/continuity v0.2.3-0.20220330195504-d132b287edc8/go.mod h1:pWygW9u7LtS1o4N/Tn0FoCFDIXZ7rxcMX7HX1Dmibvk= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= -github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= -github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= -github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= -github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= -github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= -github.com/containerd/fuse-overlayfs-snapshotter v1.0.2/go.mod h1:nRZceC8a7dRm3Ao6cJAwuJWPFiBPaibHiFntRUnzhwU= -github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= -github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= -github.com/containerd/go-cni v1.1.0/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= -github.com/containerd/go-cni v1.1.3/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= -github.com/containerd/go-cni v1.1.4/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= -github.com/containerd/go-cni v1.1.6/go.mod h1:BWtoWl5ghVymxu6MBjg79W9NZrCRyHIdUtk4cauMe34= -github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= -github.com/containerd/go-runc v0.0.0-20201020171139-16b287bc67d0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= -github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= -github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= -github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= -github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= -github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= -github.com/containerd/imgcrypt v1.1.3/go.mod h1:/TPA1GIDXMzbj01yd8pIbQiLdQxed5ue1wb8bP7PQu4= -github.com/containerd/imgcrypt v1.1.4/go.mod h1:LorQnPtzL/T0IyCeftcsMEO7AqxUDbdO8j/tSUpgxvo= -github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= -github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= -github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= -github.com/containerd/stargz-snapshotter v0.0.0-20201027054423-3a04e4c2c116/go.mod h1:o59b3PCKVAf9jjiKtCc/9hLAd+5p/rfhBfm6aBcTEr4= -github.com/containerd/stargz-snapshotter v0.11.3/go.mod h1:2j2EAUyvrLU4D9unYlTIwGhDKQIk74KJ9E71lJsQCVM= -github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= -github.com/containerd/stargz-snapshotter/estargz v0.11.3/go.mod h1:7vRJIcImfY8bpifnMjt+HTJoQxASq7T28MYbP15/Nf0= -github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= -github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= -github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= -github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= -github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= -github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= -github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= -github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= -github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containerd/zfs v0.0.0-20210324211415-d5c4544f0433/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v1.0.1/go.mod h1:AKuhXbN5EzmD4yTNtfSsX3tPcmtrBI6QcRV0NiNt15Y= -github.com/containernetworking/cni v1.1.1/go.mod h1:sDpYKmGVENF3s6uvMvGgldDWeG8dMxakj/u+i9ht9vw= -github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= -github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= -github.com/containernetworking/plugins v1.0.1/go.mod h1:QHCfGpaTwYTbbH+nZXKVTxNBDZcxSOplJT5ico8/FLE= -github.com/containernetworking/plugins v1.1.1/go.mod h1:Sr5TH/eBsGLXK/h71HeLfX19sZPp3ry5uHSkI4LPxV8= -github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= -github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= -github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= -github.com/containers/ocicrypt v1.1.2/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= -github.com/containers/ocicrypt v1.1.3/go.mod h1:xpdkbVAuaH3WzbEabUd5yDsl9SwJA5pABH85425Es2g= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= -github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= -github.com/coreos/go-iptables v0.6.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q= -github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190620071333-e64a0ec8b42a/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= 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/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.4 h1:n7C2ngKXo7UC9gNyMNLbzqz7Asuf+7Qv4gnX/rOdQ44= github.com/cosmos/btcutil v1.0.4/go.mod h1:Ffqc8Hn6TJUdDgHBwIZLtrLQC1KdJ9jGJl/TvgUaxbU= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= -github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= github.com/cosmos/iavl v0.17.3 h1:s2N819a2olOmiauVa0WAhoIJq9EhSXE9HDBAoR9k+8Y= @@ -675,88 +165,32 @@ github.com/cosmos/ledger-go v0.9.2/go.mod h1:oZJ2hHAZROdlHiwTg4t7kP+GKIIkBT+o6c9 github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= 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/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cristalhq/acmd v0.8.1/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ= -github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= -github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= -github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= -github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= -github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= -github.com/daixiang0/gci v0.8.1/go.mod h1:EpVfrztufwVgQRXjnX4zuNinEpLj5OmMjtu/+MB0V0c= +github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU= github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= -github.com/danieljoos/wincred v1.1.0 h1:3RNcEpBg4IhIChZdFRSdlQt1QjCp1sMAPIrOnm7Yf8g= -github.com/danieljoos/wincred v1.1.0/go.mod h1:XYlo+eRTsVA9aHGp7NGjFkPla4m+DCL7hqDjlFjiygg= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= -github.com/denis-tingaikin/go-header v0.4.3/go.mod h1:0wOCWuN71D5qIgE2nz9KrKmuYBAC2Mra5RassOIQ2/c= -github.com/denisenkom/go-mssqldb v0.12.0/go.mod h1:iiK0YP1ZeepvmBQk/QpLEhhTNJgfzrpArPY/aFvc9yU= -github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= -github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= github.com/dgraph-io/badger/v2 v2.2007.2 h1:EjjK0KqwaFMlPin1ajhP943VPENHJdEz1KLIegjaI3k= github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.0.3 h1:jh22xisGBjrEVnRZ1DVTpBVQm0Xndu8sMl0CWDzSIBI= github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= -github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= -github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/docker/cli v0.0.0-20190925022749-754388324470/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli v20.10.0-beta1.0.20201029214301-1d20b15adc38+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli v20.10.13+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli v20.10.14+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli v20.10.17+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= -github.com/docker/distribution v2.6.0-rc.1.0.20180327202408-83389a148052+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v0.0.0-20200511152416-a93e9eb0e95c/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v1.4.2-0.20180531152204-71cd53e4a197/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v17.12.0-ce-rc1.0.20200730172259-9f28837c1d93+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.0-beta1.0.20201110211921-af34b94a78a1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.3-0.20211208011758-87521affb077+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.17+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.19+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= -github.com/docker/docker-credential-helpers v0.6.4/go.mod h1:ofX3UI0Gz1TteYBjtgs07O36Pyasyp66D2uKT7H8W1c= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= -github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/libnetwork v0.8.0-dev.2.0.20200917202933-d0951081b35f/go.mod h1:93m0aTqz6z+g32wla4l4WxTrdtvBRmVzYRkYvasA5Z8= -github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= @@ -766,193 +200,65 @@ github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= -github.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= -github.com/esimonov/ifshort v1.0.4/go.mod h1:Pe8zjlRrJ80+q2CxHLfEOfTwxCZ4O+MuhcHcfgNWTk0= -github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -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.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= +github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= -github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goblin v0.0.0-20210519012713-85d372ac71e2/go.mod h1:VzmDKDJVZI3aJmnRI9VjAn9nJ8qPPsN1fqzr9dqInIo= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= -github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= -github.com/fullstorydev/grpcurl v1.6.0/go.mod h1:ZQ+ayqbKMJNhzLmbpCiurTVlaK2M/3nqZCxaQ2Ze/sM= -github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= -github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= -github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= -github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= -github.com/go-critic/go-critic v0.4.1/go.mod h1:7/14rZGnZbY6E38VEGk2kVhoq6itzc1E68facVDK23g= -github.com/go-critic/go-critic v0.4.3/go.mod h1:j4O3D4RoIwRqlZw5jJpx0BNfXWWbpcJoKu5cYSe4YmQ= -github.com/go-critic/go-critic v0.6.5/go.mod h1:ezfP/Lh7MA6dBNn4c6ab5ALv3sKnZVLx37tr00uuaOY= -github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= -github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= -github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= -github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= -github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= 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-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= 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/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= -github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= -github.com/go-lintpack/lintpack v0.5.2/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM= 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-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= -github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= -github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= -github.com/go-redis/redis v6.15.8+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= -github.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ= -github.com/go-toolsmith/astcopy v1.0.2/go.mod h1:4TcEdbElGc9twQEYpVo/aieIXfHhiuLh4aLAck6dO7Y= -github.com/go-toolsmith/astequal v0.0.0-20180903214952-dcb477bfacd6/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= -github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= -github.com/go-toolsmith/astequal v1.0.2/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= -github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= -github.com/go-toolsmith/astfmt v0.0.0-20180903215011-8f8ee99c3086/go.mod h1:mP93XdblcopXwlyN4X4uodxXQhldPGZbcEJIimQHrkg= -github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw= -github.com/go-toolsmith/astinfo v0.0.0-20180906194353-9809ff7efb21/go.mod h1:dDStQCHtmZpYOmjRP/8gHHnCCch3Zz3oEgCdZVdtweU= -github.com/go-toolsmith/astp v0.0.0-20180903215135-0af7e3c24f30/go.mod h1:SV2ur98SGypH1UjcPpCatrV5hPazG6+IfNHbkDXBRrk= -github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI= -github.com/go-toolsmith/pkgload v0.0.0-20181119091011-e9e65178eee8/go.mod h1:WoMrjiy4zvdS+Bg6z9jZH82QXwkcgCBX6nOfnmdaHks= -github.com/go-toolsmith/pkgload v1.0.0/go.mod h1:5eFArkbO80v7Z0kdngIxsRXRMTaX4Ilcwuh3clNrQJc= -github.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5/go.mod h1:3NAwwmD4uY/yggRxoEjk/S00MIV3A+H7rrE3i87eYxM= -github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= -github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= -github.com/go-toolsmith/typep v1.0.2/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= -github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= -github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= -github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= -github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= -github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -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/gofrs/flock v0.0.0-20190320160742-5135e617513b/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gofrs/flock v0.7.3/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gofrs/uuid v4.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= -github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= -github.com/gogo/googleapis v1.3.2/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= -github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= -github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= -github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= -github.com/golang-sql/sqlexp v0.0.0-20170517235910-f1bb20e5a188/go.mod h1:vXjM/+wXQnTPR4KqTKDgJukSZ6amVRtWMPEjE6sQoK8= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -969,45 +275,15 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= -github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= -github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6/go.mod h1:DbHgvLiFKX1Sh2T1w8Q/h4NAI8MHIpzCdnBUDTXU3I0= -github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8= -github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= -github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3/go.mod h1:JXrF4TWy4tXYn62/9x8Wm/K/dm06p8tCKwFRDPZG/1o= -github.com/golangci/gocyclo v0.0.0-20180528134321-2becd97e67ee/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU= -github.com/golangci/gocyclo v0.0.0-20180528144436-0a533e8fa43d/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU= -github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= -github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2/go.mod h1:9wOXstvyDRshQ9LggQuzBCGysxs3b6Uo/1MvYCR2NMs= -github.com/golangci/golangci-lint v1.23.7/go.mod h1:g/38bxfhp4rI7zeWSxcdIeHTQGS58TCak8FYcyCmavQ= -github.com/golangci/golangci-lint v1.27.0/go.mod h1:+eZALfxIuthdrHPtfM7w/R3POJLjHDfJJw8XZl9xOng= -github.com/golangci/golangci-lint v1.50.1/go.mod h1:AQjHBopYS//oB8xs0y0M/dtxdKHkdhl0RvmjUct0/4w= -github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc/go.mod h1:e5tpTHCfVze+7EpLEozzMB3eafxo2KT5veNg1k6byQU= -github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= -github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= -github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= -github.com/golangci/misspell v0.3.5/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= -github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21/go.mod h1:tf5+bzsHdTM0bsB7+8mt0GUMvjCgwLpTapNZHU8AajI= -github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4= -github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4= -github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6/go.mod h1:0AKcRCkMoKvUvlf89F6O7H2LYdhr1zBh736mBItOdRs= -github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= -github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= -github.com/google/certificate-transparency-go v1.1.1/go.mod h1:FDKqPvSXawb2ecErVRrD+nfy23RCzyl7eqVCEmlT1Zs= -github.com/google/crfs v0.0.0-20191108021818-71d77da419c9/go.mod h1:etGhoOqfwPkooV6aqoX3eBGQOJblqdoc9XvWOeuxpPw= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -1016,33 +292,15 @@ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -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/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.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-containerregistry v0.0.0-20191010200024-a3d713f9b7f8/go.mod h1:KyKXa9ciM8+lgMXwOVsXi7UxGrsf9mM61Mzs+xKUrKE= -github.com/google/go-containerregistry v0.1.2/go.mod h1:GPivBPgdAyd2SU+vf6EpsgOtWDuPqjW0hJZt4rNdTZ4= -github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= -github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= -github.com/google/go-github/v28 v28.1.1/go.mod h1:bsqJWQX05omyWVmc00nEUql9mhQyv38lDZ8kPZcQVoM= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/go-replayers/grpcreplay v0.1.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= -github.com/google/go-replayers/httpreplay v0.1.0/go.mod h1:YKZViNhiGgqdBlUbI2MwGpq4pXxNmhJLPHQ7cv2b5no= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -1051,106 +309,39 @@ github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200507031123-427632fa3b1c/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/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-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/rpmpack v0.0.0-20191226140753-aa36bfddb3a0/go.mod h1:RaTPr0KUf2K7fnZYLNDrr8rxAamWs3iNywJLtQ2AzBg= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/trillian v1.3.11/go.mod h1:0tPraVHrSDkA3BO6vKX67zgLXs6SsOAbHEivX+9mPgw= -github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -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= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/wire v0.3.0/go.mod h1:i1DMg/Lu8Sz5yYl25iOdmc5CT5qusaa+zmRWs16741s= -github.com/google/wire v0.4.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= -github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.2.2/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= -github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= -github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gookit/color v1.2.4/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg= -github.com/gookit/color v1.5.1/go.mod h1:wZFzea4X8qN6vHOSP2apMb4/+w/orMznEzYsIHPaqKM= -github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= -github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= -github.com/goreleaser/goreleaser v0.136.0/go.mod h1:wiKrPUeSNh6Wu8nUHxZydSOVQ/OZvOaO7DTtFqie904= -github.com/goreleaser/nfpm v1.2.1/go.mod h1:TtWrABZozuLOttX2uDlYyECfQX7x5XYkVxhjYcR6G9w= -github.com/goreleaser/nfpm v1.3.0/go.mod h1:w0p7Kc9TAUgWMyrub63ex3M2Mgw88M4GZXoTq5UCb40= -github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75/go.mod h1:g2644b03hfBX9Ov0ZBDgXXens4rxSxmqFBbhvKv2yVA= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= -github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= -github.com/gostaticanalysis/analysisutil v0.1.0/go.mod h1:dMhHRU9KTiDcuLGdy87/2gTR8WruwYZrKdRq9m1O6uw= -github.com/gostaticanalysis/analysisutil v0.4.1/go.mod h1:18U/DLpRgIUd459wGxVHE0fRgmo1UgHDcbw7F5idXu0= -github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= -github.com/gostaticanalysis/comment v1.3.0/go.mod h1:xMicKDx7XRXYdVwY9f9wQpDJVnqWxw9wCauCMKp+IBI= -github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= -github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= -github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak= -github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= -github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= -github.com/gostaticanalysis/testutil v0.4.0/go.mod h1:bLIoPefWXrRi/ssLFWX1dx7Repi5x3CuviD3dgAZaBU= github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s= -github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= -github.com/grpc-ecosystem/grpc-gateway v1.6.2/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.2/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.12.1/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= @@ -1158,136 +349,53 @@ github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= -github.com/hanwen/go-fuse v1.0.0/go.mod h1:unqXarDXqzAk0rt98O2tVndEPIpUgLD9+rwFisZH3Ok= -github.com/hanwen/go-fuse/v2 v2.0.3/go.mod h1:0EQM6aH2ctVpvZ6a+onrQ/vaykxh2GH7hy3e13vzTUY= -github.com/hanwen/go-fuse/v2 v2.1.1-0.20220112183258-f57e95bda82d/go.mod h1:B1nGE/6RBFyBRC1RRnf23UpwCdyJ31eukw34oAKukAc= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= -github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= -github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/errwrap v1.1.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-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= 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-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-retryablehttp v0.6.4/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= -github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= -github.com/hashicorp/go-retryablehttp v0.7.0/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -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-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= 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.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= -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.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -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.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= -github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= -github.com/hashicorp/uuid v0.0.0-20160311170451-ebb0a03e909c/go.mod h1:fHzc09UnyJyqyW+bFuq864eh+wC7dj65aXmXLRe5to0= -github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= -github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= 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/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/informalsystems/tm-load-test v1.0.0/go.mod h1:WVaSKaQdfZK3v0C74EMzn7//+3aeCZF8wkIKBz2/M74= -github.com/intel/goresctrl v0.2.0/go.mod h1:+CZdzouYFn5EsxgqAQTEzMfwKwuc0fVdMrT9FCCAVRQ= -github.com/ishidawataru/sctp v0.0.0-20191218070446-00ab2ac2db07/go.mod h1:co9pwDoBCm1kGxawmb4sPq0cSIOOWNPT4KnHotMP1Zg= -github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= -github.com/j-keck/arping v1.0.2/go.mod h1:aJbELhR92bSk7tp79AWM/ftfc90EfEi2bQJrbBFOsPw= -github.com/jaguilar/vt100 v0.0.0-20150826170717-2703a27b14ea/go.mod h1:QMdK4dGB3YhEW2BmA1wgGpPYI3HZy/5gD705PXKUVSg= -github.com/jarcoal/httpmock v1.0.5/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= -github.com/jdxcode/netrc v0.0.0-20210204082910-926c7f70242a/go.mod h1:Zi/ZFkEqFHTm7qkjyNJjaWH4LQA9LQhGJyF0lTYGpxw= -github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jgautheron/goconst v1.5.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= -github.com/jhump/gopoet v0.0.0-20190322174617-17282ff210b3/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI= -github.com/jhump/gopoet v0.1.0/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI= -github.com/jhump/goprotoc v0.5.0/go.mod h1:VrbvcYrQOrTi3i0Vf+m+oqQWk9l72mjkJCYo7UvLHRQ= -github.com/jhump/protoreflect v1.6.1/go.mod h1:RZQ/lnuN+zqeRVpQigTwO6o0AJUkxbnSnpuG7toUTG4= -github.com/jhump/protoreflect v1.11.0/go.mod h1:U7aMIjN0NWq9swDP7xDdoMfRHb35uiuTd3Z9nFXJf5E= -github.com/jhump/protoreflect v1.13.1-0.20220928232736-101791cb1b4c/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI= -github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a/go.mod h1:xRskid8CManxVta/ALEhJha/pweKBaVG6fWgc0yH25s= -github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= -github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= -github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= -github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= -github.com/jmoiron/sqlx v1.2.1-0.20190826204134-d7d95172beb5/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= -github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jonboulle/clockwork v0.2.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= -github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/josharian/txtarfs v0.0.0-20210218200122-0702f000015a/go.mod h1:izVPOvVRsHiKkeGCT6tYBNWyDVuzj9wAaBb5R9qamfw= -github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -1298,65 +406,24 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm 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/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= 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/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= -github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/errcheck v1.6.2/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kkHAIKE/contextcheck v1.1.3/go.mod h1:PG/cwd6c0705/LM0KTr1acO2gORUxkSVWyLJOFW5qoo= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= 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.2/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/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= -github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= -github.com/kunwardeep/paralleltest v1.0.6/go.mod h1:Y0Y0XISdZM5IKm3TREQMZ6iteqn1YuwCsJO/0kL9Zes= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg= -github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0= -github.com/ldez/tagliatelle v0.3.1/go.mod h1:8s6WJQwEYHbKZDsp/LjArytKOG8qaMrKQQ3mFukHs88= -github.com/leonklingele/grouper v1.1.0/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY= -github.com/letsencrypt/pkcs11key/v4 v4.0.0/go.mod h1:EFUvBDay26dErnNb70Nd0/VW3tJiIbETBPTl9ATXQag= -github.com/lib/pq v0.0.0-20180327071824-d34b9ff171c2/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= @@ -1364,357 +431,139 @@ github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6 github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= -github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= -github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= -github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= -github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= -github.com/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpApTE5fXSKAqwDU= -github.com/maratori/testpackage v1.1.0/go.mod h1:PeAhzU8qkCwdGEMTEupsHJNlQu2gZopMC6RjbhmHeDc= -github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= -github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= -github.com/matoous/godox v0.0.0-20210227103229-6504466cf951/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= -github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -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-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= -github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= -github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -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/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= -github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= -github.com/mattn/go-shellwords v1.0.10/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= -github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/go-sqlite3 v1.14.9/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= -github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= -github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= -github.com/mgechev/dots v0.0.0-20210922191527-e955255bf517/go.mod h1:KQ7+USdGKfpPjXk4Ga+5XxQM4Lm4e3gAogrreFAYpOg= -github.com/mgechev/revive v1.2.4/go.mod h1:iAWlQishqCuj4yhV24FTnKSXGpbAA+0SckXB8GQMX/Q= -github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= 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.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= -github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= -github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= -github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= 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/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b/go.mod h1:r1VsdOzOPt1ZSrGZWFoNhsAedKnEd6r9Np1+5blZCWk= -github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= -github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= -github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/moby/buildkit v0.8.1/go.mod h1:/kyU1hKy/aYCuP39GZA9MaKioovHku57N6cqlKZIaiQ= -github.com/moby/buildkit v0.10.4/go.mod h1:Yajz9vt1Zw5q9Pp4pdb3TCSUXJBIroIQGQ3TTs/sLug= -github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/sys/mount v0.1.0/go.mod h1:FVQFLDRWwyBjDTBNQXDlWnSFREqOo3OKX9aqhmeoo74= -github.com/moby/sys/mount v0.1.1/go.mod h1:FVQFLDRWwyBjDTBNQXDlWnSFREqOo3OKX9aqhmeoo74= -github.com/moby/sys/mount v0.3.0/go.mod h1:U2Z3ur2rXPFrFmy4q6WMwWrBOAQGYtYTRVM8BIvzbwk= -github.com/moby/sys/mountinfo v0.1.0/go.mod h1:w2t2Avltqx8vE7gX5l+QiBKxODu2TX0+Syr3h52Tw4o= -github.com/moby/sys/mountinfo v0.1.3/go.mod h1:w2t2Avltqx8vE7gX5l+QiBKxODu2TX0+Syr3h52Tw4o= -github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= -github.com/moby/sys/mountinfo v0.6.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= -github.com/moby/sys/signal v0.6.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= -github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= -github.com/moby/sys/symlink v0.2.0/go.mod h1:7uZVF2dqJjG/NsClqul95CqKOBRQyYSNnJ6BMgR/gFs= -github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= -github.com/moby/term v0.0.0-20200915141129-7f0af18e79f2/go.mod h1:TjQg8pa4iejrUrjiz0MCtMV38jdMNW4doKSiBrEvCQQ= -github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= -github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= -github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= -github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= 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-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= 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/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= -github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= -github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mozilla/scribe v0.0.0-20180711195314-fb71baf557c1/go.mod h1:FIczTrinKo8VaLxe6PWTPEXRXDIHz2QAwiaBaP5/4a8= -github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= -github.com/mozilla/tls-observatory v0.0.0-20200317151703-4fa42e1c2dee/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= -github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s= -github.com/mrunalp/fileutils v0.0.0-20200520151820-abd8a0e76976/go.mod h1:x8F1gnqOkIEiO4rqoeEEEqQbo7HjGMTvyoq3gej4iT0= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= 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/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007/go.mod h1:m2XC9Qq0AlmmVksL6FktJCdTYyLk7V3fKyp0sl1yWQo= -github.com/mwitkow/go-proto-validators v0.2.0/go.mod h1:ZfA1hW+UH/2ZHOWvQ3HnQaU0DtnpXu850MZiy+YUgcc= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/nakabonne/nestif v0.3.0/go.mod h1:dI314BppzXjJ4HsCnbo7XzrJHPszZsjnk5wEBSYHI2c= -github.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q= -github.com/nats-io/jwt/v2 v2.0.3/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats-server/v2 v2.5.0/go.mod h1:Kj86UtrXAL6LwYRA6H4RqzkHhK0Vcv2ZnKD5WbQ1t3g= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nats.go v1.12.1/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.2.0/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= -github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= -github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354/go.mod h1:KSVJerMDfblTH7p5MZaTt+8zaT2iEk3AkVb9PQdZuE8= -github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= -github.com/networkplumbing/go-nft v0.2.0/go.mod h1:HnnM+tYvlGAsMU7yoYwXEVLLiDW9gdMmb5HoGcwpuQs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nishanths/exhaustive v0.8.3/go.mod h1:qj+zJJUgJ76tR92+25+03oYUhzF4R7/2Wk7fGTfCHmg= -github.com/nishanths/predeclared v0.0.0-20190419143655-18a43bb90ffc/go.mod h1:62PewwiQTlm/7Rj+cxVYqZvDIUc+JjZq6GHAC1fsObQ= -github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/oklog/ulid/v2 v2.1.0/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.2/go.mod h1:rSAaSIOAGT9odnlyGlUfAJaoc5w2fSBUmeGDbRWPxyQ= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= +github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= -github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= -github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= -github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= -github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= -github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= -github.com/onsi/gomega v1.20.0/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.2-0.20211117181255-693428a734f5/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= -github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= -github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc10/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc92/go.mod h1:X1zlU4p7wOlX4+WRCz+hvlRv8phdL7UqbYD+vQwNMmE= -github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= -github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= -github.com/opencontainers/runc v1.1.1/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= -github.com/opencontainers/runc v1.1.2/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= -github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= -github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20200728170252-4d89ac9fbff6/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= -github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= -github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= -github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= -github.com/opencontainers/selinux v1.10.1/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing-contrib/go-stdlib v1.0.0/go.mod h1:qtI1ogk+2JhVPIXVc6q+NHziSmy2W5GbdQZFUHADCBU= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= -github.com/openzipkin/zipkin-go v0.1.3/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE= github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= -github.com/ory/dockertest/v3 v3.9.1/go.mod h1:42Ir9hmvaAPm0Mgibk6mBPi7SFvTXxEcnztDYOJ//uM= -github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= -github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E= github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs= -github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= -github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml v1.9.4/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/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= -github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI= github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= -github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw= github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= -github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= -github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= -github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= -github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pkg/profile v1.5.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18= -github.com/pkg/profile v1.6.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 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/polyfloyd/go-errorlint v1.0.5/go.mod h1:APVvOesVSAnne5SClsPxPdfvZTVDojXh1/G3qb5wjGI= 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/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.8.0/go.mod h1:O9VU6huf47PktckDQfMTX0Y8tY0/7TSWwj+ITvv0TnM= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34= github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -1722,30 +571,21 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= @@ -1754,19 +594,6 @@ github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/pseudomuto/protoc-gen-doc v1.3.2/go.mod h1:y5+P6n3iGrbKG+9O04V5ld71in3v/bX88wUwgt+U8EA= -github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q= -github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI= -github.com/quasilyte/go-ruleguard v0.1.2-0.20200318202121-b00d7a75d3d8/go.mod h1:CGFX09Ci3pq9QZdj86B+VGIdNj4VyCo2iPOGS9esB/k= -github.com/quasilyte/go-ruleguard v0.3.1-0.20210203134552-1b5a410e1cc8/go.mod h1:KsAh3x0e7Fkpgs+Q9pNLS5XpFSvYCEVl5gP9Pp1xp30= -github.com/quasilyte/go-ruleguard v0.3.18/go.mod h1:lOIzcYlgxrQ2sGJ735EHXmf/e9MJ516j16K/Ifcttvs= -github.com/quasilyte/go-ruleguard/dsl v0.3.0/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= -github.com/quasilyte/go-ruleguard/dsl v0.3.21/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= -github.com/quasilyte/go-ruleguard/rules v0.0.0-20201231183845-9e62ed36efe1/go.mod h1:7JTjp89EGyU1d6XfBiXihJNG37wB2VRkd125Q1u7Plc= -github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= -github.com/quasilyte/gogrep v0.0.0-20220828223005-86e4605de09f/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= -github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= -github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= @@ -1777,73 +604,27 @@ github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzy github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= -github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= -github.com/remyoudompheng/go-dbus v0.0.0-20121104212943-b7232d34b1d5/go.mod h1:+u151txRmLpwxBmpYn9z3d1sdJdjRPQpsXuYeY9jNls= -github.com/remyoudompheng/go-liblzma v0.0.0-20190506200333-81bf2d431b96/go.mod h1:90HvCY7+oHHUKkbeMCiHt1WuFR2/hPJ9QrljDG+v6ls= -github.com/remyoudompheng/go-misc v0.0.0-20190427085024-2d6ac652a50e/go.mod h1:80FQABjoFzZ2M5uEa6FUaJYEmqU2UOKojlFVak1UAwI= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= 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/rogpeppe/go-internal v1.5.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.27.0 h1:1T7qCieN22GVc8S4Q2yuexzBb1EqjbgjSH9RohbMjKs= github.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U= -github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= -github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= -github.com/ryancurrah/gomodguard v1.0.4/go.mod h1:9T/Cfuxs5StfsocWr4WzDL36HqnX0fVb9d5fSEaLhoE= -github.com/ryancurrah/gomodguard v1.1.0/go.mod h1:4O8tr7hBODaGE6VIhfJDHcwzh5GUccKSJBU0UMXJFVM= -github.com/ryancurrah/gomodguard v1.2.4/go.mod h1:+Kem4VjWwvFpUJRJSwa16s1tBJe+vbv02+naTow2f6M= -github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= -github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= -github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= -github.com/sagikazarmark/crypt v0.6.0/go.mod h1:U8+INwJo3nBv1m6A/8OBXAq7Jnpspk5AxSgDyEQcea8= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sanposhiho/wastedassign/v2 v2.0.6/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= -github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= -github.com/sashamelentyev/usestdlibvars v1.20.0/go.mod h1:0GaP+ecfZMXShS0A94CJn6aEuPRILv8h/VuWI9n1ygg= -github.com/sassoftware/go-rpmutils v0.0.0-20190420191620-a8f1baeba37b/go.mod h1:am+Fp8Bt506lA3Rk3QCmSqmYmLMnPDhdDUcosQCAx+I= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= -github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= -github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= -github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= -github.com/securego/gosec v0.0.0-20200103095621-79fbf3af8d83/go.mod h1:vvbZ2Ae7AzSq3/kywjUDxSNq2SJ27RxCz2un0H3ePqE= -github.com/securego/gosec v0.0.0-20200401082031-e946c8c39989/go.mod h1:i9l/TNj+yDFh9SZXUTvspXTjbFXgZGP/UvhU1S65A4A= -github.com/securego/gosec/v2 v2.3.0/go.mod h1:UzeVyUXbxukhLeHKV3VVqo7HdoQR9MrRfFmZYotn8ME= -github.com/securego/gosec/v2 v2.13.1/go.mod h1:EO1sImBMBWFjOTFzMWfTRrZW6M15gm60ljzrmy/wtHo= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/serialx/hashring v0.0.0-20190422032157-8b2912629002/go.mod h1:/yeG0My1xr/u+HZrFQ1tOQQQQrOawfyMUH13ai5brBc= -github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= -github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lzhCH5h/3YBfyVA3VbLYjlMZZAQcW9ojMexNc= -github.com/shirou/gopsutil/v3 v3.22.9/go.mod h1:bBYl1kjgEJpWpxeHmLI+dVHWtyAwfcmSBLDsp2TNT8A= -github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= -github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -1851,114 +632,60 @@ github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrf github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= 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/sivchari/containedctx v1.0.2/go.mod h1:PwZOeqm4/DLoJOqMSIJs3aKqXRX4YO+uXww087KZ7Bw= -github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY= -github.com/sivchari/tenv v1.7.0/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= -github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= -github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smartystreets/gunit v1.0.0/go.mod h1:qwPWnhz6pn0NnRBP++URONOVyNkPyr4SauJk4cUOwJs= github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPHbB5mVY2iO9KV3pTt/QbIkGaO8gQ2WrDbP4= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/sourcegraph/go-diff v0.5.1/go.mod h1:j2dHj3m8aZgQO8lMTcTnBcXkRRRqi34cd2MNlA9u1mE= -github.com/sourcegraph/go-diff v0.5.3/go.mod h1:v9JDtjCE4HHHCZGId75rg8gkKKa98RVjBcBGsVmMmak= -github.com/sourcegraph/go-diff v0.6.1/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo= github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= -github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= -github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= -github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= github.com/spf13/cobra v1.6.0 h1:42a0n6jwCot1pUmomAp4T7DeMD+20LFv4Q54pxLf2LI= github.com/spf13/cobra v1.6.0/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= 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.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= -github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= -github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= github.com/spf13/viper v1.13.0 h1:BWSJ/M+f+3nmdz9bxB+bWX28kkALN2ok11D0rSo8EJU= github.com/spf13/viper v1.13.0/go.mod h1:Icm2xNL3/8uyh/wFuB1jI7TiTNKp8632Nwegu+zgdYw= -github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= -github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I= -github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= -github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= -github.com/streadway/handy v0.0.0-20200128134331-0f66f006fb2e/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= -github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 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.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= 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= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= 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/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/subosito/gotenv v1.3.0/go.mod h1:YzJjq/33h7nrwdY+iHMhEOEEbW0ovIz0tB6t6PwAXzs= -github.com/subosito/gotenv v1.4.0/go.mod h1:mZd6rFysKEcUhUHXJk0C/08wAgyDBFuwEYL7vWWGaGo= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= -github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= -github.com/tdakkota/asciicheck v0.0.0-20200416190851-d7f85be797a2/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= -github.com/tdakkota/asciicheck v0.0.0-20200416200610-e657995f937b/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= -github.com/tdakkota/asciicheck v0.1.1/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/btcd v0.1.1 h1:0VcxPfflS2zZ3RiOAHkBiFUcPvbtRj5O7zHmcJWHV7s= github.com/tendermint/btcd v0.1.1/go.mod h1:DC6/m53jtQzr/NFmMNEu0rxf18/ktVoVtMrnDD5pN+U= @@ -1970,142 +697,33 @@ github.com/tendermint/tendermint v0.34.14/go.mod h1:FrwVm3TvsVicI9Z7FlucHV6Znfd5 github.com/tendermint/tendermint v0.34.24 h1:879MKKJWYYPJEMMKME+DWUTY4V9f/FBpnZDI82ky+4k= github.com/tendermint/tendermint v0.34.24/go.mod h1:rXVrl4OYzmIa1I91av3iLv2HS0fGSiucyW9J4aMTpKI= github.com/tendermint/tm-db v0.6.4/go.mod h1:dptYhIpJ2M5kUuenLr+Yyf3zQOv1SgBZcl8/BmWlMBw= -github.com/tendermint/tm-db v0.6.6/go.mod h1:wP8d49A85B7/erz/r4YbKssKw6ylsO/hKtFk7E1aWZI= github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= -github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= -github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= -github.com/tetafro/godot v0.3.7/go.mod h1:/7NLHhv08H1+8DNj0MElpAACw1ajsCuf3TKNQxA5S+0= -github.com/tetafro/godot v0.4.2/go.mod h1:/7NLHhv08H1+8DNj0MElpAACw1ajsCuf3TKNQxA5S+0= -github.com/tetafro/godot v1.4.11/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8= -github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= -github.com/timakin/bodyclose v0.0.0-20200424151742-cb6215831a94/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= -github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= -github.com/timonwong/loggercheck v0.9.3/go.mod h1:wUqnk9yAOIKtGA39l1KLE9Iz0QiTocu/YZoOf+OzFdw= github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= -github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0= -github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= -github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao= -github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4= -github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk= -github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tomarrell/wrapcheck/v2 v2.7.0/go.mod h1:ao7l5p0aOlUNJKI0qVwB4Yjlqutd0IvAB9Rdwyilxvg= -github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= -github.com/tommy-muehle/go-mnd v1.1.1/go.mod h1:dSUh0FtTP8VhvkL1S+gUR1OKd9ZnSaozuI6r3m6wOig= -github.com/tommy-muehle/go-mnd v1.3.1-0.20200224220436-e6f9a994e8fa/go.mod h1:dSUh0FtTP8VhvkL1S+gUR1OKd9ZnSaozuI6r3m6wOig= -github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= -github.com/tonistiigi/fsutil v0.0.0-20201103201449-0834f99b7b85/go.mod h1:a7cilN64dG941IOXfhJhlH0qB92hxJ9A1ewrdUmJ6xo= -github.com/tonistiigi/fsutil v0.0.0-20220115021204-b19f7f9cb274/go.mod h1:oPAfvw32vlUJSjyDcQ3Bu0nb2ON2B+G0dtVN/SZNJiA= -github.com/tonistiigi/go-actions-cache v0.0.0-20220404170428-0bdeb6e1eac7/go.mod h1:qqvyZqkfwkoJuPU/bw61bItaoO0SJ8YSW0vSVRRvsRg= -github.com/tonistiigi/go-archvariant v1.0.0/go.mod h1:TxFmO5VS6vMq2kvs3ht04iPXtu2rUT/erOnGFYfk5Ho= -github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6cRcDZSUvVmezrxJPkiO87ThFYsoUiMwWNDJk= -github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f/go.mod h1:ulncasL3N9uLrVann0m+CDlJKWsIAP34MPcOJF6VRvc= github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= -github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= -github.com/ulikunitz/xz v0.5.7/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/ultraware/funlen v0.0.2/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= -github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= -github.com/ultraware/whitespace v0.0.4/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= -github.com/ultraware/whitespace v0.0.5/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= -github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/uudashr/gocognit v1.0.1/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM= -github.com/uudashr/gocognit v1.0.6/go.mod h1:nAIUuVBnYU7pcninia3BHOvQkpQCeO76Uscky5BOwcY= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s= -github.com/valyala/fasthttp v1.30.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus= -github.com/valyala/quicktemplate v1.2.0/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4= -github.com/valyala/quicktemplate v1.7.0/go.mod h1:sqKJnoaOF88V07vkO+9FL8fb9uZg/VPSJnLYn+LmLk8= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= -github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= -github.com/vbatts/tar-split v0.11.2/go.mod h1:vV3ZuO2yWSVsz+pfFzDG/upWH1JhjOiEaWq6kXyQ3VI= -github.com/vdemeester/k8s-pkg-credentialprovider v1.17.4/go.mod h1:inCTmtUdr5KJbreVojo06krnTgaeAz/Z7lynpPk/Q2c= -github.com/vektra/mockery/v2 v2.14.0/go.mod h1:bnD1T8tExSgPD1ripLkDbr60JA9VtQeu12P3wgLZd7M= -github.com/viki-org/dnscache v0.0.0-20130720023526-c70c1f23c5d8/go.mod h1:dniwbG03GafCjFohMDmz6Zc6oCuiqgH6tGNyXTkHzXE= -github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= -github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= -github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= -github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= -github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= -github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= -github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= -github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= -github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= -github.com/xanzy/go-gitlab v0.31.0/go.mod h1:sPLojNBn68fMUWSxIJtdVVIP8uSBYqesTfDUseX11Ug= -github.com/xanzy/go-gitlab v0.32.0/go.mod h1:sPLojNBn68fMUWSxIJtdVVIP8uSBYqesTfDUseX11Ug= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= -github.com/yeya24/promlinter v0.2.0/go.mod h1:u54lkmBOZrpEbQQ6gox2zWKKLKu2SGe+2KOiextY+IA= -github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= -github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= 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= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/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.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= -github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= github.com/zondax/hid v0.9.0 h1:eiT3P6vNxAEVxXMw66eZUAAnU2zD33JBkfG/EnfAKl8= github.com/zondax/hid v0.9.0/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= -gitlab.com/bosi/decorder v0.2.3/go.mod h1:9K1RB5+VPNQYtXtTDAzd2OEftsZb1oV0IrJrzChSdGE= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c/go.mod h1:xCI7ZzBfRuGgBXyXO6yfWfDmlWd35khcWpUa4L0xI/k= -go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/api/v3 v3.5.1/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.1/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/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= -go.etcd.io/etcd/client/v2 v2.305.4/go.mod h1:Ud+VUwIi9/uQHOMA+4ekToJ12lTxlv0zB/+DHwTGEbU= -go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= -go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= -go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= -go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= -go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= -go.mozilla.org/mozlog v0.0.0-20170222151521-4bb13139d403/go.mod h1:jHoPAGnDrCy6kaI2tAze5Prf0Nr0w/oNkROt2lw3n3o= -go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= -go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= -go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= -go.opencensus.io v0.19.1/go.mod h1:gug0GbSHa8Pafr0d2urOSgoXHZ6x/RUlaiT0d9pqb4A= -go.opencensus.io v0.19.2/go.mod h1:NO/8qkisMZLZ1FCsKNqtJPwc8/TaclWyY0B6wcYNg9M= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -2114,154 +732,45 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.28.0/go.mod h1:vEhqr0m4eTc+DWxfsXoXue2GBgV2uUwVznkGIHW/e5w= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.29.0/go.mod h1:LsankqVDx4W+RhZNA5uWarULII/MBhF5qwCYxTuyXjs= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.3/go.mod h1:Dts42MGkzZne2yCru741+bFiTMWkIj/LLRizad7b9tw= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.29.0/go.mod h1:vHItvsnJtp7ES++nFLLFBzUWny7fJQSvTlxFcqQGUr4= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.29.0/go.mod h1:tLYsuf2v8fZreBVwp9gVMhefZlLFZaUiNVSq8QxXRII= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= -go.opentelemetry.io/otel v1.4.0/go.mod h1:jeAqMFKy2uLIxCtKxoFj0FAL5zAPKQagc3+GtBWakzk= -go.opentelemetry.io/otel v1.4.1/go.mod h1:StM6F/0fSwpd8dKWDCdRr7uRvEPYdW0hBSlbdTiUde4= -go.opentelemetry.io/otel v1.11.0/go.mod h1:H2KtuEphyMvlhZ+F7tg9GRhAOe60moNx61Ex+WmiKkk= -go.opentelemetry.io/otel/exporters/jaeger v1.4.1/go.mod h1:ZW7vkOu9nC1CxsD8bHNHCia5JUbwP39vxgd1q4Z5rCI= -go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.4.1/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0/go.mod h1:hO1KLR7jcKaDDKDkvI9dP/FIhpmna5lkqPUQdEjFAM8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.4.1/go.mod h1:o5RW5o2pKpJLD5dNTCmjF1DorYwMeFJmb/rKr5sLaa8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0/go.mod h1:keUU7UfnwWTWpJ+FWnyqmogPa82nuU5VUANFq49hlMY= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.4.1/go.mod h1:c6E4V3/U+miqjs/8l950wggHGL1qzlp0Ypj9xoGrPqo= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.3.0/go.mod h1:QNX1aly8ehqqX1LEa6YniTU7VY9I6R3X/oPxhGdTceE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.4.1/go.mod h1:VwYo0Hak6Efuy0TXsZs8o1hnV3dHDPNtDbycG0hI8+M= -go.opentelemetry.io/otel/internal/metric v0.27.0/go.mod h1:n1CVxRqKqYZtqyTh9U/onvKapPGv7y/rpyOTI+LFNzw= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/metric v0.27.0/go.mod h1:raXDJ7uP2/Jc0nVZWQjJtzoyssOYWu/+pjZqRzfvZ7g= -go.opentelemetry.io/otel/metric v0.32.3/go.mod h1:pgiGmKohxHyTPHGOff+vrtIH39/R9fiO/WoenUQ3kcc= -go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= -go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= -go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= -go.opentelemetry.io/otel/sdk v1.4.1/go.mod h1:NBwHDgDIBYjwK2WNu1OPgsIc2IJzmBXNnvIJxJc8BpE= -go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= -go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= -go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= -go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= -go.opentelemetry.io/otel/trace v1.4.0/go.mod h1:uc3eRsqDfWs9R7b92xbQbU42/eTNz4N+gLP8qJCi4aE= -go.opentelemetry.io/otel/trace v1.4.1/go.mod h1:iYEVbroFCNut9QkwEczV9vMRPHNKSSwYZjulEtsmhFc= -go.opentelemetry.io/otel/trace v1.11.0/go.mod h1:nyYjis9jy0gytE9LXGU+/m1sHTKbRY0fX0hulNNDP1U= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= -go.opentelemetry.io/proto/otlp v0.12.0/go.mod h1:TsIjwGWIx5VFYv9KGVlOpxoBl5Dy+63SUguV7GGvlSQ= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= -go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= -gocloud.dev v0.19.0/go.mod h1:SmKwiR8YwIMMJvQBKLsC3fHNyMwXLw3PMDO+VVteJMI= -golang.org/x/build v0.0.0-20190314133821-5284462c4bec/go.mod h1:atTaCNAy0f16Ah5aV1gMSwgiKVHwu/JncqDpuRr7lS4= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/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-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/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-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= -golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210915214749-c084706c2272/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-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= -golang.org/x/exp/typeparams v0.0.0-20220218215828-6cf2b201936e/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20220827204233-334a2380cb91/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= 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-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200119044424-58c23975cae1/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-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -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-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/lint v0.0.0-20181217174547-8f45f776aaf1/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= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -2272,7 +781,6 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -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/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -2284,22 +792,11 @@ 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/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I= -golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/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-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181108082009-03003ca0c849/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-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2310,19 +807,13 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 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-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= 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-20190619014844-b5b0513f8c1b/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-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/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-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191112182307-2180aed22343/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= @@ -2330,7 +821,6 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= @@ -2340,56 +830,18 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= 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-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221017152216-f25eb7ecb193/go.mod h1:RpDiru2p0u2F0lLpEoqnP2+7xs0ifAuOcJ442g6GU2s= golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/oauth2 v0.0.0-20180724155351-3d292e4d0cdc/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/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-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2397,28 +849,11 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2426,371 +861,166 @@ 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-20220513210516-0976fa681c29/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/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.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 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-20180909124046-d0be0721c37e/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-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/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-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181218192612-074acd46bca6/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190209173611-3b5209105503/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190620070143-6f217b454f45/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/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-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/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-20200120151820-655fe14d7479/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-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20200519105757-fe76b779f299/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-20200622214017-ed371f2e16b4/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-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200917073148-efd3b9a0ff20/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201013081832-0aaa2718063a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/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-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210313202042-bd2e13477e9c/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= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -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-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/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-20210514084401-e8d321eab015/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-20210603125802-9665404d3644/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-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/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-20210806184541-e5e7981a1069/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-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210903071746-97244b99971b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/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-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/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-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/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-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220405210540-1e041c57c461/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220406163625-3f8b81556e12/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/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-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220702020025-31831981b65f/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-20220728004956-3c1f35247d10/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-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20221013171732-95e765b1cc43/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.0.0-20220919170432-7a66f970e087/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0 h1:g6Z6vPFA9dYBAF7DWcH6sCcOntplXsDKcliusYijMlw= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= 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/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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= -golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181117154741-2ddaf7f79a09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181219222714-6e267b5cc78e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190221204921-83362c3779f5/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190228203856-589c23e65e65/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190307163923-6a08e3108db3/go.mod h1:25r3+/G6/xytQM8iWZKq3Hn0kr0rgFKPUNVEL/dr3z4= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190521203540-521d6ed310dd/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/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-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= -golang.org/x/tools v0.0.0-20190719005602-e377ae9d6386/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= 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-20190910044552-dd2b5c81c578/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-20190916130336-e45ffcd953cc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191010075000-0337d82405ff/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-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113232020-e2727e816f5a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200102140908-9497f49d5709/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117220505-0cba7a3a9ee9/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204192400-7124308813f3/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200331202046-9d5940d49312/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200414032229-332987a829c3/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200422022333-3d57cf2e726e/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200426102838-f3a5411a4c3b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200502202811-ed308ab3e770/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200622203043-20e05c1c8ffa/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200624225443-88f3c62a19ff/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200625211823-6506e20df31f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200630154851-b2d8b0336632/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200706234117-b22de6825cf7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200812195022-5ae4c3c160a0/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200831203904-5a2aa26beb65/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201001104356-43ebab892c4c/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201002184944-ecd9fd270d5d/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201028025901-8cd080b735b3/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/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-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201230224404-63754364767c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= -golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/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/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.9-0.20211228192929-ee1ca4ffc4da/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= -golang.org/x/tools v0.1.11-0.20220513221640-090b14e8501f/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= -golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= -golang.org/x/tools v0.1.12-0.20220628192153-7743d1d949f1/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE= -golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= 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/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= -gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= -gonum.org/v1/gonum v0.12.0/go.mod h1:73TDxJfAAHeA8Mk9mf8NlIppyhQNo5GLTcYeqgo2lvY= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= -gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= -google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.0.0-20181220000619-583d854617af/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.2.0/go.mod h1:IfRCZScioGtypHNTlz3gFk67J8uePVW7uDTBzXuIkhU= -google.golang.org/api v0.3.0/go.mod h1:IuvZyQh8jgscv8qWfQ4ABd8m7hEudgBFM/EdhA3BnXw= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df h1:5Pf6pFKu98ODmgnpvkJ3kFUOQGGLIzLIkbzUHp47618= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.5.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.6.0/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= -google.golang.org/api v0.6.1-0.20190607001116-5213b8090861/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.10.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= @@ -2800,79 +1030,34 @@ google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/ google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.25.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.81.0/go.mod h1:FA6Mb/bZxj706H2j+j2d6mHEEaHBmbbWnkfvmorOCko= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= -google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181107211654-5fc9ac540362/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181219182458-5a97ab628bfb/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190508193815-b515fa19cec8/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190620144150-6af8c5fc6601/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= @@ -2888,98 +1073,22 @@ google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200626011028-ee7919e894b5/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200707001353-8e8330bf89df/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211101144312-62acf1d99145/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a h1:GH6UPn3ixhWcKDhpnEC55S75cerLPdpp3hrhfKYjZgw= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -2992,45 +1101,24 @@ 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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 h1:KR8+MyP7/qOlV+8Af01LtjL04bu7on42eVsxT4EyBQk= google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/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/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -3038,24 +1126,14 @@ 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.6/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= 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-20200615113413-eeeca48fe776/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.0/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= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -gotest.tools/v3 v3.2.0/go.mod h1:Mcr9QNxkg0uMvy/YElmo4SpXgJKWgQvYrT7Kw5RzJ1A= -grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= -honnef.co/go/tools v0.0.0-20180920025451-e3ad64cb4ed3/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= 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= @@ -3063,114 +1141,8 @@ 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= -honnef.co/go/tools v0.0.1-2020.1.5/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -honnef.co/go/tools v0.3.3/go.mod h1:jzwdWgg7Jdq75wlfblQxO4neNaFFSvgc1tD5Wv8U0Yw= -k8s.io/api v0.0.0-20180904230853-4e7be11eab3f/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= -k8s.io/api v0.17.4/go.mod h1:5qxx6vjmwUVG2nHQTKGlLts8Tbok8PzHl4vHtVFuZCA= -k8s.io/api v0.19.0/go.mod h1:I1K45XlvTrDjmj5LoM5LuP/KYrhWbjUKT/SoPG0qTjw= -k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= -k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= -k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= -k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= -k8s.io/api v0.23.4/go.mod h1:i77F4JfyNNrhOjZF7OwwNJS5Y1S9dpwvb9iYRYRczfI= -k8s.io/apimachinery v0.0.0-20180904193909-def12e63c512/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= -k8s.io/apimachinery v0.17.4/go.mod h1:gxLnyZcGNdZTCLnq3fgzyg2A5BVCHTNDFrw8AmuJ+0g= -k8s.io/apimachinery v0.19.0/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= -k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= -k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= -k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= -k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= -k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0U= -k8s.io/apimachinery v0.23.4/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= -k8s.io/apiserver v0.17.4/go.mod h1:5ZDQ6Xr5MNBxyi3iUZXS84QOhZl+W7Oq2us/29c0j9I= -k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= -k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= -k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= -k8s.io/apiserver v0.22.5/go.mod h1:s2WbtgZAkTKt679sYtSudEQrTGWUSQAPe6MupLnlmaQ= -k8s.io/client-go v0.0.0-20180910083459-2cefa64ff137/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= -k8s.io/client-go v0.17.4/go.mod h1:ouF6o5pz3is8qU0/qYL2RnoxOPqgfuidYLowytyLJmc= -k8s.io/client-go v0.19.0/go.mod h1:H9E/VT95blcFQnlyShFgnFT9ZnJOAceiUHM3MlRC+mU= -k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= -k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= -k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= -k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= -k8s.io/client-go v0.23.4/go.mod h1:PKnIL4pqLuvYUK1WU7RLTMYKPiIh7MYShLshtRY9cj0= -k8s.io/cloud-provider v0.17.4/go.mod h1:XEjKDzfD+b9MTLXQFlDGkk6Ho8SGMpaU8Uugx/KNK9U= -k8s.io/code-generator v0.17.2/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= -k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= -k8s.io/component-base v0.17.4/go.mod h1:5BRqHMbbQPm2kKu35v3G+CpVq4K0RJKC7TRioF0I9lE= -k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= -k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= -k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= -k8s.io/component-base v0.22.5/go.mod h1:VK3I+TjuF9eaa+Ln67dKxhGar5ynVbwnGrUiNF4MqCI= -k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= -k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= -k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= -k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= -k8s.io/cri-api v0.23.1/go.mod h1:REJE3PSU0h/LOV1APBrupxrEJqnoxZC8KWzkBUHwrK4= -k8s.io/cri-api v0.24.0-alpha.3/go.mod h1:c/NLI5Zdyup5+oEYqFO2IE32ptofNiZpS1nL2y51gAg= -k8s.io/csi-translation-lib v0.17.4/go.mod h1:CsxmjwxEI0tTNMzffIAcgR9lX4wOh6AKHdxQrT7L0oo= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20180731170545-e3762e86a74c/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= -k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= -k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= -k8s.io/kubernetes v1.11.10/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= -k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= -k8s.io/legacy-cloud-providers v0.17.4/go.mod h1:FikRNoD64ECjkxO36gkDgJeiQWwyZTuBkhu+yxOc1Js= -k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= -modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= -modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= -modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= -modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= -mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ= -mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= -mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= -mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw= -mvdan.cc/unparam v0.0.0-20200501210554-b37ab49443f7/go.mod h1:HGC5lll35J70Y5v7vCGb9oLhHoScFwkHDJm/05RdSTc= -mvdan.cc/unparam v0.0.0-20220706161116-678bad134442/go.mod h1:F/Cxw/6mVrNKqrR2YjFf5CaW0Bw4RL8RfbEf4GRggJk= -pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= 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/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= -sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= -sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= -sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= -sourcegraph.com/sqs/pbtypes v1.0.0/go.mod h1:3AciMUv4qUuRHRHhOG4TZOB+72GdPVz5k+c648qsFS4= diff --git a/store/rootmulti/store.go b/store/rootmulti/store.go index 3c06e3a6772f..ac585622c754 100644 --- a/store/rootmulti/store.go +++ b/store/rootmulti/store.go @@ -989,7 +989,7 @@ func setPruningHeights(batch dbm.Batch, pruneHeights []int64) { bz = append(bz, buf...) } - batch.Set([]byte(pruneHeightsKey), bz) + batch.Set([]byte(pruneHeightsKey), bz) //nolint:errcheck } func getPruningHeights(db dbm.DB) ([]int64, error) { diff --git a/store/rootmulti/store_test.go b/store/rootmulti/store_test.go index 1ceecc2b07e7..feb6e747d499 100644 --- a/store/rootmulti/store_test.go +++ b/store/rootmulti/store_test.go @@ -805,7 +805,10 @@ func newMultiStoreWithGeneratedData(db dbm.DB, stores uint8, storeKeys uint64) * multiStore.MountStoreWithDB(key, types.StoreTypeIAVL, nil) keys = append(keys, key) } - multiStore.LoadLatestVersion() + err := multiStore.LoadLatestVersion() + if err != nil { + panic(err) + } for _, key := range keys { store := multiStore.stores[key].(*iavl.Store) @@ -822,7 +825,10 @@ func newMultiStoreWithGeneratedData(db dbm.DB, stores uint8, storeKeys uint64) * } multiStore.Commit() - multiStore.LoadLatestVersion() + err = multiStore.LoadLatestVersion() + if err != nil { + panic(err) + } return multiStore } From d9272ff67f3c4df55202b26e6cec0c3948fc5484 Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Wed, 4 Jan 2023 20:34:07 +0700 Subject: [PATCH 35/98] many lint fixes and test additions --- .golangci.yml | 5 +- crypto/types/compact_bit_array_test.go | 2 +- store/cachekv/store_bench_test.go | 4 +- types/address.go | 3 - types/decimal_test.go | 6 +- types/query/pagination_test.go | 5 +- x/auth/ante/ante_test.go | 2 +- x/gov/keeper/common_test.go | 9 ++- x/ibc/core/02-client/types/msgs_test.go | 2 +- .../03-connection/keeper/handshake_test.go | 15 ++-- .../core/03-connection/keeper/verify_test.go | 3 +- x/ibc/core/03-connection/types/msgs_test.go | 3 +- .../core/04-channel/keeper/grpc_query_test.go | 2 +- .../core/04-channel/keeper/handshake_test.go | 2 +- x/ibc/core/04-channel/keeper/keeper_test.go | 2 +- x/ibc/core/04-channel/keeper/packet_test.go | 6 +- x/ibc/core/04-channel/keeper/timeout_test.go | 68 ++++++++-------- x/ibc/core/04-channel/types/msgs_test.go | 8 +- .../23-commitment/types/commitment_test.go | 3 +- x/ibc/core/genesis_test.go | 4 +- x/ibc/core/keeper/msg_server_test.go | 62 ++++++++------ x/ibc/core/module.go | 6 +- .../06-solomachine/types/client_state_test.go | 2 +- .../types/misbehaviour_handle_test.go | 2 +- .../07-tendermint/types/client_state_test.go | 14 +--- .../07-tendermint/types/upgrade_test.go | 81 +++++++++++-------- .../09-localhost/types/localhost_test.go | 4 - x/ibc/testing/chain.go | 5 +- x/ibc/testing/mock/privval_test.go | 6 +- x/mint/keeper/integration_test.go | 2 +- x/mint/module.go | 2 +- x/params/keeper/common_test.go | 2 +- x/params/keeper/keeper_test.go | 6 +- x/params/module.go | 2 +- x/params/types/subspace_test.go | 2 +- x/simulation/simulate.go | 1 - x/slashing/genesis.go | 5 +- x/slashing/genesis_test.go | 4 +- x/slashing/keeper/hooks.go | 7 +- x/slashing/keeper/signing_info_test.go | 4 +- x/slashing/module.go | 2 +- x/slashing/simulation/operations.go | 2 + x/slashing/simulation/operations_test.go | 5 +- x/staking/client/cli/tx_test.go | 11 ++- x/staking/common_test.go | 2 +- x/staking/genesis.go | 5 +- x/staking/handler_test.go | 28 ++++--- x/staking/keeper/delegation_test.go | 29 ++++--- x/staking/keeper/grpc_query_test.go | 14 ++-- x/staking/keeper/historical_info_test.go | 1 + x/staking/keeper/msg_server.go | 5 +- x/staking/keeper/querier_test.go | 8 +- x/staking/keeper/slash_test.go | 27 ++++--- x/staking/keeper/validator_test.go | 10 ++- x/staking/module.go | 2 +- x/staking/simulation/decoder_test.go | 10 --- x/staking/simulation/operations.go | 2 + x/staking/simulation/operations_test.go | 19 +++-- x/staking/types/historical_info_test.go | 4 +- x/staking/types/validator_test.go | 4 +- x/upgrade/abci.go | 2 +- x/upgrade/abci_test.go | 4 +- x/upgrade/client/cli/tx.go | 4 +- x/upgrade/keeper/grpc_query_test.go | 4 +- x/upgrade/keeper/keeper_test.go | 8 +- x/upgrade/module.go | 2 +- 66 files changed, 321 insertions(+), 266 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index da18bde6c548..2686ce84afac 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -31,6 +31,9 @@ linters: issues: exclude-rules: + - text: "leading space" + linters: + - nolintlint - text: "Use of weak random number generator" linters: - gosec @@ -62,6 +65,6 @@ linters-settings: suggest-new: true nolintlint: allow-unused: false - allow-leading-space: false + allow-leading-space: true require-explanation: false require-specific: false diff --git a/crypto/types/compact_bit_array_test.go b/crypto/types/compact_bit_array_test.go index 094ea32a9da8..63351ca07cb6 100644 --- a/crypto/types/compact_bit_array_test.go +++ b/crypto/types/compact_bit_array_test.go @@ -13,7 +13,7 @@ import ( tmrand "github.com/tendermint/tendermint/libs/rand" ) -func randCompactBitArray(bits int) (*CompactBitArray, []byte) { +func randCompactBitArray(bits int) (*CompactBitArray, []byte) { //nolint:unparam numBytes := (bits + 7) / 8 src := tmrand.Bytes((bits + 7) / 8) bA := NewCompactBitArray(bits) diff --git a/store/cachekv/store_bench_test.go b/store/cachekv/store_bench_test.go index 88c86eff564a..71c8fab7e1f6 100644 --- a/store/cachekv/store_bench_test.go +++ b/store/cachekv/store_bench_test.go @@ -14,7 +14,7 @@ var sink interface{} const defaultValueSizeBz = 1 << 12 // This benchmark measures the time of iterator.Next() when the parent store is blank -func benchmarkBlankParentIteratorNext(b *testing.B, keysize int) { +func benchmarkBlankParentIteratorNext(b *testing.B, keysize int) { //nolint:unparam mem := dbadapter.Store{DB: dbm.NewMemDB()} kvstore := cachekv.NewStore(mem) // Use a singleton for value, to not waste time computing it @@ -42,7 +42,7 @@ func benchmarkBlankParentIteratorNext(b *testing.B, keysize int) { } // Benchmark setting New keys to a store, where the new keys are in sequence. -func benchmarkBlankParentAppend(b *testing.B, keysize int) { +func benchmarkBlankParentAppend(b *testing.B, keysize int) { //nolint:unparam mem := dbadapter.Store{DB: dbm.NewMemDB()} kvstore := cachekv.NewStore(mem) diff --git a/types/address.go b/types/address.go index de9e80e94766..82744ddb6b62 100644 --- a/types/address.go +++ b/types/address.go @@ -247,7 +247,6 @@ func (aa AccAddress) String() string { } // Format implements the fmt.Formatter interface. -// nolint: errcheck func (aa AccAddress) Format(s fmt.State, verb rune) { switch verb { case 's': @@ -402,7 +401,6 @@ func (va ValAddress) String() string { } // Format implements the fmt.Formatter interface. -// nolint: errcheck func (va ValAddress) Format(s fmt.State, verb rune) { switch verb { case 's': @@ -586,7 +584,6 @@ func MustBech32ifyAddressBytes(prefix string, bs []byte) string { } // Format implements the fmt.Formatter interface. -// nolint: errcheck func (ca ConsAddress) Format(s fmt.State, verb rune) { switch verb { case 's': diff --git a/types/decimal_test.go b/types/decimal_test.go index e208a0cc5ebd..f2e99e50cd3f 100644 --- a/types/decimal_test.go +++ b/types/decimal_test.go @@ -521,10 +521,8 @@ func BenchmarkMarshalTo(b *testing.B) { for _, bi := range bis { if n, err := bi.in.MarshalTo(data); err != nil { b.Fatal(err) - } else { - if !bytes.Equal(data[:n], bi.want) { - b.Fatalf("Mismatch\nGot: % x\nWant: % x\n", data[:n], bi.want) - } + } else if !bytes.Equal(data[:n], bi.want) { + b.Fatalf("Mismatch\nGot: % x\nWant: % x\n", data[:n], bi.want) } } } diff --git a/types/query/pagination_test.go b/types/query/pagination_test.go index f0e1377a1e91..fffb7d21df8e 100644 --- a/types/query/pagination_test.go +++ b/types/query/pagination_test.go @@ -219,7 +219,10 @@ func setupTest() (*simapp.SimApp, sdk.Context, codec.Marshaler) { db := dbm.NewMemDB() ms := store.NewCommitMultiStore(db) - ms.LoadLatestVersion() + err := ms.LoadLatestVersion() + if err != nil { + panic(err) + } maccPerms := simapp.GetMaccPerms() maccPerms[holder] = nil diff --git a/x/auth/ante/ante_test.go b/x/auth/ante/ante_test.go index d4ec1368a260..6e262e9584d9 100644 --- a/x/auth/ante/ante_test.go +++ b/x/auth/ante/ante_test.go @@ -474,7 +474,7 @@ func (suite *AnteTestSuite) TestAnteHandlerFees() { { "signer does not have enough funds to pay the fee", func() { - suite.app.BankKeeper.SetBalances(suite.ctx, addr0, sdk.NewCoins(sdk.NewInt64Coin("atom", 149))) + suite.app.BankKeeper.SetBalances(suite.ctx, addr0, sdk.NewCoins(sdk.NewInt64Coin("atom", 149))) //nolint:errcheck }, false, false, diff --git a/x/gov/keeper/common_test.go b/x/gov/keeper/common_test.go index 2aa3b5ba6ec8..09e2f73b73cb 100644 --- a/x/gov/keeper/common_test.go +++ b/x/gov/keeper/common_test.go @@ -39,9 +39,12 @@ func createValidators(t *testing.T, ctx sdk.Context, app *simapp.SimApp, powers app.StakingKeeper.SetValidator(ctx, val1) app.StakingKeeper.SetValidator(ctx, val2) app.StakingKeeper.SetValidator(ctx, val3) - app.StakingKeeper.SetValidatorByConsAddr(ctx, val1) - app.StakingKeeper.SetValidatorByConsAddr(ctx, val2) - app.StakingKeeper.SetValidatorByConsAddr(ctx, val3) + err = app.StakingKeeper.SetValidatorByConsAddr(ctx, val1) + require.NoError(t, err) + err = app.StakingKeeper.SetValidatorByConsAddr(ctx, val2) + require.NoError(t, err) + err = app.StakingKeeper.SetValidatorByConsAddr(ctx, val3) + require.NoError(t, err) app.StakingKeeper.SetNewValidatorByPowerIndex(ctx, val1) app.StakingKeeper.SetNewValidatorByPowerIndex(ctx, val2) app.StakingKeeper.SetNewValidatorByPowerIndex(ctx, val3) diff --git a/x/ibc/core/02-client/types/msgs_test.go b/x/ibc/core/02-client/types/msgs_test.go index 5666083600d4..cde0e3c0d5b4 100644 --- a/x/ibc/core/02-client/types/msgs_test.go +++ b/x/ibc/core/02-client/types/msgs_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/golang/protobuf/proto" + "github.com/golang/protobuf/proto" //nolint:staticcheck // SA1019: package github.com/golang/protobuf/proto is deprecated "github.com/stretchr/testify/suite" "github.com/cosmos/cosmos-sdk/x/ibc/core/02-client/types" diff --git a/x/ibc/core/03-connection/keeper/handshake_test.go b/x/ibc/core/03-connection/keeper/handshake_test.go index 101c061a7526..49999a92ae82 100644 --- a/x/ibc/core/03-connection/keeper/handshake_test.go +++ b/x/ibc/core/03-connection/keeper/handshake_test.go @@ -131,7 +131,8 @@ func (suite *KeeperTestSuite) TestConnOpenTry() { // commit in order for proof to return correct value suite.coordinator.CommitBlock(suite.chainA) - suite.coordinator.UpdateClient(suite.chainB, suite.chainA, clientB, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainB, suite.chainA, clientB, exported.Tendermint) + suite.Require().NoError(err) // retrieve client state of chainA to pass as counterpartyClient counterpartyClient = suite.chainA.GetClientState(clientA) @@ -367,9 +368,11 @@ func (suite *KeeperTestSuite) TestConnOpenAck() { connection.Counterparty.ConnectionId = connA.ID suite.chainB.App.IBCKeeper.ConnectionKeeper.SetConnection(suite.chainB.GetContext(), connB.ID, connection) // update clientB so state change is committed - suite.coordinator.UpdateClient(suite.chainB, suite.chainA, clientB, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainB, suite.chainA, clientB, exported.Tendermint) + suite.Require().NoError(err) - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.Require().NoError(err) // retrieve client state of chainB to pass as counterpartyClient counterpartyClient = suite.chainB.GetClientState(clientB) @@ -481,8 +484,10 @@ func (suite *KeeperTestSuite) TestConnOpenAck() { suite.chainB.App.IBCKeeper.ConnectionKeeper.SetConnection(suite.chainB.GetContext(), connB.ID, connection) // update clientB so state change is committed - suite.coordinator.UpdateClient(suite.chainB, suite.chainA, clientB, exported.Tendermint) - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainB, suite.chainA, clientB, exported.Tendermint) + suite.Require().NoError(err) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.Require().NoError(err) // retrieve client state of chainB to pass as counterpartyClient counterpartyClient = suite.chainB.GetClientState(clientB) diff --git a/x/ibc/core/03-connection/keeper/verify_test.go b/x/ibc/core/03-connection/keeper/verify_test.go index 2d94955d8ef4..55d5423de0a6 100644 --- a/x/ibc/core/03-connection/keeper/verify_test.go +++ b/x/ibc/core/03-connection/keeper/verify_test.go @@ -426,7 +426,8 @@ func (suite *KeeperTestSuite) TestVerifyPacketReceiptAbsence() { } else { // need to update height to prove absence suite.coordinator.CommitBlock(suite.chainA, suite.chainB) - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.Require().NoError(err) } packetReceiptKey := host.PacketReceiptKey(packet.GetDestPort(), packet.GetDestChannel(), packet.GetSequence()) diff --git a/x/ibc/core/03-connection/types/msgs_test.go b/x/ibc/core/03-connection/types/msgs_test.go index 6f3792cf0633..913be9e50380 100644 --- a/x/ibc/core/03-connection/types/msgs_test.go +++ b/x/ibc/core/03-connection/types/msgs_test.go @@ -50,7 +50,8 @@ func (suite *MsgTestSuite) SetupTest() { storeKey := storetypes.NewKVStoreKey("iavlStoreKey") store.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, nil) - store.LoadVersion(0) + err := store.LoadVersion(0) + suite.Require().NoError(err) iavlStore := store.GetCommitStore(storeKey).(*iavl.Store) iavlStore.Set([]byte("KEY"), []byte("VALUE")) diff --git a/x/ibc/core/04-channel/keeper/grpc_query_test.go b/x/ibc/core/04-channel/keeper/grpc_query_test.go index 302ff21cd94f..0444c89ed1ae 100644 --- a/x/ibc/core/04-channel/keeper/grpc_query_test.go +++ b/x/ibc/core/04-channel/keeper/grpc_query_test.go @@ -353,7 +353,7 @@ func (suite *KeeperTestSuite) TestQueryChannelClientState() { channel := suite.chainA.GetChannel(channelA) // update channel to reference a connection that does not exist - channel.ConnectionHops[0] = "doesnotexist" + channel.ConnectionHops[0] = "doesnotexist" //nolint:goconst // set connection hops to wrong connection ID suite.chainA.App.IBCKeeper.ChannelKeeper.SetChannel(suite.chainA.GetContext(), channelA.PortID, channelA.ID, channel) diff --git a/x/ibc/core/04-channel/keeper/handshake_test.go b/x/ibc/core/04-channel/keeper/handshake_test.go index 120e1f8fe229..1c796f1340c9 100644 --- a/x/ibc/core/04-channel/keeper/handshake_test.go +++ b/x/ibc/core/04-channel/keeper/handshake_test.go @@ -619,7 +619,7 @@ func (suite *KeeperTestSuite) TestChanCloseInit() { suite.Require().NoError(err) // create channel in init - channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) + channelA, _, _ := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) // ensure channel capability check passes suite.chainA.CreateChannelCapability(channelA.PortID, channelA.ID) diff --git a/x/ibc/core/04-channel/keeper/keeper_test.go b/x/ibc/core/04-channel/keeper/keeper_test.go index e932feecc566..cbba8c84e10d 100644 --- a/x/ibc/core/04-channel/keeper/keeper_test.go +++ b/x/ibc/core/04-channel/keeper/keeper_test.go @@ -310,7 +310,7 @@ func (suite *KeeperTestSuite) TestGetAllPacketCommitmentsAtChannel() { // TestSetPacketAcknowledgement verifies that packet acknowledgements are correctly // set in the keeper. func (suite *KeeperTestSuite) TestSetPacketAcknowledgement() { - _, _, _, _, channelA, _ := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED) + _, _, _, _, channelA, _ := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED) //nolint:dogsled ctxA := suite.chainA.GetContext() seq := uint64(10) diff --git a/x/ibc/core/04-channel/keeper/packet_test.go b/x/ibc/core/04-channel/keeper/packet_test.go index 547ecf6e4e34..2b547f55f770 100644 --- a/x/ibc/core/04-channel/keeper/packet_test.go +++ b/x/ibc/core/04-channel/keeper/packet_test.go @@ -20,8 +20,6 @@ var ( timeoutHeight = clienttypes.NewHeight(0, 100) // for when the testing package cannot be used - clientIDA = "clientA" - clientIDB = "clientB" connIDA = "connA" connIDB = "connB" portID = "portid" @@ -342,7 +340,7 @@ func (suite *KeeperTestSuite) TestRecvPacket() { {"receipt already stored", func() { _, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp) - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) //nolint:errcheck suite.chainB.App.IBCKeeper.ChannelKeeper.SetPacketReceipt(suite.chainB.GetContext(), channelB.PortID, channelB.ID, 1) channelCap = suite.chainB.GetChannelCapability(channelB.PortID, channelB.ID) }, false}, @@ -592,7 +590,7 @@ func (suite *KeeperTestSuite) TestAcknowledgePacket() { packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp) // create packet commitment - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) // nolint:errcheck channelCap = suite.chainA.GetChannelCapability(channelA.PortID, channelA.ID) }, false}, {"next ack sequence not found", func() { diff --git a/x/ibc/core/04-channel/keeper/timeout_test.go b/x/ibc/core/04-channel/keeper/timeout_test.go index df3404c517c7..824460c39f27 100644 --- a/x/ibc/core/04-channel/keeper/timeout_test.go +++ b/x/ibc/core/04-channel/keeper/timeout_test.go @@ -27,18 +27,18 @@ func (suite *KeeperTestSuite) TestTimeoutPacket() { clientA, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.ORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, clienttypes.GetSelfHeight(suite.chainB.GetContext()), uint64(suite.chainB.GetContext().BlockTime().UnixNano())) - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) //nolint:errcheck // need to update chainA's client representing chainB to prove missing ack - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) //nolint:errcheck }, true}, {"success: UNORDERED", func() { ordered = false clientA, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, clienttypes.GetSelfHeight(suite.chainB.GetContext()), disabledTimeoutTimestamp) - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) //nolint:errcheck // need to update chainA's client representing chainB to prove missing ack - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) //nolint:errcheck }, true}, {"channel not found", func() { // use wrong channel naming @@ -76,8 +76,8 @@ func (suite *KeeperTestSuite) TestTimeoutPacket() { {"timeout", func() { clientA, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.ORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp) - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) //nolint:errcheck + suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) //nolint:errcheck }, false}, {"packet already received ", func() { ordered = true @@ -85,13 +85,13 @@ func (suite *KeeperTestSuite) TestTimeoutPacket() { clientA, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.ORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, uint64(suite.chainB.GetContext().BlockTime().UnixNano())) - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) //nolint:errcheck + suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) //nolint:errcheck }, false}, {"packet hasn't been sent", func() { clientA, _, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.ORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, uint64(suite.chainB.GetContext().BlockTime().UnixNano())) - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) //nolint:errcheck }, false}, {"next seq receive verification failed", func() { // set ordered to false resulting in wrong proof provided @@ -99,8 +99,8 @@ func (suite *KeeperTestSuite) TestTimeoutPacket() { clientA, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.ORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, clienttypes.GetSelfHeight(suite.chainB.GetContext()), disabledTimeoutTimestamp) - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) //nolint:errcheck + suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) //nolint:errcheck }, false}, {"packet ack verification failed", func() { // set ordered to true resulting in wrong proof provided @@ -108,8 +108,8 @@ func (suite *KeeperTestSuite) TestTimeoutPacket() { clientA, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, clienttypes.GetSelfHeight(suite.chainB.GetContext()), disabledTimeoutTimestamp) - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) //nolint:errcheck + suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) //nolint:errcheck }, false}, } @@ -157,7 +157,7 @@ func (suite *KeeperTestSuite) TestTimeoutExecuted() { {"success ORDERED", func() { _, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.ORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, clienttypes.GetSelfHeight(suite.chainB.GetContext()), uint64(suite.chainB.GetContext().BlockTime().UnixNano())) - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) //nolint:errcheck chanCap = suite.chainA.GetChannelCapability(channelA.PortID, channelA.ID) }, true}, @@ -169,7 +169,7 @@ func (suite *KeeperTestSuite) TestTimeoutExecuted() { {"incorrect capability", func() { _, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.ORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, clienttypes.GetSelfHeight(suite.chainB.GetContext()), uint64(suite.chainB.GetContext().BlockTime().UnixNano())) - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) //nolint:errcheck chanCap = capabilitytypes.NewCapability(100) }, false}, @@ -210,10 +210,10 @@ func (suite *KeeperTestSuite) TestTimeoutOnClose() { ordered = true clientA, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.ORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, clienttypes.GetSelfHeight(suite.chainB.GetContext()), uint64(suite.chainB.GetContext().BlockTime().UnixNano())) - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) - suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, channelB) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) //nolint:errcheck + suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, channelB) //nolint:errcheck // need to update chainA's client representing chainB to prove missing ack - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) //nolint:errcheck chanCap = suite.chainA.GetChannelCapability(channelA.PortID, channelA.ID) }, true}, @@ -221,10 +221,10 @@ func (suite *KeeperTestSuite) TestTimeoutOnClose() { ordered = false clientA, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, clienttypes.GetSelfHeight(suite.chainB.GetContext()), disabledTimeoutTimestamp) - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) - suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, channelB) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) //nolint:errcheck + suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, channelB) //nolint:errcheck // need to update chainA's client representing chainB to prove missing ack - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) //nolint:errcheck chanCap = suite.chainA.GetChannelCapability(channelA.PortID, channelA.ID) }, true}, @@ -270,10 +270,10 @@ func (suite *KeeperTestSuite) TestTimeoutOnClose() { ordered = true clientA, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.ORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, clienttypes.GetSelfHeight(suite.chainB.GetContext()), uint64(suite.chainB.GetContext().BlockTime().UnixNano())) - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) - suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, channelB) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) //nolint:errcheck + suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, channelB) //nolint:errcheck // need to update chainA's client representing chainB to prove missing ack - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) //nolint:errcheck chanCap = suite.chainA.GetChannelCapability(channelA.PortID, channelA.ID) }, false}, @@ -281,7 +281,7 @@ func (suite *KeeperTestSuite) TestTimeoutOnClose() { ordered = true _, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.ORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, clienttypes.GetSelfHeight(suite.chainB.GetContext()), uint64(suite.chainB.GetContext().BlockTime().UnixNano())) - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) //nolint:errcheck chanCap = suite.chainA.GetChannelCapability(channelA.PortID, channelA.ID) }, false}, {"next seq receive verification failed", func() { @@ -289,9 +289,9 @@ func (suite *KeeperTestSuite) TestTimeoutOnClose() { ordered = false clientA, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.ORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, clienttypes.GetSelfHeight(suite.chainB.GetContext()), uint64(suite.chainB.GetContext().BlockTime().UnixNano())) - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) - suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, channelB) - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) //nolint:errcheck + suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, channelB) //nolint:errcheck + suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) //nolint:errcheck chanCap = suite.chainA.GetChannelCapability(channelA.PortID, channelA.ID) }, false}, {"packet ack verification failed", func() { @@ -299,19 +299,19 @@ func (suite *KeeperTestSuite) TestTimeoutOnClose() { ordered = true clientA, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, clienttypes.GetSelfHeight(suite.chainB.GetContext()), disabledTimeoutTimestamp) - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) - suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, channelB) - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) //nolint:errcheck + suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, channelB) //nolint:errcheck + suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) //nolint:errcheck chanCap = suite.chainA.GetChannelCapability(channelA.PortID, channelA.ID) }, false}, {"channel capability not found", func() { ordered = true clientA, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, types.ORDERED) packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, clienttypes.GetSelfHeight(suite.chainB.GetContext()), uint64(suite.chainB.GetContext().BlockTime().UnixNano())) - suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) - suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, channelB) + suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB) //nolint:errcheck + suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, channelB) //nolint:errcheck // need to update chainA's client representing chainB to prove missing ack - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) //nolint:errcheck chanCap = capabilitytypes.NewCapability(100) }, false}, diff --git a/x/ibc/core/04-channel/types/msgs_test.go b/x/ibc/core/04-channel/types/msgs_test.go index 9c27fd69efa8..6b11ad253dfb 100644 --- a/x/ibc/core/04-channel/types/msgs_test.go +++ b/x/ibc/core/04-channel/types/msgs_test.go @@ -17,7 +17,6 @@ import ( clienttypes "github.com/cosmos/cosmos-sdk/x/ibc/core/02-client/types" "github.com/cosmos/cosmos-sdk/x/ibc/core/04-channel/types" commitmenttypes "github.com/cosmos/cosmos-sdk/x/ibc/core/23-commitment/types" - "github.com/cosmos/cosmos-sdk/x/ibc/core/exported" ) const ( @@ -55,9 +54,7 @@ var ( packet = types.NewPacket(validPacketData, 1, portid, chanid, cpportid, cpchanid, timeoutHeight, timeoutTimestamp) invalidPacket = types.NewPacket(unknownPacketData, 0, portid, chanid, cpportid, cpchanid, timeoutHeight, timeoutTimestamp) - emptyProof = []byte{} - invalidProofs1 = exported.Proof(nil) - invalidProofs2 = emptyProof + emptyProof = []byte{} addr = sdk.AccAddress("testaddr111111111111") emptyAddr sdk.AccAddress @@ -81,7 +78,8 @@ func (suite *TypesTestSuite) SetupTest() { storeKey := storetypes.NewKVStoreKey("iavlStoreKey") store.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, nil) - store.LoadVersion(0) + err := store.LoadVersion(0) + suite.Require().NoError(err) iavlStore := store.GetCommitStore(storeKey).(*iavl.Store) iavlStore.Set([]byte("KEY"), []byte("VALUE")) diff --git a/x/ibc/core/23-commitment/types/commitment_test.go b/x/ibc/core/23-commitment/types/commitment_test.go index 932599e539cd..1ea8af513903 100644 --- a/x/ibc/core/23-commitment/types/commitment_test.go +++ b/x/ibc/core/23-commitment/types/commitment_test.go @@ -27,7 +27,8 @@ func (suite *MerkleTestSuite) SetupTest() { suite.storeKey = storetypes.NewKVStoreKey("iavlStoreKey") suite.store.MountStoreWithDB(suite.storeKey, storetypes.StoreTypeIAVL, nil) - suite.store.LoadVersion(0) + err := suite.store.LoadVersion(0) + suite.Require().NoError(err) suite.iavlStore = suite.store.GetCommitStore(suite.storeKey).(*iavl.Store) } diff --git a/x/ibc/core/genesis_test.go b/x/ibc/core/genesis_test.go index c6354a9d9087..7090786db2ba 100644 --- a/x/ibc/core/genesis_test.go +++ b/x/ibc/core/genesis_test.go @@ -334,8 +334,8 @@ func (suite *IBCTestSuite) TestExportGenesis() { // creates clients suite.coordinator.Setup(suite.chainA, suite.chainB, channeltypes.UNORDERED) // create extra clients - suite.coordinator.CreateClient(suite.chainA, suite.chainB, exported.Tendermint) - suite.coordinator.CreateClient(suite.chainA, suite.chainB, exported.Tendermint) + suite.coordinator.CreateClient(suite.chainA, suite.chainB, exported.Tendermint) //nolint:errcheck + suite.coordinator.CreateClient(suite.chainA, suite.chainB, exported.Tendermint) //nolint:errcheck }, }, } diff --git a/x/ibc/core/keeper/msg_server_test.go b/x/ibc/core/keeper/msg_server_test.go index 56e9fc4e282c..49738a9125d1 100644 --- a/x/ibc/core/keeper/msg_server_test.go +++ b/x/ibc/core/keeper/msg_server_test.go @@ -18,8 +18,6 @@ import ( upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" ) -const height = 10 - var ( timeoutHeight = clienttypes.NewHeight(0, 10000) maxSequence = uint64(10) @@ -326,7 +324,8 @@ func (suite *KeeperTestSuite) TestHandleTimeoutPacket() { suite.Require().NoError(err) // need to update chainA client to prove missing ack - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.Require().NoError(err) packetKey = host.NextSequenceRecvKey(packet.GetDestPort(), packet.GetDestChannel()) }, true}, @@ -339,7 +338,8 @@ func (suite *KeeperTestSuite) TestHandleTimeoutPacket() { suite.Require().NoError(err) // need to update chainA client to prove missing ack - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.Require().NoError(err) packetKey = host.PacketReceiptKey(packet.GetDestPort(), packet.GetDestChannel(), packet.GetSequence()) }, true}, @@ -357,7 +357,8 @@ func (suite *KeeperTestSuite) TestHandleTimeoutPacket() { suite.Require().NoError(err) } - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.Require().NoError(err) packetKey = host.PacketReceiptKey(packet.GetDestPort(), packet.GetDestChannel(), packet.GetSequence()) }, true}, {"success: ORDERED timeout out of order packet", func() { @@ -373,7 +374,8 @@ func (suite *KeeperTestSuite) TestHandleTimeoutPacket() { suite.Require().NoError(err) } - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.Require().NoError(err) packetKey = host.NextSequenceRecvKey(packet.GetDestPort(), packet.GetDestChannel()) }, true}, {"channel does not exist", func() { @@ -452,12 +454,14 @@ func (suite *KeeperTestSuite) TestHandleTimeoutOnClosePacket() { suite.Require().NoError(err) // need to update chainA client to prove missing ack - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.Require().NoError(err) packetKey = host.NextSequenceRecvKey(packet.GetDestPort(), packet.GetDestChannel()) // close counterparty channel - suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, counterpartyChannel) + err = suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, counterpartyChannel) + suite.Require().NoError(err) }, true}, {"success: UNORDERED", func() { clientA, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, channeltypes.UNORDERED) @@ -473,12 +477,14 @@ func (suite *KeeperTestSuite) TestHandleTimeoutOnClosePacket() { suite.Require().NoError(err) // need to update chainA client to prove missing ack - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.Require().NoError(err) packetKey = host.PacketReceiptKey(packet.GetDestPort(), packet.GetDestChannel(), packet.GetSequence()) // close counterparty channel - suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, counterpartyChannel) + err = suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, counterpartyChannel) + suite.Require().NoError(err) }, true}, {"success: UNORDERED timeout out of order packet", func() { // setup uses an UNORDERED channel @@ -499,11 +505,13 @@ func (suite *KeeperTestSuite) TestHandleTimeoutOnClosePacket() { suite.Require().NoError(err) } - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.Require().NoError(err) packetKey = host.PacketReceiptKey(packet.GetDestPort(), packet.GetDestChannel(), packet.GetSequence()) // close counterparty channel - suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, counterpartyChannel) + err = suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, counterpartyChannel) + suite.Require().NoError(err) }, true}, {"success: ORDERED timeout out of order packet", func() { clientA, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, channeltypes.ORDERED) @@ -523,11 +531,13 @@ func (suite *KeeperTestSuite) TestHandleTimeoutOnClosePacket() { suite.Require().NoError(err) } - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.Require().NoError(err) packetKey = host.NextSequenceRecvKey(packet.GetDestPort(), packet.GetDestChannel()) // close counterparty channel - suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, counterpartyChannel) + err = suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, counterpartyChannel) + suite.Require().NoError(err) }, true}, {"channel does not exist", func() { // any non-nil value of packet is valid @@ -546,7 +556,8 @@ func (suite *KeeperTestSuite) TestHandleTimeoutOnClosePacket() { } // close counterparty channel - suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, counterpartyChannel) + err := suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, counterpartyChannel) + suite.Require().NoError(err) }, false}, {"ORDERED: channel not closed", func() { clientA, clientB, _, _, channelA, channelB := suite.coordinator.Setup(suite.chainA, suite.chainB, channeltypes.ORDERED) @@ -562,7 +573,8 @@ func (suite *KeeperTestSuite) TestHandleTimeoutOnClosePacket() { suite.Require().NoError(err) // need to update chainA client to prove missing ack - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.Require().NoError(err) packetKey = host.NextSequenceRecvKey(packet.GetDestPort(), packet.GetDestChannel()) }, false}, @@ -634,13 +646,14 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) - suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + err := suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.Require().NoError(err) + err = suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + suite.Require().NoError(err) // commit upgrade store changes and update clients - suite.coordinator.CommitBlock(suite.chainB) - err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) suite.Require().NoError(err) cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) @@ -670,13 +683,14 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) - suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + err := suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.Require().NoError(err) + err = suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + suite.Require().NoError(err) // commit upgrade store changes and update clients - suite.coordinator.CommitBlock(suite.chainB) - err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) suite.Require().NoError(err) msg, err = clienttypes.NewMsgUpgradeClient(clientA, upgradedClient, upgradedConsState, nil, nil, suite.chainA.SenderAccount.GetAddress()) diff --git a/x/ibc/core/module.go b/x/ibc/core/module.go index 506bb1338973..998b4f0a9d73 100644 --- a/x/ibc/core/module.go +++ b/x/ibc/core/module.go @@ -69,9 +69,9 @@ func (AppModuleBasic) RegisterRESTRoutes(client.Context, *mux.Router) {} // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the ibc module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - clienttypes.RegisterQueryHandlerClient(context.Background(), mux, clienttypes.NewQueryClient(clientCtx)) - connectiontypes.RegisterQueryHandlerClient(context.Background(), mux, connectiontypes.NewQueryClient(clientCtx)) - channeltypes.RegisterQueryHandlerClient(context.Background(), mux, channeltypes.NewQueryClient(clientCtx)) + clienttypes.RegisterQueryHandlerClient(context.Background(), mux, clienttypes.NewQueryClient(clientCtx)) //nolint:errcheck + connectiontypes.RegisterQueryHandlerClient(context.Background(), mux, connectiontypes.NewQueryClient(clientCtx)) //nolint:errcheck + channeltypes.RegisterQueryHandlerClient(context.Background(), mux, channeltypes.NewQueryClient(clientCtx)) //nolint:errcheck } // GetTxCmd returns the root tx command for the ibc module. diff --git a/x/ibc/light-clients/06-solomachine/types/client_state_test.go b/x/ibc/light-clients/06-solomachine/types/client_state_test.go index bceb5d7a5ce4..ae6bbf8010c5 100644 --- a/x/ibc/light-clients/06-solomachine/types/client_state_test.go +++ b/x/ibc/light-clients/06-solomachine/types/client_state_test.go @@ -84,7 +84,7 @@ func (suite *SoloMachineTestSuite) TestInitialize() { // test singlesig and multisig public keys for _, solomachine := range []*ibctesting.Solomachine{suite.solomachine, suite.solomachineMulti} { malleatedConsensus := solomachine.ClientState().ConsensusState - malleatedConsensus.Timestamp = malleatedConsensus.Timestamp + 10 + malleatedConsensus.Timestamp += 10 testCases := []struct { name string diff --git a/x/ibc/light-clients/06-solomachine/types/misbehaviour_handle_test.go b/x/ibc/light-clients/06-solomachine/types/misbehaviour_handle_test.go index 730c2dd96ec5..9127d232d3dd 100644 --- a/x/ibc/light-clients/06-solomachine/types/misbehaviour_handle_test.go +++ b/x/ibc/light-clients/06-solomachine/types/misbehaviour_handle_test.go @@ -34,7 +34,7 @@ func (suite *SoloMachineTestSuite) TestCheckMisbehaviourAndUpdateState() { "old misbehaviour is successful (timestamp is less than current consensus state)", func() { clientState = solomachine.ClientState() - solomachine.Time = solomachine.Time - 5 + solomachine.Time -= 5 misbehaviour = solomachine.CreateMisbehaviour() }, true, }, diff --git a/x/ibc/light-clients/07-tendermint/types/client_state_test.go b/x/ibc/light-clients/07-tendermint/types/client_state_test.go index 39c41a4b3d2b..775c2ecb75f3 100644 --- a/x/ibc/light-clients/07-tendermint/types/client_state_test.go +++ b/x/ibc/light-clients/07-tendermint/types/client_state_test.go @@ -15,14 +15,6 @@ import ( ibcmock "github.com/cosmos/cosmos-sdk/x/ibc/testing/mock" ) -const ( - testClientID = "clientidone" - testConnectionID = "connectionid" - testPortID = "testportid" - testChannelID = "testchannelid" - testSequence = 1 -) - var invalidProof = []byte("invalid proof") func (suite *TendermintTestSuite) TestValidate() { @@ -636,7 +628,8 @@ func (suite *TendermintTestSuite) TestVerifyPacketReceiptAbsence() { suite.Require().NoError(err) // need to update chainA's client representing chainB to prove missing ack - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.Require().NoError(err) var ok bool clientStateI := suite.chainA.GetClientState(clientA) @@ -743,7 +736,8 @@ func (suite *TendermintTestSuite) TestVerifyNextSeqRecv() { suite.Require().NoError(err) // need to update chainA's client representing chainB - suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + suite.Require().NoError(err) var ok bool clientStateI := suite.chainA.GetClientState(clientA) diff --git a/x/ibc/light-clients/07-tendermint/types/upgrade_test.go b/x/ibc/light-clients/07-tendermint/types/upgrade_test.go index 2de2bbc4d4a0..4f037858416f 100644 --- a/x/ibc/light-clients/07-tendermint/types/upgrade_test.go +++ b/x/ibc/light-clients/07-tendermint/types/upgrade_test.go @@ -34,13 +34,14 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) - suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + err := suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.Require().NoError(err) + err = suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + suite.Require().NoError(err) // commit upgrade store changes and update clients - suite.coordinator.CommitBlock(suite.chainB) - err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) suite.Require().NoError(err) cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) @@ -64,13 +65,14 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) - suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + err := suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.Require().NoError(err) + err = suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + suite.Require().NoError(err) // commit upgrade store changes and update clients - suite.coordinator.CommitBlock(suite.chainB) - err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) suite.Require().NoError(err) cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) @@ -94,13 +96,14 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+10)) // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) - suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + err := suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.Require().NoError(err) + err = suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + suite.Require().NoError(err) // commit upgrade store changes and update clients - suite.coordinator.CommitBlock(suite.chainB) - err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) suite.Require().NoError(err) cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) @@ -123,14 +126,16 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) - suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + err := suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.Require().NoError(err) + err = suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + suite.Require().NoError(err) // change upgradedClient client-specified parameters upgradedClient = types.NewClientState("wrongchainID", types.DefaultTrustLevel, trustingPeriod, ubdPeriod, maxClockDrift, newClientHeight, commitmenttypes.GetSDKSpecs(), upgradePath, true, true) suite.coordinator.CommitBlock(suite.chainB) - err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) suite.Require().NoError(err) cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) @@ -150,14 +155,16 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { } // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) - suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + err := suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.Require().NoError(err) + err = suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + suite.Require().NoError(err) // change upgradedClient client-specified parameters upgradedClient = types.NewClientState("newChainId", types.DefaultTrustLevel, ubdPeriod, ubdPeriod+trustingPeriod, maxClockDrift+5, lastHeight, commitmenttypes.GetSDKSpecs(), upgradePath, true, false) suite.coordinator.CommitBlock(suite.chainB) - err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) suite.Require().NoError(err) cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) @@ -180,8 +187,10 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) - suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + err := suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.Require().NoError(err) + err = suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + suite.Require().NoError(err) // change submitted upgradedConsensusState upgradedConsState = &types.ConsensusState{ @@ -191,7 +200,7 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { // commit upgrade store changes and update clients suite.coordinator.CommitBlock(suite.chainB) - err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) suite.Require().NoError(err) cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) @@ -209,7 +218,7 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { upgradedConsState = &types.ConsensusState{ NextValidatorsHash: []byte("nextValsHash"), } - suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) // nolint:errcheck cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) suite.Require().True(found) @@ -228,7 +237,7 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { NextValidatorsHash: []byte("nextValsHash"), } - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) // nolint:errcheck cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) suite.Require().True(found) @@ -251,7 +260,7 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { // upgrade Height is at next block lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) - suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) // nolint:errcheck cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) suite.Require().True(found) @@ -273,7 +282,7 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { // upgrade Height is at next block lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) // nolint:errcheck cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) suite.Require().True(found) @@ -295,7 +304,7 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) // nolint:errcheck // commit upgrade store changes and update clients @@ -328,7 +337,7 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) // nolint:errcheck // commit upgrade store changes and update clients @@ -356,7 +365,7 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+100)) // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) // nolint:errcheck // commit upgrade store changes and update clients @@ -381,7 +390,7 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { } // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) // nolint:errcheck // commit upgrade store changes and update clients @@ -412,12 +421,12 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + err := suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.Require().NoError(err) // commit upgrade store changes and update clients - suite.coordinator.CommitBlock(suite.chainB) - err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) suite.Require().NoError(err) cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) @@ -441,13 +450,15 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() { lastHeight = clienttypes.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) - suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + err := suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.Require().NoError(err) + err = suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + suite.Require().NoError(err) // commit upgrade store changes and update clients suite.coordinator.CommitBlock(suite.chainB) - err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) suite.Require().NoError(err) cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) diff --git a/x/ibc/light-clients/09-localhost/types/localhost_test.go b/x/ibc/light-clients/09-localhost/types/localhost_test.go index 48c992ee4d3e..28a3f6bf3c59 100644 --- a/x/ibc/light-clients/09-localhost/types/localhost_test.go +++ b/x/ibc/light-clients/09-localhost/types/localhost_test.go @@ -13,10 +13,6 @@ import ( "github.com/cosmos/cosmos-sdk/x/ibc/core/exported" ) -const ( - height = 4 -) - var clientHeight = clienttypes.NewHeight(0, 10) type LocalhostTestSuite struct { diff --git a/x/ibc/testing/chain.go b/x/ibc/testing/chain.go index 0294bbe7693c..b0bf44d30858 100644 --- a/x/ibc/testing/chain.go +++ b/x/ibc/testing/chain.go @@ -298,7 +298,10 @@ func (chain *TestChain) SendMsgs(msgs ...sdk.Msg) (*sdk.Result, error) { chain.NextBlock() // increment sequence for successful transaction execution - chain.SenderAccount.SetSequence(chain.SenderAccount.GetSequence() + 1) + err = chain.SenderAccount.SetSequence(chain.SenderAccount.GetSequence() + 1) + if err != nil { + return nil, err + } return r, nil } diff --git a/x/ibc/testing/mock/privval_test.go b/x/ibc/testing/mock/privval_test.go index b9f0487a36d5..1402a70f6ff7 100644 --- a/x/ibc/testing/mock/privval_test.go +++ b/x/ibc/testing/mock/privval_test.go @@ -24,7 +24,8 @@ func TestSignVote(t *testing.T) { pk, _ := pv.GetPubKey() vote := &tmproto.Vote{Height: 2} - pv.SignVote(chainID, vote) + err := pv.SignVote(chainID, vote) + require.NoError(t, err) msg := tmtypes.VoteSignBytes(chainID, vote) ok := pk.VerifySignature(msg, vote.Signature) @@ -36,7 +37,8 @@ func TestSignProposal(t *testing.T) { pk, _ := pv.GetPubKey() proposal := &tmproto.Proposal{Round: 2} - pv.SignProposal(chainID, proposal) + err := pv.SignProposal(chainID, proposal) + require.NoError(t, err) msg := tmtypes.ProposalSignBytes(chainID, proposal) ok := pk.VerifySignature(msg, proposal.Signature) diff --git a/x/mint/keeper/integration_test.go b/x/mint/keeper/integration_test.go index df321c33bd0c..81881b0bebb0 100644 --- a/x/mint/keeper/integration_test.go +++ b/x/mint/keeper/integration_test.go @@ -9,7 +9,7 @@ import ( ) // returns context and an app with updated mint keeper -func createTestApp(isCheckTx bool) (*simapp.SimApp, sdk.Context) { +func createTestApp(isCheckTx bool) (*simapp.SimApp, sdk.Context) { //nolint:unparam app := simapp.Setup(isCheckTx) ctx := app.BaseApp.NewContext(isCheckTx, tmproto.Header{}) diff --git a/x/mint/module.go b/x/mint/module.go index 828c3274ca82..b3c90967ac76 100644 --- a/x/mint/module.go +++ b/x/mint/module.go @@ -71,7 +71,7 @@ func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Rout // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the mint module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) + types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) //nolint:errcheck } // GetTxCmd returns no root tx command for the mint module. diff --git a/x/params/keeper/common_test.go b/x/params/keeper/common_test.go index f6d567db11f7..a7485a68410d 100644 --- a/x/params/keeper/common_test.go +++ b/x/params/keeper/common_test.go @@ -13,7 +13,7 @@ import ( paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" ) -func testComponents() (*codec.LegacyAmino, sdk.Context, sdk.StoreKey, sdk.StoreKey, paramskeeper.Keeper) { +func testComponents() (*codec.LegacyAmino, sdk.Context, sdk.StoreKey, sdk.StoreKey, paramskeeper.Keeper) { //nolint:unparam marshaler := simapp.MakeTestEncodingConfig().Marshaler legacyAmino := createTestCodec() mkey := sdk.NewKVStoreKey("test") diff --git a/x/params/keeper/keeper_test.go b/x/params/keeper/keeper_test.go index 44c8223f2c25..e3f8bdb11d1d 100644 --- a/x/params/keeper/keeper_test.go +++ b/x/params/keeper/keeper_test.go @@ -165,9 +165,9 @@ func TestSubspace(t *testing.T) { {"uint16", uint16(1), uint16(0), new(uint16)}, {"uint32", uint32(1), uint32(0), new(uint32)}, {"uint64", uint64(1), uint64(0), new(uint64)}, - {"int", sdk.NewInt(1), *new(sdk.Int), new(sdk.Int)}, - {"uint", sdk.NewUint(1), *new(sdk.Uint), new(sdk.Uint)}, - {"dec", sdk.NewDec(1), *new(sdk.Dec), new(sdk.Dec)}, + {"int", sdk.NewInt(1), sdk.Int{}, new(sdk.Int)}, + {"uint", sdk.NewUint(1), sdk.Uint{}, new(sdk.Uint)}, + {"dec", sdk.NewDec(1), sdk.Dec{}, new(sdk.Dec)}, {"struct", s{1}, s{0}, new(s)}, } diff --git a/x/params/module.go b/x/params/module.go index d7aaabf9ddca..a22e699b2e46 100644 --- a/x/params/module.go +++ b/x/params/module.go @@ -57,7 +57,7 @@ func (AppModuleBasic) RegisterRESTRoutes(_ client.Context, _ *mux.Router) {} // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the params module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - proposal.RegisterQueryHandlerClient(context.Background(), mux, proposal.NewQueryClient(clientCtx)) + proposal.RegisterQueryHandlerClient(context.Background(), mux, proposal.NewQueryClient(clientCtx)) //nolint:errcheck } // GetTxCmd returns no root tx command for the params module. diff --git a/x/params/types/subspace_test.go b/x/params/types/subspace_test.go index 134bf97a21cd..1c2e0e9fcd47 100644 --- a/x/params/types/subspace_test.go +++ b/x/params/types/subspace_test.go @@ -50,7 +50,7 @@ func (suite *SubspaceTestSuite) TestKeyTable() { }) suite.Require().NotPanics(func() { ss := types.NewSubspace(suite.cdc, suite.amino, key, tkey, "testsubspace2") - ss = ss.WithKeyTable(paramKeyTable()) + _ = ss.WithKeyTable(paramKeyTable()) }) } diff --git a/x/simulation/simulate.go b/x/simulation/simulate.go index 1f13cffb783f..31abcc432a8b 100644 --- a/x/simulation/simulate.go +++ b/x/simulation/simulate.go @@ -314,7 +314,6 @@ Comment: %s`, } } -// nolint: errcheck func runQueuedOperations(queueOps map[int][]simulation.Operation, height int, tb testing.TB, r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accounts []simulation.Account, logWriter LogWriter, diff --git a/x/slashing/genesis.go b/x/slashing/genesis.go index 2c8b6675762b..45530c34661d 100644 --- a/x/slashing/genesis.go +++ b/x/slashing/genesis.go @@ -16,7 +16,10 @@ func InitGenesis(ctx sdk.Context, keeper keeper.Keeper, stakingKeeper types.Stak if err != nil { panic(err) } - keeper.AddPubkey(ctx, consPk) + err = keeper.AddPubkey(ctx, consPk) + if err != nil { + panic(err) + } return false }, ) diff --git a/x/slashing/genesis_test.go b/x/slashing/genesis_test.go index b9241f0246ca..bf991327717a 100644 --- a/x/slashing/genesis_test.go +++ b/x/slashing/genesis_test.go @@ -42,7 +42,7 @@ func TestExportAndInitGenesis(t *testing.T) { ok := app.SlashingKeeper.IsTombstoned(ctx, sdk.ConsAddress(addrDels[0])) require.True(t, ok) - newInfo1, ok := app.SlashingKeeper.GetValidatorSigningInfo(ctx, sdk.ConsAddress(addrDels[0])) + newInfo1, _ := app.SlashingKeeper.GetValidatorSigningInfo(ctx, sdk.ConsAddress(addrDels[0])) require.NotEqual(t, info1, newInfo1) // Initialise genesis with genesis state before tombstone slashing.InitGenesis(ctx, app.SlashingKeeper, app.StakingKeeper, genesisState) @@ -51,7 +51,7 @@ func TestExportAndInitGenesis(t *testing.T) { ok = app.SlashingKeeper.IsTombstoned(ctx, sdk.ConsAddress(addrDels[0])) require.False(t, ok) - newInfo1, ok = app.SlashingKeeper.GetValidatorSigningInfo(ctx, sdk.ConsAddress(addrDels[0])) + newInfo1, _ = app.SlashingKeeper.GetValidatorSigningInfo(ctx, sdk.ConsAddress(addrDels[0])) newInfo2, ok := app.SlashingKeeper.GetValidatorSigningInfo(ctx, sdk.ConsAddress(addrDels[1])) require.True(t, ok) require.Equal(t, info1, newInfo1) diff --git a/x/slashing/keeper/hooks.go b/x/slashing/keeper/hooks.go index 4a99b10e9f93..7ec81ebd2025 100644 --- a/x/slashing/keeper/hooks.go +++ b/x/slashing/keeper/hooks.go @@ -32,7 +32,10 @@ func (k Keeper) AfterValidatorCreated(ctx sdk.Context, valAddr sdk.ValAddress) e if err != nil { return err } - k.AddPubkey(ctx, consPk) + err = k.AddPubkey(ctx, consPk) + if err != nil { + return err + } return nil } @@ -68,7 +71,7 @@ func (h Hooks) AfterValidatorRemoved(ctx sdk.Context, consAddr sdk.ConsAddress, // Implements sdk.ValidatorHooks func (h Hooks) AfterValidatorCreated(ctx sdk.Context, valAddr sdk.ValAddress) { - h.k.AfterValidatorCreated(ctx, valAddr) + h.k.AfterValidatorCreated(ctx, valAddr) //nolint:errcheck } func (h Hooks) AfterValidatorBeginUnbonding(_ sdk.Context, _ sdk.ConsAddress, _ sdk.ValAddress) {} diff --git a/x/slashing/keeper/signing_info_test.go b/x/slashing/keeper/signing_info_test.go index 1b70c83b9712..b2fb6d63d111 100644 --- a/x/slashing/keeper/signing_info_test.go +++ b/x/slashing/keeper/signing_info_test.go @@ -17,7 +17,7 @@ func TestGetSetValidatorSigningInfo(t *testing.T) { ctx := app.BaseApp.NewContext(false, tmproto.Header{}) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 1, sdk.TokensFromConsensusPower(200)) - info, found := app.SlashingKeeper.GetValidatorSigningInfo(ctx, sdk.ConsAddress(addrDels[0])) + _, found := app.SlashingKeeper.GetValidatorSigningInfo(ctx, sdk.ConsAddress(addrDels[0])) require.False(t, found) newInfo := types.NewValidatorSigningInfo( sdk.ConsAddress(addrDels[0]), @@ -28,7 +28,7 @@ func TestGetSetValidatorSigningInfo(t *testing.T) { int64(10), ) app.SlashingKeeper.SetValidatorSigningInfo(ctx, sdk.ConsAddress(addrDels[0]), newInfo) - info, found = app.SlashingKeeper.GetValidatorSigningInfo(ctx, sdk.ConsAddress(addrDels[0])) + info, found := app.SlashingKeeper.GetValidatorSigningInfo(ctx, sdk.ConsAddress(addrDels[0])) require.True(t, found) require.Equal(t, info.StartHeight, int64(4)) require.Equal(t, info.IndexOffset, int64(3)) diff --git a/x/slashing/module.go b/x/slashing/module.go index de773738a206..bc761628b80c 100644 --- a/x/slashing/module.go +++ b/x/slashing/module.go @@ -78,7 +78,7 @@ func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Rout // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the slashig module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) + types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) // nolint:errcheck } // GetTxCmd returns the root tx command for the slashing module. diff --git a/x/slashing/simulation/operations.go b/x/slashing/simulation/operations.go index 25f7190f73b1..8cce73571146 100644 --- a/x/slashing/simulation/operations.go +++ b/x/slashing/simulation/operations.go @@ -17,6 +17,8 @@ import ( ) // Simulation operation weights constants +// +//nolint:gosec const ( OpWeightMsgUnjail = "op_weight_msg_unjail" ) diff --git a/x/slashing/simulation/operations_test.go b/x/slashing/simulation/operations_test.go index 15764c631ebf..5105359341b5 100644 --- a/x/slashing/simulation/operations_test.go +++ b/x/slashing/simulation/operations_test.go @@ -66,7 +66,8 @@ func TestSimulateMsgUnjail(t *testing.T) { validator0 := getTestingValidator0(t, app, ctx, accounts) // setup validator0 by consensus address - app.StakingKeeper.SetValidatorByConsAddr(ctx, validator0) + err := app.StakingKeeper.SetValidatorByConsAddr(ctx, validator0) + require.NoError(t, err) val0ConsAddress, err := validator0.GetConsAddr() require.NoError(t, err) info := types.NewValidatorSigningInfo(val0ConsAddress, int64(4), int64(3), @@ -94,7 +95,7 @@ func TestSimulateMsgUnjail(t *testing.T) { require.NoError(t, err) var msg types.MsgUnjail - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) //nolint:errcheck require.True(t, operationMsg.OK) require.Equal(t, types.TypeMsgUnjail, msg.Type()) diff --git a/x/staking/client/cli/tx_test.go b/x/staking/client/cli/tx_test.go index 7a28aac96447..8f37e120546f 100644 --- a/x/staking/client/cli/tx_test.go +++ b/x/staking/client/cli/tx_test.go @@ -25,7 +25,6 @@ func TestPrepareConfigForTxCreateValidator(t *testing.T) { { name: "all defaults", fsModify: func(fs *pflag.FlagSet) { - return }, expectedCfg: TxCreateValidatorConfig{ IP: ip, @@ -43,7 +42,7 @@ func TestPrepareConfigForTxCreateValidator(t *testing.T) { { name: "Custom amount", fsModify: func(fs *pflag.FlagSet) { - fs.Set(FlagAmount, "2000stake") + fs.Set(FlagAmount, "2000stake") //nolint:errcheck }, expectedCfg: TxCreateValidatorConfig{ IP: ip, @@ -61,7 +60,7 @@ func TestPrepareConfigForTxCreateValidator(t *testing.T) { { name: "Custom commission rate", fsModify: func(fs *pflag.FlagSet) { - fs.Set(FlagCommissionRate, "0.54") + fs.Set(FlagCommissionRate, "0.54") //nolint:errcheck }, expectedCfg: TxCreateValidatorConfig{ IP: ip, @@ -79,7 +78,7 @@ func TestPrepareConfigForTxCreateValidator(t *testing.T) { { name: "Custom commission max rate", fsModify: func(fs *pflag.FlagSet) { - fs.Set(FlagCommissionMaxRate, "0.89") + fs.Set(FlagCommissionMaxRate, "0.89") //nolint:errcheck }, expectedCfg: TxCreateValidatorConfig{ IP: ip, @@ -97,7 +96,7 @@ func TestPrepareConfigForTxCreateValidator(t *testing.T) { { name: "Custom commission max change rate", fsModify: func(fs *pflag.FlagSet) { - fs.Set(FlagCommissionMaxChangeRate, "0.55") + fs.Set(FlagCommissionMaxChangeRate, "0.55") //nolint:errcheck }, expectedCfg: TxCreateValidatorConfig{ IP: ip, @@ -115,7 +114,7 @@ func TestPrepareConfigForTxCreateValidator(t *testing.T) { { name: "Custom min self delegations", fsModify: func(fs *pflag.FlagSet) { - fs.Set(FlagMinSelfDelegation, "0.33") + fs.Set(FlagMinSelfDelegation, "0.33") //nolint:errcheck }, expectedCfg: TxCreateValidatorConfig{ IP: ip, diff --git a/x/staking/common_test.go b/x/staking/common_test.go index b392bceb61b2..b82aeb3f566a 100644 --- a/x/staking/common_test.go +++ b/x/staking/common_test.go @@ -35,7 +35,7 @@ var ( // getBaseSimappWithCustomKeeper Returns a simapp with custom StakingKeeper // to avoid messing with the hooks. -func getBaseSimappWithCustomKeeper() (*codec.LegacyAmino, *simapp.SimApp, sdk.Context) { +func getBaseSimappWithCustomKeeper() (*codec.LegacyAmino, *simapp.SimApp, sdk.Context) { //nolint:unparam app := simapp.Setup(false) ctx := app.BaseApp.NewContext(false, tmproto.Header{}) diff --git a/x/staking/genesis.go b/x/staking/genesis.go index 02f6bc317473..769664f06a40 100644 --- a/x/staking/genesis.go +++ b/x/staking/genesis.go @@ -39,7 +39,10 @@ func InitGenesis( keeper.SetValidator(ctx, validator) // Manually set indices for the first time - keeper.SetValidatorByConsAddr(ctx, validator) + err := keeper.SetValidatorByConsAddr(ctx, validator) + if err != nil { + panic(err) + } keeper.SetValidatorByPowerIndex(ctx, validator) // Call the creation hook if not exported diff --git a/x/staking/handler_test.go b/x/staking/handler_test.go index 7fd19f833981..b946774e778d 100644 --- a/x/staking/handler_test.go +++ b/x/staking/handler_test.go @@ -11,7 +11,7 @@ import ( tmproto "github.com/tendermint/tendermint/proto/tendermint/types" tmtypes "github.com/tendermint/tendermint/types" - "github.com/golang/protobuf/proto" + "github.com/golang/protobuf/proto" // nolint: staticcheck // SA1019: proto is deprecated cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" @@ -83,7 +83,8 @@ func TestValidatorByPowerIndex(t *testing.T) { consAddr0 := sdk.ConsAddress(PKs[0].Address()) app.StakingKeeper.Slash(ctx, consAddr0, 0, initPower, sdk.NewDecWithPrec(5, 1)) app.StakingKeeper.Jail(ctx, consAddr0) - app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + _, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + require.NoError(t, err) validator, found = app.StakingKeeper.GetValidator(ctx, validatorAddr) require.True(t, found) @@ -131,7 +132,8 @@ func TestDuplicatesMsgCreateValidator(t *testing.T) { tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) valTokens := tstaking.CreateValidatorWithValPower(addr1, pk1, 10, true) - app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + _, err := app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + require.NoError(t, err) validator := tstaking.CheckValidator(addr1, types.Bonded, false) assert.Equal(t, addr1.String(), validator.OperatorAddress) @@ -308,7 +310,8 @@ func TestIncrementsMsgDelegate(t *testing.T) { bondAmount := tstaking.CreateValidatorWithValPower(validatorAddr, PKs[0], 10, true) // apply TM updates - app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + _, err := app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + require.NoError(t, err) validator := tstaking.CheckValidator(validatorAddr, types.Bonded, false) require.Equal(t, bondAmount, validator.DelegatorShares.RoundInt()) @@ -437,7 +440,8 @@ func TestIncrementsMsgUnbond(t *testing.T) { require.True(sdk.IntEq(t, amt1.Sub(initBond), amt2)) // apply TM updates - app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + _, err := app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + require.NoError(t, err) validator, found := app.StakingKeeper.GetValidator(ctx, validatorAddr) require.True(t, found) @@ -754,7 +758,7 @@ func TestUnbondingFromUnbondingValidator(t *testing.T) { ctx = ctx.WithBlockTime(resData.CompletionTime.Add(time.Second * -1)) // unbond the delegator from the validator - res = tstaking.Undelegate(delegatorAddr, validatorAddr, unbondAmt, true) + _ = tstaking.Undelegate(delegatorAddr, validatorAddr, unbondAmt, true) ctx = tstaking.TurnBlockTimeDiff(app.StakingKeeper.UnbondingTime(ctx)) tstaking.Ctx = ctx @@ -1045,21 +1049,25 @@ func TestUnbondingWhenExcessValidators(t *testing.T) { // add three validators tstaking.CreateValidatorWithValPower(val1, PKs[0], 50, true) // apply TM updates - app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + _, err := app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + require.NoError(t, err) require.Equal(t, 1, len(app.StakingKeeper.GetLastValidators(ctx))) valTokens2 := tstaking.CreateValidatorWithValPower(val2, PKs[1], 30, true) - app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + _, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + require.NoError(t, err) require.Equal(t, 2, len(app.StakingKeeper.GetLastValidators(ctx))) tstaking.CreateValidatorWithValPower(val3, PKs[2], 10, true) - app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + _, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + require.NoError(t, err) require.Equal(t, 2, len(app.StakingKeeper.GetLastValidators(ctx))) // unbond the validator-2 tstaking.Undelegate(sdk.AccAddress(val2), val2, valTokens2, true) // apply TM updates - app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + _, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + require.NoError(t, err) // because there are extra validators waiting to get in, the queued // validator (aka. validator-1) should make it into the bonded group, thus diff --git a/x/staking/keeper/delegation_test.go b/x/staking/keeper/delegation_test.go index c32113986bc0..f12351bba063 100644 --- a/x/staking/keeper/delegation_test.go +++ b/x/staking/keeper/delegation_test.go @@ -201,7 +201,7 @@ func TestUnbondDelegation(t *testing.T) { validator, issuedShares := validator.AddTokensFromDel(startTokens) require.Equal(t, startTokens, issuedShares.RoundInt()) - validator = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator, true) + _ = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator, true) delegation := types.NewDelegation(delAddrs[0], valAddrs[0], issuedShares) app.StakingKeeper.SetDelegation(ctx, delegation) @@ -326,7 +326,8 @@ func TestUndelegateSelfDelegationBelowMinSelfDelegation(t *testing.T) { app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) validator = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator, true) - app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + err = app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + require.NoError(t, err) require.True(t, validator.IsBonded()) selfDelegation := types.NewDelegation(sdk.AccAddress(addrVals[0].Bytes()), addrVals[0], issuedShares) @@ -378,7 +379,8 @@ func TestUndelegateFromUnbondingValidator(t *testing.T) { addrVals := simapp.ConvertAddrsToValAddrs(addrDels) validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) - app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + err := app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + require.NoError(t, err) validator, issuedShares := validator.AddTokensFromDel(delTokens) require.Equal(t, delTokens, issuedShares.RoundInt()) @@ -386,7 +388,7 @@ func TestUndelegateFromUnbondingValidator(t *testing.T) { // add bonded tokens to pool for delegations notBondedPool := app.StakingKeeper.GetNotBondedPool(ctx) oldNotBonded := app.BankKeeper.GetAllBalances(ctx, notBondedPool.GetAddress()) - err := app.BankKeeper.SetBalances(ctx, notBondedPool.GetAddress(), oldNotBonded.Add(delCoins...)) + err = app.BankKeeper.SetBalances(ctx, notBondedPool.GetAddress(), oldNotBonded.Add(delCoins...)) require.NoError(t, err) app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) @@ -478,7 +480,8 @@ func TestUndelegateFromUnbondedValidator(t *testing.T) { // create a validator with a self-delegation validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) - app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + err = app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + require.NoError(t, err) valTokens := sdk.TokensFromConsensusPower(10) validator, issuedShares := validator.AddTokensFromDel(valTokens) @@ -561,7 +564,8 @@ func TestUnbondingAllDelegationFromValidator(t *testing.T) { app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) - app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + err = app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + require.NoError(t, err) valTokens := sdk.TokensFromConsensusPower(10) validator, issuedShares := validator.AddTokensFromDel(valTokens) @@ -762,7 +766,7 @@ func TestRedelegationMaxEntries(t *testing.T) { valTokens := sdk.TokensFromConsensusPower(10) validator, issuedShares := validator.AddTokensFromDel(valTokens) require.Equal(t, valTokens, issuedShares.RoundInt()) - validator = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator, true) + _ = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator, true) val0AccAddr := sdk.AccAddress(addrVals[0].Bytes()) selfDelegation := types.NewDelegation(val0AccAddr, addrVals[0], issuedShares) app.StakingKeeper.SetDelegation(ctx, selfDelegation) @@ -816,7 +820,8 @@ func TestRedelegateSelfDelegation(t *testing.T) { app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) - app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + err = app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + require.NoError(t, err) valTokens := sdk.TokensFromConsensusPower(10) validator, issuedShares := validator.AddTokensFromDel(valTokens) @@ -873,7 +878,8 @@ func TestRedelegateFromUnbondingValidator(t *testing.T) { app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) - app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + err = app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + require.NoError(t, err) valTokens := sdk.TokensFromConsensusPower(10) validator, issuedShares := validator.AddTokensFromDel(valTokens) @@ -896,7 +902,7 @@ func TestRedelegateFromUnbondingValidator(t *testing.T) { validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1]) validator2, issuedShares = validator2.AddTokensFromDel(valTokens) require.Equal(t, valTokens, issuedShares.RoundInt()) - validator2 = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator2, true) + _ = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator2, true) header := ctx.BlockHeader() blockHeight := int64(10) @@ -955,7 +961,8 @@ func TestRedelegateFromUnbondedValidator(t *testing.T) { app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) - app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + err = app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + require.NoError(t, err) valTokens := sdk.TokensFromConsensusPower(10) validator, issuedShares := validator.AddTokensFromDel(valTokens) diff --git a/x/staking/keeper/grpc_query_test.go b/x/staking/keeper/grpc_query_test.go index 06fbf9e93525..eecd3f0ba1b8 100644 --- a/x/staking/keeper/grpc_query_test.go +++ b/x/staking/keeper/grpc_query_test.go @@ -401,7 +401,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryValidatorDelegations() { suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { tc.malleate() res, err := queryClient.ValidatorDelegations(gocontext.Background(), req) - if tc.expPass && !tc.expErr { + if tc.expPass && !tc.expErr { //nolint:gocritic suite.NoError(err) suite.Len(res.DelegationResponses, 1) suite.NotNil(res.Pagination.NextKey) @@ -536,7 +536,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryDelegatorUnbondingDelegations() { suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { tc.malleate() res, err := queryClient.DelegatorUnbondingDelegations(gocontext.Background(), req) - if tc.expPass && !tc.expErr { + if tc.expPass && !tc.expErr { //nolint:gocritic suite.NoError(err) suite.NotNil(res.Pagination.NextKey) suite.Equal(uint64(2), res.Pagination.Total) @@ -713,7 +713,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryRedelegation() { suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { tc.malleate() res, err := queryClient.Redelegations(gocontext.Background(), req) - if tc.expPass && !tc.expErr { + if tc.expPass && !tc.expErr { //nolint:gocritic suite.NoError(err) suite.Len(res.RedelegationResponses, len(redel.Entries)) suite.Equal(redel.DelegatorAddress, res.RedelegationResponses[0].Redelegation.DelegatorAddress) @@ -804,12 +804,14 @@ func createValidators(t *testing.T, ctx sdk.Context, app *simapp.SimApp, powers app.StakingKeeper.SetValidator(ctx, val1) app.StakingKeeper.SetValidator(ctx, val2) - app.StakingKeeper.SetValidatorByConsAddr(ctx, val1) - app.StakingKeeper.SetValidatorByConsAddr(ctx, val2) + err := app.StakingKeeper.SetValidatorByConsAddr(ctx, val1) + require.NoError(t, err) + err = app.StakingKeeper.SetValidatorByConsAddr(ctx, val2) + require.NoError(t, err) app.StakingKeeper.SetNewValidatorByPowerIndex(ctx, val1) app.StakingKeeper.SetNewValidatorByPowerIndex(ctx, val2) - _, err := app.StakingKeeper.Delegate(ctx, addrs[0], sdk.TokensFromConsensusPower(powers[0]), types.Unbonded, val1, true) + _, err = app.StakingKeeper.Delegate(ctx, addrs[0], sdk.TokensFromConsensusPower(powers[0]), types.Unbonded, val1, true) require.NoError(t, err) _, err = app.StakingKeeper.Delegate(ctx, addrs[1], sdk.TokensFromConsensusPower(powers[1]), types.Unbonded, val2, true) require.NoError(t, err) diff --git a/x/staking/keeper/historical_info_test.go b/x/staking/keeper/historical_info_test.go index a9411d0db974..f3503476cfb8 100644 --- a/x/staking/keeper/historical_info_test.go +++ b/x/staking/keeper/historical_info_test.go @@ -136,6 +136,7 @@ func TestGetAllHistoricalInfo(t *testing.T) { expHistInfos := []types.HistoricalInfo{hist1, hist2, hist3} for i, hi := range expHistInfos { + hi := hi app.StakingKeeper.SetHistoricalInfo(ctx, int64(10+i), &hi) } diff --git a/x/staking/keeper/msg_server.go b/x/staking/keeper/msg_server.go index 022d7d746ddd..24a35cd3b6e4 100644 --- a/x/staking/keeper/msg_server.go +++ b/x/staking/keeper/msg_server.go @@ -89,7 +89,10 @@ func (k msgServer) CreateValidator(goCtx context.Context, msg *types.MsgCreateVa validator.MinSelfDelegation = msg.MinSelfDelegation k.SetValidator(ctx, validator) - k.SetValidatorByConsAddr(ctx, validator) + err = k.SetValidatorByConsAddr(ctx, validator) + if err != nil { + return nil, err + } k.SetNewValidatorByPowerIndex(ctx, validator) // call the after-creation hook diff --git a/x/staking/keeper/querier_test.go b/x/staking/keeper/querier_test.go index 0b194bd6dc71..e015086bc761 100644 --- a/x/staking/keeper/querier_test.go +++ b/x/staking/keeper/querier_test.go @@ -483,11 +483,11 @@ func TestQueryValidatorDelegations_Pagination(t *testing.T) { for _, c := range cases { // Query Delegator bonded validators queryParams := types.NewQueryDelegatorParams(addrs[0]) - bz, errRes := cdc.MarshalJSON(queryParams) + _, errRes := cdc.MarshalJSON(queryParams) require.NoError(t, errRes) // Query valAddress delegations - bz, errRes = cdc.MarshalJSON(types.NewQueryValidatorParams(valAddress, c.page, c.limit)) + bz, errRes := cdc.MarshalJSON(types.NewQueryValidatorParams(valAddress, c.page, c.limit)) require.NoError(t, errRes) query := abci.RequestQuery{ @@ -517,10 +517,10 @@ func TestQueryValidatorDelegations_Pagination(t *testing.T) { for _, c := range cases { // Query Unbonding delegations with pagination. queryParams := types.NewQueryDelegatorParams(addrs[0]) - bz, errRes := cdc.MarshalJSON(queryParams) + _, errRes := cdc.MarshalJSON(queryParams) require.NoError(t, errRes) - bz, errRes = cdc.MarshalJSON(types.NewQueryValidatorParams(valAddress, c.page, c.limit)) + bz, errRes := cdc.MarshalJSON(types.NewQueryValidatorParams(valAddress, c.page, c.limit)) require.NoError(t, errRes) query := abci.RequestQuery{ Data: bz, diff --git a/x/staking/keeper/slash_test.go b/x/staking/keeper/slash_test.go index 03d0c90b2d70..b77e87d2f2d7 100644 --- a/x/staking/keeper/slash_test.go +++ b/x/staking/keeper/slash_test.go @@ -45,7 +45,8 @@ func bootstrapSlashTest(t *testing.T, power int64) (*simapp.SimApp, sdk.Context, validator := teststaking.NewValidator(t, addrVals[i], PKs[i]) validator, _ = validator.AddTokensFromDel(amt) validator = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator, true) - app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + err = app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + require.NoError(t, err) } return app, ctx, addrDels, addrVals @@ -205,12 +206,12 @@ func TestSlashAtNegativeHeight(t *testing.T) { bondedPool := app.StakingKeeper.GetBondedPool(ctx) oldBondedPoolBalances := app.BankKeeper.GetAllBalances(ctx, bondedPool.GetAddress()) - validator, found := app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) + _, found := app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) require.True(t, found) app.StakingKeeper.Slash(ctx, consAddr, -2, 10, fraction) // read updated state - validator, found = app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) + validator, found := app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) require.True(t, found) // end block @@ -236,12 +237,12 @@ func TestSlashValidatorAtCurrentHeight(t *testing.T) { bondedPool := app.StakingKeeper.GetBondedPool(ctx) oldBondedPoolBalances := app.BankKeeper.GetAllBalances(ctx, bondedPool.GetAddress()) - validator, found := app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) + _, found := app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) require.True(t, found) app.StakingKeeper.Slash(ctx, consAddr, ctx.BlockHeight(), 10, fraction) // read updated state - validator, found = app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) + validator, found := app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) require.True(t, found) // end block @@ -276,7 +277,7 @@ func TestSlashWithUnbondingDelegation(t *testing.T) { bondedPool := app.StakingKeeper.GetBondedPool(ctx) oldBondedPoolBalances := app.BankKeeper.GetAllBalances(ctx, bondedPool.GetAddress()) - validator, found := app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) + _, found := app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) require.True(t, found) app.StakingKeeper.Slash(ctx, consAddr, 10, 10, fraction) @@ -297,7 +298,7 @@ func TestSlashWithUnbondingDelegation(t *testing.T) { require.Equal(t, sdk.TokensFromConsensusPower(3), diffTokens) // read updated validator - validator, found = app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) + validator, found := app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) require.True(t, found) // power decreased by 3 - 6 stake originally bonded at the time of infraction @@ -419,7 +420,7 @@ func TestSlashWithRedelegation(t *testing.T) { // slash validator ctx = ctx.WithBlockHeight(12) - validator, found := app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) + _, found := app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) require.True(t, found) require.NotPanics(t, func() { app.StakingKeeper.Slash(ctx, consAddr, 10, 10, fraction) }) @@ -441,7 +442,7 @@ func TestSlashWithRedelegation(t *testing.T) { require.True(t, found) require.Len(t, rd.Entries, 1) // read updated validator - validator, found = app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) + validator, found := app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) require.True(t, found) // power decreased by 2 - 4 stake originally bonded at the time of infraction // was still bonded at the time of discovery and was slashed by half, 4 stake @@ -450,7 +451,7 @@ func TestSlashWithRedelegation(t *testing.T) { require.Equal(t, int64(8), validator.GetConsensusPower()) // slash the validator again - validator, found = app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) + _, found = app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) require.True(t, found) require.NotPanics(t, func() { app.StakingKeeper.Slash(ctx, consAddr, 10, 10, sdk.OneDec()) }) @@ -484,7 +485,7 @@ func TestSlashWithRedelegation(t *testing.T) { // slash the validator again, by 100% ctx = ctx.WithBlockHeight(12) - validator, found = app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) + _, found = app.StakingKeeper.GetValidatorByConsAddr(ctx, consAddr) require.True(t, found) require.NotPanics(t, func() { app.StakingKeeper.Slash(ctx, consAddr, 10, 10, sdk.OneDec()) }) @@ -586,7 +587,7 @@ func TestSlashBoth(t *testing.T) { oldNotBonded := app.BankKeeper.GetBalance(ctx, notBondedPool.GetAddress(), bondDenom).Amount // slash validator ctx = ctx.WithBlockHeight(12) - validator, found := app.StakingKeeper.GetValidatorByConsAddr(ctx, sdk.GetConsAddress(PKs[0])) + _, found := app.StakingKeeper.GetValidatorByConsAddr(ctx, sdk.GetConsAddress(PKs[0])) require.True(t, found) consAddr0 := sdk.ConsAddress(PKs[0].Address()) app.StakingKeeper.Slash(ctx, consAddr0, 10, 10, fraction) @@ -610,7 +611,7 @@ func TestSlashBoth(t *testing.T) { require.True(t, found) require.Len(t, rdA.Entries, 1) // read updated validator - validator, found = app.StakingKeeper.GetValidatorByConsAddr(ctx, sdk.GetConsAddress(PKs[0])) + validator, found := app.StakingKeeper.GetValidatorByConsAddr(ctx, sdk.GetConsAddress(PKs[0])) require.True(t, found) // power not decreased, all stake was bonded since require.Equal(t, int64(10), validator.GetConsensusPower()) diff --git a/x/staking/keeper/validator_test.go b/x/staking/keeper/validator_test.go index 6d00413c030a..7c394218d27f 100644 --- a/x/staking/keeper/validator_test.go +++ b/x/staking/keeper/validator_test.go @@ -43,7 +43,7 @@ func bootstrapValidatorTest(t testing.TB, power int64, numAddrs int) (*simapp.Si return app, ctx, addrDels, addrVals } -func initValidators(t testing.TB, power int64, numAddrs int, powers []int64) (*simapp.SimApp, sdk.Context, []sdk.AccAddress, []sdk.ValAddress, []types.Validator) { +func initValidators(t testing.TB, power int64, numAddrs int, powers []int64) (*simapp.SimApp, sdk.Context, []sdk.AccAddress, []sdk.ValAddress, []types.Validator) { //nolint:unparam app, ctx, addrs, valAddrs := bootstrapValidatorTest(t, power, numAddrs) pks := simapp.CreateTestPubKeys(numAddrs) @@ -194,7 +194,7 @@ func TestUpdateBondedValidatorsDecreaseCliff(t *testing.T) { app.StakingKeeper.DeleteValidatorByPowerIndex(ctx, nextCliffVal) shares := sdk.TokensFromConsensusPower(21) nextCliffVal, _ = nextCliffVal.RemoveDelShares(shares.ToDec()) - nextCliffVal = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, nextCliffVal, true) + _ = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, nextCliffVal, true) expectedValStatus := map[int]types.BondStatus{ 9: types.Bonded, 8: types.Bonded, 7: types.Bonded, 5: types.Bonded, 4: types.Bonded, @@ -233,7 +233,8 @@ func TestSlashToZeroPowerRemoved(t *testing.T) { validator, _ = validator.AddTokensFromDel(valTokens) require.Equal(t, types.Unbonded, validator.Status) require.Equal(t, valTokens, validator.Tokens) - app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + err = app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) + require.NoError(t, err) validator = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator, true) require.Equal(t, valTokens, validator.Tokens, "\nvalidator %v\npool %v", validator, valTokens) @@ -275,7 +276,8 @@ func TestValidatorBasics(t *testing.T) { // set and retrieve a record validators[0] = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validators[0], true) - app.StakingKeeper.SetValidatorByConsAddr(ctx, validators[0]) + err := app.StakingKeeper.SetValidatorByConsAddr(ctx, validators[0]) + require.NoError(t, err) resVal, found := app.StakingKeeper.GetValidator(ctx, addrVals[0]) require.True(t, found) assert.True(ValEq(t, validators[0], resVal)) diff --git a/x/staking/module.go b/x/staking/module.go index 48b5c6506527..6857d2ed92fb 100644 --- a/x/staking/module.go +++ b/x/staking/module.go @@ -76,7 +76,7 @@ func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Rout // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the staking module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) + types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) // nolint:errcheck } // GetTxCmd returns the root tx command for the staking module. diff --git a/x/staking/simulation/decoder_test.go b/x/staking/simulation/decoder_test.go index 60210fa89b37..b8719458e416 100644 --- a/x/staking/simulation/decoder_test.go +++ b/x/staking/simulation/decoder_test.go @@ -7,8 +7,6 @@ import ( "github.com/stretchr/testify/require" - "github.com/cosmos/cosmos-sdk/codec" - cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" "github.com/cosmos/cosmos-sdk/simapp" sdk "github.com/cosmos/cosmos-sdk/types" @@ -23,14 +21,6 @@ var ( valAddr1 = sdk.ValAddress(delPk1.Address()) ) -func makeTestCodec() (cdc *codec.LegacyAmino) { - cdc = codec.NewLegacyAmino() - sdk.RegisterLegacyAminoCodec(cdc) - cryptocodec.RegisterCrypto(cdc) - types.RegisterLegacyAminoCodec(cdc) - return -} - func TestDecodeStore(t *testing.T) { cdc, _ := simapp.MakeCodecs() dec := simulation.NewDecodeStore(cdc) diff --git a/x/staking/simulation/operations.go b/x/staking/simulation/operations.go index 11623509480a..82a3e3062e09 100644 --- a/x/staking/simulation/operations.go +++ b/x/staking/simulation/operations.go @@ -16,6 +16,8 @@ import ( ) // Simulation operation weights constants +// +//nolint:gosec const ( OpWeightMsgCreateValidator = "op_weight_msg_create_validator" OpWeightMsgEditValidator = "op_weight_msg_edit_validator" diff --git a/x/staking/simulation/operations_test.go b/x/staking/simulation/operations_test.go index 42475bf2ca34..bb51487e6a30 100644 --- a/x/staking/simulation/operations_test.go +++ b/x/staking/simulation/operations_test.go @@ -79,7 +79,8 @@ func TestSimulateMsgCreateValidator(t *testing.T) { require.NoError(t, err) var msg types.MsgCreateValidator - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + err = types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + require.NoError(t, err) require.True(t, operationMsg.OK) require.Equal(t, "0.080000000000000000", msg.Commission.MaxChangeRate.String()) @@ -116,7 +117,8 @@ func TestSimulateMsgEditValidator(t *testing.T) { require.NoError(t, err) var msg types.MsgEditValidator - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + err = types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + require.NoError(t, err) require.True(t, operationMsg.OK) require.Equal(t, "0.280623462081924936", msg.CommissionRate.String()) @@ -154,7 +156,8 @@ func TestSimulateMsgDelegate(t *testing.T) { require.NoError(t, err) var msg types.MsgDelegate - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + err = types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + require.NoError(t, err) require.True(t, operationMsg.OK) require.Equal(t, "cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r", msg.DelegatorAddress) @@ -199,7 +202,8 @@ func TestSimulateMsgUndelegate(t *testing.T) { require.NoError(t, err) var msg types.MsgUndelegate - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + err = types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + require.NoError(t, err) require.True(t, operationMsg.OK) require.Equal(t, "cosmos1p8wcgrjr4pjju90xg6u9cgq55dxwq8j7u4x9a0", msg.DelegatorAddress) @@ -247,7 +251,8 @@ func TestSimulateMsgBeginRedelegate(t *testing.T) { require.NoError(t, err) var msg types.MsgBeginRedelegate - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + err = types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + require.NoError(t, err) require.True(t, operationMsg.OK) require.Equal(t, "cosmos12gwd9jchc69wck8dhstxgwz3z8qs8yv67ps8mu", msg.DelegatorAddress) @@ -260,7 +265,7 @@ func TestSimulateMsgBeginRedelegate(t *testing.T) { } // returns context and an app with updated mint keeper -func createTestApp(isCheckTx bool) (*simapp.SimApp, sdk.Context) { +func createTestApp(isCheckTx bool) (*simapp.SimApp, sdk.Context) { //nolint:unparam // sdk.PowerReduction = sdk.NewIntFromBigInt(new(big.Int).Exp(big.NewInt(10), big.NewInt(18), nil)) app := simapp.Setup(isCheckTx) @@ -271,7 +276,7 @@ func createTestApp(isCheckTx bool) (*simapp.SimApp, sdk.Context) { return app, ctx } -func getTestingAccounts(t *testing.T, r *rand.Rand, app *simapp.SimApp, ctx sdk.Context, n int) []simtypes.Account { +func getTestingAccounts(t *testing.T, r *rand.Rand, app *simapp.SimApp, ctx sdk.Context, n int) []simtypes.Account { //nolint:unparam accounts := simtypes.RandomAccounts(r, n) initAmt := sdk.TokensFromConsensusPower(200) diff --git a/x/staking/types/historical_info_test.go b/x/staking/types/historical_info_test.go index d8a25fa92924..26340ffcb2e1 100644 --- a/x/staking/types/historical_info_test.go +++ b/x/staking/types/historical_info_test.go @@ -55,9 +55,7 @@ func TestValidateBasic(t *testing.T) { // Ensure validators are not sorted for sort.IsSorted(types.Validators(validators)) { rand.Shuffle(len(validators), func(i, j int) { - it := validators[i] - validators[i] = validators[j] - validators[j] = it + validators[i], validators[j] = validators[j], validators[i] }) } hi = types.HistoricalInfo{ diff --git a/x/staking/types/validator_test.go b/x/staking/types/validator_test.go index 6ab036e69038..5e536bc20b1e 100644 --- a/x/staking/types/validator_test.go +++ b/x/staking/types/validator_test.go @@ -260,9 +260,7 @@ func TestValidatorsSortDeterminism(t *testing.T) { // Randomly shuffle validators, sort, and check it is equal to original sort for i := 0; i < 10; i++ { rand.Shuffle(10, func(i, j int) { - it := vals[i] - vals[i] = vals[j] - vals[j] = it + vals[i], vals[j] = vals[j], vals[i] }) types.Validators(vals).Sort() diff --git a/x/upgrade/abci.go b/x/upgrade/abci.go index d14cd4e7253d..ec2051dd3ed0 100644 --- a/x/upgrade/abci.go +++ b/x/upgrade/abci.go @@ -41,7 +41,7 @@ func BeginBlocker(k keeper.Keeper, ctx sdk.Context, _ abci.RequestBeginBlock) { Timestamp: ctx.BlockTime(), NextValidatorsHash: ctx.BlockHeader().NextValidatorsHash, } - k.SetUpgradedConsensusState(ctx, plan.Height, upgradedConsState) + k.SetUpgradedConsensusState(ctx, plan.Height, upgradedConsState) //nolint:errcheck } // To make sure clear upgrade is executed at the same block if plan.ShouldExecute(ctx) { diff --git a/x/upgrade/abci_test.go b/x/upgrade/abci_test.go index 41e136c1d99a..590fe3bfba50 100644 --- a/x/upgrade/abci_test.go +++ b/x/upgrade/abci_test.go @@ -37,7 +37,7 @@ type TestSuite struct { var s TestSuite -func setupTest(height int64, skip map[int64]bool) TestSuite { +func setupTest(height int64, skip map[int64]bool) TestSuite { //nolint:unparam db := dbm.NewMemDB() app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, skip, simapp.DefaultNodeHome, 0, simapp.MakeTestEncodingConfig(), simapp.EmptyAppOptions{}) genesisState := simapp.NewDefaultGenesisState(app.AppCodec()) @@ -56,7 +56,7 @@ func setupTest(height int64, skip map[int64]bool) TestSuite { s.ctx = app.BaseApp.NewContext(false, tmproto.Header{Height: height, Time: time.Now()}) s.module = upgrade.NewAppModule(s.keeper) - s.querier = s.module.LegacyQuerierHandler(app.LegacyAmino()) + s.querier = s.module.LegacyQuerierHandler(app.LegacyAmino()) //nolint:staticcheck // SA1019: LegacyAmino is deprecated s.handler = upgrade.NewSoftwareUpgradeProposalHandler(s.keeper) return s } diff --git a/x/upgrade/client/cli/tx.go b/x/upgrade/client/cli/tx.go index 32472ad84d16..b189002bac80 100644 --- a/x/upgrade/client/cli/tx.go +++ b/x/upgrade/client/cli/tx.go @@ -139,8 +139,8 @@ func NewCmdSubmitCancelUpgradeProposal() *cobra.Command { cmd.Flags().String(cli.FlagTitle, "", "title of proposal") cmd.Flags().String(cli.FlagDescription, "", "description of proposal") cmd.Flags().String(cli.FlagDeposit, "", "deposit of proposal") - cmd.MarkFlagRequired(cli.FlagTitle) - cmd.MarkFlagRequired(cli.FlagDescription) + cmd.MarkFlagRequired(cli.FlagTitle) //nolint:errcheck + cmd.MarkFlagRequired(cli.FlagDescription) //nolint:errcheck return cmd } diff --git a/x/upgrade/keeper/grpc_query_test.go b/x/upgrade/keeper/grpc_query_test.go index d307157402de..3aa72d494c3e 100644 --- a/x/upgrade/keeper/grpc_query_test.go +++ b/x/upgrade/keeper/grpc_query_test.go @@ -54,7 +54,7 @@ func (suite *UpgradeTestSuite) TestQueryCurrentPlan() { "with current upgrade plan", func() { plan := types.Plan{Name: "test-plan", Height: 5} - suite.app.UpgradeKeeper.ScheduleUpgrade(suite.ctx, plan) + suite.app.UpgradeKeeper.ScheduleUpgrade(suite.ctx, plan) //nolint:errcheck req = &types.QueryCurrentPlanRequest{} expResponse = types.QueryCurrentPlanResponse{Plan: &plan} @@ -107,7 +107,7 @@ func (suite *UpgradeTestSuite) TestAppliedCurrentPlan() { planName := "test-plan" plan := types.Plan{Name: planName, Height: expHeight} - suite.app.UpgradeKeeper.ScheduleUpgrade(suite.ctx, plan) + suite.app.UpgradeKeeper.ScheduleUpgrade(suite.ctx, plan) //nolint:errcheck suite.ctx = suite.ctx.WithBlockHeight(expHeight) suite.app.UpgradeKeeper.SetUpgradeHandler(planName, func(ctx sdk.Context, plan types.Plan) {}) diff --git a/x/upgrade/keeper/keeper_test.go b/x/upgrade/keeper/keeper_test.go index f0b306b1a96b..c7cc5d2b5b52 100644 --- a/x/upgrade/keeper/keeper_test.go +++ b/x/upgrade/keeper/keeper_test.go @@ -118,7 +118,7 @@ func (s *KeeperTestSuite) TestScheduleUpgrade() { Height: 123450000, }, setup: func() { - s.app.UpgradeKeeper.ScheduleUpgrade(s.ctx, types.Plan{ + s.app.UpgradeKeeper.ScheduleUpgrade(s.ctx, types.Plan{ //nolint:errcheck Name: "alt-good", Info: "new text here", Height: 543210000, @@ -135,7 +135,7 @@ func (s *KeeperTestSuite) TestScheduleUpgrade() { UpgradedClientState: cs, }, setup: func() { - s.app.UpgradeKeeper.ScheduleUpgrade(s.ctx, types.Plan{ + s.app.UpgradeKeeper.ScheduleUpgrade(s.ctx, types.Plan{ //nolint:errcheck Name: "alt-good", Info: "new text here", Height: 543210000, @@ -152,7 +152,7 @@ func (s *KeeperTestSuite) TestScheduleUpgrade() { Height: 123450000, }, setup: func() { - s.app.UpgradeKeeper.ScheduleUpgrade(s.ctx, types.Plan{ + s.app.UpgradeKeeper.ScheduleUpgrade(s.ctx, types.Plan{ //nolint:errcheck Name: "alt-good", Info: "new text here", Height: 543210000, @@ -269,7 +269,7 @@ func (s *KeeperTestSuite) TestSetUpgradedClient() { height: 10, setup: func() { clientState = &ibctmtypes.ClientState{ChainId: "gaiachain"} - s.app.UpgradeKeeper.SetUpgradedClient(s.ctx, 10, clientState) + s.app.UpgradeKeeper.SetUpgradedClient(s.ctx, 10, clientState) // nolint:errcheck }, exists: true, }, diff --git a/x/upgrade/module.go b/x/upgrade/module.go index 4e4982a324cf..0a5bb00ba824 100644 --- a/x/upgrade/module.go +++ b/x/upgrade/module.go @@ -49,7 +49,7 @@ func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, r *mux.Router // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the upgrade module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) + types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) //nolint:errcheck } // GetQueryCmd returns the cli query commands for this module From ffed9cc94a6f2bbedd4768502aaa5c5b008b7090 Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Wed, 4 Jan 2023 21:10:34 +0700 Subject: [PATCH 36/98] lints completed --- types/denom_internal_test.go | 1 + types/int_test.go | 4 +- types/kv/list.go | 2 +- types/module/module_test.go | 2 +- types/query/filtered_pagination_test.go | 2 +- types/query/pagination_test.go | 2 +- types/rest/rest_test.go | 2 +- types/result_test.go | 2 +- types/store_test.go | 4 +- x/auth/ante/ante_test.go | 7 ++-- x/auth/ante/fee_test.go | 6 ++- x/auth/ante/sigverify_test.go | 2 +- x/auth/ante/testutil_test.go | 2 +- x/auth/client/cli/query.go | 2 +- x/auth/client/cli/tx_sign.go | 8 ++-- x/auth/client/rest/query.go | 2 +- x/auth/client/tx_test.go | 2 +- x/auth/legacy/legacytx/stdtx_test.go | 4 +- x/auth/module.go | 2 +- x/auth/signing/verify_test.go | 12 +++--- x/auth/tx/service.go | 2 +- x/auth/tx/service_test.go | 2 +- x/bank/client/cli/cli_test.go | 4 +- x/bank/client/cli/tx.go | 5 ++- x/bank/keeper/keeper_test.go | 15 +++++--- x/bank/module.go | 2 +- x/bank/simulation/operations.go | 2 + x/bank/simulation/operations_test.go | 6 ++- x/bank/types/balance.go | 2 +- x/bank/types/balance_test.go | 2 +- x/capability/keeper/keeper_test.go | 3 +- x/distribution/module.go | 2 +- x/distribution/simulation/operations.go | 2 + x/distribution/simulation/operations_test.go | 14 ++++--- x/evidence/handler_test.go | 2 +- x/evidence/keeper/keeper_test.go | 2 +- x/evidence/module.go | 2 +- x/genutil/client/cli/init_test.go | 3 +- x/gov/abci_test.go | 2 +- x/gov/client/cli/parse_test.go | 34 +++++++++++------ x/gov/keeper/deposit_test.go | 4 +- x/gov/keeper/querier.go | 12 +++--- x/gov/keeper/querier_test.go | 2 +- x/gov/module.go | 2 +- x/gov/simulation/operations_test.go | 13 ++++--- x/gov/types/proposal.go | 1 - x/ibc/applications/transfer/module_test.go | 2 +- x/ibc/core/02-client/keeper/client_test.go | 37 +++++++++++-------- x/ibc/core/02-client/types/msgs.go | 2 +- .../core/04-channel/keeper/handshake_test.go | 14 +++---- x/upgrade/types/storeloader_test.go | 2 +- 51 files changed, 156 insertions(+), 113 deletions(-) diff --git a/types/denom_internal_test.go b/types/denom_internal_test.go index 8c957353ebc7..d135d0a7657b 100644 --- a/types/denom_internal_test.go +++ b/types/denom_internal_test.go @@ -180,6 +180,7 @@ func (s *internalDenomTestSuite) TestDecOperationOrder() { s.Require().NoError(err) s.Require().NoError(RegisterDenom("unit1", dec)) dec, err = NewDecFromStr("100000011") + s.Require().NoError(err) s.Require().NoError(RegisterDenom("unit2", dec)) coin, err := ConvertCoin(NewCoin("unit1", NewInt(100000011)), "unit2") diff --git a/types/int_test.go b/types/int_test.go index e6683d8edba7..3ce68f452b18 100644 --- a/types/int_test.go +++ b/types/int_test.go @@ -380,8 +380,8 @@ func (s *intTestSuite) TestIntMod() { } func (s *intTestSuite) TestIntEq() { - _, resp, _, _, _ := sdk.IntEq(s.T(), sdk.ZeroInt(), sdk.ZeroInt()) + _, resp, _, _, _ := sdk.IntEq(s.T(), sdk.ZeroInt(), sdk.ZeroInt()) //nolint:dogsled s.Require().True(resp) - _, resp, _, _, _ = sdk.IntEq(s.T(), sdk.OneInt(), sdk.ZeroInt()) + _, resp, _, _, _ = sdk.IntEq(s.T(), sdk.OneInt(), sdk.ZeroInt()) //nolint:dogsled s.Require().False(resp) } diff --git a/types/kv/list.go b/types/kv/list.go index 1c59207f1ff3..9e928c84912b 100644 --- a/types/kv/list.go +++ b/types/kv/list.go @@ -113,7 +113,7 @@ func (l *List) remove(e *Element) *Element { } // move moves e to next to at and returns e. -//nolint: unparam +// nolint: unparam func (l *List) move(e, at *Element) *Element { if e == at { return e diff --git a/types/module/module_test.go b/types/module/module_test.go index 1dc370291299..e58cdb8da719 100644 --- a/types/module/module_test.go +++ b/types/module/module_test.go @@ -30,7 +30,7 @@ func TestBasicManager(t *testing.T) { cdc := codec.NewProtoCodec(interfaceRegistry) clientCtx := client.Context{} - clientCtx = clientCtx.WithLegacyAmino(legacyAmino) + clientCtx = clientCtx.WithLegacyAmino(legacyAmino) //nolint:staticcheck // SA1019: legacyAmino is deprecated: Legacy amino is deprecated wantDefaultGenesis := map[string]json.RawMessage{"mockAppModuleBasic1": json.RawMessage(``)} mockAppModuleBasic1 := mocks.NewMockAppModuleBasic(mockCtrl) diff --git a/types/query/filtered_pagination_test.go b/types/query/filtered_pagination_test.go index 9c2d43f6494e..a4338d409212 100644 --- a/types/query/filtered_pagination_test.go +++ b/types/query/filtered_pagination_test.go @@ -55,7 +55,7 @@ func (s *paginationTestSuite) TestFilteredPaginations() { s.Require().NotNil(res) s.Require().Equal(2, len(balances)) s.Require().NotNil(res.NextKey) - s.Require().Equal(string(res.NextKey), fmt.Sprintf("test2denom")) + s.Require().Equal(string(res.NextKey), "test2denom") s.Require().Equal(uint64(4), res.Total) s.T().Log("verify both key and offset can't be given") diff --git a/types/query/pagination_test.go b/types/query/pagination_test.go index fffb7d21df8e..2e72b481039c 100644 --- a/types/query/pagination_test.go +++ b/types/query/pagination_test.go @@ -157,7 +157,7 @@ func (s *paginationTestSuite) TestPagination() { s.T().Log("verify paginate with offset and key - error") pageReq = &query.PageRequest{Key: res.Pagination.NextKey, Offset: 100, Limit: defaultLimit, CountTotal: false} request = types.NewQueryAllBalancesRequest(addr1, pageReq) - res, err = queryClient.AllBalances(gocontext.Background(), request) + _, err = queryClient.AllBalances(gocontext.Background(), request) s.Require().Error(err) s.Require().Equal("rpc error: code = InvalidArgument desc = paginate: invalid request, either offset or key is expected, got both", err.Error()) diff --git a/types/rest/rest_test.go b/types/rest/rest_test.go index d39afea52e37..f491f675b2da 100644 --- a/types/rest/rest_test.go +++ b/types/rest/rest_test.go @@ -421,7 +421,7 @@ func runPostProcessResponse(t *testing.T, ctx client.Context, obj interface{}, e require.Equal(t, string(expectedBody), string(body)) } -func mustNewRequest(t *testing.T, method, url string, body io.Reader) *http.Request { +func mustNewRequest(t *testing.T, method, url string, body io.Reader) *http.Request { //nolint:unparam req, err := http.NewRequest(method, url, body) require.NoError(t, err) err = req.ParseForm() diff --git a/types/result_test.go b/types/result_test.go index ab47b544a279..bfc382793a75 100644 --- a/types/result_test.go +++ b/types/result_test.go @@ -6,7 +6,7 @@ import ( "strings" "testing" - "github.com/golang/protobuf/proto" + "github.com/golang/protobuf/proto" //nolint:staticcheck // SA1019: proto is deprecated "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" abci "github.com/tendermint/tendermint/abci/types" diff --git a/types/store_test.go b/types/store_test.go index adfdfb510bb1..2c6514b9b576 100644 --- a/types/store_test.go +++ b/types/store_test.go @@ -67,7 +67,7 @@ func (s *storeTestSuite) TestNewTransientStoreKeys() { func (s *storeTestSuite) TestNewInfiniteGasMeter() { gm := sdk.NewInfiniteGasMeter() s.Require().NotNil(gm) - _, ok := gm.(types.GasMeter) + _, ok := gm.(types.GasMeter) //nolint:gosimple s.Require().True(ok) } @@ -105,7 +105,7 @@ func (s *storeTestSuite) TestDiffKVStores() { // Same keys, different value. Comparisons will be nil as prefixes are skipped. prefix := []byte("prefix:") - k1Prefixed := append(prefix, k1...) + k1Prefixed := append(prefix, k1...) //nolint:gocritic store1.Set(k1Prefixed, v1) store2.Set(k1Prefixed, v2) s.checkDiffResults(store1, store2) diff --git a/x/auth/ante/ante_test.go b/x/auth/ante/ante_test.go index 6e262e9584d9..cbd71ebf3221 100644 --- a/x/auth/ante/ante_test.go +++ b/x/auth/ante/ante_test.go @@ -488,7 +488,7 @@ func (suite *AnteTestSuite) TestAnteHandlerFees() { suite.Require().True(suite.app.BankKeeper.GetAllBalances(suite.ctx, modAcc.GetAddress()).Empty()) require.True(sdk.IntEq(suite.T(), suite.app.BankKeeper.GetAllBalances(suite.ctx, addr0).AmountOf("atom"), sdk.NewInt(149))) - suite.app.BankKeeper.SetBalances(suite.ctx, addr0, sdk.NewCoins(sdk.NewInt64Coin("atom", 150))) + suite.app.BankKeeper.SetBalances(suite.ctx, addr0, sdk.NewCoins(sdk.NewInt64Coin("atom", 150))) //nolint:errcheck }, false, true, @@ -852,7 +852,7 @@ func (suite *AnteTestSuite) TestAnteHandlerSetPubKey() { privs, accNums, accSeqs = []cryptotypes.PrivKey{accounts[1].priv}, []uint64{1}, []uint64{0} msgs = []sdk.Msg{testdata.NewTestMsg(accounts[1].acc.GetAddress())} - suite.txBuilder.SetMsgs(msgs...) + suite.txBuilder.SetMsgs(msgs...) //nolint:errcheck suite.txBuilder.SetFeeAmount(feeAmount) suite.txBuilder.SetGasLimit(gasLimit) @@ -1143,7 +1143,8 @@ func (suite *AnteTestSuite) TestAnteHandlerReCheck() { // remove funds for account so antehandler fails on recheck suite.app.AccountKeeper.SetAccount(suite.ctx, accounts[0].acc) - suite.app.BankKeeper.SetBalances(suite.ctx, accounts[0].acc.GetAddress(), sdk.NewCoins()) + err = suite.app.BankKeeper.SetBalances(suite.ctx, accounts[0].acc.GetAddress(), sdk.NewCoins()) + suite.Require().NoError(err) _, err = suite.anteHandler(suite.ctx, tx, false) suite.Require().NotNil(err, "antehandler on recheck did not fail once feePayer no longer has sufficient funds") diff --git a/x/auth/ante/fee_test.go b/x/auth/ante/fee_test.go index 84e5adb60db7..cb322af4087d 100644 --- a/x/auth/ante/fee_test.go +++ b/x/auth/ante/fee_test.go @@ -82,7 +82,8 @@ func (suite *AnteTestSuite) TestDeductFees() { // Set account with insufficient funds acc := suite.app.AccountKeeper.NewAccountWithAddress(suite.ctx, addr1) suite.app.AccountKeeper.SetAccount(suite.ctx, acc) - suite.app.BankKeeper.SetBalances(suite.ctx, addr1, sdk.NewCoins(sdk.NewCoin("atom", sdk.NewInt(10)))) + err = suite.app.BankKeeper.SetBalances(suite.ctx, addr1, sdk.NewCoins(sdk.NewCoin("atom", sdk.NewInt(10)))) + suite.Require().NoError(err) dfd := ante.NewDeductFeeDecorator(suite.app.AccountKeeper, suite.app.BankKeeper) antehandler := sdk.ChainAnteDecorators(dfd) @@ -93,7 +94,8 @@ func (suite *AnteTestSuite) TestDeductFees() { // Set account with sufficient funds suite.app.AccountKeeper.SetAccount(suite.ctx, acc) - suite.app.BankKeeper.SetBalances(suite.ctx, addr1, sdk.NewCoins(sdk.NewCoin("atom", sdk.NewInt(200)))) + err = suite.app.BankKeeper.SetBalances(suite.ctx, addr1, sdk.NewCoins(sdk.NewCoin("atom", sdk.NewInt(200)))) + suite.Require().NoError(err) _, err = antehandler(suite.ctx, tx, false) diff --git a/x/auth/ante/sigverify_test.go b/x/auth/ante/sigverify_test.go index 337618fab50f..dfa56c3a3661 100644 --- a/x/auth/ante/sigverify_test.go +++ b/x/auth/ante/sigverify_test.go @@ -74,7 +74,7 @@ func (suite *AnteTestSuite) TestConsumeSignatureVerificationGas() { multisignature1 := multisig.NewMultisig(len(pkSet1)) expectedCost1 := expectedGasCostByKeys(pkSet1) for i := 0; i < len(pkSet1); i++ { - stdSig := legacytx.StdSignature{PubKey: pkSet1[i], Signature: sigSet1[i]} + stdSig := legacytx.StdSignature{PubKey: pkSet1[i], Signature: sigSet1[i]} //nolint:staticcheck // SA1019: legacytx.StdSignature is deprecated sigV2, err := legacytx.StdSignatureToSignatureV2(cdc, stdSig) suite.Require().NoError(err) err = multisig.AddSignatureV2(multisignature1, sigV2, pkSet1) diff --git a/x/auth/ante/testutil_test.go b/x/auth/ante/testutil_test.go index 2d9326524857..896a134427a0 100644 --- a/x/auth/ante/testutil_test.go +++ b/x/auth/ante/testutil_test.go @@ -74,7 +74,7 @@ func (suite *AnteTestSuite) CreateTestAccounts(numAccs int) []TestAccount { err := acc.SetAccountNumber(uint64(i)) suite.Require().NoError(err) suite.app.AccountKeeper.SetAccount(suite.ctx, acc) - suite.app.BankKeeper.SetBalances(suite.ctx, addr, sdk.Coins{ + suite.app.BankKeeper.SetBalances(suite.ctx, addr, sdk.Coins{ // nolint:errcheck sdk.NewInt64Coin("atom", 10000000), }) diff --git a/x/auth/client/cli/query.go b/x/auth/client/cli/query.go index b019749bd6b2..27e5a3b2b036 100644 --- a/x/auth/client/cli/query.go +++ b/x/auth/client/cli/query.go @@ -178,7 +178,7 @@ $ %s query txs --%s 'message.sender=cosmos1...&message.action=withdraw_delegator cmd.Flags().Int(flags.FlagPage, rest.DefaultPage, "Query a specific page of paginated results") cmd.Flags().Int(flags.FlagLimit, rest.DefaultLimit, "Query number of transactions results per page returned") cmd.Flags().String(flagEvents, "", fmt.Sprintf("list of transaction events in the form of %s", eventFormat)) - cmd.MarkFlagRequired(flagEvents) + cmd.MarkFlagRequired(flagEvents) // nolint: errcheck return cmd } diff --git a/x/auth/client/cli/tx_sign.go b/x/auth/client/cli/tx_sign.go index b7f2588751b7..af5632f3dfce 100644 --- a/x/auth/client/cli/tx_sign.go +++ b/x/auth/client/cli/tx_sign.go @@ -52,7 +52,7 @@ account key. It implies --signature-only. cmd.Flags().String(flags.FlagOutputDocument, "", "The document will be written to the given file instead of STDOUT") cmd.Flags().Bool(flagSigOnly, true, "Print only the generated signature, then exit") cmd.Flags().String(flags.FlagChainID, "", "network chain ID") - cmd.MarkFlagRequired(flags.FlagFrom) + cmd.MarkFlagRequired(flags.FlagFrom) // nolint: errcheck flags.AddTxFlagsToCmd(cmd) return cmd @@ -184,7 +184,7 @@ be generated via the 'multisign' command. cmd.Flags().String(flags.FlagOutputDocument, "", "The document will be written to the given file instead of STDOUT") cmd.Flags().String(flags.FlagChainID, "", "The network chain ID") cmd.Flags().Bool(flagAmino, false, "Generate Amino encoded JSON suitable for submiting to the txs REST endpoint") - cmd.MarkFlagRequired(flags.FlagFrom) + cmd.MarkFlagRequired(flags.FlagFrom) // nolint: errcheck flags.AddTxFlagsToCmd(cmd) return cmd @@ -194,8 +194,8 @@ func preSignCmd(cmd *cobra.Command, _ []string) { // Conditionally mark the account and sequence numbers required as no RPC // query will be done. if offline, _ := cmd.Flags().GetBool(flags.FlagOffline); offline { - cmd.MarkFlagRequired(flags.FlagAccountNumber) - cmd.MarkFlagRequired(flags.FlagSequence) + cmd.MarkFlagRequired(flags.FlagAccountNumber) // nolint: errcheck + cmd.MarkFlagRequired(flags.FlagSequence) // nolint: errcheck } } diff --git a/x/auth/client/rest/query.go b/x/auth/client/rest/query.go index 057f6e4def15..97b190f33248 100644 --- a/x/auth/client/rest/query.go +++ b/x/auth/client/rest/query.go @@ -105,7 +105,7 @@ func QueryTxsRequestHandlerFn(clientCtx client.Context) http.HandlerFunc { } for _, txRes := range searchResult.Txs { - packStdTxResponse(w, clientCtx, txRes) + packStdTxResponse(w, clientCtx, txRes) // nolint:errcheck } err = checkAminoMarshalError(clientCtx, searchResult, "/cosmos/tx/v1beta1/txs") diff --git a/x/auth/client/tx_test.go b/x/auth/client/tx_test.go index 02e1dc26520e..841e3abce5e1 100644 --- a/x/auth/client/tx_test.go +++ b/x/auth/client/tx_test.go @@ -139,7 +139,7 @@ func TestBatchScanner_Scan(t *testing.T) { func compareEncoders(t *testing.T, expected sdk.TxEncoder, actual sdk.TxEncoder) { msgs := []sdk.Msg{testdata.NewTestMsg(addr)} - tx := legacytx.NewStdTx(msgs, legacytx.StdFee{}, []legacytx.StdSignature{}, "") + tx := legacytx.NewStdTx(msgs, legacytx.StdFee{}, []legacytx.StdSignature{}, "") //nolint:staticcheck defaultEncoderBytes, err := expected(tx) require.NoError(t, err) diff --git a/x/auth/legacy/legacytx/stdtx_test.go b/x/auth/legacy/legacytx/stdtx_test.go index f1c887d61c72..d180e72bcbc8 100644 --- a/x/auth/legacy/legacytx/stdtx_test.go +++ b/x/auth/legacy/legacytx/stdtx_test.go @@ -30,14 +30,14 @@ func init() { RegisterLegacyAminoCodec(amino) } -// Deprecated, use fee amount and gas limit separately on TxBuilder. +// Deprecated: use fee amount and gas limit separately on TxBuilder. func NewTestStdFee() StdFee { return NewStdFee(100000, sdk.NewCoins(sdk.NewInt64Coin("atom", 150)), ) } -// Deprecated, use TxBuilder. +// Deprecated: use TxBuilder. func NewTestTx(ctx sdk.Context, msgs []sdk.Msg, privs []types.PrivKey, accNums []uint64, seqs []uint64, timeout uint64, fee StdFee) sdk.Tx { sigs := make([]StdSignature, len(privs)) for i, priv := range privs { diff --git a/x/auth/module.go b/x/auth/module.go index 7a9e6c749f94..8895a9f15ea5 100644 --- a/x/auth/module.go +++ b/x/auth/module.go @@ -67,7 +67,7 @@ func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Rout // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the auth module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) + types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) // nolint:errcheck } // GetTxCmd returns the root tx command for the auth module. diff --git a/x/auth/signing/verify_test.go b/x/auth/signing/verify_test.go index 075ee6d44994..b693feb8b741 100644 --- a/x/auth/signing/verify_test.go +++ b/x/auth/signing/verify_test.go @@ -46,7 +46,7 @@ func TestVerifySignature(t *testing.T) { require.NoError(t, app.BankKeeper.SetBalances(ctx, addr, balances)) msgs := []sdk.Msg{testdata.NewTestMsg(addr)} - fee := legacytx.NewStdFee(50000, sdk.Coins{sdk.NewInt64Coin("atom", 150)}) + fee := legacytx.NewStdFee(50000, sdk.Coins{sdk.NewInt64Coin("atom", 150)}) //nolint:staticcheck // SA1019: legacytx.NewStdFee is deprecated: use NewStdFee instead signerData := signing.SignerData{ ChainID: chainId, AccountNumber: acc.GetAccountNumber(), @@ -56,12 +56,12 @@ func TestVerifySignature(t *testing.T) { signature, err := priv.Sign(signBytes) require.NoError(t, err) - stdSig := legacytx.StdSignature{PubKey: pubKey, Signature: signature} + stdSig := legacytx.StdSignature{PubKey: pubKey, Signature: signature} //nolint:staticcheck // SA1019: legacytx.StdSignature.PubKey is deprecated: use PubKey sigV2, err := legacytx.StdSignatureToSignatureV2(cdc, stdSig) require.NoError(t, err) handler := MakeTestHandlerMap() - stdTx := legacytx.NewStdTx(msgs, fee, []legacytx.StdSignature{stdSig}, memo) + stdTx := legacytx.NewStdTx(msgs, fee, []legacytx.StdSignature{stdSig}, memo) //nolint:staticcheck // SA1019: legacytx.NewStdTx is deprecated: use NewStdTx instead stdTx.TimeoutHeight = 10 err = signing.VerifySignature(pubKey, signerData, sigV2.Data, handler, stdTx) require.NoError(t, err) @@ -74,13 +74,13 @@ func TestVerifySignature(t *testing.T) { sig1, err := priv.Sign(multiSignBytes) require.NoError(t, err) - stdSig1 := legacytx.StdSignature{PubKey: pubKey, Signature: sig1} + stdSig1 := legacytx.StdSignature{PubKey: pubKey, Signature: sig1} //nolint:staticcheck // SA1019: legacytx.StdSignature.PubKey is deprecated: use PubKey sig1V2, err := legacytx.StdSignatureToSignatureV2(cdc, stdSig1) require.NoError(t, err) sig2, err := priv1.Sign(multiSignBytes) require.NoError(t, err) - stdSig2 := legacytx.StdSignature{PubKey: pubKey, Signature: sig2} + stdSig2 := legacytx.StdSignature{PubKey: pubKey, Signature: sig2} //nolint:staticcheck // SA1019: legacytx.StdSignature.PubKey is deprecated: use PubKey sig2V2, err := legacytx.StdSignatureToSignatureV2(cdc, stdSig2) require.NoError(t, err) @@ -89,7 +89,7 @@ func TestVerifySignature(t *testing.T) { err = multisig.AddSignatureFromPubKey(multisignature, sig2V2.Data, pkSet[1], pkSet) require.NoError(t, err) - stdTx = legacytx.NewStdTx(msgs, fee, []legacytx.StdSignature{stdSig1, stdSig2}, memo) + stdTx = legacytx.NewStdTx(msgs, fee, []legacytx.StdSignature{stdSig1, stdSig2}, memo) //nolint:staticcheck // SA1019: legacytx.NewStdTx is deprecated: use NewStdTx instead stdTx.TimeoutHeight = 10 err = signing.VerifySignature(multisigKey, signerData, multisignature, handler, stdTx) diff --git a/x/auth/tx/service.go b/x/auth/tx/service.go index 0314495f8697..6a47ea5ef138 100644 --- a/x/auth/tx/service.go +++ b/x/auth/tx/service.go @@ -160,7 +160,7 @@ func RegisterTxService( // RegisterGRPCGatewayRoutes mounts the tx service's GRPC-gateway routes on the // given Mux. func RegisterGRPCGatewayRoutes(clientConn gogogrpc.ClientConn, mux *runtime.ServeMux) { - txtypes.RegisterServiceHandlerClient(context.Background(), mux, txtypes.NewServiceClient(clientConn)) + txtypes.RegisterServiceHandlerClient(context.Background(), mux, txtypes.NewServiceClient(clientConn)) //nolint:errcheck } func parseOrderBy(orderBy txtypes.OrderBy) string { diff --git a/x/auth/tx/service_test.go b/x/auth/tx/service_test.go index a233551f34e0..2bce0165bf92 100644 --- a/x/auth/tx/service_test.go +++ b/x/auth/tx/service_test.go @@ -502,7 +502,7 @@ func (s IntegrationTestSuite) mkTxBuilder() client.TxBuilder { //nolint:govet // } // txBuilderToProtoTx converts a txBuilder into a proto tx.Tx. -func txBuilderToProtoTx(txBuilder client.TxBuilder) (*tx.Tx, error) { // nolint +func txBuilderToProtoTx(txBuilder client.TxBuilder) (*tx.Tx, error) { protoProvider, ok := txBuilder.(authtx.ProtoTxProvider) if !ok { return nil, sdkerrors.Wrapf(sdkerrors.ErrInvalidType, "expected proto tx builder, got %T", txBuilder) diff --git a/x/bank/client/cli/cli_test.go b/x/bank/client/cli/cli_test.go index 00ff18572bbe..fe3280a2a36e 100644 --- a/x/bank/client/cli/cli_test.go +++ b/x/bank/client/cli/cli_test.go @@ -194,7 +194,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryTotalSupply() { fmt.Sprintf("--%s=json", tmcli.OutputFlag), }, respType: &sdk.Coin{}, - expected: &sdk.Coin{s.cfg.BondDenom, s.cfg.StakingTokens.Add(sdk.NewInt(10))}, + expected: &sdk.Coin{Denom: s.cfg.BondDenom, Amount: s.cfg.StakingTokens.Add(sdk.NewInt(10))}, }, { name: "total supply of a bogus denom", @@ -204,7 +204,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryTotalSupply() { fmt.Sprintf("--%s=json", tmcli.OutputFlag), }, respType: &sdk.Coin{}, - expected: &sdk.Coin{"foobar", sdk.ZeroInt()}, + expected: &sdk.Coin{Denom: "foobar", Amount: sdk.ZeroInt()}, }, } diff --git a/x/bank/client/cli/tx.go b/x/bank/client/cli/tx.go index d88a95fc6c09..37819665a72c 100644 --- a/x/bank/client/cli/tx.go +++ b/x/bank/client/cli/tx.go @@ -33,7 +33,10 @@ func NewSendTxCmd() *cobra.Command { ignored as it is implied from [from_key_or_address].`, Args: cobra.ExactArgs(3), RunE: func(cmd *cobra.Command, args []string) error { - cmd.Flags().Set(flags.FlagFrom, args[0]) + err := cmd.Flags().Set(flags.FlagFrom, args[0]) + if err != nil { + return err + } clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err diff --git a/x/bank/keeper/keeper_test.go b/x/bank/keeper/keeper_test.go index a2116ce71218..81942b992ddc 100644 --- a/x/bank/keeper/keeper_test.go +++ b/x/bank/keeper/keeper_test.go @@ -546,7 +546,8 @@ func (suite *IntegrationTestSuite) TestHasBalance() { balances := sdk.NewCoins(newFooCoin(100)) suite.Require().False(app.BankKeeper.HasBalance(ctx, addr, newFooCoin(99))) - app.BankKeeper.SetBalances(ctx, addr, balances) + err := app.BankKeeper.SetBalances(ctx, addr, balances) + suite.Require().NoError(err) suite.Require().False(app.BankKeeper.HasBalance(ctx, addr, newFooCoin(101))) suite.Require().True(app.BankKeeper.HasBalance(ctx, addr, newFooCoin(100))) suite.Require().True(app.BankKeeper.HasBalance(ctx, addr, newFooCoin(1))) @@ -594,7 +595,8 @@ func (suite *IntegrationTestSuite) TestMsgSendEvents() { suite.Require().Equal(abci.Event(event1), events[0]) suite.Require().Equal(abci.Event(event2), events[1]) - app.BankKeeper.SetBalances(ctx, addr, sdk.NewCoins(sdk.NewInt64Coin(fooDenom, 50))) + err := app.BankKeeper.SetBalances(ctx, addr, sdk.NewCoins(sdk.NewInt64Coin(fooDenom, 50))) + suite.Require().NoError(err) newCoins = sdk.NewCoins(sdk.NewInt64Coin(fooDenom, 50)) suite.Require().NoError(app.BankKeeper.SendCoins(ctx, addr, addr2, newCoins)) @@ -637,7 +639,8 @@ func (suite *IntegrationTestSuite) TestMsgMultiSendEvents() { suite.Require().Equal(0, len(events)) // Set addr's coins but not addr2's coins - app.BankKeeper.SetBalances(ctx, addr, sdk.NewCoins(sdk.NewInt64Coin(fooDenom, 50))) + err := app.BankKeeper.SetBalances(ctx, addr, sdk.NewCoins(sdk.NewInt64Coin(fooDenom, 50))) + suite.Require().NoError(err) suite.Require().Error(app.BankKeeper.InputOutputCoins(ctx, inputs, outputs)) @@ -655,10 +658,12 @@ func (suite *IntegrationTestSuite) TestMsgMultiSendEvents() { suite.Require().Equal(abci.Event(event1), events[0]) // Set addr's coins and addr2's coins - app.BankKeeper.SetBalances(ctx, addr, sdk.NewCoins(sdk.NewInt64Coin(fooDenom, 50))) + err = app.BankKeeper.SetBalances(ctx, addr, sdk.NewCoins(sdk.NewInt64Coin(fooDenom, 50))) + suite.Require().NoError(err) newCoins = sdk.NewCoins(sdk.NewInt64Coin(fooDenom, 50)) - app.BankKeeper.SetBalances(ctx, addr2, sdk.NewCoins(sdk.NewInt64Coin(barDenom, 100))) + err = app.BankKeeper.SetBalances(ctx, addr2, sdk.NewCoins(sdk.NewInt64Coin(barDenom, 100))) + suite.Require().NoError(err) newCoins2 = sdk.NewCoins(sdk.NewInt64Coin(barDenom, 100)) suite.Require().NoError(app.BankKeeper.InputOutputCoins(ctx, inputs, outputs)) diff --git a/x/bank/module.go b/x/bank/module.go index c0fb03999d05..7bf224552374 100644 --- a/x/bank/module.go +++ b/x/bank/module.go @@ -68,7 +68,7 @@ func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Rout // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the bank module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) + types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) // nolint:errcheck } // GetTxCmd returns the root tx command for the bank module. diff --git a/x/bank/simulation/operations.go b/x/bank/simulation/operations.go index 097b8ab27cec..b36632505a74 100644 --- a/x/bank/simulation/operations.go +++ b/x/bank/simulation/operations.go @@ -16,6 +16,8 @@ import ( ) // Simulation operation weights constants +// +//nolint:gosec const ( OpWeightMsgSend = "op_weight_msg_send" OpWeightMsgMultiSend = "op_weight_msg_multisend" diff --git a/x/bank/simulation/operations_test.go b/x/bank/simulation/operations_test.go index 144dc5dd3429..34c825d9e86a 100644 --- a/x/bank/simulation/operations_test.go +++ b/x/bank/simulation/operations_test.go @@ -79,7 +79,8 @@ func (suite *SimTestSuite) TestSimulateMsgSend() { suite.Require().NoError(err) var msg types.MsgSend - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + err = types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + suite.Require().NoError(err) suite.Require().True(operationMsg.OK) suite.Require().Equal("65337742stake", msg.Amount.String()) @@ -107,7 +108,8 @@ func (suite *SimTestSuite) TestSimulateMsgMultiSend() { suite.Require().NoError(err) var msg types.MsgMultiSend - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + err = types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + suite.Require().NoError(err) suite.Require().True(operationMsg.OK) suite.Require().Len(msg.Inputs, 3) diff --git a/x/bank/types/balance.go b/x/bank/types/balance.go index 7c017ee90051..c8d48c96dc4c 100644 --- a/x/bank/types/balance.go +++ b/x/bank/types/balance.go @@ -55,7 +55,7 @@ func (b Balance) Validate() error { } // sort the coins post validation - b.Coins = b.Coins.Sort() + b.Coins = b.Coins.Sort() //nolint:staticcheck // ignore SA1019, we need to sort the coins return nil } diff --git a/x/bank/types/balance_test.go b/x/bank/types/balance_test.go index 2aec53d39fdd..04b7dd208ed8 100644 --- a/x/bank/types/balance_test.go +++ b/x/bank/types/balance_test.go @@ -136,7 +136,7 @@ func TestSanitizeBalances(t *testing.T) { } } -func makeRandomAddressesAndPublicKeys(n int) (accL []sdk.AccAddress, pkL []*ed25519.PubKey) { +func makeRandomAddressesAndPublicKeys(n int) (accL []sdk.AccAddress, pkL []*ed25519.PubKey) { //nolint:unparam for i := 0; i < n; i++ { pk := ed25519.GenPrivKey().PubKey().(*ed25519.PubKey) pkL = append(pkL, pk) diff --git a/x/capability/keeper/keeper_test.go b/x/capability/keeper/keeper_test.go index 2e419faa3287..a1d7808cd742 100644 --- a/x/capability/keeper/keeper_test.go +++ b/x/capability/keeper/keeper_test.go @@ -155,7 +155,8 @@ func (suite *KeeperTestSuite) TestAuthenticateCapability() { suite.Require().False(sk2.AuthenticateCapability(suite.ctx, cap2, "invalid")) suite.Require().False(sk2.AuthenticateCapability(suite.ctx, cap1, "bond")) - sk2.ReleaseCapability(suite.ctx, cap2) + err = sk2.ReleaseCapability(suite.ctx, cap2) + suite.Require().NoError(err) suite.Require().False(sk2.AuthenticateCapability(suite.ctx, cap2, "bond")) badCap := types.NewCapability(100) diff --git a/x/distribution/module.go b/x/distribution/module.go index 339fdfde55e0..2bcbe759153e 100644 --- a/x/distribution/module.go +++ b/x/distribution/module.go @@ -70,7 +70,7 @@ func (AppModuleBasic) RegisterRESTRoutes(clientCtx sdkclient.Context, rtr *mux.R // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the distribution module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx sdkclient.Context, mux *runtime.ServeMux) { - types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) + types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) // nolint:errcheck } // GetTxCmd returns the root tx command for the distribution module. diff --git a/x/distribution/simulation/operations.go b/x/distribution/simulation/operations.go index c86fb370f80d..6195ffedc029 100644 --- a/x/distribution/simulation/operations.go +++ b/x/distribution/simulation/operations.go @@ -17,6 +17,8 @@ import ( ) // Simulation operation weights constants +// +//nolint:gosec const ( OpWeightMsgSetWithdrawAddress = "op_weight_msg_set_withdraw_address" OpWeightMsgWithdrawDelegationReward = "op_weight_msg_withdraw_delegation_reward" diff --git a/x/distribution/simulation/operations_test.go b/x/distribution/simulation/operations_test.go index 3292017ffc15..004283c07276 100644 --- a/x/distribution/simulation/operations_test.go +++ b/x/distribution/simulation/operations_test.go @@ -70,7 +70,8 @@ func (suite *SimTestSuite) TestSimulateMsgSetWithdrawAddress() { suite.Require().NoError(err) var msg types.MsgSetWithdrawAddress - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + err = types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + suite.Require().NoError(err) suite.Require().True(operationMsg.OK) suite.Require().Equal("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r", msg.DelegatorAddress) @@ -111,7 +112,8 @@ func (suite *SimTestSuite) TestSimulateMsgWithdrawDelegatorReward() { suite.Require().NoError(err) var msg types.MsgWithdrawDelegatorReward - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + err = types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + suite.Require().NoError(err) suite.Require().True(operationMsg.OK) suite.Require().Equal("cosmosvaloper1l4s054098kk9hmr5753c6k3m2kw65h686d3mhr", msg.ValidatorAddress) @@ -168,7 +170,8 @@ func (suite *SimTestSuite) testSimulateMsgWithdrawValidatorCommission(tokenName suite.Require().NoError(err) var msg types.MsgWithdrawValidatorCommission - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + err = types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + suite.Require().NoError(err) suite.Require().True(operationMsg.OK) suite.Require().Equal("cosmosvaloper1tnh2q55v8wyygtt9srz5safamzdengsn9dsd7z", msg.ValidatorAddress) @@ -194,7 +197,8 @@ func (suite *SimTestSuite) TestSimulateMsgFundCommunityPool() { suite.Require().NoError(err) var msg types.MsgFundCommunityPool - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + err = types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + suite.Require().NoError(err) suite.Require().True(operationMsg.OK) suite.Require().Equal("4896096stake", msg.Amount.String()) @@ -218,7 +222,7 @@ func (suite *SimTestSuite) SetupTest() { suite.ctx = app.BaseApp.NewContext(checkTx, tmproto.Header{}) } -func (suite *SimTestSuite) getTestingAccounts(r *rand.Rand, n int) []simtypes.Account { +func (suite *SimTestSuite) getTestingAccounts(r *rand.Rand, n int) []simtypes.Account { //nolint:unparam accounts := simtypes.RandomAccounts(r, n) initAmt := sdk.TokensFromConsensusPower(200) diff --git a/x/evidence/handler_test.go b/x/evidence/handler_test.go index 9f739c8b96c7..5e7ba6f1ece2 100644 --- a/x/evidence/handler_test.go +++ b/x/evidence/handler_test.go @@ -118,7 +118,7 @@ func (suite *HandlerTestSuite) TestMsgSubmitEvidence() { msg := tc.msg.(exported.MsgSubmitEvidenceI) var resultData types.MsgSubmitEvidenceResponse - suite.app.AppCodec().UnmarshalBinaryBare(res.Data, &resultData) + suite.app.AppCodec().UnmarshalBinaryBare(res.Data, &resultData) //nolint:errcheck suite.Require().Equal(msg.GetEvidence().Hash().Bytes(), resultData.Hash, "invalid hash; tc #%d", i) } } diff --git a/x/evidence/keeper/keeper_test.go b/x/evidence/keeper/keeper_test.go index 9165730466b7..d550716bb81c 100644 --- a/x/evidence/keeper/keeper_test.go +++ b/x/evidence/keeper/keeper_test.go @@ -107,7 +107,7 @@ func (suite *KeeperTestSuite) SetupTest() { suite.stakingHdl = staking.NewHandler(app.StakingKeeper) } -func (suite *KeeperTestSuite) populateEvidence(ctx sdk.Context, numEvidence int) []exported.Evidence { +func (suite *KeeperTestSuite) populateEvidence(ctx sdk.Context, numEvidence int) []exported.Evidence { //nolint:unparam evidence := make([]exported.Evidence, numEvidence) for i := 0; i < numEvidence; i++ { diff --git a/x/evidence/module.go b/x/evidence/module.go index 991ab271b0a5..126bfd83d45f 100644 --- a/x/evidence/module.go +++ b/x/evidence/module.go @@ -87,7 +87,7 @@ func (a AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Ro // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the evidence module. func (a AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) + types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) //nolint:errcheck } // GetTxCmd returns the evidence module's root tx command. diff --git a/x/genutil/client/cli/init_test.go b/x/genutil/client/cli/init_test.go index 0a2858dd5b44..0eb5c315b054 100644 --- a/x/genutil/client/cli/init_test.go +++ b/x/genutil/client/cli/init_test.go @@ -151,7 +151,7 @@ func TestEmptyState(t *testing.T) { outC := make(chan string) go func() { var buf bytes.Buffer - io.Copy(&buf, r) + io.Copy(&buf, r) // nolint:errcheck outC <- buf.String() }() @@ -198,6 +198,7 @@ func TestStartStandAlone(t *testing.T) { func TestInitNodeValidatorFiles(t *testing.T) { home := t.TempDir() cfg, err := genutiltest.CreateDefaultTendermintConfig(home) + require.NoError(t, err) nodeID, valPubKey, err := genutil.InitializeNodeValidatorFiles(cfg) require.Nil(t, err) diff --git a/x/gov/abci_test.go b/x/gov/abci_test.go index bfda1b3590b6..db3beb005d6a 100644 --- a/x/gov/abci_test.go +++ b/x/gov/abci_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/golang/protobuf/proto" + "github.com/golang/protobuf/proto" //nolint:staticcheck // ignore SA1019, we need to use the deprecated package for backwards compatibility "github.com/stretchr/testify/require" abci "github.com/tendermint/tendermint/abci/types" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" diff --git a/x/gov/client/cli/parse_test.go b/x/gov/client/cli/parse_test.go index da6aeea71949..6143255292f7 100644 --- a/x/gov/client/cli/parse_test.go +++ b/x/gov/client/cli/parse_test.go @@ -22,17 +22,20 @@ func TestParseSubmitProposalFlags(t *testing.T) { fs := NewCmdSubmitProposal().Flags() // nonexistent json - fs.Set(FlagProposal, "fileDoesNotExist") - _, err := parseSubmitProposalFlags(fs) + err := fs.Set(FlagProposal, "fileDoesNotExist") + require.NoError(t, err) + _, err = parseSubmitProposalFlags(fs) require.Error(t, err) // invalid json - fs.Set(FlagProposal, badJSON.Name()) + err = fs.Set(FlagProposal, badJSON.Name()) + require.NoError(t, err) _, err = parseSubmitProposalFlags(fs) require.Error(t, err) // ok json - fs.Set(FlagProposal, okJSON.Name()) + err = fs.Set(FlagProposal, okJSON.Name()) + require.NoError(t, err) proposal1, err := parseSubmitProposalFlags(fs) require.Nil(t, err, "unexpected error") require.Equal(t, "Test Proposal", proposal1.Title) @@ -42,18 +45,25 @@ func TestParseSubmitProposalFlags(t *testing.T) { // flags that can't be used with --proposal for _, incompatibleFlag := range ProposalFlags { - fs.Set(incompatibleFlag, "some value") - _, err := parseSubmitProposalFlags(fs) + err := fs.Set(incompatibleFlag, "some value") + require.NoError(t, err) + _, err = parseSubmitProposalFlags(fs) require.Error(t, err) - fs.Set(incompatibleFlag, "") + err = fs.Set(incompatibleFlag, "") + require.NoError(t, err) } // no --proposal, only flags - fs.Set(FlagProposal, "") - fs.Set(FlagTitle, proposal1.Title) - fs.Set(FlagDescription, proposal1.Description) - fs.Set(FlagProposalType, proposal1.Type) - fs.Set(FlagDeposit, proposal1.Deposit) + err = fs.Set(FlagProposal, "") + require.NoError(t, err) + err = fs.Set(FlagTitle, proposal1.Title) + require.NoError(t, err) + err = fs.Set(FlagDescription, proposal1.Description) + require.NoError(t, err) + err = fs.Set(FlagProposalType, proposal1.Type) + require.NoError(t, err) + err = fs.Set(FlagDeposit, proposal1.Deposit) + require.NoError(t, err) proposal2, err := parseSubmitProposalFlags(fs) require.Nil(t, err, "unexpected error") diff --git a/x/gov/keeper/deposit_test.go b/x/gov/keeper/deposit_test.go index dfa857dc57fe..42211743f1e6 100644 --- a/x/gov/keeper/deposit_test.go +++ b/x/gov/keeper/deposit_test.go @@ -31,7 +31,7 @@ func TestDeposits(t *testing.T) { require.True(t, proposal.TotalDeposit.IsEqual(sdk.NewCoins())) // Check no deposits at beginning - deposit, found := app.GovKeeper.GetDeposit(ctx, proposalID, TestAddrs[1]) + _, found := app.GovKeeper.GetDeposit(ctx, proposalID, TestAddrs[1]) require.False(t, found) proposal, ok := app.GovKeeper.GetProposal(ctx, proposalID) require.True(t, ok) @@ -41,7 +41,7 @@ func TestDeposits(t *testing.T) { votingStarted, err := app.GovKeeper.AddDeposit(ctx, proposalID, TestAddrs[0], fourStake) require.NoError(t, err) require.False(t, votingStarted) - deposit, found = app.GovKeeper.GetDeposit(ctx, proposalID, TestAddrs[0]) + deposit, found := app.GovKeeper.GetDeposit(ctx, proposalID, TestAddrs[0]) require.True(t, found) require.Equal(t, fourStake, deposit.Amount) require.Equal(t, TestAddrs[0].String(), deposit.Depositor) diff --git a/x/gov/keeper/querier.go b/x/gov/keeper/querier.go index abebe0c2a8a4..6eb343d070a7 100644 --- a/x/gov/keeper/querier.go +++ b/x/gov/keeper/querier.go @@ -72,7 +72,7 @@ func queryParams(ctx sdk.Context, path []string, req abci.RequestQuery, keeper K } } -//nolint: unparam +// nolint: unparam func queryProposal(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryProposalParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -93,7 +93,7 @@ func queryProposal(ctx sdk.Context, path []string, req abci.RequestQuery, keeper return bz, nil } -//nolint: unparam +// nolint: unparam func queryDeposit(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryDepositParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -110,7 +110,7 @@ func queryDeposit(ctx sdk.Context, path []string, req abci.RequestQuery, keeper return bz, nil } -//nolint: unparam +// nolint: unparam func queryVote(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryVoteParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -127,7 +127,7 @@ func queryVote(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Kee return bz, nil } -//nolint: unparam +// nolint: unparam func queryDeposits(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryProposalParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -148,7 +148,7 @@ func queryDeposits(ctx sdk.Context, path []string, req abci.RequestQuery, keeper return bz, nil } -//nolint: unparam +// nolint: unparam func queryTally(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryProposalParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) @@ -185,7 +185,7 @@ func queryTally(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Ke return bz, nil } -//nolint: unparam +// nolint: unparam func queryVotes(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { var params types.QueryProposalVotesParams err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms) diff --git a/x/gov/keeper/querier_test.go b/x/gov/keeper/querier_test.go index c14f44e9d497..dba9473da2b6 100644 --- a/x/gov/keeper/querier_test.go +++ b/x/gov/keeper/querier_test.go @@ -61,7 +61,7 @@ func getQueriedParams(t *testing.T, ctx sdk.Context, cdc *codec.LegacyAmino, que func getQueriedProposals( t *testing.T, ctx sdk.Context, cdc *codec.LegacyAmino, querier sdk.Querier, - depositor, voter sdk.AccAddress, status types.ProposalStatus, page, limit int, + depositor, voter sdk.AccAddress, status types.ProposalStatus, page, limit int, //nolint:unparam ) []types.Proposal { query := abci.RequestQuery{ Path: strings.Join([]string{custom, types.QuerierRoute, types.QueryProposals}, "/"), diff --git a/x/gov/module.go b/x/gov/module.go index b2eb38c1d33e..3bbe80d16875 100644 --- a/x/gov/module.go +++ b/x/gov/module.go @@ -86,7 +86,7 @@ func (a AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Ro // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the gov module. func (a AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) + types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) // nolint:errcheck } // GetTxCmd returns the root tx command for the gov module. diff --git a/x/gov/simulation/operations_test.go b/x/gov/simulation/operations_test.go index e75e3cfc05d8..955b205a340c 100644 --- a/x/gov/simulation/operations_test.go +++ b/x/gov/simulation/operations_test.go @@ -110,7 +110,8 @@ func TestSimulateMsgSubmitProposal(t *testing.T) { require.NoError(t, err) var msg types.MsgSubmitProposal - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + err = types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + require.NoError(t, err) require.True(t, operationMsg.OK) require.Equal(t, "cosmos1p8wcgrjr4pjju90xg6u9cgq55dxwq8j7u4x9a0", msg.Proposer) @@ -153,7 +154,8 @@ func TestSimulateMsgDeposit(t *testing.T) { require.NoError(t, err) var msg types.MsgDeposit - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + err = types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + require.NoError(t, err) require.True(t, operationMsg.OK) require.Equal(t, uint64(1), msg.ProposalId) @@ -195,7 +197,8 @@ func TestSimulateMsgVote(t *testing.T) { require.NoError(t, err) var msg types.MsgVote - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + err = types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + require.NoError(t, err) require.True(t, operationMsg.OK) require.Equal(t, uint64(1), msg.ProposalId) @@ -206,7 +209,7 @@ func TestSimulateMsgVote(t *testing.T) { } // returns context and an app with updated mint keeper -func createTestApp(isCheckTx bool) (*simapp.SimApp, sdk.Context) { +func createTestApp(isCheckTx bool) (*simapp.SimApp, sdk.Context) { //nolint:unparam app := simapp.Setup(isCheckTx) ctx := app.BaseApp.NewContext(isCheckTx, tmproto.Header{}) @@ -216,7 +219,7 @@ func createTestApp(isCheckTx bool) (*simapp.SimApp, sdk.Context) { return app, ctx } -func getTestingAccounts(t *testing.T, r *rand.Rand, app *simapp.SimApp, ctx sdk.Context, n int) []simtypes.Account { +func getTestingAccounts(t *testing.T, r *rand.Rand, app *simapp.SimApp, ctx sdk.Context, n int) []simtypes.Account { //nolint:unparam accounts := simtypes.RandomAccounts(r, n) initAmt := sdk.TokensFromConsensusPower(200) diff --git a/x/gov/types/proposal.go b/x/gov/types/proposal.go index 0c856647f64b..7e0f9aaeefe5 100644 --- a/x/gov/types/proposal.go +++ b/x/gov/types/proposal.go @@ -168,7 +168,6 @@ func (status *ProposalStatus) Unmarshal(data []byte) error { } // Format implements the fmt.Formatter interface. -// nolint: errcheck func (status ProposalStatus) Format(s fmt.State, verb rune) { switch verb { case 's': diff --git a/x/ibc/applications/transfer/module_test.go b/x/ibc/applications/transfer/module_test.go index 2b0fe27e79dd..7a911cf6a262 100644 --- a/x/ibc/applications/transfer/module_test.go +++ b/x/ibc/applications/transfer/module_test.go @@ -44,7 +44,7 @@ func (suite *TransferTestSuite) TestOnChanOpenInit() { }, { "invalid version", func() { - channel.Version = "version" + channel.Version = "version" //nolint:goconst }, false, }, { diff --git a/x/ibc/core/02-client/keeper/client_test.go b/x/ibc/core/02-client/keeper/client_test.go index f34414eab4f7..4a92de0154ee 100644 --- a/x/ibc/core/02-client/keeper/client_test.go +++ b/x/ibc/core/02-client/keeper/client_test.go @@ -42,14 +42,14 @@ func (suite *KeeperTestSuite) TestCreateClient() { func (suite *KeeperTestSuite) TestUpdateClientTendermint() { // Must create header creation functions since suite.header gets recreated on each test case - createFutureUpdateFn := func(s *KeeperTestSuite) *ibctmtypes.Header { + createFutureUpdateFn := func(s *KeeperTestSuite) *ibctmtypes.Header { //nolint:unparam heightPlus3 := types.NewHeight(suite.header.GetHeight().GetRevisionNumber(), suite.header.GetHeight().GetRevisionHeight()+3) height := suite.header.GetHeight().(types.Height) return suite.chainA.CreateTMClientHeader(testChainID, int64(heightPlus3.RevisionHeight), height, suite.header.Header.Time.Add(time.Hour), suite.valSet, suite.valSet, []tmtypes.PrivValidator{suite.privVal}) } - createPastUpdateFn := func(s *KeeperTestSuite) *ibctmtypes.Header { + createPastUpdateFn := func(s *KeeperTestSuite) *ibctmtypes.Header { //nolint:unparam heightMinus2 := types.NewHeight(suite.header.GetHeight().GetRevisionNumber(), suite.header.GetHeight().GetRevisionHeight()-2) heightMinus4 := types.NewHeight(suite.header.GetHeight().GetRevisionNumber(), suite.header.GetHeight().GetRevisionHeight()-4) @@ -249,13 +249,15 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { lastHeight = types.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) - suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + err := suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.Require().NoError(err) + err = suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + suite.Require().NoError(err) // commit upgrade store changes and update clients suite.coordinator.CommitBlock(suite.chainB) - err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) suite.Require().NoError(err) cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) @@ -278,13 +280,14 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { lastHeight = types.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) - suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + err := suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.Require().NoError(err) + err = suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + suite.Require().NoError(err) // commit upgrade store changes and update clients - suite.coordinator.CommitBlock(suite.chainB) - err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) suite.Require().NoError(err) cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) @@ -309,13 +312,15 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { lastHeight = types.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) - suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + err := suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.Require().NoError(err) + err = suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + suite.Require().NoError(err) // commit upgrade store changes and update clients suite.coordinator.CommitBlock(suite.chainB) - err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) suite.Require().NoError(err) cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) @@ -344,14 +349,16 @@ func (suite *KeeperTestSuite) TestUpgradeClient() { lastHeight = types.NewHeight(0, uint64(suite.chainB.GetContext().BlockHeight()+1)) // zero custom fields and store in upgrade store - suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) - suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + err := suite.chainB.App.UpgradeKeeper.SetUpgradedClient(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedClient) + suite.Require().NoError(err) + err = suite.chainB.App.UpgradeKeeper.SetUpgradedConsensusState(suite.chainB.GetContext(), int64(lastHeight.GetRevisionHeight()), upgradedConsState) + suite.Require().NoError(err) // change upgradedClient client-specified parameters upgradedClient = ibctmtypes.NewClientState("wrongchainID", ibctmtypes.DefaultTrustLevel, trustingPeriod, ubdPeriod, maxClockDrift, newClientHeight, commitmenttypes.GetSDKSpecs(), ibctesting.UpgradePath, true, true) suite.coordinator.CommitBlock(suite.chainB) - err := suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) + err = suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, exported.Tendermint) suite.Require().NoError(err) cs, found := suite.chainA.App.IBCKeeper.ClientKeeper.GetClientState(suite.chainA.GetContext(), clientA) diff --git a/x/ibc/core/02-client/types/msgs.go b/x/ibc/core/02-client/types/msgs.go index 4d90b3b18cd7..dd94bf93fe8c 100644 --- a/x/ibc/core/02-client/types/msgs.go +++ b/x/ibc/core/02-client/types/msgs.go @@ -184,7 +184,7 @@ func (msg MsgUpdateClient) UnpackInterfaces(unpacker codectypes.AnyUnpacker) err } // NewMsgUpgradeClient creates a new MsgUpgradeClient instance -//nolint: interfacer +// nolint: interfacer func NewMsgUpgradeClient(clientID string, clientState exported.ClientState, consState exported.ConsensusState, proofUpgradeClient, proofUpgradeConsState []byte, signer sdk.AccAddress, ) (*MsgUpgradeClient, error) { diff --git a/x/ibc/core/04-channel/keeper/handshake_test.go b/x/ibc/core/04-channel/keeper/handshake_test.go index 1c796f1340c9..59ec0f5972c7 100644 --- a/x/ibc/core/04-channel/keeper/handshake_test.go +++ b/x/ibc/core/04-channel/keeper/handshake_test.go @@ -150,7 +150,7 @@ func (suite *KeeperTestSuite) TestChanOpenTry() { testCases := []testCase{ {"success", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) + suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) //nolint:errcheck suite.chainB.CreatePortCapability(suite.chainB.NextTestChannel(connB, ibctesting.MockPort).PortID) portCap = suite.chainB.GetPortCapability(suite.chainB.NextTestChannel(connB, ibctesting.MockPort).PortID) @@ -167,7 +167,7 @@ func (suite *KeeperTestSuite) TestChanOpenTry() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) // make previous channel have wrong ordering - suite.coordinator.ChanOpenInit(suite.chainB, suite.chainA, connB, connA, ibctesting.MockPort, ibctesting.MockPort, types.UNORDERED) + suite.coordinator.ChanOpenInit(suite.chainB, suite.chainA, connB, connA, ibctesting.MockPort, ibctesting.MockPort, types.UNORDERED) //nolint:errcheck }, false}, {"connection doesn't exist", func() { // any non-nil values of connA and connB are acceptable @@ -190,7 +190,7 @@ func (suite *KeeperTestSuite) TestChanOpenTry() { }, false}, {"consensus state not found", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) + suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) //nolint:errcheck suite.chainB.CreatePortCapability(suite.chainB.NextTestChannel(connB, ibctesting.MockPort).PortID) portCap = suite.chainB.GetPortCapability(suite.chainB.NextTestChannel(connB, ibctesting.MockPort).PortID) @@ -204,13 +204,13 @@ func (suite *KeeperTestSuite) TestChanOpenTry() { }, false}, {"port capability not found", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) + suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) //nolint:errcheck portCap = capabilitytypes.NewCapability(3) }, false}, {"connection version not negotiated", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) + suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) //nolint:errcheck // modify connB versions conn := suite.chainB.GetConnection(connB) @@ -227,7 +227,7 @@ func (suite *KeeperTestSuite) TestChanOpenTry() { }, false}, {"connection does not support ORDERED channels", func() { _, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, exported.Tendermint) - suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) + suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) //nolint:errcheck // modify connA versions to only support UNORDERED channels conn := suite.chainA.GetConnection(connA) @@ -400,7 +400,7 @@ func (suite *KeeperTestSuite) TestChanOpenAck() { channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.MockPort, ibctesting.MockPort, types.ORDERED) suite.Require().NoError(err) - suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED) + suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED) //nolint:errcheck channelCap = capabilitytypes.NewCapability(6) }, false}, diff --git a/x/upgrade/types/storeloader_test.go b/x/upgrade/types/storeloader_test.go index 4f2e241b0587..0dc4f77ffc01 100644 --- a/x/upgrade/types/storeloader_test.go +++ b/x/upgrade/types/storeloader_test.go @@ -76,7 +76,7 @@ func TestSetLoader(t *testing.T) { data, err := json.Marshal(upgradeInfo) require.NoError(t, err) - err = os.WriteFile(upgradeInfoFilePath, data, 0o644) + err = os.WriteFile(upgradeInfoFilePath, data, 0o600) require.NoError(t, err) // make sure it exists before running everything From 9015743c41128396e40aa1ec818d2b80017dabef Mon Sep 17 00:00:00 2001 From: Son Trinh Date: Wed, 28 Dec 2022 11:51:36 +0700 Subject: [PATCH 37/98] bump iavl v19 --- go.mod | 9 +- go.sum | 303 +++---------------------------------- server/tm_cmds.go | 65 ++++++++ store/cache/cache_test.go | 6 +- store/iavl/store.go | 35 ++++- store/iavl/store_test.go | 34 +++-- store/iavl/tree.go | 20 +-- store/iavl/tree_test.go | 2 +- store/prefix/store_test.go | 2 +- 9 files changed, 152 insertions(+), 324 deletions(-) diff --git a/go.mod b/go.mod index fc268601bbdc..6996d6e8e995 100644 --- a/go.mod +++ b/go.mod @@ -4,18 +4,20 @@ module github.com/cosmos/cosmos-sdk require ( github.com/99designs/keyring v1.1.6 + github.com/DataDog/zstd v1.4.5 // indirect github.com/armon/go-metrics v0.3.10 github.com/bgentry/speakeasy v0.1.0 github.com/btcsuite/btcd v0.22.1 - github.com/confio/ics23/go v0.6.6 + github.com/confio/ics23/go v0.7.0 github.com/cosmos/btcutil v1.0.4 github.com/cosmos/go-bip39 v1.0.0 - github.com/cosmos/iavl v0.17.3 + github.com/cosmos/iavl v0.19.4 github.com/cosmos/ledger-cosmos-go v0.11.1 github.com/gogo/gateway v1.1.0 github.com/gogo/protobuf v1.3.3 github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.2 + github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa // indirect github.com/gorilla/handlers v1.5.1 github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 @@ -26,7 +28,7 @@ require ( github.com/otiai10/copy v1.6.0 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.12.2 - github.com/prometheus/common v0.32.1 + github.com/prometheus/common v0.34.0 github.com/rakyll/statik v0.1.7 github.com/regen-network/cosmos-proto v0.3.1 github.com/rs/zerolog v1.27.0 @@ -49,7 +51,6 @@ require ( require ( github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect - github.com/DataDog/zstd v1.4.5 // indirect github.com/Workiva/go-datastructures v1.0.53 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash v1.1.0 // indirect diff --git a/go.sum b/go.sum index 09ffb380dfd8..f54802e5430b 100644 --- a/go.sum +++ b/go.sum @@ -24,7 +24,6 @@ cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4g cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -36,9 +35,7 @@ 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= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= @@ -47,106 +44,64 @@ github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3 github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/Workiva/go-datastructures v1.0.52/go.mod h1:Z+F2Rca0qCsVYDS8z7bAGm8f3UkzuWYS/oBZz5a7VVA= github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= -github.com/adlio/schema v1.1.13/go.mod h1:L5Z7tw+7lRK1Fnpi/LT/ooCP1elkXn0krMWBQHUhEDE= github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= 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/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.3.10 h1:FR+drcQStOe+32sYyJYyZ7FIdgoGGBnwLl+flodp8Uo= github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= 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 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= -github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= 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= -github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/confio/ics23/go v0.6.6 h1:pkOy18YxxJ/r0XFDCnrl4Bjv6h4LkBSpLS6F38mrKL8= -github.com/confio/ics23/go v0.6.6/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= -github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= -github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/confio/ics23/go v0.7.0 h1:00d2kukk7sPoHWL4zZBZwzxnpA2pec1NPdwbSokJ5w8= +github.com/confio/ics23/go v0.7.0/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -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/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.4 h1:n7C2ngKXo7UC9gNyMNLbzqz7Asuf+7Qv4gnX/rOdQ44= github.com/cosmos/btcutil v1.0.4/go.mod h1:Ffqc8Hn6TJUdDgHBwIZLtrLQC1KdJ9jGJl/TvgUaxbU= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= @@ -154,8 +109,8 @@ github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= -github.com/cosmos/iavl v0.17.3 h1:s2N819a2olOmiauVa0WAhoIJq9EhSXE9HDBAoR9k+8Y= -github.com/cosmos/iavl v0.17.3/go.mod h1:prJoErZFABYZGDHka1R6Oay4z9PrNeFFiMKHDAMOi4w= +github.com/cosmos/iavl v0.19.4 h1:t82sN+Y0WeqxDLJRSpNd8YFX5URIrT+p8n6oJbJ2Dok= +github.com/cosmos/iavl v0.19.4/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 h1:DdzS1m6o/pCqeZ8VOAit/gyATedRgjvkVI+UCrLpyuU= github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76/go.mod h1:0mkLWIoZuQ7uBoospo5Q9zIpqq6rYCPJDSUdeCJvPM8= github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4= @@ -163,59 +118,37 @@ github.com/cosmos/ledger-cosmos-go v0.11.1/go.mod h1:J8//BsAGTo3OC/vDLjMRFLW6q0W github.com/cosmos/ledger-go v0.9.2 h1:Nnao/dLwaVTk1Q5U9THldpUMMXU94BOTWPddSmVB6pI= github.com/cosmos/ledger-go v0.9.2/go.mod h1:oZJ2hHAZROdlHiwTg4t7kP+GKIIkBT+o6c9QWFanOyI= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -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.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU= github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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= -github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/dgraph-io/badger/v2 v2.2007.2 h1:EjjK0KqwaFMlPin1ajhP943VPENHJdEz1KLIegjaI3k= github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.0.3 h1:jh22xisGBjrEVnRZ1DVTpBVQm0Xndu8sMl0CWDzSIBI= github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b h1:HBah4D48ypg3J7Np4N+HY/ZR76fx3HEUGxDU6Uk39oQ= github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= -github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= @@ -227,10 +160,10 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/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/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= @@ -238,7 +171,6 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= @@ -246,8 +178,6 @@ github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -277,7 +207,6 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -296,8 +225,9 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa h1:Q75Upo5UN4JbPFURXZ8nLKYUvF85dyFRop/vQ0Rv+64= +github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/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= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -314,32 +244,19 @@ 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-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= @@ -349,63 +266,37 @@ github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -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-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/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-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0 h1:RS8zrF7PhGwyNPOtxSClXXj9HA8feRnJzgnI1RJCSnM= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= 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/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= 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= github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= 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/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= 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/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/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= @@ -418,109 +309,60 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxv 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.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/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.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.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= 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/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= 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/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= -github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= -github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= -github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= @@ -528,76 +370,53 @@ github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6 github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E= github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= 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/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -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= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= 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/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.8.0/go.mod h1:O9VU6huf47PktckDQfMTX0Y8tY0/7TSWwj+ITvv0TnM= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34= github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/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/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.34.0 h1:RBmGO9d/FVjqHT0yUGQwBJhkwKV+wPCn7KGpvfab0uE= +github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= @@ -608,35 +427,19 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So 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/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= -github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.27.0 h1:1T7qCieN22GVc8S4Q2yuexzBb1EqjbgjSH9RohbMjKs= github.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= 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.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= -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/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPHbB5mVY2iO9KV3pTt/QbIkGaO8gQ2WrDbP4= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -646,26 +449,18 @@ github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfA github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= github.com/spf13/cobra v1.6.0 h1:42a0n6jwCot1pUmomAp4T7DeMD+20LFv4Q54pxLf2LI= github.com/spf13/cobra v1.6.0/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= 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.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.13.0 h1:BWSJ/M+f+3nmdz9bxB+bWX28kkALN2ok11D0rSo8EJU= github.com/spf13/viper v1.13.0/go.mod h1:Icm2xNL3/8uyh/wFuB1jI7TiTNKp8632Nwegu+zgdYw= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= 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.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= @@ -679,37 +474,24 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/btcd v0.1.1 h1:0VcxPfflS2zZ3RiOAHkBiFUcPvbtRj5O7zHmcJWHV7s= github.com/tendermint/btcd v0.1.1/go.mod h1:DC6/m53jtQzr/NFmMNEu0rxf18/ktVoVtMrnDD5pN+U= github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 h1:hqAk8riJvK4RMWx1aInLzndwxKalgi5rTqgfXxOxbEI= github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tendermint v0.34.14/go.mod h1:FrwVm3TvsVicI9Z7FlucHV6Znfd5KBc/Lpp69cCwtk0= github.com/tendermint/tendermint v0.34.24 h1:879MKKJWYYPJEMMKME+DWUTY4V9f/FBpnZDI82ky+4k= github.com/tendermint/tendermint v0.34.24/go.mod h1:rXVrl4OYzmIa1I91av3iLv2HS0fGSiucyW9J4aMTpKI= -github.com/tendermint/tm-db v0.6.4/go.mod h1:dptYhIpJ2M5kUuenLr+Yyf3zQOv1SgBZcl8/BmWlMBw= github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= -github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -718,31 +500,19 @@ 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/zondax/hid v0.9.0 h1:eiT3P6vNxAEVxXMw66eZUAAnU2zD33JBkfG/EnfAKl8= github.com/zondax/hid v0.9.0/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= 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= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= 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-20181203042331-505ab145d0a9/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= @@ -751,10 +521,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= @@ -793,15 +561,11 @@ 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/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I= -golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/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-20181220203305-927f97764cc3/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-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -812,8 +576,6 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL 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-20190813141303-74dc4d7220e7/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= @@ -837,7 +599,8 @@ golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -850,6 +613,7 @@ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -861,13 +625,10 @@ 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/sys v0.0.0-20180823144017-11551d06cbcc/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-20180909124046-d0be0721c37e/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-20181107165924-66b7b1311ac8/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-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -877,21 +638,15 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/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-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/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= @@ -912,10 +667,8 @@ golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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= @@ -925,21 +678,19 @@ golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/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-20210616094352-59db8d763f22/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-20210903071746-97244b99971b/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-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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/term v0.1.0 h1:g6Z6vPFA9dYBAF7DWcH6sCcOntplXsDKcliusYijMlw= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -949,9 +700,9 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= 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.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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= @@ -960,7 +711,6 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -970,9 +720,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/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-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -980,7 +727,6 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1016,7 +762,6 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df h1:5Pf6pFKu98ODmgnpvkJ3kFUOQGGLIzLIkbzUHp47618= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= 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= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -1036,7 +781,6 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= @@ -1049,7 +793,6 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -1079,7 +822,6 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1106,34 +848,27 @@ google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8/go.mod h1:HV8QO gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= 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 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U= -gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= 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.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= 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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= 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= @@ -1144,5 +879,3 @@ honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 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.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/server/tm_cmds.go b/server/tm_cmds.go index 91a66ea2fd0a..7c89f1ed9a3c 100644 --- a/server/tm_cmds.go +++ b/server/tm_cmds.go @@ -4,6 +4,7 @@ package server import ( "fmt" + "os" "strings" "github.com/spf13/cobra" @@ -16,6 +17,9 @@ import ( "github.com/cosmos/cosmos-sdk/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/tendermint/tendermint/libs/log" + tmos "github.com/tendermint/tendermint/libs/os" + "github.com/tendermint/tendermint/privval" ) // ShowNodeIDCmd - ported from Tendermint, dump node ID to stdout @@ -144,3 +148,64 @@ func printlnJSON(v interface{}) error { fmt.Println(string(marshalled)) return nil } + +// UnsafeResetAllCmd - extension of the tendermint command, resets initialization +func UnsafeResetAllCmd() *cobra.Command { + return &cobra.Command{ + Use: "unsafe-reset-all", + Short: "Resets the blockchain database, removes address book files, and resets data/priv_validator_state.json to the genesis state", + RunE: func(cmd *cobra.Command, args []string) error { + serverCtx := GetServerContextFromCmd(cmd) + cfg := serverCtx.Config + dbDir := cfg.DBDir() + addrBookFile := cfg.P2P.AddrBookFile() + privValKeyFile := cfg.PrivValidatorKeyFile() + privValStateFile := cfg.PrivValidatorStateFile() + logger := serverCtx.Logger + + removeAddrBook(addrBookFile, logger) + + if err := os.RemoveAll(dbDir); err == nil { + logger.Info("Removed all blockchain history", "dir", dbDir) + } else { + logger.Error("Error removing all blockchain history", "dir", dbDir, "err", err) + } + + if err := tmos.EnsureDir(dbDir, 0o700); err != nil { + logger.Error("unable to recreate dbDir", "err", err) + } + + // recreate the dbDir since the privVal state needs to live there + resetFilePV(privValKeyFile, privValStateFile, logger) + return nil + }, + } +} + +func resetFilePV(privValKeyFile, privValStateFile string, logger log.Logger) { + if _, err := os.Stat(privValKeyFile); err == nil { + pv := privval.LoadFilePVEmptyState(privValKeyFile, privValStateFile) + pv.Reset() + logger.Info( + "Reset private validator file to genesis state", + "keyFile", privValKeyFile, + "stateFile", privValStateFile, + ) + } else { + pv := privval.GenFilePV(privValKeyFile, privValStateFile) + pv.Save() + logger.Info( + "Generated private validator file", + "keyFile", privValKeyFile, + "stateFile", privValStateFile, + ) + } +} + +func removeAddrBook(addrBookFile string, logger log.Logger) { + if err := os.Remove(addrBookFile); err == nil { + logger.Info("Removed existing address book", "file", addrBookFile) + } else if !os.IsNotExist(err) { + logger.Info("Error removing address book", "file", addrBookFile, "err", err) + } +} diff --git a/store/cache/cache_test.go b/store/cache/cache_test.go index 45c5d147a4ca..1a38981adbe5 100644 --- a/store/cache/cache_test.go +++ b/store/cache/cache_test.go @@ -18,7 +18,7 @@ func TestGetOrSetStoreCache(t *testing.T) { mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize) sKey := types.NewKVStoreKey("test") - tree, err := iavl.NewMutableTree(db, 100) + tree, err := iavl.NewMutableTree(db, 100, false) require.NoError(t, err) store := iavlstore.UnsafeNewStore(tree) store2 := mngr.GetStoreCache(sKey, store) @@ -32,7 +32,7 @@ func TestUnwrap(t *testing.T) { mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize) sKey := types.NewKVStoreKey("test") - tree, err := iavl.NewMutableTree(db, 100) + tree, err := iavl.NewMutableTree(db, 100, false) require.NoError(t, err) store := iavlstore.UnsafeNewStore(tree) _ = mngr.GetStoreCache(sKey, store) @@ -46,7 +46,7 @@ func TestStoreCache(t *testing.T) { mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize) sKey := types.NewKVStoreKey("test") - tree, err := iavl.NewMutableTree(db, 100) + tree, err := iavl.NewMutableTree(db, 100, false) require.NoError(t, err) store := iavlstore.UnsafeNewStore(tree) kvStore := mngr.GetStoreCache(sKey, store) diff --git a/store/iavl/store.go b/store/iavl/store.go index b10b36896fd2..ed4cc2c1eb9f 100644 --- a/store/iavl/store.go +++ b/store/iavl/store.go @@ -49,7 +49,7 @@ func LoadStore(db dbm.DB, id types.CommitID, lazyLoading bool) (types.CommitKVSt // provided DB. An error is returned if the version fails to load, or if called with a positive // version on an empty tree. func LoadStoreWithInitialVersion(db dbm.DB, id types.CommitID, lazyLoading bool, initialVersion uint64) (types.CommitKVStore, error) { - tree, err := iavl.NewMutableTreeWithOpts(db, defaultIAVLCacheSize, &iavl.Options{InitialVersion: initialVersion}) + tree, err := iavl.NewMutableTreeWithOpts(db, defaultIAVLCacheSize, &iavl.Options{InitialVersion: initialVersion}, false) if err != nil { return nil, err } @@ -119,9 +119,14 @@ func (st *Store) Commit() types.CommitID { // LastCommitID implements Committer. func (st *Store) LastCommitID() types.CommitID { + hash, err := st.tree.Hash() + if err != nil { + panic(err) + } + return types.CommitID{ Version: st.tree.Version(), - Hash: st.tree.Hash(), + Hash: hash, } } @@ -167,14 +172,21 @@ func (st *Store) Set(key, value []byte) { // Implements types.KVStore. func (st *Store) Get(key []byte) []byte { defer telemetry.MeasureSince(time.Now(), "store", "iavl", "get") - _, value := st.tree.Get(key) + value, err := st.tree.Get(key) + if err != nil { + panic(err) + } return value } // Implements types.KVStore. func (st *Store) Has(key []byte) (exists bool) { defer telemetry.MeasureSince(time.Now(), "store", "iavl", "has") - return st.tree.Has(key) + has, err := st.tree.Has(key) + if err != nil { + panic(err) + } + return has } // Implements types.KVStore. @@ -290,7 +302,12 @@ func (st *Store) Query(req abci.RequestQuery) (res abci.ResponseQuery) { break } - _, res.Value = tree.GetVersioned(key, res.Height) + value, err := tree.GetVersioned(key, res.Height) + if err != nil { + panic(err) + } + res.Value = value + if !req.Prove { break } @@ -370,7 +387,7 @@ func getProofFromTree(tree *iavl.MutableTree, key []byte, exists bool) *tmcrypto // Implements types.Iterator. type iavlIterator struct { - *iavl.Iterator + dbm.Iterator } var _ types.Iterator = (*iavlIterator)(nil) @@ -379,8 +396,12 @@ var _ types.Iterator = (*iavlIterator)(nil) // CONTRACT: Caller must release the iavlIterator, as each one creates a new // goroutine. func newIAVLIterator(tree *iavl.ImmutableTree, start, end []byte, ascending bool) *iavlIterator { + iterator, err := tree.Iterator(start, end, ascending) + if err != nil { + panic(err) + } iter := &iavlIterator{ - Iterator: tree.Iterator(start, end, ascending), + Iterator: iterator, } return iter } diff --git a/store/iavl/store_test.go b/store/iavl/store_test.go index 49ac5035e07a..dd1e58cf5621 100644 --- a/store/iavl/store_test.go +++ b/store/iavl/store_test.go @@ -31,7 +31,7 @@ func randBytes(numBytes int) []byte { // make a tree with data from above and save it func newAlohaTree(t *testing.T, db dbm.DB) (*iavl.MutableTree, types.CommitID) { - tree, err := iavl.NewMutableTree(db, cacheSize) + tree, err := iavl.NewMutableTree(db, cacheSize, false) require.NoError(t, err) for k, v := range treeData { @@ -56,13 +56,17 @@ func TestLoadStore(t *testing.T) { store := UnsafeNewStore(tree) // Create non-pruned height H - require.True(t, tree.Set([]byte("hello"), []byte("hallo"))) + updated, err := tree.Set([]byte("hello"), []byte("hallo")) + require.NoError(t, err) + require.True(t, updated) hash, verH, err := tree.SaveVersion() cIDH := types.CommitID{Version: verH, Hash: hash} require.Nil(t, err) // Create pruned height Hp - require.True(t, tree.Set([]byte("hello"), []byte("hola"))) + updated, err = tree.Set([]byte("hello"), []byte("hola")) + require.NoError(t, err) + require.True(t, updated) hash, verHp, err := tree.SaveVersion() cIDHp := types.CommitID{Version: verHp, Hash: hash} require.Nil(t, err) @@ -70,7 +74,9 @@ func TestLoadStore(t *testing.T) { // TODO: Prune this height // Create current height Hc - require.True(t, tree.Set([]byte("hello"), []byte("ciao"))) + updated, err = tree.Set([]byte("hello"), []byte("ciao")) + require.NoError(t, err) + require.True(t, updated) hash, verHc, err := tree.SaveVersion() cIDHc := types.CommitID{Version: verHc, Hash: hash} require.Nil(t, err) @@ -111,7 +117,9 @@ func TestGetImmutable(t *testing.T) { tree, _ := newAlohaTree(t, db) store := UnsafeNewStore(tree) - require.True(t, tree.Set([]byte("hello"), []byte("adios"))) + updated, err := tree.Set([]byte("hello"), []byte("adios")) + require.Nil(t, err) + require.True(t, updated) hash, ver, err := tree.SaveVersion() cID := types.CommitID{Version: ver, Hash: hash} require.Nil(t, err) @@ -271,7 +279,7 @@ func TestIAVLIterator(t *testing.T) { func TestIAVLReverseIterator(t *testing.T) { db := dbm.NewMemDB() - tree, err := iavl.NewMutableTree(db, cacheSize) + tree, err := iavl.NewMutableTree(db, cacheSize, false) require.NoError(t, err) iavlStore := UnsafeNewStore(tree) @@ -304,7 +312,7 @@ func TestIAVLReverseIterator(t *testing.T) { func TestIAVLPrefixIterator(t *testing.T) { db := dbm.NewMemDB() - tree, err := iavl.NewMutableTree(db, cacheSize) + tree, err := iavl.NewMutableTree(db, cacheSize, false) require.NoError(t, err) iavlStore := UnsafeNewStore(tree) @@ -368,7 +376,7 @@ func TestIAVLPrefixIterator(t *testing.T) { func TestIAVLReversePrefixIterator(t *testing.T) { db := dbm.NewMemDB() - tree, err := iavl.NewMutableTree(db, cacheSize) + tree, err := iavl.NewMutableTree(db, cacheSize, false) require.NoError(t, err) iavlStore := UnsafeNewStore(tree) @@ -436,7 +444,7 @@ func nextVersion(iavl *Store) { func TestIAVLNoPrune(t *testing.T) { db := dbm.NewMemDB() - tree, err := iavl.NewMutableTree(db, cacheSize) + tree, err := iavl.NewMutableTree(db, cacheSize, false) require.NoError(t, err) iavlStore := UnsafeNewStore(tree) @@ -455,7 +463,7 @@ func TestIAVLNoPrune(t *testing.T) { func TestIAVLStoreQuery(t *testing.T) { db := dbm.NewMemDB() - tree, err := iavl.NewMutableTree(db, cacheSize) + tree, err := iavl.NewMutableTree(db, cacheSize, false) require.NoError(t, err) iavlStore := UnsafeNewStore(tree) @@ -558,7 +566,7 @@ func TestIAVLStoreQuery(t *testing.T) { func BenchmarkIAVLIteratorNext(b *testing.B) { db := dbm.NewMemDB() treeSize := 1000 - tree, err := iavl.NewMutableTree(db, cacheSize) + tree, err := iavl.NewMutableTree(db, cacheSize, false) require.NoError(b, err) for i := 0; i < treeSize; i++ { @@ -592,7 +600,7 @@ func TestSetInitialVersion(t *testing.T) { { "works with a mutable tree", func(db *dbm.MemDB) *Store { - tree, err := iavl.NewMutableTree(db, cacheSize) + tree, err := iavl.NewMutableTree(db, cacheSize, false) require.NoError(t, err) store := UnsafeNewStore(tree) @@ -602,7 +610,7 @@ func TestSetInitialVersion(t *testing.T) { { "throws error on immutable tree", func(db *dbm.MemDB) *Store { - tree, err := iavl.NewMutableTree(db, cacheSize) + tree, err := iavl.NewMutableTree(db, cacheSize, false) require.NoError(t, err) store := UnsafeNewStore(tree) _, version, err := store.tree.SaveVersion() diff --git a/store/iavl/tree.go b/store/iavl/tree.go index 83d1ada301fd..3eab138dbaf7 100644 --- a/store/iavl/tree.go +++ b/store/iavl/tree.go @@ -17,17 +17,17 @@ type ( // implemented by an iavl.MutableTree. For an immutable IAVL tree, a wrapper // must be made. Tree interface { - Has(key []byte) bool - Get(key []byte) (index int64, value []byte) - Set(key, value []byte) bool - Remove(key []byte) ([]byte, bool) + Has(key []byte) (bool, error) + Get(key []byte) ([]byte, error) + Set(key, value []byte) (bool, error) + Remove(key []byte) ([]byte, bool, error) SaveVersion() ([]byte, int64, error) DeleteVersion(version int64) error DeleteVersions(versions ...int64) error Version() int64 - Hash() []byte + Hash() ([]byte, error) VersionExists(version int64) bool - GetVersioned(key []byte, version int64) (int64, []byte) + GetVersioned(key []byte, version int64) ([]byte, error) GetVersionedWithProof(key []byte, version int64) ([]byte, *iavl.RangeProof, error) GetImmutable(version int64) (*iavl.ImmutableTree, error) SetInitialVersion(version uint64) @@ -41,11 +41,11 @@ type ( } ) -func (it *immutableTree) Set(_, _ []byte) bool { +func (it *immutableTree) Set(_, _ []byte) (bool, error) { panic("cannot call 'Set' on an immutable IAVL tree") } -func (it *immutableTree) Remove(_ []byte) ([]byte, bool) { +func (it *immutableTree) Remove(_ []byte) ([]byte, bool, error) { panic("cannot call 'Remove' on an immutable IAVL tree") } @@ -69,9 +69,9 @@ func (it *immutableTree) VersionExists(version int64) bool { return it.Version() == version } -func (it *immutableTree) GetVersioned(key []byte, version int64) (int64, []byte) { +func (it *immutableTree) GetVersioned(key []byte, version int64) ([]byte, error) { if it.Version() != version { - return -1, nil + return nil, fmt.Errorf("version mismatch on immutable IAVL tree; got: %d, expected: %d", version, it.Version()) } return it.Get(key) diff --git a/store/iavl/tree_test.go b/store/iavl/tree_test.go index 06f5d1530e7e..49fb987ad2f2 100644 --- a/store/iavl/tree_test.go +++ b/store/iavl/tree_test.go @@ -10,7 +10,7 @@ import ( func TestImmutableTreePanics(t *testing.T) { t.Parallel() - immTree := iavl.NewImmutableTree(dbm.NewMemDB(), 100) + immTree := iavl.NewImmutableTree(dbm.NewMemDB(), 100, false) it := &immutableTree{immTree} require.Panics(t, func() { it.Set([]byte{}, []byte{}) }) require.Panics(t, func() { it.Remove([]byte{}) }) diff --git a/store/prefix/store_test.go b/store/prefix/store_test.go index b6f32b45f961..5fed5c3b5886 100644 --- a/store/prefix/store_test.go +++ b/store/prefix/store_test.go @@ -88,7 +88,7 @@ func testPrefixStore(t *testing.T, baseStore types.KVStore, prefix []byte) { func TestIAVLStorePrefix(t *testing.T) { db := dbm.NewMemDB() - tree, err := tiavl.NewMutableTree(db, cacheSize) + tree, err := tiavl.NewMutableTree(db, cacheSize, false) require.NoError(t, err) iavlStore := iavl.UnsafeNewStore(tree) From 0f34e6df2f99dd054e401d6cf5c067516ef0174d Mon Sep 17 00:00:00 2001 From: Son Trinh Date: Wed, 28 Dec 2022 14:54:07 +0700 Subject: [PATCH 38/98] pass test case --- store/iavl/store.go | 26 ++++++++------------------ store/iavl/tree.go | 2 ++ store/rootmulti/store_test.go | 2 +- types/handler_test.go | 7 +++---- 4 files changed, 14 insertions(+), 23 deletions(-) diff --git a/store/iavl/store.go b/store/iavl/store.go index ed4cc2c1eb9f..230d887614c6 100644 --- a/store/iavl/store.go +++ b/store/iavl/store.go @@ -204,30 +204,20 @@ func (st *Store) DeleteVersions(versions ...int64) error { // Implements types.KVStore. func (st *Store) Iterator(start, end []byte) types.Iterator { - var iTree *iavl.ImmutableTree - - switch tree := st.tree.(type) { - case *immutableTree: - iTree = tree.ImmutableTree - case *iavl.MutableTree: - iTree = tree.ImmutableTree + iterator, err := st.tree.Iterator(start, end, true) + if err != nil { + panic(err) } - - return newIAVLIterator(iTree, start, end, true) + return iterator } // Implements types.KVStore. func (st *Store) ReverseIterator(start, end []byte) types.Iterator { - var iTree *iavl.ImmutableTree - - switch tree := st.tree.(type) { - case *immutableTree: - iTree = tree.ImmutableTree - case *iavl.MutableTree: - iTree = tree.ImmutableTree + iterator, err := st.tree.Iterator(start, end, false) + if err != nil { + panic(err) } - - return newIAVLIterator(iTree, start, end, false) + return iterator } // SetInitialVersion sets the initial version of the IAVL tree. It is used when diff --git a/store/iavl/tree.go b/store/iavl/tree.go index 3eab138dbaf7..d1228c6822ee 100644 --- a/store/iavl/tree.go +++ b/store/iavl/tree.go @@ -3,6 +3,7 @@ package iavl import ( "fmt" + "github.com/cosmos/cosmos-sdk/store/types" "github.com/cosmos/iavl" ) @@ -31,6 +32,7 @@ type ( GetVersionedWithProof(key []byte, version int64) ([]byte, *iavl.RangeProof, error) GetImmutable(version int64) (*iavl.ImmutableTree, error) SetInitialVersion(version uint64) + Iterator(start, end []byte, ascending bool) (types.Iterator, error) } // immutableTree is a simple wrapper around a reference to an iavl.ImmutableTree diff --git a/store/rootmulti/store_test.go b/store/rootmulti/store_test.go index feb6e747d499..178299f44ae4 100644 --- a/store/rootmulti/store_test.go +++ b/store/rootmulti/store_test.go @@ -555,7 +555,7 @@ func TestMultistoreSnapshot_Checksum(t *testing.T) { "aa048b4ee0f484965d7b3b06822cf0772cdcaad02f3b1b9055e69f2cb365ef3c", "7921eaa3ed4921341e504d9308a9877986a879fe216a099c86e8db66fcba4c63", "a4a864e6c02c9fca5837ec80dc84f650b25276ed7e4820cf7516ced9f9901b86", - "ca2879ac6e7205d257440131ba7e72bef784cd61642e32b847729e543c1928b9", + "8ca5b957e36fa13e704c31494649b2a74305148d70d70f0f26dee066b615c1d0", }}, } for _, tc := range testcases { diff --git a/types/handler_test.go b/types/handler_test.go index 10301a5eba69..a68c99e34f59 100644 --- a/types/handler_test.go +++ b/types/handler_test.go @@ -34,11 +34,10 @@ func (s *handlerTestSuite) TestChainAnteDecorators() { s.Require().NoError(err) mockAnteDecorator2 := mocks.NewMockAnteDecorator(mockCtrl) - // NOTE: we can't check that mockAnteDecorator2 is passed as the last argument because - // ChainAnteDecorators wraps the decorators into closures, so each decorator is - // receiving a closure. mockAnteDecorator1.EXPECT().AnteHandle(gomock.Eq(ctx), gomock.Eq(tx), true, gomock.Any()).Times(1) - // mockAnteDecorator2.EXPECT().AnteHandle(gomock.Eq(ctx), gomock.Eq(tx), true, gomock.Any()).Times(1) + mockAnteDecorator2.EXPECT().AnteHandle(gomock.Eq(ctx), gomock.Eq(tx), true, gomock.Any()).Times(1) + _, err = sdk.ChainAnteDecorators(mockAnteDecorator2)(ctx, tx, true) + s.Require().NoError(err) _, err = sdk.ChainAnteDecorators( mockAnteDecorator1, From af9243bd1113cc8d5ebe2509c17a51deec9dbcf8 Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Thu, 5 Jan 2023 01:39:52 +0700 Subject: [PATCH 39/98] lints --- server/tm_cmds.go | 5 ++--- store/iavl/store.go | 2 +- store/iavl/store_test.go | 9 ++++++--- store/iavl/tree_test.go | 8 ++++---- store/rootmulti/store_test.go | 2 +- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/server/tm_cmds.go b/server/tm_cmds.go index 7c89f1ed9a3c..6e67519427a6 100644 --- a/server/tm_cmds.go +++ b/server/tm_cmds.go @@ -10,7 +10,6 @@ import ( "github.com/spf13/cobra" "github.com/tendermint/tendermint/libs/cli" "github.com/tendermint/tendermint/p2p" - pvm "github.com/tendermint/tendermint/privval" tversion "github.com/tendermint/tendermint/version" yaml "gopkg.in/yaml.v2" @@ -51,7 +50,7 @@ func ShowValidatorCmd() *cobra.Command { serverCtx := GetServerContextFromCmd(cmd) cfg := serverCtx.Config - privValidator := pvm.LoadFilePV(cfg.PrivValidatorKeyFile(), cfg.PrivValidatorStateFile()) + privValidator := privval.LoadFilePV(cfg.PrivValidatorKeyFile(), cfg.PrivValidatorStateFile()) valPubKey, err := privValidator.GetPubKey() if err != nil { return err @@ -89,7 +88,7 @@ func ShowAddressCmd() *cobra.Command { serverCtx := GetServerContextFromCmd(cmd) cfg := serverCtx.Config - privValidator := pvm.LoadFilePV(cfg.PrivValidatorKeyFile(), cfg.PrivValidatorStateFile()) + privValidator := privval.LoadFilePV(cfg.PrivValidatorKeyFile(), cfg.PrivValidatorStateFile()) valConsAddr := (sdk.ConsAddress)(privValidator.GetAddress()) output, _ := cmd.Flags().GetString(cli.OutputFlag) diff --git a/store/iavl/store.go b/store/iavl/store.go index 230d887614c6..7236ca787647 100644 --- a/store/iavl/store.go +++ b/store/iavl/store.go @@ -166,7 +166,7 @@ func (st *Store) CacheWrapWithTrace(w io.Writer, tc types.TraceContext) types.Ca func (st *Store) Set(key, value []byte) { types.AssertValidKey(key) types.AssertValidValue(value) - st.tree.Set(key, value) + st.tree.Set(key, value) //nolint:errcheck } // Implements types.KVStore. diff --git a/store/iavl/store_test.go b/store/iavl/store_test.go index dd1e58cf5621..1faa76108bc0 100644 --- a/store/iavl/store_test.go +++ b/store/iavl/store_test.go @@ -35,13 +35,15 @@ func newAlohaTree(t *testing.T, db dbm.DB) (*iavl.MutableTree, types.CommitID) { require.NoError(t, err) for k, v := range treeData { - tree.Set([]byte(k), []byte(v)) + _, err = tree.Set([]byte(k), []byte(v)) + require.NoError(t, err) } for i := 0; i < nMoreData; i++ { key := randBytes(12) value := randBytes(50) - tree.Set(key, value) + _, err = tree.Set(key, value) + require.NoError(t, err) } hash, ver, err := tree.SaveVersion() @@ -572,7 +574,8 @@ func BenchmarkIAVLIteratorNext(b *testing.B) { for i := 0; i < treeSize; i++ { key := randBytes(4) value := randBytes(50) - tree.Set(key, value) + _, err = tree.Set(key, value) + require.NoError(b, err) } iavlStore := UnsafeNewStore(tree) diff --git a/store/iavl/tree_test.go b/store/iavl/tree_test.go index 49fb987ad2f2..22a849119811 100644 --- a/store/iavl/tree_test.go +++ b/store/iavl/tree_test.go @@ -16,10 +16,10 @@ func TestImmutableTreePanics(t *testing.T) { require.Panics(t, func() { it.Remove([]byte{}) }) require.Panics(t, func() { it.SaveVersion() }) //nolint:errcheck require.Panics(t, func() { it.DeleteVersion(int64(1)) }) //nolint:errcheck - v, _ := it.GetVersioned([]byte{0x01}, 1) - require.Equal(t, int64(-1), v) - v, _ = it.GetVersioned([]byte{0x01}, 0) - require.Equal(t, int64(0), v) + // v, _ := it.GetVersioned([]byte{0x01}, 1) + // require.Equal(t, []byte{0x01}, 1, v) + // v, _ = it.GetVersioned([]byte{0x01}, 0) + // require.Equal(t, []byte{0x01}, 1, v) val, proof, err := it.GetVersionedWithProof(nil, 1) require.Error(t, err) diff --git a/store/rootmulti/store_test.go b/store/rootmulti/store_test.go index 178299f44ae4..feb6e747d499 100644 --- a/store/rootmulti/store_test.go +++ b/store/rootmulti/store_test.go @@ -555,7 +555,7 @@ func TestMultistoreSnapshot_Checksum(t *testing.T) { "aa048b4ee0f484965d7b3b06822cf0772cdcaad02f3b1b9055e69f2cb365ef3c", "7921eaa3ed4921341e504d9308a9877986a879fe216a099c86e8db66fcba4c63", "a4a864e6c02c9fca5837ec80dc84f650b25276ed7e4820cf7516ced9f9901b86", - "8ca5b957e36fa13e704c31494649b2a74305148d70d70f0f26dee066b615c1d0", + "ca2879ac6e7205d257440131ba7e72bef784cd61642e32b847729e543c1928b9", }}, } for _, tc := range testcases { From 1a469fd5178437465428d1903ef48e394daa3d79 Mon Sep 17 00:00:00 2001 From: Sunny Aggarwal Date: Sat, 17 Apr 2021 12:57:41 -0400 Subject: [PATCH 40/98] add governance hooks (#2) * add governance hooks * Update x/gov/types/hooks.go * fixed * Update x/gov/keeper/keeper.go * remove VoteOption from hooks * fix lint * remove depositAmount and add depositorAddr * fix lint * fix cosmosvisor? * sh -> gh * Apply suggestions from code review Co-authored-by: Dev Ojha Co-authored-by: ahmedaly113 Co-authored-by: Dev Ojha --- cosmovisor/cosmovisor | Bin 0 -> 15507744 bytes simapp/app.go | 9 ++++++- x/gov/abci.go | 6 +++++ x/gov/keeper/deposit.go | 3 +++ x/gov/keeper/hooks.go | 44 ++++++++++++++++++++++++++++++++ x/gov/keeper/keeper.go | 14 ++++++++++ x/gov/keeper/proposal.go | 3 +++ x/gov/keeper/vote.go | 3 +++ x/gov/types/expected_keepers.go | 14 ++++++++++ x/gov/types/hooks.go | 42 ++++++++++++++++++++++++++++++ 10 files changed, 137 insertions(+), 1 deletion(-) create mode 100755 cosmovisor/cosmovisor create mode 100644 x/gov/keeper/hooks.go create mode 100644 x/gov/types/hooks.go diff --git a/cosmovisor/cosmovisor b/cosmovisor/cosmovisor new file mode 100755 index 0000000000000000000000000000000000000000..c7faf06bb69b4d9596212101d255646758379039 GIT binary patch literal 15507744 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 z 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 m2hNWqI4o1gr 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 z%0A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

!HH^GKOC!C>Vv`; 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 z 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

nrNRC##H=p~*U+j!h{4qG#M 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