From 5485ede3a5263c54e424a50609d38490b6736991 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 8 May 2022 19:32:48 +0800 Subject: [PATCH 01/62] decouple Name and Type --- components/configstores/types.go | 1 + components/custom/config.go | 1 + components/file/types.go | 1 + components/hello/hello.go | 1 + components/lock/types.go | 1 + components/rpc/types.go | 1 + components/sequencer/types.go | 1 + configs/all_component.json | 99 ++++++++++++++++++++++++++++++++ pkg/runtime/bindings/metadata.go | 1 + pkg/runtime/pubsub/config.go | 1 + pkg/runtime/runtime.go | 22 +++---- pkg/runtime/state/config.go | 1 + 12 files changed, 120 insertions(+), 11 deletions(-) create mode 100644 configs/all_component.json diff --git a/components/configstores/types.go b/components/configstores/types.go index 7cf680ead9..54786ba1f1 100644 --- a/components/configstores/types.go +++ b/components/configstores/types.go @@ -18,6 +18,7 @@ package configstores // StoreConfig wraps configuration for a store implementation type StoreConfig struct { + Type string `json:"type"` StoreName string `json:"store_name"` Address []string `json:"address"` TimeOut string `json:"timeout"` diff --git a/components/custom/config.go b/components/custom/config.go index a4959b778b..56afd10ee7 100644 --- a/components/custom/config.go +++ b/components/custom/config.go @@ -14,6 +14,7 @@ package custom type Config struct { + Type string `json:"type"` Version string `json:"version"` Metadata map[string]string `json:"metadata"` } diff --git a/components/file/types.go b/components/file/types.go index 6c68d7a397..746eb7ebbc 100644 --- a/components/file/types.go +++ b/components/file/types.go @@ -23,6 +23,7 @@ import ( // FileConfig wraps configuration for a file implementation type FileConfig struct { + Type string `json:"type"` Metadata json.RawMessage } diff --git a/components/hello/hello.go b/components/hello/hello.go index a9d244bad3..5f504d5fba 100644 --- a/components/hello/hello.go +++ b/components/hello/hello.go @@ -26,6 +26,7 @@ type HelloService interface { } type HelloConfig struct { + Type string `json:"type"` HelloString string `json:"hello"` } diff --git a/components/lock/types.go b/components/lock/types.go index ab88927917..ab7d25d27a 100644 --- a/components/lock/types.go +++ b/components/lock/types.go @@ -17,6 +17,7 @@ type Feature string // Lock's metadata type Config struct { + Type string `json:"type"` Metadata map[string]string `json:"metadata"` } diff --git a/components/rpc/types.go b/components/rpc/types.go index 150b28fb23..b4034f5575 100644 --- a/components/rpc/types.go +++ b/components/rpc/types.go @@ -72,6 +72,7 @@ type RPCResponse struct { } type RpcConfig struct { + Type string `json:"type"` Config json.RawMessage } diff --git a/components/sequencer/types.go b/components/sequencer/types.go index af5c256fd3..4cc366b1c9 100644 --- a/components/sequencer/types.go +++ b/components/sequencer/types.go @@ -14,6 +14,7 @@ package sequencer type Config struct { + Type string `json:"type"` BiggerThan map[string]int64 `json:"biggerThan"` Metadata map[string]string `json:"metadata"` } diff --git a/configs/all_component.json b/configs/all_component.json new file mode 100644 index 0000000000..4ab1a2a701 --- /dev/null +++ b/configs/all_component.json @@ -0,0 +1,99 @@ +{ + "servers": [ + { + "default_log_path": "stdout", + "default_log_level": "DEBUG", + "routers": [ + { + "router_config_name": "actuator_dont_need_router" + } + ], + "listeners": [ + { + "name": "grpc", + "address": "127.0.0.1:34904", + "bind_port": true, + "filter_chains": [ + { + "filters": [ + { + "type": "grpc", + "config": { + "server_name": "runtime", + "grpc_config": { + "hellos": { + "helloworld": { + "hello": "greeting" + } + }, + "state": { + "redis": { + "metadata": { + "redisHost": "localhost:6380", + "redisPassword": "" + } + } + }, + "sequencer": { + "redis": { + "metadata": { + "redisHost": "127.0.0.1:6380", + "redisPassword": "" + } + } + }, + "lock": { + "redis": { + "metadata": { + "redisHost": "localhost:6380", + "redisPassword": "" + } + } + }, + "pub_subs": { + "redis": { + "metadata": { + "redisHost": "localhost:6380", + "redisPassword": "" + } + } + }, + "app": { + "app_id": "app1", + "grpc_callback_port": 9999 + } + } + } + } + ] + } + ] + }, + { + "name": "actuator", + "address": "127.0.0.1:34999", + "bind_port": true, + "filter_chains": [ + { + "filters": [ + { + "type": "proxy", + "config": { + "downstream_protocol": "Http1", + "upstream_protocol": "Http1", + "router_config_name": "actuator_dont_need_router" + } + } + ] + } + ], + "stream_filters": [ + { + "type": "actuator_filter" + } + ] + } + ] + } + ] +} diff --git a/pkg/runtime/bindings/metadata.go b/pkg/runtime/bindings/metadata.go index 6963183afc..7d1ea0841b 100644 --- a/pkg/runtime/bindings/metadata.go +++ b/pkg/runtime/bindings/metadata.go @@ -17,6 +17,7 @@ package bindings type Metadata struct { + Type string `json:"type"` Version string Metadata map[string]string `json:"metadata"` } diff --git a/pkg/runtime/pubsub/config.go b/pkg/runtime/pubsub/config.go index 0cc73104da..8e7d730763 100644 --- a/pkg/runtime/pubsub/config.go +++ b/pkg/runtime/pubsub/config.go @@ -18,5 +18,6 @@ package pubsub // Config wraps configuration for a pubsub implementation type Config struct { + Type string `json:"type"` Metadata map[string]string `json:"metadata"` } diff --git a/pkg/runtime/runtime.go b/pkg/runtime/runtime.go index ae86b22e81..395c3bd99f 100644 --- a/pkg/runtime/runtime.go +++ b/pkg/runtime/runtime.go @@ -271,7 +271,7 @@ func (m *MosnRuntime) initHellos(hellos ...*hello.HelloFactory) error { // register all hello services implementation m.helloRegistry.Register(hellos...) for name, config := range m.runtimeConfig.HelloServiceManagement { - h, err := m.helloRegistry.Create(name) + h, err := m.helloRegistry.Create(config.Type) if err != nil { m.errInt(err, "create hello's component %s failed", name) return err @@ -290,7 +290,7 @@ func (m *MosnRuntime) initConfigStores(configStores ...*configstores.StoreFactor // register all config store services implementation m.configStoreRegistry.Register(configStores...) for name, config := range m.runtimeConfig.ConfigStoreManagement { - c, err := m.configStoreRegistry.Create(name) + c, err := m.configStoreRegistry.Create(config.Type) if err != nil { m.errInt(err, "create configstore's component %s failed", name) return err @@ -309,7 +309,7 @@ func (m *MosnRuntime) initRpcs(rpcs ...*rpc.Factory) error { // register all rpc components m.rpcRegistry.Register(rpcs...) for name, config := range m.runtimeConfig.RpcManagement { - c, err := m.rpcRegistry.Create(name) + c, err := m.rpcRegistry.Create(config.Type) if err != nil { m.errInt(err, "create rpc's component %s failed", name) return err @@ -330,7 +330,7 @@ func (m *MosnRuntime) initPubSubs(factorys ...*runtime_pubsub.Factory) error { m.pubSubRegistry.Register(factorys...) for name, config := range m.runtimeConfig.PubSubManagement { // create component - comp, err := m.pubSubRegistry.Create(name) + comp, err := m.pubSubRegistry.Create(config.Type) if err != nil { m.errInt(err, "create pubsub component %s failed", name) return err @@ -358,7 +358,7 @@ func (m *MosnRuntime) initStates(factorys ...*runtime_state.Factory) error { // 2. loop initializing for name, config := range m.runtimeConfig.StateManagement { // 2.1. create and store the component - comp, err := m.stateRegistry.Create(name) + comp, err := m.stateRegistry.Create(config.Type) if err != nil { m.errInt(err, "create state component %s failed", name) return err @@ -384,7 +384,7 @@ func (m *MosnRuntime) initFiles(files ...*file.FileFactory) error { // register all files store services implementation m.fileRegistry.Register(files...) for name, config := range m.runtimeConfig.Files { - c, err := m.fileRegistry.Create(name) + c, err := m.fileRegistry.Create(config.Type) if err != nil { m.errInt(err, "create files component %s failed", name) return err @@ -405,7 +405,7 @@ func (m *MosnRuntime) initLocks(factorys ...*runtime_lock.Factory) error { // 2. loop initializing for name, config := range m.runtimeConfig.LockManagement { // 2.1. create the component - comp, err := m.lockRegistry.Create(name) + comp, err := m.lockRegistry.Create(config.Type) if err != nil { m.errInt(err, "create lock component %s failed", name) return err @@ -433,7 +433,7 @@ func (m *MosnRuntime) initSequencers(factorys ...*runtime_sequencer.Factory) err // 2. loop initializing for name, config := range m.runtimeConfig.SequencerManagement { // 2.1. create the component - comp, err := m.sequencerRegistry.Create(name) + comp, err := m.sequencerRegistry.Create(config.Type) if err != nil { m.errInt(err, "create sequencer component %s failed", name) return err @@ -485,7 +485,7 @@ func (m *MosnRuntime) initOutputBinding(factorys ...*mbindings.OutputBindingFact // 2. loop initializing for name, config := range m.runtimeConfig.Bindings { // 2.1. create the component - comp, err := m.bindingsRegistry.CreateOutputBinding(name) + comp, err := m.bindingsRegistry.CreateOutputBinding(config.Type) if err != nil { m.errInt(err, "create outbinding component %s failed", name) return err @@ -513,7 +513,7 @@ func (m *MosnRuntime) initSecretStores(factorys ...*msecretstores.SecretStoresFa // 2. loop initializing for name, config := range m.runtimeConfig.SecretStoresManagement { // 2.1. create the component - comp, err := m.secretStoresRegistry.Create(name) + comp, err := m.secretStoresRegistry.Create(config.Type) if err != nil { m.errInt(err, "create secretStore component %s failed", name) return err @@ -590,7 +590,7 @@ func (m *MosnRuntime) initCustomComponents(type2factorys map[string][]*custom.Co // 2.2. loop initializing component instances for name, config := range name2Config { // create the component - comp, err := m.customComponentRegistry.Create(compType, name) + comp, err := m.customComponentRegistry.Create(compType, config.Type) if err != nil { m.errInt(err, "create custom component %s failed", name) return err diff --git a/pkg/runtime/state/config.go b/pkg/runtime/state/config.go index bed388be13..08e60f851c 100644 --- a/pkg/runtime/state/config.go +++ b/pkg/runtime/state/config.go @@ -18,5 +18,6 @@ package state // Config wraps configuration for a state implementation type Config struct { + Type string `json:"type"` Metadata map[string]string `json:"metadata"` } From 7531b39c89709dc73f8b91c2e56e72ded4dbfca9 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 8 May 2022 21:00:29 +0800 Subject: [PATCH 02/62] decouple Name and Type --- configs/all_component.json | 99 ---------------------- configs/config_apollo.json | 6 +- configs/config_apollo_health.json | 6 +- configs/config_bindings.json | 6 +- configs/config_file.json | 6 +- configs/config_file_qiniu_oss.json | 6 +- configs/config_file_tencentcloud_oss.json | 6 +- configs/config_in_memory.json | 18 ++-- configs/config_integration_redis_etcd.json | 30 ++++--- configs/config_lock_consul.json | 6 +- configs/config_lock_etcd.json | 6 +- configs/config_lock_mongo.json | 6 +- configs/config_lock_redis.json | 6 +- configs/config_lock_redis_cluster.json | 6 +- configs/config_lock_zookeeper.json | 6 +- configs/config_redis.json | 15 ++-- configs/config_sequencer_etcd.json | 6 +- configs/config_sequencer_mongo.json | 6 +- configs/config_sequencer_redis.json | 6 +- configs/config_sequencer_zookeeper.json | 6 +- configs/config_state_redis.json | 6 +- configs/config_trace_skywalking.json | 6 +- configs/integrate_config.json | 12 ++- configs/runtime_config.json | 6 +- pkg/runtime/runtime_test.go | 44 +++++++--- 25 files changed, 156 insertions(+), 176 deletions(-) delete mode 100644 configs/all_component.json diff --git a/configs/all_component.json b/configs/all_component.json deleted file mode 100644 index 4ab1a2a701..0000000000 --- a/configs/all_component.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "servers": [ - { - "default_log_path": "stdout", - "default_log_level": "DEBUG", - "routers": [ - { - "router_config_name": "actuator_dont_need_router" - } - ], - "listeners": [ - { - "name": "grpc", - "address": "127.0.0.1:34904", - "bind_port": true, - "filter_chains": [ - { - "filters": [ - { - "type": "grpc", - "config": { - "server_name": "runtime", - "grpc_config": { - "hellos": { - "helloworld": { - "hello": "greeting" - } - }, - "state": { - "redis": { - "metadata": { - "redisHost": "localhost:6380", - "redisPassword": "" - } - } - }, - "sequencer": { - "redis": { - "metadata": { - "redisHost": "127.0.0.1:6380", - "redisPassword": "" - } - } - }, - "lock": { - "redis": { - "metadata": { - "redisHost": "localhost:6380", - "redisPassword": "" - } - } - }, - "pub_subs": { - "redis": { - "metadata": { - "redisHost": "localhost:6380", - "redisPassword": "" - } - } - }, - "app": { - "app_id": "app1", - "grpc_callback_port": 9999 - } - } - } - } - ] - } - ] - }, - { - "name": "actuator", - "address": "127.0.0.1:34999", - "bind_port": true, - "filter_chains": [ - { - "filters": [ - { - "type": "proxy", - "config": { - "downstream_protocol": "Http1", - "upstream_protocol": "Http1", - "router_config_name": "actuator_dont_need_router" - } - } - ] - } - ], - "stream_filters": [ - { - "type": "actuator_filter" - } - ] - } - ] - } - ] -} diff --git a/configs/config_apollo.json b/configs/config_apollo.json index 06d1a31dfe..bf7d7b861e 100644 --- a/configs/config_apollo.json +++ b/configs/config_apollo.json @@ -29,11 +29,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, - "config_store": { + "config_store_demo": { + "type": "config_store", "apollo": { "address": [ "http://106.54.227.205:8080" diff --git a/configs/config_apollo_health.json b/configs/config_apollo_health.json index 2f3ace0548..31ff9aed0f 100644 --- a/configs/config_apollo_health.json +++ b/configs/config_apollo_health.json @@ -34,11 +34,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, - "config_store": { + "config_store_demo": { + "type": "config_store", "apollo": { "address": [ "http://106.54.227.205:8080" diff --git a/configs/config_bindings.json b/configs/config_bindings.json index 4e069d73f4..1698b69c09 100644 --- a/configs/config_bindings.json +++ b/configs/config_bindings.json @@ -17,12 +17,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "bindings": { - "http": { + "http_demo": { + "type": "http", "metadata": { "url": "https://github.com/mosn/layotto" diff --git a/configs/config_file.json b/configs/config_file.json index f267e5e0e0..34ab6eb7a3 100644 --- a/configs/config_file.json +++ b/configs/config_file.json @@ -17,12 +17,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "file": { - "minioOSS": { + "minioOSS_demo": { + "type": "minioOSS", "metadata": [ { "endpoint": "127.0.0.1:9000", diff --git a/configs/config_file_qiniu_oss.json b/configs/config_file_qiniu_oss.json index d87a5c7720..e8fe082980 100644 --- a/configs/config_file_qiniu_oss.json +++ b/configs/config_file_qiniu_oss.json @@ -17,12 +17,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "file": { - "qiniuOSS": { + "qiniuOSS_demo": { + "type": "qiniuOSS", "metadata": [ { "endpoint": "", diff --git a/configs/config_file_tencentcloud_oss.json b/configs/config_file_tencentcloud_oss.json index 441d1ab2b4..098815cb90 100644 --- a/configs/config_file_tencentcloud_oss.json +++ b/configs/config_file_tencentcloud_oss.json @@ -17,12 +17,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "files": { - "tencentCloudOSS": { + "tencentCloudOSS_demo": { + "type": "tencentCloudOSS", "metadata": [ { "endpoint": "", diff --git a/configs/config_in_memory.json b/configs/config_in_memory.json index 983ff8d6e7..4522e789f8 100644 --- a/configs/config_in_memory.json +++ b/configs/config_in_memory.json @@ -22,37 +22,43 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "state": { - "in-memory": { + "in-memory_demo": { + "type": "in-memory", "metadata": { } } }, "lock": { - "in-memory": { + "in-memory_demo": { + "type": "in-memory", "metadata": { } } }, "pub_subs": { - "in-memory": { + "in-memory_demo": { + "type": "in-memory", "metadata": { "consumerID": "1" } } }, "sequencer": { - "in-memory": { + "in-memory_demo": { + "type": "in-memory", "metadata": {} } }, "custom_component": { "helloworld": { - "in-memory": { + "in-memory_demo": { + "type": "in-memory", "metadata": {} } } diff --git a/configs/config_integration_redis_etcd.json b/configs/config_integration_redis_etcd.json index 2940dbaf08..df39b2ed06 100644 --- a/configs/config_integration_redis_etcd.json +++ b/configs/config_integration_redis_etcd.json @@ -48,7 +48,8 @@ "server_name": "runtime", "grpc_config": { "rpcs": { - "mosn": { + "mosn_demo": { + "type": "mosn", "config": { "channel": [ { @@ -61,19 +62,22 @@ } }, "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "bindings": { - "http": { + "http_demo": { + "type": "http", "metadata": { "url": "https://registry.npmmirror.com/layotto/0.0.0" } } }, "config_store": { - "etcd": { + "etcd_demo": { + "type": "etcd", "address": [ "127.0.0.1:2379" ], @@ -81,7 +85,8 @@ } }, "state": { - "redis": { + "redis_demo": { + "type": "redis", "metadata": { "redisHost": "localhost:6380", "redisPassword": "" @@ -89,7 +94,8 @@ } }, "sequencer": { - "etcd": { + "etcd_demo": { + "type": "etcd", "metadata": { "endpoints": "localhost:2379", "segmentCacheEnable": "false", @@ -99,7 +105,8 @@ "dialTimeout": "5" } }, - "redis": { + "redis_demo": { + "type": "redis", "metadata": { "redisHost": "127.0.0.1:6380", "redisPassword": "" @@ -107,7 +114,8 @@ } }, "lock": { - "etcd": { + "etcd_demo": { + "type": "etcd", "metadata": { "endpoints": "localhost:2379", "username": "", @@ -116,7 +124,8 @@ "dialTimeout": "5" } }, - "redis": { + "redis_demo": { + "type": "redis", "metadata": { "redisHost": "localhost:6380", "redisPassword": "" @@ -124,7 +133,8 @@ } }, "pub_subs": { - "redis": { + "redis_demo": { + "type": "redis", "metadata": { "redisHost": "localhost:6380", "redisPassword": "" diff --git a/configs/config_lock_consul.json b/configs/config_lock_consul.json index 4233206f32..d6a72b6c2e 100644 --- a/configs/config_lock_consul.json +++ b/configs/config_lock_consul.json @@ -22,12 +22,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "lock": { - "consul": { + "consul_demo": { + "type": "consul", "metadata": { "address": "localhost:8500", "scheme": "http" diff --git a/configs/config_lock_etcd.json b/configs/config_lock_etcd.json index c602e5dc04..8899d5bf1d 100644 --- a/configs/config_lock_etcd.json +++ b/configs/config_lock_etcd.json @@ -22,12 +22,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "lock": { - "etcd": { + "etcd_demo": { + "type": "etcd", "metadata": { "endpoints": "localhost:2379", "username": "", diff --git a/configs/config_lock_mongo.json b/configs/config_lock_mongo.json index eadf0d992a..38c80a55cd 100644 --- a/configs/config_lock_mongo.json +++ b/configs/config_lock_mongo.json @@ -22,12 +22,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "lock": { - "mongo": { + "mongo_demo": { + "type": "mongo", "metadata": { "mongoHost": "localhost:27017", "mongoPassword": "", diff --git a/configs/config_lock_redis.json b/configs/config_lock_redis.json index 20e1e6a385..effb44af4c 100644 --- a/configs/config_lock_redis.json +++ b/configs/config_lock_redis.json @@ -22,12 +22,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "lock": { - "redis": { + "redis_demo": { + "type": "redis", "metadata": { "redisHost": "localhost:6380", "redisPassword": "" diff --git a/configs/config_lock_redis_cluster.json b/configs/config_lock_redis_cluster.json index 99a7c33109..2be65cce4a 100644 --- a/configs/config_lock_redis_cluster.json +++ b/configs/config_lock_redis_cluster.json @@ -22,12 +22,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "lock": { - "redis_cluster": { + "redis_cluster_demo": { + "type": "redis_cluster", "metadata": { "concurrency": "0", "redisHosts": "localhost:6381,localhost:6382,localhost:6383,localhost:6384,localhost:6385", diff --git a/configs/config_lock_zookeeper.json b/configs/config_lock_zookeeper.json index 5f77776fbd..6bf09a0caa 100644 --- a/configs/config_lock_zookeeper.json +++ b/configs/config_lock_zookeeper.json @@ -22,12 +22,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "lock": { - "zookeeper": { + "zookeeper_demo": { + "type": "zookeeper", "metadata": { "zookeeperHosts": "127.0.0.1", "zookeeperPassword": "", diff --git a/configs/config_redis.json b/configs/config_redis.json index 4ab1a2a701..4dff8c7143 100644 --- a/configs/config_redis.json +++ b/configs/config_redis.json @@ -21,13 +21,15 @@ "config": { "server_name": "runtime", "grpc_config": { - "hellos": { + "hellos_demo": { + "type": "hellos", "helloworld": { "hello": "greeting" } }, "state": { - "redis": { + "redis_demo": { + "type": "redis", "metadata": { "redisHost": "localhost:6380", "redisPassword": "" @@ -35,7 +37,8 @@ } }, "sequencer": { - "redis": { + "redis_demo": { + "Type": "redis", "metadata": { "redisHost": "127.0.0.1:6380", "redisPassword": "" @@ -43,7 +46,8 @@ } }, "lock": { - "redis": { + "redis_demo": { + "type" : "redis", "metadata": { "redisHost": "localhost:6380", "redisPassword": "" @@ -51,7 +55,8 @@ } }, "pub_subs": { - "redis": { + "redis_demo": { + "type": "redis", "metadata": { "redisHost": "localhost:6380", "redisPassword": "" diff --git a/configs/config_sequencer_etcd.json b/configs/config_sequencer_etcd.json index 3a18b91536..03a97a5597 100644 --- a/configs/config_sequencer_etcd.json +++ b/configs/config_sequencer_etcd.json @@ -22,12 +22,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "sequencer": { - "etcd": { + "etcd_demo": { + "type": "etcd", "metadata": { "endpoints": "localhost:2379", "segmentCacheEnable": "false", diff --git a/configs/config_sequencer_mongo.json b/configs/config_sequencer_mongo.json index 9e20e4e1bc..5bef2ed194 100644 --- a/configs/config_sequencer_mongo.json +++ b/configs/config_sequencer_mongo.json @@ -22,12 +22,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "sequencer": { - "mongo": { + "mongo_demo": { + "type": "mongo", "metadata": { "mongoHost": "localhost:27017", "mongoPassword": "", diff --git a/configs/config_sequencer_redis.json b/configs/config_sequencer_redis.json index 61bd6f9741..2d1bd45090 100644 --- a/configs/config_sequencer_redis.json +++ b/configs/config_sequencer_redis.json @@ -22,12 +22,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "sequencer": { - "redis": { + "redis_demo": { + "type": "redis", "metadata": { "redisHost": "127.0.0.1:6379", "redisPassword": "" diff --git a/configs/config_sequencer_zookeeper.json b/configs/config_sequencer_zookeeper.json index 3b63b5fdfe..85cc7dbb57 100644 --- a/configs/config_sequencer_zookeeper.json +++ b/configs/config_sequencer_zookeeper.json @@ -22,12 +22,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "sequencer": { - "zookeeper": { + "zookeeper_demo": { + "type": "zookeeper", "metadata": { "zookeeperHosts": "127.0.0.1", "zookeeperPassword": "", diff --git a/configs/config_state_redis.json b/configs/config_state_redis.json index 71b8f8fc87..dbe95ec432 100644 --- a/configs/config_state_redis.json +++ b/configs/config_state_redis.json @@ -34,12 +34,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "state": { - "redis": { + "redis_demo": { + "type": "redis", "metadata": { "redisHost": "localhost:6380", "redisPassword": "" diff --git a/configs/config_trace_skywalking.json b/configs/config_trace_skywalking.json index 458d185f8f..bceebcf3ac 100644 --- a/configs/config_trace_skywalking.json +++ b/configs/config_trace_skywalking.json @@ -17,12 +17,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "config_store": { - "etcd": { + "etcd_demo": { + "type": "etcd", "address": [ "127.0.0.1:2379" ], diff --git a/configs/integrate_config.json b/configs/integrate_config.json index e53eb0e0a0..c3fde6762e 100644 --- a/configs/integrate_config.json +++ b/configs/integrate_config.json @@ -17,12 +17,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "welcome layotto" } }, "state": { - "redis": { + "redis_demo": { + "type": "redis", "metadata": { "redisHost": "localhost:6379", "redisPassword": "" @@ -30,7 +32,8 @@ } }, "lock": { - "redis": { + "redis_demo": { + "type": "redis", "metadata": { "redisHost": "localhost:6379", "redisPassword": "" @@ -38,7 +41,8 @@ } }, "sequencer": { - "redis": { + "redis_demo": { + "type": "redis", "metadata": { "redisHost": "127.0.0.1:6379", "redisPassword": "" diff --git a/configs/runtime_config.json b/configs/runtime_config.json index ab2b50b79f..432894b625 100644 --- a/configs/runtime_config.json +++ b/configs/runtime_config.json @@ -17,12 +17,14 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "helloworld_demo": { + "type": "helloworld", "hello": "greeting" } }, "config_store": { - "etcd": { + "etcd_demo": { + "type": "etcd", "address": [ "127.0.0.1:2379" ], diff --git a/pkg/runtime/runtime_test.go b/pkg/runtime/runtime_test.go index 8e10df7568..227cbbacf6 100644 --- a/pkg/runtime/runtime_test.go +++ b/pkg/runtime/runtime_test.go @@ -195,6 +195,7 @@ func TestMosnRuntime_Run(t *testing.T) { cfg := &MosnRuntimeConfig{ PubSubManagement: map[string]mpubsub.Config{ "mock": { + Type: "pubsub", Metadata: map[string]string{ "target": "layotto", }, @@ -215,7 +216,7 @@ func TestMosnRuntime_Run(t *testing.T) { ), // PubSub WithPubSubFactory( - mpubsub.NewFactory("mock", f), + mpubsub.NewFactory("pubsub", f), ), // Sequencer WithSequencerFactory( @@ -275,6 +276,7 @@ func TestMosnRuntime_initPubSubs(t *testing.T) { cfg := &MosnRuntimeConfig{ PubSubManagement: map[string]mpubsub.Config{ "mock": { + Type: "pubsub", Metadata: map[string]string{ "target": "layotto", }, @@ -287,7 +289,7 @@ func TestMosnRuntime_initPubSubs(t *testing.T) { log.DefaultLogger.Errorf("[runtime] occurs an error: "+err.Error()+", "+format, args...) } // test initPubSubs - err := m.initPubSubs(mpubsub.NewFactory("mock", f)) + err := m.initPubSubs(mpubsub.NewFactory("pubsub", f)) // assert result assert.Nil(t, err) }) @@ -305,6 +307,7 @@ func TestMosnRuntime_initStates(t *testing.T) { cfg := &MosnRuntimeConfig{ StateManagement: map[string]mstate.Config{ "mock": { + Type: "status", Metadata: map[string]string{ "target": "layotto", }, @@ -317,7 +320,7 @@ func TestMosnRuntime_initStates(t *testing.T) { log.DefaultLogger.Errorf("[runtime] occurs an error: "+err.Error()+", "+format, args...) } // test initStates - err := m.initStates(mstate.NewFactory("mock", f)) + err := m.initStates(mstate.NewFactory("status", f)) // assert result assert.Nil(t, err) }) @@ -334,7 +337,9 @@ func TestMosnRuntime_initRpc(t *testing.T) { cfg := &MosnRuntimeConfig{ RpcManagement: map[string]rpc.RpcConfig{ - "mock": {}, + "mock": { + Type: "rpc", + }, }, } // construct MosnRuntime @@ -343,7 +348,7 @@ func TestMosnRuntime_initRpc(t *testing.T) { log.DefaultLogger.Errorf("[runtime] occurs an error: "+err.Error()+", "+format, args...) } // test initRpcs method - err := m.initRpcs(rpc.NewRpcFactory("mock", f)) + err := m.initRpcs(rpc.NewRpcFactory("rpc", f)) // assert assert.Nil(t, err) }) @@ -359,14 +364,16 @@ func TestMosnRuntime_initConfigStores(t *testing.T) { cfg := &MosnRuntimeConfig{ ConfigStoreManagement: map[string]configstores.StoreConfig{ - "mock": {}, + "mock": { + Type: "store_config", + }, }, } m := NewMosnRuntime(cfg) m.errInt = func(err error, format string, args ...interface{}) { log.DefaultLogger.Errorf("[runtime] occurs an error: "+err.Error()+", "+format, args...) } - err := m.initConfigStores(configstores.NewStoreFactory("mock", f)) + err := m.initConfigStores(configstores.NewStoreFactory("store_config", f)) assert.Nil(t, err) }) } @@ -381,14 +388,16 @@ func TestMosnRuntime_initHellos(t *testing.T) { cfg := &MosnRuntimeConfig{ HelloServiceManagement: map[string]hello.HelloConfig{ - "mock": {}, + "mock": { + Type: "hello", + }, }, } m := NewMosnRuntime(cfg) m.errInt = func(err error, format string, args ...interface{}) { log.DefaultLogger.Errorf("[runtime] occurs an error: "+err.Error()+", "+format, args...) } - err := m.initHellos(hello.NewHelloFactory("mock", f)) + err := m.initHellos(hello.NewHelloFactory("hello", f)) assert.Nil(t, err) }) } @@ -403,14 +412,16 @@ func TestMosnRuntime_initSequencers(t *testing.T) { cfg := &MosnRuntimeConfig{ SequencerManagement: map[string]sequencer.Config{ - "mock": {}, + "mock": { + Type: "sequencers", + }, }, } m := NewMosnRuntime(cfg) m.errInt = func(err error, format string, args ...interface{}) { log.DefaultLogger.Errorf("[runtime] occurs an error: "+err.Error()+", "+format, args...) } - err := m.initSequencers(msequencer.NewFactory("mock", f)) + err := m.initSequencers(msequencer.NewFactory("sequencers", f)) assert.Nil(t, err) }) } @@ -425,14 +436,16 @@ func TestMosnRuntime_initLocks(t *testing.T) { cfg := &MosnRuntimeConfig{ LockManagement: map[string]lock.Config{ - "mock": {}, + "mock": { + Type: "lock", + }, }, } m := NewMosnRuntime(cfg) m.errInt = func(err error, format string, args ...interface{}) { log.DefaultLogger.Errorf("[runtime] occurs an error: "+err.Error()+", "+format, args...) } - err := m.initLocks(mlock.NewFactory("mock", f)) + err := m.initLocks(mlock.NewFactory("lock", f)) assert.Nil(t, err) }) } @@ -458,12 +471,13 @@ func TestMosnRuntime_initOutputBinding(t *testing.T) { m := NewMosnRuntime(cfg) assert.Nil(t, m.outputBindings["mockOutbindings"]) - registry := mbindings.NewOutputBindingFactory("mockOutbindings", func() bindings.OutputBinding { + registry := mbindings.NewOutputBindingFactory("mock_outbindings", func() bindings.OutputBinding { return &MockBindings{} }) mdata := make(map[string]string) m.RuntimeConfig().Bindings = make(map[string]mbindings.Metadata) m.runtimeConfig.Bindings["mockOutbindings"] = mbindings.Metadata{ + Type: "mock_outbindings", Metadata: mdata, } m.initOutputBinding(registry) @@ -479,6 +493,7 @@ func TestMosnRuntime_runWithCustomComponentAndAPI(t *testing.T) { CustomComponent: map[string]map[string]custom.Config{ compType: { compName: custom.Config{ + Type: compName, Version: "", Metadata: nil, }, @@ -772,6 +787,7 @@ func runtimeWithCallbackConnection(t *testing.T) (*MosnRuntime, *mock_appcallbac cfg := &MosnRuntimeConfig{ PubSubManagement: map[string]mpubsub.Config{ "mock": { + Type: "mock", Metadata: map[string]string{ "target": "layotto", }, From f9e525b64a33868855b0169f9269155833df2bf0 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 8 May 2022 22:03:18 +0800 Subject: [PATCH 03/62] decouple Name and Type --- pkg/runtime/runtime_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/runtime/runtime_test.go b/pkg/runtime/runtime_test.go index 1f6ef11db8..80ecf75517 100644 --- a/pkg/runtime/runtime_test.go +++ b/pkg/runtime/runtime_test.go @@ -448,7 +448,7 @@ func TestMosnRuntime_initSequencers(t *testing.T) { m.errInt = func(err error, format string, args ...interface{}) { log.DefaultLogger.Errorf("[runtime] occurs an error: "+err.Error()+", "+format, args...) } - err := m.initSequencers(msequencer.NewFactory("sequencers", f)) + err := m.initSequencers(runtime_sequencer.NewFactory("sequencers", f)) assert.Nil(t, err) }) } From 7e4a4e467f00f139935e74b94649f83ac61f5e95 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Mon, 9 May 2022 02:56:30 +0800 Subject: [PATCH 04/62] decouple Name and Type --- demo/bindings/main.go | 2 +- demo/configuration/apollo/client.go | 2 +- demo/configuration/etcd/etcd.go | 18 +++++++++++------- demo/file/client.go | 14 +++++++++----- demo/file/qiniu/client.go | 14 +++++++++----- demo/file/stressmem.go | 8 ++++++-- demo/file/tencentcloud/client.go | 14 +++++++++----- demo/flowcontrol/client.go | 2 +- demo/lock/consul/client.go | 2 +- demo/lock/etcd/client.go | 2 +- demo/lock/in-memory/client.go | 2 +- demo/lock/mongo/client.go | 2 +- demo/lock/redis/client.go | 2 +- .../redis/redis_cluster/client_cluster_lock.go | 2 +- demo/lock/zookeeper/client.go | 2 +- demo/sequencer/in-memory/client.go | 2 +- demo/sequencer/mongo/client.go | 2 +- demo/sequencer/redis/client.go | 2 +- demo/sequencer/zookeeper/client.go | 2 +- demo/state/redis/client.go | 2 +- 20 files changed, 59 insertions(+), 39 deletions(-) diff --git a/demo/bindings/main.go b/demo/bindings/main.go index ccdaa1e166..1cb52202b1 100644 --- a/demo/bindings/main.go +++ b/demo/bindings/main.go @@ -19,7 +19,7 @@ func main() { c := runtimev1pb.NewRuntimeClient(conn) metaData := make(map[string]string) metaData["token"] = "123" - req := &runtimev1pb.InvokeBindingRequest{Name: "http", Operation: "get", Metadata: metaData, Data: []byte("auth data")} + req := &runtimev1pb.InvokeBindingRequest{Name: "http_demo", Operation: "get", Metadata: metaData, Data: []byte("auth data")} resp, err := c.InvokeBinding(context.Background(), req) if err != nil { fmt.Printf("get file error: %+v", err) diff --git a/demo/configuration/apollo/client.go b/demo/configuration/apollo/client.go index 47576f5e09..70cc3dfd1b 100644 --- a/demo/configuration/apollo/client.go +++ b/demo/configuration/apollo/client.go @@ -31,7 +31,7 @@ import ( ) const ( - storeName = "apollo" + storeName = "apollo_demo" appid = "testApplication_yang" group = "application" ) diff --git a/demo/configuration/etcd/etcd.go b/demo/configuration/etcd/etcd.go index 791278c04a..0fe0623836 100644 --- a/demo/configuration/etcd/etcd.go +++ b/demo/configuration/etcd/etcd.go @@ -24,6 +24,10 @@ import ( client "mosn.io/layotto/sdk/go-sdk/client" ) +const ( + storeName = "etcd_demo" +) + func main() { cli, err := client.NewClient() if err != nil { @@ -37,7 +41,7 @@ func main() { } func testHello(cli client.Client) { - req := &client.SayHelloRequest{ServiceName: "helloworld"} + req := &client.SayHelloRequest{ServiceName: "helloworld_demo"} resp, err := cli.SayHello(context.Background(), req) if err != nil { fmt.Printf("say hello error: %+v", err) @@ -55,7 +59,7 @@ func testWatch(cli client.Client) { saveRequest.Items = append(saveRequest.Items, item1) saveRequest.Items = append(saveRequest.Items, item2) - getRequest := &client.ConfigurationRequestItem{StoreName: "etcd", AppId: "sofa", Keys: []string{"hello1", "hello2"}} + getRequest := &client.ConfigurationRequestItem{StoreName: storeName, AppId: "sofa", Keys: []string{"hello1", "hello2"}} go func() { for { time.Sleep(1 * time.Second) @@ -73,7 +77,7 @@ func testWatch(cli client.Client) { } }() - item := &client.ConfigurationRequestItem{StoreName: "etcd", AppId: "sofa", Keys: []string{"hello1"}} + item := &client.ConfigurationRequestItem{StoreName: storeName, AppId: "sofa", Keys: []string{"hello1"}} ch := cli.SubscribeConfiguration(ctx, item) for wc := range ch { for _, v := range wc.Item.Items { @@ -85,11 +89,11 @@ func testWatch(cli client.Client) { func testSet(cli client.Client) { item1 := &client.ConfigurationItem{Key: "hello1", Content: "world1"} item2 := &client.ConfigurationItem{Key: "hello2", Content: "world2"} - saveRequest := &client.SaveConfigurationRequest{StoreName: "etcd", AppId: "sofa"} + saveRequest := &client.SaveConfigurationRequest{StoreName: storeName, AppId: "sofa"} saveRequest.Items = append(saveRequest.Items, item1) saveRequest.Items = append(saveRequest.Items, item2) - getRequest := &client.ConfigurationRequestItem{StoreName: "etcd", AppId: "sofa", Keys: []string{"hello1", "hello2"}} + getRequest := &client.ConfigurationRequestItem{StoreName: storeName, AppId: "sofa", Keys: []string{"hello1", "hello2"}} if cli.SaveConfiguration(context.Background(), saveRequest) != nil { fmt.Println("save key failed") @@ -109,11 +113,11 @@ func testSet(cli client.Client) { func testDelete(cli client.Client) { item1 := &client.ConfigurationItem{Key: "hello1", Content: "world1"} item2 := &client.ConfigurationItem{Key: "hello2", Content: "world2"} - saveRequest := &client.SaveConfigurationRequest{StoreName: "etcd", AppId: "sofa"} + saveRequest := &client.SaveConfigurationRequest{StoreName: storeName, AppId: "sofa"} saveRequest.Items = append(saveRequest.Items, item1) saveRequest.Items = append(saveRequest.Items, item2) - getRequest := &client.ConfigurationRequestItem{StoreName: "etcd", AppId: "sofa", Keys: []string{"hello1", "hello2"}} + getRequest := &client.ConfigurationRequestItem{StoreName: storeName, AppId: "sofa", Keys: []string{"hello1", "hello2"}} if cli.DeleteConfiguration(context.Background(), getRequest) != nil { fmt.Println("save key failed") return diff --git a/demo/file/client.go b/demo/file/client.go index d34ceacc99..82737ec1fd 100644 --- a/demo/file/client.go +++ b/demo/file/client.go @@ -18,6 +18,10 @@ import ( "google.golang.org/grpc" ) +const ( + storeName = "minioOSS_demo" +) + func TestGet(fileName string) { conn, err := grpc.Dial("127.0.0.1:34904", grpc.WithInsecure()) if err != nil { @@ -26,7 +30,7 @@ func TestGet(fileName string) { } c := runtimev1pb.NewRuntimeClient(conn) - req := &runtimev1pb.GetFileRequest{StoreName: "minioOSS", Name: fileName} + req := &runtimev1pb.GetFileRequest{StoreName: storeName, Name: fileName} cli, err := c.GetFile(context.Background(), req) if err != nil { fmt.Printf("get file error: %+v", err) @@ -53,7 +57,7 @@ func TestPut(fileName string, value string) { meta := make(map[string]string) meta["storageType"] = "Standard" c := runtimev1pb.NewRuntimeClient(conn) - req := &runtimev1pb.PutFileRequest{StoreName: "minioOSS", Name: fileName, Metadata: meta} + req := &runtimev1pb.PutFileRequest{StoreName: storeName, Name: fileName, Metadata: meta} stream, err := c.PutFile(context.TODO()) if err != nil { fmt.Printf("put file failed:%+v", err) @@ -78,7 +82,7 @@ func TestList(bucketName string) { c := runtimev1pb.NewRuntimeClient(conn) marker := "" for { - req := &runtimev1pb.FileRequest{StoreName: "minioOSS", Name: bucketName, Metadata: meta} + req := &runtimev1pb.FileRequest{StoreName: storeName, Name: bucketName, Metadata: meta} listReq := &runtimev1pb.ListFileRequest{Request: req, PageSize: 2, Marker: marker} resp, err := c.ListFile(context.Background(), listReq) if err != nil { @@ -105,7 +109,7 @@ func TestDel(fileName string) { meta := make(map[string]string) meta["storageType"] = "Standard" c := runtimev1pb.NewRuntimeClient(conn) - req := &runtimev1pb.FileRequest{StoreName: "minioOSS", Name: fileName, Metadata: meta} + req := &runtimev1pb.FileRequest{StoreName: storeName, Name: fileName, Metadata: meta} listReq := &runtimev1pb.DelFileRequest{Request: req} _, err = c.DelFile(context.Background(), listReq) if err != nil { @@ -124,7 +128,7 @@ func TestStat(fileName string) { meta := make(map[string]string) meta["storageType"] = "Standard" c := runtimev1pb.NewRuntimeClient(conn) - req := &runtimev1pb.FileRequest{StoreName: "minioOSS", Name: fileName, Metadata: meta} + req := &runtimev1pb.FileRequest{StoreName: storeName, Name: fileName, Metadata: meta} statReq := &runtimev1pb.GetFileMetaRequest{Request: req} data, err := c.GetFileMeta(context.Background(), statReq) //here use grpc error code check file exist or not. diff --git a/demo/file/qiniu/client.go b/demo/file/qiniu/client.go index 8cdf862e92..402d1d0c3c 100644 --- a/demo/file/qiniu/client.go +++ b/demo/file/qiniu/client.go @@ -31,6 +31,10 @@ import ( "google.golang.org/grpc" ) +const ( + storeName = "qiniuOSS_demo" +) + func TestGet(fileName string) { conn, err := grpc.Dial("127.0.0.1:34904", grpc.WithInsecure()) if err != nil { @@ -39,7 +43,7 @@ func TestGet(fileName string) { } c := runtimev1pb.NewRuntimeClient(conn) - req := &runtimev1pb.GetFileRequest{StoreName: "qiniuOSS", Name: fileName} + req := &runtimev1pb.GetFileRequest{StoreName: storeName, Name: fileName} cli, err := c.GetFile(context.Background(), req) if err != nil { fmt.Printf("get file error: %+v", err) @@ -67,7 +71,7 @@ func TestPut(fileName string, value string) { c := runtimev1pb.NewRuntimeClient(conn) data := []byte(value) meta["filesize"] = strconv.Itoa(len(data)) - req := &runtimev1pb.PutFileRequest{StoreName: "qiniuOSS", Name: fileName, Metadata: meta} + req := &runtimev1pb.PutFileRequest{StoreName: storeName, Name: fileName, Metadata: meta} stream, err := c.PutFile(context.TODO()) if err != nil { fmt.Printf("put file failed:%+v", err) @@ -92,7 +96,7 @@ func TestList(bucketName string) { c := runtimev1pb.NewRuntimeClient(conn) marker := "" for { - req := &runtimev1pb.FileRequest{StoreName: "qiniuOSS", Name: bucketName, Metadata: meta} + req := &runtimev1pb.FileRequest{StoreName: storeName, Name: bucketName, Metadata: meta} listReq := &runtimev1pb.ListFileRequest{Request: req, PageSize: 1, Marker: marker} resp, err := c.ListFile(context.Background(), listReq) if err != nil { @@ -119,7 +123,7 @@ func TestDel(fileName string) { meta := make(map[string]string) meta["storageType"] = "Standard" c := runtimev1pb.NewRuntimeClient(conn) - req := &runtimev1pb.FileRequest{StoreName: "qiniuOSS", Name: fileName, Metadata: meta} + req := &runtimev1pb.FileRequest{StoreName: storeName, Name: fileName, Metadata: meta} listReq := &runtimev1pb.DelFileRequest{Request: req} _, err = c.DelFile(context.Background(), listReq) if err != nil { @@ -138,7 +142,7 @@ func TestStat(fileName string) { meta := make(map[string]string) meta["storageType"] = "Standard" c := runtimev1pb.NewRuntimeClient(conn) - req := &runtimev1pb.FileRequest{StoreName: "qiniuOSS", Name: fileName, Metadata: meta} + req := &runtimev1pb.FileRequest{StoreName: storeName, Name: fileName, Metadata: meta} statReq := &runtimev1pb.GetFileMetaRequest{Request: req} data, err := c.GetFileMeta(context.Background(), statReq) //here use grpc error code check file exist or not. diff --git a/demo/file/stressmem.go b/demo/file/stressmem.go index 269b830d8b..fd85f4fd8b 100644 --- a/demo/file/stressmem.go +++ b/demo/file/stressmem.go @@ -13,6 +13,10 @@ import ( runtimev1pb "mosn.io/layotto/spec/proto/runtime/v1" ) +const ( + storeName1 = "aliOSS_demo" +) + func GetFile(wg *sync.WaitGroup, id int) { defer wg.Done() conn, err := grpc.Dial("127.0.0.1:34904", grpc.WithInsecure()) @@ -21,7 +25,7 @@ func GetFile(wg *sync.WaitGroup, id int) { return } c := runtimev1pb.NewRuntimeClient(conn) - req := &runtimev1pb.GetFileRequest{StoreName: "aliOSS", Name: "fileName"} + req := &runtimev1pb.GetFileRequest{StoreName: storeName1, Name: "fileName"} cli, err := c.GetFile(context.Background(), req) if err != nil { fmt.Printf("get file error: %+v", err) @@ -50,7 +54,7 @@ func PutFile(wg *sync.WaitGroup, id int) { meta := make(map[string]string) meta["storageType"] = "Standard" c := runtimev1pb.NewRuntimeClient(conn) - req := &runtimev1pb.PutFileRequest{StoreName: "aliOSS", Name: "fileName", Metadata: meta} + req := &runtimev1pb.PutFileRequest{StoreName: storeName1, Name: "fileName", Metadata: meta} stream, err := c.PutFile(context.TODO()) if err != nil { fmt.Printf("put file failed:%+v", err) diff --git a/demo/file/tencentcloud/client.go b/demo/file/tencentcloud/client.go index b5f0e7720b..b7ce9a0f4b 100644 --- a/demo/file/tencentcloud/client.go +++ b/demo/file/tencentcloud/client.go @@ -30,6 +30,10 @@ import ( "google.golang.org/grpc" ) +const ( + storeName = "tencentCloudOSS_demo" +) + func TestGet(fileName string) { conn, err := grpc.Dial("127.0.0.1:34904", grpc.WithInsecure()) if err != nil { @@ -38,7 +42,7 @@ func TestGet(fileName string) { } c := runtimev1pb.NewRuntimeClient(conn) - req := &runtimev1pb.GetFileRequest{StoreName: "tencentCloudOSS", Name: fileName} + req := &runtimev1pb.GetFileRequest{StoreName: storeName, Name: fileName} cli, err := c.GetFile(context.Background(), req) if err != nil { fmt.Printf("get file error: %+v", err) @@ -64,7 +68,7 @@ func TestPut(fileName string, value string) { } meta := make(map[string]string) c := runtimev1pb.NewRuntimeClient(conn) - req := &runtimev1pb.PutFileRequest{StoreName: "tencentCloudOSS", Name: fileName, Metadata: meta} + req := &runtimev1pb.PutFileRequest{StoreName: storeName, Name: fileName, Metadata: meta} stream, err := c.PutFile(context.TODO()) if err != nil { fmt.Printf("put file failed:%+v", err) @@ -89,7 +93,7 @@ func TestList(bucketName string) { c := runtimev1pb.NewRuntimeClient(conn) marker := "" for { - req := &runtimev1pb.FileRequest{StoreName: "tencentCloudOSS", Name: bucketName, Metadata: meta} + req := &runtimev1pb.FileRequest{StoreName: storeName, Name: bucketName, Metadata: meta} listReq := &runtimev1pb.ListFileRequest{Request: req, PageSize: 1, Marker: marker} resp, err := c.ListFile(context.Background(), listReq) if err != nil { @@ -116,7 +120,7 @@ func TestDel(fileName string) { meta := make(map[string]string) meta["storageType"] = "Standard" c := runtimev1pb.NewRuntimeClient(conn) - req := &runtimev1pb.FileRequest{StoreName: "tencentCloudOSS", Name: fileName, Metadata: meta} + req := &runtimev1pb.FileRequest{StoreName: storeName, Name: fileName, Metadata: meta} listReq := &runtimev1pb.DelFileRequest{Request: req} _, err = c.DelFile(context.Background(), listReq) if err != nil { @@ -135,7 +139,7 @@ func TestStat(fileName string) { meta := make(map[string]string) meta["storageType"] = "Standard" c := runtimev1pb.NewRuntimeClient(conn) - req := &runtimev1pb.FileRequest{StoreName: "tencentCloudOSS", Name: fileName, Metadata: meta} + req := &runtimev1pb.FileRequest{StoreName: storeName, Name: fileName, Metadata: meta} statReq := &runtimev1pb.GetFileMetaRequest{Request: req} data, err := c.GetFileMeta(context.Background(), statReq) //here use grpc error code check file exist or not. diff --git a/demo/flowcontrol/client.go b/demo/flowcontrol/client.go index cedbe99f97..214278275f 100644 --- a/demo/flowcontrol/client.go +++ b/demo/flowcontrol/client.go @@ -36,7 +36,7 @@ func main() { for i := 0; i < 10; i++ { r, err := c.SayHello(context.Background(), &runtimev1pb.SayHelloRequest{ - ServiceName: "helloworld", + ServiceName: "helloworld_demo", }) if err != nil { fmt.Println("get an error: ", err) diff --git a/demo/lock/consul/client.go b/demo/lock/consul/client.go index 471ce3344f..61c6c5d36a 100644 --- a/demo/lock/consul/client.go +++ b/demo/lock/consul/client.go @@ -13,7 +13,7 @@ import ( const ( resourceId = "resource_a" - storeName = "consul" + storeName = "consul_demo" ) func main() { diff --git a/demo/lock/etcd/client.go b/demo/lock/etcd/client.go index 9c9b7c1ab0..172b50f06e 100644 --- a/demo/lock/etcd/client.go +++ b/demo/lock/etcd/client.go @@ -13,7 +13,7 @@ import ( const ( resourceId = "resource_a" - storeName = "etcd" + storeName = "etcd_demo" ) func main() { diff --git a/demo/lock/in-memory/client.go b/demo/lock/in-memory/client.go index a7bf70fbd6..eadf4d8447 100644 --- a/demo/lock/in-memory/client.go +++ b/demo/lock/in-memory/client.go @@ -13,7 +13,7 @@ import ( const ( resourceId = "resource_a" - storeName = "in-memory" + storeName = "in-memory_demo" ) func main() { diff --git a/demo/lock/mongo/client.go b/demo/lock/mongo/client.go index 18fe04849f..871886009c 100644 --- a/demo/lock/mongo/client.go +++ b/demo/lock/mongo/client.go @@ -13,7 +13,7 @@ import ( const ( resourceId = "resource_a" - storeName = "mongo" + storeName = "mongo_demo" ) func main() { diff --git a/demo/lock/redis/client.go b/demo/lock/redis/client.go index 012d0b76a6..2679eaa5b8 100644 --- a/demo/lock/redis/client.go +++ b/demo/lock/redis/client.go @@ -13,7 +13,7 @@ import ( const ( resourceId = "resource_a" - storeName = "redis" + storeName = "redis_demo" ) func main() { diff --git a/demo/lock/redis/redis_cluster/client_cluster_lock.go b/demo/lock/redis/redis_cluster/client_cluster_lock.go index aab63361d5..7c38a65e40 100644 --- a/demo/lock/redis/redis_cluster/client_cluster_lock.go +++ b/demo/lock/redis/redis_cluster/client_cluster_lock.go @@ -13,7 +13,7 @@ import ( const ( resourceId = "resource_a" - storeName = "redis_cluster" + storeName = "redis_cluster_demo" ) func main() { diff --git a/demo/lock/zookeeper/client.go b/demo/lock/zookeeper/client.go index 754f53683f..7c38ab9519 100644 --- a/demo/lock/zookeeper/client.go +++ b/demo/lock/zookeeper/client.go @@ -13,7 +13,7 @@ import ( const ( resourceId = "resource_a" - storeName = "zookeeper" + storeName = "zookeeper_demo" ) func main() { diff --git a/demo/sequencer/in-memory/client.go b/demo/sequencer/in-memory/client.go index c4ec224744..3fe70a6a02 100644 --- a/demo/sequencer/in-memory/client.go +++ b/demo/sequencer/in-memory/client.go @@ -10,7 +10,7 @@ import ( const ( key = "key666" - storeName = "in-memory" + storeName = "in-memory_demo" ) func main() { diff --git a/demo/sequencer/mongo/client.go b/demo/sequencer/mongo/client.go index a07a26663f..c77a3cee3e 100644 --- a/demo/sequencer/mongo/client.go +++ b/demo/sequencer/mongo/client.go @@ -10,7 +10,7 @@ import ( const ( key = "key666" - storeName = "mongo" + storeName = "mongo_demo" ) func main() { diff --git a/demo/sequencer/redis/client.go b/demo/sequencer/redis/client.go index 5e06050a71..cb181bafff 100644 --- a/demo/sequencer/redis/client.go +++ b/demo/sequencer/redis/client.go @@ -10,7 +10,7 @@ import ( const ( key = "key666" - storeName = "redis" + storeName = "redis_demo" ) func main() { diff --git a/demo/sequencer/zookeeper/client.go b/demo/sequencer/zookeeper/client.go index 5b9dc1674b..3b9ba88507 100644 --- a/demo/sequencer/zookeeper/client.go +++ b/demo/sequencer/zookeeper/client.go @@ -10,7 +10,7 @@ import ( const ( key = "test" - storeName = "zookeeper" + storeName = "zookeeper_demo" ) func main() { diff --git a/demo/state/redis/client.go b/demo/state/redis/client.go index 3eb0b68b73..48cfaeb752 100755 --- a/demo/state/redis/client.go +++ b/demo/state/redis/client.go @@ -24,7 +24,7 @@ import ( ) const ( - storeName = "redis" + storeName = "redis_demo" key1 = "key1" key2 = "key2" key3 = "key3" From aefe748e6021606ef6cf2732dfe02fe736fb328a Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Wed, 11 May 2022 20:09:53 +0800 Subject: [PATCH 05/62] decouple Name and Type --- demo/configuration/common/client.go | 1 - 1 file changed, 1 deletion(-) diff --git a/demo/configuration/common/client.go b/demo/configuration/common/client.go index 63117323ed..84644a930a 100644 --- a/demo/configuration/common/client.go +++ b/demo/configuration/common/client.go @@ -32,7 +32,6 @@ import ( ) const ( - storeName = "apollo_demo" appid = "testApplication_yang" group = "application" writeTimes = 4 From 2b02e1326d14f7e28f37303409c7fd07ce2b5e43 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sat, 14 May 2022 10:49:17 +0800 Subject: [PATCH 06/62] decouple Name and Type --- demo/configuration/etcd/etcd.go | 0 demo/state/redis/client.go | 0 docs/en/start/configuration/start.md | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 demo/configuration/etcd/etcd.go delete mode 100755 demo/state/redis/client.go diff --git a/demo/configuration/etcd/etcd.go b/demo/configuration/etcd/etcd.go deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/demo/state/redis/client.go b/demo/state/redis/client.go deleted file mode 100755 index e69de29bb2..0000000000 diff --git a/docs/en/start/configuration/start.md b/docs/en/start/configuration/start.md index d40d883458..4d5bf9736d 100644 --- a/docs/en/start/configuration/start.md +++ b/docs/en/start/configuration/start.md @@ -47,7 +47,7 @@ Run it: ``` ```shell - ./client -s "etcd" + ./client -s "etcd_demo" ``` If the following information is printed out, it means the client app has done all the CRUD operations successfully: From 3ccfc2f26d71e926d5d1ea773d67700c1039709e Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sat, 14 May 2022 11:11:50 +0800 Subject: [PATCH 07/62] decouple Name and Type --- configs/config_apollo.json | 4 ++-- configs/config_apollo_health.json | 4 ++-- configs/config_bindings.json | 2 +- configs/config_file.json | 4 ++-- configs/config_file_qiniu_oss.json | 4 ++-- configs/config_file_tencentcloud_oss.json | 4 ++-- configs/config_in_memory.json | 6 +++--- configs/config_integration_redis_etcd.json | 16 ++++++++-------- configs/config_lock_consul.json | 4 ++-- configs/config_lock_etcd.json | 4 ++-- configs/config_lock_mongo.json | 4 ++-- configs/config_lock_redis.json | 4 ++-- configs/config_lock_redis_cluster.json | 4 ++-- configs/config_lock_zookeeper.json | 4 ++-- configs/config_redis.json | 10 +++++----- configs/config_sequencer_etcd.json | 4 ++-- configs/config_sequencer_mongo.json | 4 ++-- configs/config_sequencer_redis.json | 2 +- configs/config_sequencer_zookeeper.json | 4 ++-- configs/config_state_redis.json | 4 ++-- configs/config_trace_skywalking.json | 4 ++-- configs/integrate_config.json | 8 ++++---- configs/runtime_config.json | 4 ++-- 23 files changed, 56 insertions(+), 56 deletions(-) diff --git a/configs/config_apollo.json b/configs/config_apollo.json index bf7d7b861e..1e312e5bc6 100644 --- a/configs/config_apollo.json +++ b/configs/config_apollo.json @@ -29,12 +29,12 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, - "config_store_demo": { + "apollo": { "type": "config_store", "apollo": { "address": [ diff --git a/configs/config_apollo_health.json b/configs/config_apollo_health.json index 31ff9aed0f..2b200d43ba 100644 --- a/configs/config_apollo_health.json +++ b/configs/config_apollo_health.json @@ -34,12 +34,12 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, - "config_store_demo": { + "apollo": { "type": "config_store", "apollo": { "address": [ diff --git a/configs/config_bindings.json b/configs/config_bindings.json index 1698b69c09..35ca9ab2d0 100644 --- a/configs/config_bindings.json +++ b/configs/config_bindings.json @@ -17,7 +17,7 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } diff --git a/configs/config_file.json b/configs/config_file.json index 34ab6eb7a3..a249163fc8 100644 --- a/configs/config_file.json +++ b/configs/config_file.json @@ -17,13 +17,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, "file": { - "minioOSS_demo": { + "file_demo": { "type": "minioOSS", "metadata": [ { diff --git a/configs/config_file_qiniu_oss.json b/configs/config_file_qiniu_oss.json index e8fe082980..b9bf5df66d 100644 --- a/configs/config_file_qiniu_oss.json +++ b/configs/config_file_qiniu_oss.json @@ -17,13 +17,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, "file": { - "qiniuOSS_demo": { + "file_demo": { "type": "qiniuOSS", "metadata": [ { diff --git a/configs/config_file_tencentcloud_oss.json b/configs/config_file_tencentcloud_oss.json index 098815cb90..75bb97de55 100644 --- a/configs/config_file_tencentcloud_oss.json +++ b/configs/config_file_tencentcloud_oss.json @@ -17,13 +17,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, "files": { - "tencentCloudOSS_demo": { + "file_demo": { "type": "tencentCloudOSS", "metadata": [ { diff --git a/configs/config_in_memory.json b/configs/config_in_memory.json index 4522e789f8..fb9a428742 100644 --- a/configs/config_in_memory.json +++ b/configs/config_in_memory.json @@ -22,20 +22,20 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, "state": { - "in-memory_demo": { + "memory_demo": { "type": "in-memory", "metadata": { } } }, "lock": { - "in-memory_demo": { + "memory_demo": { "type": "in-memory", "metadata": { } diff --git a/configs/config_integration_redis_etcd.json b/configs/config_integration_redis_etcd.json index df39b2ed06..198548a916 100644 --- a/configs/config_integration_redis_etcd.json +++ b/configs/config_integration_redis_etcd.json @@ -62,7 +62,7 @@ } }, "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } @@ -76,7 +76,7 @@ } }, "config_store": { - "etcd_demo": { + "config_demo": { "type": "etcd", "address": [ "127.0.0.1:2379" @@ -85,7 +85,7 @@ } }, "state": { - "redis_demo": { + "state_demo": { "type": "redis", "metadata": { "redisHost": "localhost:6380", @@ -94,7 +94,7 @@ } }, "sequencer": { - "etcd_demo": { + "sequencer_demo": { "type": "etcd", "metadata": { "endpoints": "localhost:2379", @@ -105,7 +105,7 @@ "dialTimeout": "5" } }, - "redis_demo": { + "sequencer_demo": { "type": "redis", "metadata": { "redisHost": "127.0.0.1:6380", @@ -114,7 +114,7 @@ } }, "lock": { - "etcd_demo": { + "lock_demo": { "type": "etcd", "metadata": { "endpoints": "localhost:2379", @@ -124,7 +124,7 @@ "dialTimeout": "5" } }, - "redis_demo": { + "lock_demo": { "type": "redis", "metadata": { "redisHost": "localhost:6380", @@ -133,7 +133,7 @@ } }, "pub_subs": { - "redis_demo": { + "pub_subs_demo": { "type": "redis", "metadata": { "redisHost": "localhost:6380", diff --git a/configs/config_lock_consul.json b/configs/config_lock_consul.json index d6a72b6c2e..673fc04514 100644 --- a/configs/config_lock_consul.json +++ b/configs/config_lock_consul.json @@ -22,13 +22,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, "lock": { - "consul_demo": { + "lock_demo": { "type": "consul", "metadata": { "address": "localhost:8500", diff --git a/configs/config_lock_etcd.json b/configs/config_lock_etcd.json index 8899d5bf1d..acc7b94deb 100644 --- a/configs/config_lock_etcd.json +++ b/configs/config_lock_etcd.json @@ -22,13 +22,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, "lock": { - "etcd_demo": { + "lock_demo": { "type": "etcd", "metadata": { "endpoints": "localhost:2379", diff --git a/configs/config_lock_mongo.json b/configs/config_lock_mongo.json index 38c80a55cd..9a3a046627 100644 --- a/configs/config_lock_mongo.json +++ b/configs/config_lock_mongo.json @@ -22,13 +22,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, "lock": { - "mongo_demo": { + "lock_demo": { "type": "mongo", "metadata": { "mongoHost": "localhost:27017", diff --git a/configs/config_lock_redis.json b/configs/config_lock_redis.json index effb44af4c..0f6c121f65 100644 --- a/configs/config_lock_redis.json +++ b/configs/config_lock_redis.json @@ -22,13 +22,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, "lock": { - "redis_demo": { + "lock_demo": { "type": "redis", "metadata": { "redisHost": "localhost:6380", diff --git a/configs/config_lock_redis_cluster.json b/configs/config_lock_redis_cluster.json index 2be65cce4a..572946d474 100644 --- a/configs/config_lock_redis_cluster.json +++ b/configs/config_lock_redis_cluster.json @@ -22,13 +22,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, "lock": { - "redis_cluster_demo": { + "lock_demo": { "type": "redis_cluster", "metadata": { "concurrency": "0", diff --git a/configs/config_lock_zookeeper.json b/configs/config_lock_zookeeper.json index 6bf09a0caa..ac6cde3482 100644 --- a/configs/config_lock_zookeeper.json +++ b/configs/config_lock_zookeeper.json @@ -22,13 +22,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, "lock": { - "zookeeper_demo": { + "lock_demo": { "type": "zookeeper", "metadata": { "zookeeperHosts": "127.0.0.1", diff --git a/configs/config_redis.json b/configs/config_redis.json index 4dff8c7143..0800552432 100644 --- a/configs/config_redis.json +++ b/configs/config_redis.json @@ -21,14 +21,14 @@ "config": { "server_name": "runtime", "grpc_config": { - "hellos_demo": { + "quick_start_demo": { "type": "hellos", "helloworld": { "hello": "greeting" } }, "state": { - "redis_demo": { + "state_demo": { "type": "redis", "metadata": { "redisHost": "localhost:6380", @@ -37,7 +37,7 @@ } }, "sequencer": { - "redis_demo": { + "sequencer_demo": { "Type": "redis", "metadata": { "redisHost": "127.0.0.1:6380", @@ -46,7 +46,7 @@ } }, "lock": { - "redis_demo": { + "lock_demo": { "type" : "redis", "metadata": { "redisHost": "localhost:6380", @@ -55,7 +55,7 @@ } }, "pub_subs": { - "redis_demo": { + "pub_subs_demo": { "type": "redis", "metadata": { "redisHost": "localhost:6380", diff --git a/configs/config_sequencer_etcd.json b/configs/config_sequencer_etcd.json index 03a97a5597..7ebcaf4dee 100644 --- a/configs/config_sequencer_etcd.json +++ b/configs/config_sequencer_etcd.json @@ -22,13 +22,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, "sequencer": { - "etcd_demo": { + "sequencer_demo": { "type": "etcd", "metadata": { "endpoints": "localhost:2379", diff --git a/configs/config_sequencer_mongo.json b/configs/config_sequencer_mongo.json index 5bef2ed194..beb5b984b9 100644 --- a/configs/config_sequencer_mongo.json +++ b/configs/config_sequencer_mongo.json @@ -22,13 +22,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, "sequencer": { - "mongo_demo": { + "sequencer_demo": { "type": "mongo", "metadata": { "mongoHost": "localhost:27017", diff --git a/configs/config_sequencer_redis.json b/configs/config_sequencer_redis.json index 2d1bd45090..a506008ad4 100644 --- a/configs/config_sequencer_redis.json +++ b/configs/config_sequencer_redis.json @@ -28,7 +28,7 @@ } }, "sequencer": { - "redis_demo": { + "sequencer_demo": { "type": "redis", "metadata": { "redisHost": "127.0.0.1:6379", diff --git a/configs/config_sequencer_zookeeper.json b/configs/config_sequencer_zookeeper.json index 85cc7dbb57..9018b515ee 100644 --- a/configs/config_sequencer_zookeeper.json +++ b/configs/config_sequencer_zookeeper.json @@ -22,13 +22,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, "sequencer": { - "zookeeper_demo": { + "sequencer_demo": { "type": "zookeeper", "metadata": { "zookeeperHosts": "127.0.0.1", diff --git a/configs/config_state_redis.json b/configs/config_state_redis.json index dbe95ec432..f6eace10bb 100644 --- a/configs/config_state_redis.json +++ b/configs/config_state_redis.json @@ -34,13 +34,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, "state": { - "redis_demo": { + "state_demo": { "type": "redis", "metadata": { "redisHost": "localhost:6380", diff --git a/configs/config_trace_skywalking.json b/configs/config_trace_skywalking.json index bceebcf3ac..e72c875bed 100644 --- a/configs/config_trace_skywalking.json +++ b/configs/config_trace_skywalking.json @@ -17,13 +17,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, "config_store": { - "etcd_demo": { + "config_demo": { "type": "etcd", "address": [ "127.0.0.1:2379" diff --git a/configs/integrate_config.json b/configs/integrate_config.json index c3fde6762e..f322e2e4fd 100644 --- a/configs/integrate_config.json +++ b/configs/integrate_config.json @@ -17,13 +17,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "welcome layotto" } }, "state": { - "redis_demo": { + "state_demo": { "type": "redis", "metadata": { "redisHost": "localhost:6379", @@ -32,7 +32,7 @@ } }, "lock": { - "redis_demo": { + "lock_demo": { "type": "redis", "metadata": { "redisHost": "localhost:6379", @@ -41,7 +41,7 @@ } }, "sequencer": { - "redis_demo": { + "sequencer_demo": { "type": "redis", "metadata": { "redisHost": "127.0.0.1:6379", diff --git a/configs/runtime_config.json b/configs/runtime_config.json index 432894b625..c778efe4aa 100644 --- a/configs/runtime_config.json +++ b/configs/runtime_config.json @@ -17,13 +17,13 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } }, "config_store": { - "etcd_demo": { + "config_demo": { "type": "etcd", "address": [ "127.0.0.1:2379" From c2e2d35669252f27ef546705852c9634e7e417be Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sat, 14 May 2022 11:16:41 +0800 Subject: [PATCH 08/62] decouple Name and Type --- docs/en/start/configuration/start.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/start/configuration/start.md b/docs/en/start/configuration/start.md index 4d5bf9736d..c589a23cf2 100644 --- a/docs/en/start/configuration/start.md +++ b/docs/en/start/configuration/start.md @@ -47,7 +47,7 @@ Run it: ``` ```shell - ./client -s "etcd_demo" + ./client -s "config_demo" ``` If the following information is printed out, it means the client app has done all the CRUD operations successfully: From aa6835ed3f4be4d33fa1107857a9e10c4828085a Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sat, 14 May 2022 16:07:42 +0800 Subject: [PATCH 09/62] decouple Name and Type --- configs/config_apollo.json | 6 +++--- configs/config_apollo_health.json | 6 +++--- configs/config_in_memory.json | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/configs/config_apollo.json b/configs/config_apollo.json index 1e312e5bc6..ef6472f0c3 100644 --- a/configs/config_apollo.json +++ b/configs/config_apollo.json @@ -34,9 +34,9 @@ "hello": "greeting" } }, - "apollo": { - "type": "config_store", - "apollo": { + "config_store": { + "my_config_store": { + "type": "apollo", "address": [ "http://106.54.227.205:8080" ], diff --git a/configs/config_apollo_health.json b/configs/config_apollo_health.json index 2b200d43ba..62fc3542da 100644 --- a/configs/config_apollo_health.json +++ b/configs/config_apollo_health.json @@ -39,9 +39,9 @@ "hello": "greeting" } }, - "apollo": { - "type": "config_store", - "apollo": { + "config_store": { + "my_config_store": { + "type": "apollo", "address": [ "http://106.54.227.205:8080" ], diff --git a/configs/config_in_memory.json b/configs/config_in_memory.json index fb9a428742..e824a76f9d 100644 --- a/configs/config_in_memory.json +++ b/configs/config_in_memory.json @@ -28,21 +28,21 @@ } }, "state": { - "memory_demo": { + "state_demo": { "type": "in-memory", "metadata": { } } }, "lock": { - "memory_demo": { + "lock_demo": { "type": "in-memory", "metadata": { } } }, "pub_subs": { - "in-memory_demo": { + "pub_subs_demo": { "type": "in-memory", "metadata": { "consumerID": "1" @@ -50,14 +50,14 @@ } }, "sequencer": { - "in-memory_demo": { + "sequencer_demo": { "type": "in-memory", "metadata": {} } }, "custom_component": { "helloworld": { - "in-memory_demo": { + "custom_component_demo": { "type": "in-memory", "metadata": {} } From cbecd729b3fd2bf04168b96ff32d9fc0966f921b Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sat, 14 May 2022 16:15:55 +0800 Subject: [PATCH 10/62] decouple Name and Type --- configs/config_apollo.json | 2 +- configs/config_apollo_health.json | 2 +- configs/config_bindings.json | 2 +- configs/config_integration_redis_etcd.json | 10 +++++----- configs/config_sequencer_redis.json | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/configs/config_apollo.json b/configs/config_apollo.json index ef6472f0c3..cc9b358877 100644 --- a/configs/config_apollo.json +++ b/configs/config_apollo.json @@ -35,7 +35,7 @@ } }, "config_store": { - "my_config_store": { + "config_demo": { "type": "apollo", "address": [ "http://106.54.227.205:8080" diff --git a/configs/config_apollo_health.json b/configs/config_apollo_health.json index 62fc3542da..9570acd529 100644 --- a/configs/config_apollo_health.json +++ b/configs/config_apollo_health.json @@ -40,7 +40,7 @@ } }, "config_store": { - "my_config_store": { + "config_demo": { "type": "apollo", "address": [ "http://106.54.227.205:8080" diff --git a/configs/config_bindings.json b/configs/config_bindings.json index 35ca9ab2d0..2cab9d88ba 100644 --- a/configs/config_bindings.json +++ b/configs/config_bindings.json @@ -23,7 +23,7 @@ } }, "bindings": { - "http_demo": { + "bindings_demo": { "type": "http", "metadata": { diff --git a/configs/config_integration_redis_etcd.json b/configs/config_integration_redis_etcd.json index 198548a916..cfab30ce4e 100644 --- a/configs/config_integration_redis_etcd.json +++ b/configs/config_integration_redis_etcd.json @@ -68,7 +68,7 @@ } }, "bindings": { - "http_demo": { + "bindings_demo": { "type": "http", "metadata": { "url": "https://registry.npmmirror.com/layotto/0.0.0" @@ -94,7 +94,7 @@ } }, "sequencer": { - "sequencer_demo": { + "sequencer_demo1": { "type": "etcd", "metadata": { "endpoints": "localhost:2379", @@ -105,7 +105,7 @@ "dialTimeout": "5" } }, - "sequencer_demo": { + "sequencer_demo2": { "type": "redis", "metadata": { "redisHost": "127.0.0.1:6380", @@ -114,7 +114,7 @@ } }, "lock": { - "lock_demo": { + "lock_demo1": { "type": "etcd", "metadata": { "endpoints": "localhost:2379", @@ -124,7 +124,7 @@ "dialTimeout": "5" } }, - "lock_demo": { + "lock_demo2": { "type": "redis", "metadata": { "redisHost": "localhost:6380", diff --git a/configs/config_sequencer_redis.json b/configs/config_sequencer_redis.json index a506008ad4..332cbd92a6 100644 --- a/configs/config_sequencer_redis.json +++ b/configs/config_sequencer_redis.json @@ -22,7 +22,7 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld_demo": { + "quick_start_demo": { "type": "helloworld", "hello": "greeting" } From 625615a00f3747490a586a591fa858eaaf2b2816 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sat, 14 May 2022 16:25:07 +0800 Subject: [PATCH 11/62] decouple Name and Type --- docs/en/component_specs/sequencer/etcd.md | 2 +- docs/en/start/sequencer/start.md | 2 +- docs/zh/component_specs/sequencer/etcd.md | 2 +- docs/zh/start/configuration/start.md | 2 +- docs/zh/start/sequencer/start.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/en/component_specs/sequencer/etcd.md b/docs/en/component_specs/sequencer/etcd.md index e2022d90f8..afbbc4811b 100644 --- a/docs/en/component_specs/sequencer/etcd.md +++ b/docs/en/component_specs/sequencer/etcd.md @@ -46,6 +46,6 @@ Execute after the compilation is successful: ````shell cd ${project_path}/demo/sequencer/etcd/ go build -o client - ./client -s "etcd" + ./client -s "sequencer_demo" ```` diff --git a/docs/en/start/sequencer/start.md b/docs/en/start/sequencer/start.md index 58ca3e6923..ca754a76c0 100644 --- a/docs/en/start/sequencer/start.md +++ b/docs/en/start/sequencer/start.md @@ -50,7 +50,7 @@ Once finished, the layotto file will be generated in the directory, run it: ```shell cd ${project_path}/demo/sequencer/common/ go build -o client - ./client -s "etcd" + ./client -s "config_sequencer_etcd" ``` If the following information is printed, the demo is successful: diff --git a/docs/zh/component_specs/sequencer/etcd.md b/docs/zh/component_specs/sequencer/etcd.md index b4a3a7ae57..9ce8147fac 100644 --- a/docs/zh/component_specs/sequencer/etcd.md +++ b/docs/zh/component_specs/sequencer/etcd.md @@ -47,6 +47,6 @@ go build ````shell cd ${project_path}/demo/sequencer/etcd/ go build -o client - ./client -s "etcd" + ./client -s "sequencer_demo" ```` diff --git a/docs/zh/start/configuration/start.md b/docs/zh/start/configuration/start.md index 56beca28df..e4530818c0 100644 --- a/docs/zh/start/configuration/start.md +++ b/docs/zh/start/configuration/start.md @@ -55,7 +55,7 @@ go build -o layotto ``` ```shell - ./client -s "etcd" + ./client -s "config_demo" ``` 打印出如下信息则代表启动完成: diff --git a/docs/zh/start/sequencer/start.md b/docs/zh/start/sequencer/start.md index 1fc3aac97d..599db161f2 100644 --- a/docs/zh/start/sequencer/start.md +++ b/docs/zh/start/sequencer/start.md @@ -52,7 +52,7 @@ go build -o layotto ```shell cd ${project_path}/demo/sequencer/common/ go build -o client - ./client -s "etcd" + ./client -s "sequencer_demo" ``` 打印出如下信息则代表调用成功: From 47ae9612c064d0f8d87c6d17e343c181c9d6a908 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sat, 14 May 2022 16:36:52 +0800 Subject: [PATCH 12/62] decouple Name and Type --- docs/en/start/configuration/start-apollo.md | 2 +- docs/en/start/state/start.md | 2 +- docs/zh/start/configuration/start-apollo.md | 2 +- docs/zh/start/state/start.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/en/start/configuration/start-apollo.md b/docs/en/start/configuration/start-apollo.md index e06574d994..43d2f757ee 100644 --- a/docs/en/start/configuration/start-apollo.md +++ b/docs/en/start/configuration/start-apollo.md @@ -53,7 +53,7 @@ The client demo calls Layotto to add, delete, modify, and query configuration ``` ```shell - ./client -s "apollo" + ./client -s "config_demo" ``` If the following information is printed, the call is successful: diff --git a/docs/en/start/state/start.md b/docs/en/start/state/start.md index c2e0179960..133d8227ce 100644 --- a/docs/en/start/state/start.md +++ b/docs/en/start/state/start.md @@ -68,7 +68,7 @@ The layotto file will be generated in the directory, run it: # change directory to ${your project path}/demo/state/common/ cd ${project_path}/demo/state/common/ go build -o client - ./client -s "redis" + ./client -s "state_demo" ``` If the following information is printed, the demo succeeded: diff --git a/docs/zh/start/configuration/start-apollo.md b/docs/zh/start/configuration/start-apollo.md index 4b3a533e11..90e73b3360 100644 --- a/docs/zh/start/configuration/start-apollo.md +++ b/docs/zh/start/configuration/start-apollo.md @@ -61,7 +61,7 @@ go build -o layotto ``` ```shell - ./client -s "apollo" + ./client -s "config_demo" ``` 打印出如下信息则代表调用成功: diff --git a/docs/zh/start/state/start.md b/docs/zh/start/state/start.md index cb8165e9a4..67f125958e 100644 --- a/docs/zh/start/state/start.md +++ b/docs/zh/start/state/start.md @@ -71,7 +71,7 @@ go build -o layotto # change directory to ${your project path}/demo/state/redis/ cd ${project_path}/demo/state/common/ go build -o client - ./client -s "redis" + ./client -s "state_demo" ``` 打印出如下信息则代表调用成功: From 1bc3ec87f8db3da5d10571c612bdbb0f0e2ea22f Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sat, 14 May 2022 16:44:50 +0800 Subject: [PATCH 13/62] decouple Name and Type --- demo/pubsub/redis/client/publish_client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/pubsub/redis/client/publish_client.go b/demo/pubsub/redis/client/publish_client.go index d1e84b014c..f0760baaa9 100644 --- a/demo/pubsub/redis/client/publish_client.go +++ b/demo/pubsub/redis/client/publish_client.go @@ -38,7 +38,7 @@ func main() { func testPublish(cli client.Client) error { data := []byte("value1") - err := cli.PublishEvent(context.Background(), "redis", topicName, data) + err := cli.PublishEvent(context.Background(), "pub_subs_demo", topicName, data) if err != nil { panic(err) } From 928a504b3cef39fc0dcf47747e4afc81718ee38b Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sat, 14 May 2022 16:55:38 +0800 Subject: [PATCH 14/62] decouple Name and Type --- demo/bindings/main.go | 2 +- demo/file/client.go | 2 +- demo/file/qiniu/client.go | 2 +- demo/file/stressmem.go | 2 +- demo/file/tencentcloud/client.go | 2 +- demo/flowcontrol/client.go | 2 +- demo/lock/consul/client.go | 2 +- demo/lock/etcd/client.go | 2 +- demo/lock/in-memory/client.go | 2 +- demo/lock/mongo/client.go | 2 +- demo/lock/redis/client.go | 2 +- demo/lock/redis/redis_cluster/client_cluster_lock.go | 2 +- demo/sequencer/in-memory/client.go | 2 +- demo/sequencer/mongo/client.go | 2 +- demo/sequencer/redis/client.go | 2 +- demo/sequencer/zookeeper/client.go | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/demo/bindings/main.go b/demo/bindings/main.go index 1cb52202b1..05e667ac2c 100644 --- a/demo/bindings/main.go +++ b/demo/bindings/main.go @@ -19,7 +19,7 @@ func main() { c := runtimev1pb.NewRuntimeClient(conn) metaData := make(map[string]string) metaData["token"] = "123" - req := &runtimev1pb.InvokeBindingRequest{Name: "http_demo", Operation: "get", Metadata: metaData, Data: []byte("auth data")} + req := &runtimev1pb.InvokeBindingRequest{Name: "bindings_demo", Operation: "get", Metadata: metaData, Data: []byte("auth data")} resp, err := c.InvokeBinding(context.Background(), req) if err != nil { fmt.Printf("get file error: %+v", err) diff --git a/demo/file/client.go b/demo/file/client.go index 82737ec1fd..e89de29314 100644 --- a/demo/file/client.go +++ b/demo/file/client.go @@ -19,7 +19,7 @@ import ( ) const ( - storeName = "minioOSS_demo" + storeName = "file_demo" ) func TestGet(fileName string) { diff --git a/demo/file/qiniu/client.go b/demo/file/qiniu/client.go index 402d1d0c3c..c9f7867749 100644 --- a/demo/file/qiniu/client.go +++ b/demo/file/qiniu/client.go @@ -32,7 +32,7 @@ import ( ) const ( - storeName = "qiniuOSS_demo" + storeName = "file_demo" ) func TestGet(fileName string) { diff --git a/demo/file/stressmem.go b/demo/file/stressmem.go index fd85f4fd8b..b37e0434f8 100644 --- a/demo/file/stressmem.go +++ b/demo/file/stressmem.go @@ -14,7 +14,7 @@ import ( ) const ( - storeName1 = "aliOSS_demo" + storeName1 = "file_demo" ) func GetFile(wg *sync.WaitGroup, id int) { diff --git a/demo/file/tencentcloud/client.go b/demo/file/tencentcloud/client.go index b7ce9a0f4b..05cd257f55 100644 --- a/demo/file/tencentcloud/client.go +++ b/demo/file/tencentcloud/client.go @@ -31,7 +31,7 @@ import ( ) const ( - storeName = "tencentCloudOSS_demo" + storeName = "file_demo" ) func TestGet(fileName string) { diff --git a/demo/flowcontrol/client.go b/demo/flowcontrol/client.go index 214278275f..f4c881c007 100644 --- a/demo/flowcontrol/client.go +++ b/demo/flowcontrol/client.go @@ -36,7 +36,7 @@ func main() { for i := 0; i < 10; i++ { r, err := c.SayHello(context.Background(), &runtimev1pb.SayHelloRequest{ - ServiceName: "helloworld_demo", + ServiceName: "quick_start_demo", }) if err != nil { fmt.Println("get an error: ", err) diff --git a/demo/lock/consul/client.go b/demo/lock/consul/client.go index 61c6c5d36a..5c5e5ed0de 100644 --- a/demo/lock/consul/client.go +++ b/demo/lock/consul/client.go @@ -13,7 +13,7 @@ import ( const ( resourceId = "resource_a" - storeName = "consul_demo" + storeName = "lock_demo" ) func main() { diff --git a/demo/lock/etcd/client.go b/demo/lock/etcd/client.go index 172b50f06e..5c5e5ed0de 100644 --- a/demo/lock/etcd/client.go +++ b/demo/lock/etcd/client.go @@ -13,7 +13,7 @@ import ( const ( resourceId = "resource_a" - storeName = "etcd_demo" + storeName = "lock_demo" ) func main() { diff --git a/demo/lock/in-memory/client.go b/demo/lock/in-memory/client.go index eadf4d8447..a7c05bc645 100644 --- a/demo/lock/in-memory/client.go +++ b/demo/lock/in-memory/client.go @@ -13,7 +13,7 @@ import ( const ( resourceId = "resource_a" - storeName = "in-memory_demo" + storeName = "lock_demo" ) func main() { diff --git a/demo/lock/mongo/client.go b/demo/lock/mongo/client.go index 871886009c..e797451c39 100644 --- a/demo/lock/mongo/client.go +++ b/demo/lock/mongo/client.go @@ -13,7 +13,7 @@ import ( const ( resourceId = "resource_a" - storeName = "mongo_demo" + storeName = "lock_demo" ) func main() { diff --git a/demo/lock/redis/client.go b/demo/lock/redis/client.go index 55a12bde98..5c5e5ed0de 100644 --- a/demo/lock/redis/client.go +++ b/demo/lock/redis/client.go @@ -13,7 +13,7 @@ import ( const ( resourceId = "resource_a" - storeName = "redis_demo" + storeName = "lock_demo" ) func main() { diff --git a/demo/lock/redis/redis_cluster/client_cluster_lock.go b/demo/lock/redis/redis_cluster/client_cluster_lock.go index 7c38a65e40..64c53b161e 100644 --- a/demo/lock/redis/redis_cluster/client_cluster_lock.go +++ b/demo/lock/redis/redis_cluster/client_cluster_lock.go @@ -13,7 +13,7 @@ import ( const ( resourceId = "resource_a" - storeName = "redis_cluster_demo" + storeName = "lock_demo" ) func main() { diff --git a/demo/sequencer/in-memory/client.go b/demo/sequencer/in-memory/client.go index 3fe70a6a02..babefd601c 100644 --- a/demo/sequencer/in-memory/client.go +++ b/demo/sequencer/in-memory/client.go @@ -10,7 +10,7 @@ import ( const ( key = "key666" - storeName = "in-memory_demo" + storeName = "sequencer_demo" ) func main() { diff --git a/demo/sequencer/mongo/client.go b/demo/sequencer/mongo/client.go index c77a3cee3e..babefd601c 100644 --- a/demo/sequencer/mongo/client.go +++ b/demo/sequencer/mongo/client.go @@ -10,7 +10,7 @@ import ( const ( key = "key666" - storeName = "mongo_demo" + storeName = "sequencer_demo" ) func main() { diff --git a/demo/sequencer/redis/client.go b/demo/sequencer/redis/client.go index cb181bafff..babefd601c 100644 --- a/demo/sequencer/redis/client.go +++ b/demo/sequencer/redis/client.go @@ -10,7 +10,7 @@ import ( const ( key = "key666" - storeName = "redis_demo" + storeName = "sequencer_demo" ) func main() { diff --git a/demo/sequencer/zookeeper/client.go b/demo/sequencer/zookeeper/client.go index 3b9ba88507..a82d7d9579 100644 --- a/demo/sequencer/zookeeper/client.go +++ b/demo/sequencer/zookeeper/client.go @@ -10,7 +10,7 @@ import ( const ( key = "test" - storeName = "zookeeper_demo" + storeName = "sequencer_demo" ) func main() { From 98def9ea957ccd092e1bc222e5be8aef64e78769 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sat, 14 May 2022 17:05:41 +0800 Subject: [PATCH 15/62] decouple Name and Type --- docs/en/start/configuration/start.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/start/configuration/start.md b/docs/en/start/configuration/start.md index c589a23cf2..1b187b7be8 100644 --- a/docs/en/start/configuration/start.md +++ b/docs/en/start/configuration/start.md @@ -58,7 +58,7 @@ get configuration after save, &{Key:key1 Content:value1 Group:application Label: get configuration after save, &{Key:haha Content:heihei Group:application Label:prod Tags:map[feature:haha release:1.0.0] Metadata:map[]} delete keys success write start -receive subscribe resp store_name:"apollo" app_id:"apollo" items: tags: > +receive subscribe resp store_name:"config_demo" app_id:"apollo" items: tags: > ``` ## Next step From 36213b2134560f1b7759e42fcd432fef2feb7219 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sat, 14 May 2022 17:19:57 +0800 Subject: [PATCH 16/62] decouple Name and Type --- configs/config_integration_redis_etcd.json | 2 +- demo/rpc/http/example.json | 3 ++- docs/en/start/configuration/start-apollo.md | 2 +- docs/zh/start/configuration/start-apollo.md | 2 +- docs/zh/start/configuration/start.md | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/configs/config_integration_redis_etcd.json b/configs/config_integration_redis_etcd.json index cfab30ce4e..1152f54160 100644 --- a/configs/config_integration_redis_etcd.json +++ b/configs/config_integration_redis_etcd.json @@ -48,7 +48,7 @@ "server_name": "runtime", "grpc_config": { "rpcs": { - "mosn_demo": { + "demo": { "type": "mosn", "config": { "channel": [ diff --git a/demo/rpc/http/example.json b/demo/rpc/http/example.json index 1464b9e055..befaa3ac00 100644 --- a/demo/rpc/http/example.json +++ b/demo/rpc/http/example.json @@ -37,7 +37,8 @@ "server_name":"runtime", "grpc_config": { "rpcs": { - "mosn": { + "demo": { + "type": "mosn", "config": { "channel": [{ "size": 16, diff --git a/docs/en/start/configuration/start-apollo.md b/docs/en/start/configuration/start-apollo.md index 43d2f757ee..2c99a4cac2 100644 --- a/docs/en/start/configuration/start-apollo.md +++ b/docs/en/start/configuration/start-apollo.md @@ -64,7 +64,7 @@ get configuration after save, &{Key:key1 Content:value1 Group:application Label: get configuration after save, &{Key:haha Content:heihei Group:application Label:prod Tags:map[feature:haha release:1.0.0] Metadata:map[]} delete keys success write start -receive subscribe resp store_name:"apollo" app_id:"apollo" items: tags: > +receive subscribe resp store_name:"config_demo" app_id:"apollo" items: tags: > ``` ### Next step diff --git a/docs/zh/start/configuration/start-apollo.md b/docs/zh/start/configuration/start-apollo.md index 90e73b3360..ff8ea6cb2c 100644 --- a/docs/zh/start/configuration/start-apollo.md +++ b/docs/zh/start/configuration/start-apollo.md @@ -72,7 +72,7 @@ get configuration after save, &{Key:key1 Content:value1 Group:application Label: get configuration after save, &{Key:haha Content:heihei Group:application Label:prod Tags:map[feature:haha release:1.0.0] Metadata:map[]} delete keys success write start -receive subscribe resp store_name:"apollo" app_id:"apollo" items: tags: > +receive subscribe resp store_name:"config_demo" app_id:"apollo" items: tags: > ``` ### 下一步 diff --git a/docs/zh/start/configuration/start.md b/docs/zh/start/configuration/start.md index e4530818c0..847806e1e1 100644 --- a/docs/zh/start/configuration/start.md +++ b/docs/zh/start/configuration/start.md @@ -66,7 +66,7 @@ get configuration after save, &{Key:key1 Content:value1 Group:application Label: get configuration after save, &{Key:haha Content:heihei Group:application Label:prod Tags:map[feature:haha release:1.0.0] Metadata:map[]} delete keys success write start -receive subscribe resp store_name:"apollo" app_id:"apollo" items: tags: > +receive subscribe resp store_name:"config_demo" app_id:"apollo" items: tags: > ``` ## 下一步 From bde6ef351a58da9c23e0654ae3b6ffef174e563f Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sat, 14 May 2022 22:02:54 +0800 Subject: [PATCH 17/62] decouple Name and Type --- demo/pubsub/redis/server/subscribe_server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/pubsub/redis/server/subscribe_server.go b/demo/pubsub/redis/server/subscribe_server.go index 36796bca65..38d054891c 100644 --- a/demo/pubsub/redis/server/subscribe_server.go +++ b/demo/pubsub/redis/server/subscribe_server.go @@ -56,7 +56,7 @@ type AppCallbackServerImpl struct { func (a *AppCallbackServerImpl) ListTopicSubscriptions(ctx context.Context, empty *empty.Empty) (*runtimev1pb.ListTopicSubscriptionsResponse, error) { result := &runtimev1pb.ListTopicSubscriptionsResponse{} ts := &runtimev1pb.TopicSubscription{ - PubsubName: "redis", + PubsubName: "pub_subs_demo", Topic: topicName, Metadata: nil, } From 18c3006162e357ca7ade303e1aaefe3fa39a8bfe Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 15 May 2022 20:16:35 +0800 Subject: [PATCH 18/62] decouple Name and Type --- pkg/runtime/runtime.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/pkg/runtime/runtime.go b/pkg/runtime/runtime.go index 57dcb14e76..9306b266d3 100644 --- a/pkg/runtime/runtime.go +++ b/pkg/runtime/runtime.go @@ -281,7 +281,7 @@ func (m *MosnRuntime) initHellos(hellos ...*hello.HelloFactory) error { m.errInt(err, "init hello's component %s failed", name) return err } - m.hellos[name] = h + m.hellos[config.Type] = h } return nil } @@ -300,7 +300,7 @@ func (m *MosnRuntime) initConfigStores(configStores ...*configstores.StoreFactor m.errInt(err, "init configstore's component %s failed", name) return err } - m.configStores[name] = c + m.configStores[config.Type] = c } return nil } @@ -319,7 +319,7 @@ func (m *MosnRuntime) initRpcs(rpcs ...*rpc.Factory) error { m.errInt(err, "init rpc's component %s failed", name) return err } - m.rpcs[name] = c + m.rpcs[config.Type] = c } return nil } @@ -350,7 +350,7 @@ func (m *MosnRuntime) initPubSubs(factorys ...*runtime_pubsub.Factory) error { return err } // register this component - m.pubSubs[name] = comp + m.pubSubs[config.Type] = comp } return nil } @@ -371,7 +371,7 @@ func (m *MosnRuntime) initStates(factorys ...*runtime_state.Factory) error { m.errInt(err, "init state component %s failed", name) return err } - m.states[name] = comp + m.states[config.Type] = comp // 2.2. save prefix strategy err = runtime_state.SaveStateConfiguration(name, config.Metadata) if err != nil { @@ -397,7 +397,7 @@ func (m *MosnRuntime) initFiles(files ...*file.FileFactory) error { m.errInt(err, "init files component %s failed", name) return err } - m.files[name] = c + m.files[config.Type] = c } return nil } @@ -425,7 +425,7 @@ func (m *MosnRuntime) initLocks(factorys ...*runtime_lock.Factory) error { m.errInt(err, "save lock configuration %s failed", name) return err } - m.locks[name] = comp + m.locks[config.Type] = comp } return nil } @@ -456,7 +456,7 @@ func (m *MosnRuntime) initSequencers(factorys ...*runtime_sequencer.Factory) err m.errInt(err, "save sequencer configuration %s failed", name) return err } - m.sequencers[name] = comp + m.sequencers[config.Type] = comp } return nil } @@ -500,7 +500,7 @@ func (m *MosnRuntime) initOutputBinding(factorys ...*mbindings.OutputBindingFact return err } // 2.3. put it into the runtime component pool - m.outputBindings[name] = comp + m.outputBindings[config.Type] = comp } return nil } @@ -529,7 +529,7 @@ func (m *MosnRuntime) initSecretStores(factorys ...*msecretstores.SecretStoresFa } // 2.3. save runtime related configs - m.secretStores[name] = comp + m.secretStores[config.Type] = comp } return nil } @@ -605,7 +605,7 @@ func (m *MosnRuntime) initCustomComponents(type2factorys map[string][]*custom.Co return err } // initialization finish - m.SetCustomComponent(compType, name, comp) + m.SetCustomComponent(compType, config.Type, comp) } } return nil From 045a09b1410d387c0d12f5c5eefd632cfb8a64cb Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 15 May 2022 20:40:04 +0800 Subject: [PATCH 19/62] decouple Name and Type --- demo/rpc/http/example.json | 2 +- pkg/runtime/runtime.go | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/demo/rpc/http/example.json b/demo/rpc/http/example.json index befaa3ac00..c134e3cbbe 100644 --- a/demo/rpc/http/example.json +++ b/demo/rpc/http/example.json @@ -37,7 +37,7 @@ "server_name":"runtime", "grpc_config": { "rpcs": { - "demo": { + "mosn": { "type": "mosn", "config": { "channel": [{ diff --git a/pkg/runtime/runtime.go b/pkg/runtime/runtime.go index 9306b266d3..57dcb14e76 100644 --- a/pkg/runtime/runtime.go +++ b/pkg/runtime/runtime.go @@ -281,7 +281,7 @@ func (m *MosnRuntime) initHellos(hellos ...*hello.HelloFactory) error { m.errInt(err, "init hello's component %s failed", name) return err } - m.hellos[config.Type] = h + m.hellos[name] = h } return nil } @@ -300,7 +300,7 @@ func (m *MosnRuntime) initConfigStores(configStores ...*configstores.StoreFactor m.errInt(err, "init configstore's component %s failed", name) return err } - m.configStores[config.Type] = c + m.configStores[name] = c } return nil } @@ -319,7 +319,7 @@ func (m *MosnRuntime) initRpcs(rpcs ...*rpc.Factory) error { m.errInt(err, "init rpc's component %s failed", name) return err } - m.rpcs[config.Type] = c + m.rpcs[name] = c } return nil } @@ -350,7 +350,7 @@ func (m *MosnRuntime) initPubSubs(factorys ...*runtime_pubsub.Factory) error { return err } // register this component - m.pubSubs[config.Type] = comp + m.pubSubs[name] = comp } return nil } @@ -371,7 +371,7 @@ func (m *MosnRuntime) initStates(factorys ...*runtime_state.Factory) error { m.errInt(err, "init state component %s failed", name) return err } - m.states[config.Type] = comp + m.states[name] = comp // 2.2. save prefix strategy err = runtime_state.SaveStateConfiguration(name, config.Metadata) if err != nil { @@ -397,7 +397,7 @@ func (m *MosnRuntime) initFiles(files ...*file.FileFactory) error { m.errInt(err, "init files component %s failed", name) return err } - m.files[config.Type] = c + m.files[name] = c } return nil } @@ -425,7 +425,7 @@ func (m *MosnRuntime) initLocks(factorys ...*runtime_lock.Factory) error { m.errInt(err, "save lock configuration %s failed", name) return err } - m.locks[config.Type] = comp + m.locks[name] = comp } return nil } @@ -456,7 +456,7 @@ func (m *MosnRuntime) initSequencers(factorys ...*runtime_sequencer.Factory) err m.errInt(err, "save sequencer configuration %s failed", name) return err } - m.sequencers[config.Type] = comp + m.sequencers[name] = comp } return nil } @@ -500,7 +500,7 @@ func (m *MosnRuntime) initOutputBinding(factorys ...*mbindings.OutputBindingFact return err } // 2.3. put it into the runtime component pool - m.outputBindings[config.Type] = comp + m.outputBindings[name] = comp } return nil } @@ -529,7 +529,7 @@ func (m *MosnRuntime) initSecretStores(factorys ...*msecretstores.SecretStoresFa } // 2.3. save runtime related configs - m.secretStores[config.Type] = comp + m.secretStores[name] = comp } return nil } @@ -605,7 +605,7 @@ func (m *MosnRuntime) initCustomComponents(type2factorys map[string][]*custom.Co return err } // initialization finish - m.SetCustomComponent(compType, config.Type, comp) + m.SetCustomComponent(compType, name, comp) } } return nil From cebed229d70543e69ee0c1f742f242cec063a194 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 15 May 2022 20:58:51 +0800 Subject: [PATCH 20/62] decouple Name and Type --- demo/faas/config.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/demo/faas/config.json b/demo/faas/config.json index d48f22f5c9..83cbb30824 100644 --- a/demo/faas/config.json +++ b/demo/faas/config.json @@ -16,6 +16,7 @@ "grpc_config": { "rpcs": { "mosn": { + "type": "mosn", "config": { "channel": [{ "size": 16, @@ -26,7 +27,8 @@ } }, "state": { - "redis": { + "state_demo": { + "type": "redis", "metadata": { "redisHost": "localhost:6379", "redisPassword": "" From a349906c14967e560449c94120651a97c8988091 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 15 May 2022 21:12:50 +0800 Subject: [PATCH 21/62] decouple Name and Type --- configs/config_secret_file.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/configs/config_secret_file.json b/configs/config_secret_file.json index bb67cff9c4..8f915fc7e7 100644 --- a/configs/config_secret_file.json +++ b/configs/config_secret_file.json @@ -22,17 +22,20 @@ "server_name": "runtime", "grpc_config": { "hellos": { - "helloworld": { + "quick_start_demo": { + "type": "helloworld", "hello": "greeting" } }, "secret_store": { - "local.file": { + "secret_demo": { + "type": "local.file", "metadata": { - "secretsFile": "../../configs/secret/config_secret_local_file.json" + "secretsFile": "./configs/secret/config_secret_local_file.json" } }, - "local.env": { + "secret_demo1": { + "type": "local.env", "metadata": { } } From 7483638265b8b555888a9ae0b550cb20f3bfcd2c Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 15 May 2022 21:21:00 +0800 Subject: [PATCH 22/62] decouple Name and Type --- configs/config_secret_file.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/config_secret_file.json b/configs/config_secret_file.json index 8f915fc7e7..6231a43530 100644 --- a/configs/config_secret_file.json +++ b/configs/config_secret_file.json @@ -31,7 +31,7 @@ "secret_demo": { "type": "local.file", "metadata": { - "secretsFile": "./configs/secret/config_secret_local_file.json" + "secretsFile": "../../configs/secret/config_secret_local_file.json" } }, "secret_demo1": { From a7eb0310546230d68eadba85b90bebbb93fb6d1a Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 15 May 2022 21:30:12 +0800 Subject: [PATCH 23/62] decouple Name and Type --- configs/config_secret_file.json | 2 +- docs/en/start/secret/start.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/config_secret_file.json b/configs/config_secret_file.json index 6231a43530..8f915fc7e7 100644 --- a/configs/config_secret_file.json +++ b/configs/config_secret_file.json @@ -31,7 +31,7 @@ "secret_demo": { "type": "local.file", "metadata": { - "secretsFile": "../../configs/secret/config_secret_local_file.json" + "secretsFile": "./configs/secret/config_secret_local_file.json" } }, "secret_demo1": { diff --git a/docs/en/start/secret/start.md b/docs/en/start/secret/start.md index da88d706ef..919c013623 100644 --- a/docs/en/start/secret/start.md +++ b/docs/en/start/secret/start.md @@ -39,7 +39,7 @@ Once finished, the layotto file will be generated in the directory, run it: ``` ```shell - ./client -s "local.file" + ./client -s "secret_demo" ``` If the following information is printed, the demo is successful: From 1891524af10da7fc7191e085f29b9ec311770786 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 15 May 2022 21:36:30 +0800 Subject: [PATCH 24/62] decouple Name and Type --- configs/config_secret_file.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/config_secret_file.json b/configs/config_secret_file.json index 8f915fc7e7..6231a43530 100644 --- a/configs/config_secret_file.json +++ b/configs/config_secret_file.json @@ -31,7 +31,7 @@ "secret_demo": { "type": "local.file", "metadata": { - "secretsFile": "./configs/secret/config_secret_local_file.json" + "secretsFile": "../../configs/secret/config_secret_local_file.json" } }, "secret_demo1": { From 210ea476296f483e8a738c8b33721934920fe360 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 15 May 2022 21:51:59 +0800 Subject: [PATCH 25/62] decouple Name and Type --- configs/config_secret_file.json | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/config_secret_file.json b/configs/config_secret_file.json index 6231a43530..b734e26cf6 100644 --- a/configs/config_secret_file.json +++ b/configs/config_secret_file.json @@ -79,3 +79,4 @@ } ] } + From 7fe5458a8d026bc8626e5409e8e9e90be75c210d Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 15 May 2022 22:02:48 +0800 Subject: [PATCH 26/62] decouple Name and Type --- demo/secret/common/client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/secret/common/client.go b/demo/secret/common/client.go index 9619d8b0a8..0f2d6ca003 100644 --- a/demo/secret/common/client.go +++ b/demo/secret/common/client.go @@ -5,7 +5,6 @@ import ( "flag" "fmt" "mosn.io/layotto/sdk/go-sdk/client" - runtimev1pb "mosn.io/layotto/spec/proto/runtime/v1" ) @@ -21,6 +20,7 @@ func main() { if storeName == "" { panic("storeName is empty.") } + fmt.Println(storeName) cli, err := client.NewClient() if err != nil { panic(err) From 2378a09efa41902b723bb5bb9cd9189bf192b64d Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 15 May 2022 22:03:05 +0800 Subject: [PATCH 27/62] decouple Name and Type --- demo/secret/common/client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/secret/common/client.go b/demo/secret/common/client.go index 0f2d6ca003..2f99726784 100644 --- a/demo/secret/common/client.go +++ b/demo/secret/common/client.go @@ -20,7 +20,7 @@ func main() { if storeName == "" { panic("storeName is empty.") } - fmt.Println(storeName) + fmt.Println("--------------------->" + storeName) cli, err := client.NewClient() if err != nil { panic(err) From ccdbef6f96e4ff21ce883aa43a1f05acda533a1b Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 15 May 2022 22:10:59 +0800 Subject: [PATCH 28/62] decouple Name and Type --- demo/secret/common/client.go | 1 - docs/zh/start/secret/start.md | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/demo/secret/common/client.go b/demo/secret/common/client.go index 2f99726784..b5f89de36b 100644 --- a/demo/secret/common/client.go +++ b/demo/secret/common/client.go @@ -20,7 +20,6 @@ func main() { if storeName == "" { panic("storeName is empty.") } - fmt.Println("--------------------->" + storeName) cli, err := client.NewClient() if err != nil { panic(err) diff --git a/docs/zh/start/secret/start.md b/docs/zh/start/secret/start.md index a127c79456..f43e4f9a55 100644 --- a/docs/zh/start/secret/start.md +++ b/docs/zh/start/secret/start.md @@ -35,7 +35,7 @@ go build -o layotto go build -o client ``` ```shell - ./client -s "local.file" + ./client -s "secret_demo" ``` 打印出如下信息则代表调用成功: From 208e89fe280469f493c9d6833a3e5bc5ade96a6b Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 15 May 2022 22:41:34 +0800 Subject: [PATCH 29/62] decouple Name and Type --- demo/rpc/dubbo_json_rpc/example.json | 1 + 1 file changed, 1 insertion(+) diff --git a/demo/rpc/dubbo_json_rpc/example.json b/demo/rpc/dubbo_json_rpc/example.json index 17d12ddd89..a25b050d9e 100644 --- a/demo/rpc/dubbo_json_rpc/example.json +++ b/demo/rpc/dubbo_json_rpc/example.json @@ -33,6 +33,7 @@ "grpc_config": { "rpcs": { "mosn": { + "type": "mosn", "config": { "before_invoke": [{ "name": "dubbo_json_rpc" From a6889fdc944b779bac352a1a3e6f187239f1abec Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 15 May 2022 23:14:15 +0800 Subject: [PATCH 30/62] decouple Name and Type --- pkg/runtime/runtime_test.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/runtime/runtime_test.go b/pkg/runtime/runtime_test.go index 80ecf75517..9263bcec7d 100644 --- a/pkg/runtime/runtime_test.go +++ b/pkg/runtime/runtime_test.go @@ -307,7 +307,12 @@ func TestMosnRuntime_initPubSubsNotExistMetadata(t *testing.T) { cfg := &MosnRuntimeConfig{ PubSubManagement: map[string]mpubsub.Config{ - "mock": {}, + "mock": { + Type: "pubsub", + Metadata: map[string]string{ + "target": "layotto", + }, + }, }, } // construct MosnRuntime From 787297813ff5c34e0843a1902f7f12e102d6950e Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sun, 15 May 2022 23:42:48 +0800 Subject: [PATCH 31/62] decouple Name and Type --- pkg/runtime/runtime_test.go | 2 +- test/runtime/redis_integrate_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/runtime/runtime_test.go b/pkg/runtime/runtime_test.go index 9263bcec7d..932dbc27bf 100644 --- a/pkg/runtime/runtime_test.go +++ b/pkg/runtime/runtime_test.go @@ -321,7 +321,7 @@ func TestMosnRuntime_initPubSubsNotExistMetadata(t *testing.T) { log.DefaultLogger.Errorf("[runtime] occurs an error: "+err.Error()+", "+format, args...) } // test initPubSubs - err := m.initPubSubs(mpubsub.NewFactory("mock", f)) + err := m.initPubSubs(mpubsub.NewFactory("pubsub", f)) // assert result assert.Nil(t, err) }) diff --git a/test/runtime/redis_integrate_test.go b/test/runtime/redis_integrate_test.go index 8da61b8909..45a7000743 100644 --- a/test/runtime/redis_integrate_test.go +++ b/test/runtime/redis_integrate_test.go @@ -28,7 +28,7 @@ import ( runtimev1pb "mosn.io/layotto/spec/proto/runtime/v1" ) -var componentName = "redis" +var componentName = "state_demo" func TestHelloApi(t *testing.T) { cli, err := client.NewClientWithAddress("127.0.0.1:34904") From a78492f13eb345cc486e6261c712b5e310df6e3b Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Mon, 16 May 2022 00:50:25 +0800 Subject: [PATCH 32/62] decouple Name and Type --- test/runtime/redis_integrate_test.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/test/runtime/redis_integrate_test.go b/test/runtime/redis_integrate_test.go index 45a7000743..fab823d735 100644 --- a/test/runtime/redis_integrate_test.go +++ b/test/runtime/redis_integrate_test.go @@ -40,7 +40,7 @@ func TestHelloApi(t *testing.T) { ctx := context.Background() helloReq := &client.SayHelloRequest{ - ServiceName: "helloworld", + ServiceName: "quick_start_demo", } helloResp, err := cli.SayHello(ctx, helloReq) assert.Nil(t, err) @@ -61,12 +61,13 @@ func TestStateApi(t *testing.T) { err = cli.SaveState(ctx, componentName, stateKey, stateValue) assert.Nil(t, err) - stateResp, err := cli.GetState(ctx, componentName, stateKey) + stateResp, err := cli.GetState(ctx, "state_demo", stateKey) assert.Nil(t, err) assert.Equal(t, stateValue, stateResp.Value) } func TestLockApi(t *testing.T) { + storeName := "lock_state" cli, err := client.NewClientWithAddress("127.0.0.1:34904") if err != nil { t.Fatal(err) @@ -81,7 +82,7 @@ func TestLockApi(t *testing.T) { // 1. client1 tryLock resp, err := cli.TryLock(ctx, &runtimev1pb.TryLockRequest{ - StoreName: componentName, + StoreName: storeName, ResourceId: resourceID, LockOwner: owner1, Expire: 100000, @@ -94,7 +95,7 @@ func TestLockApi(t *testing.T) { // 2. client2 tryLock go func() { resp, err := cli.TryLock(ctx, &runtimev1pb.TryLockRequest{ - StoreName: componentName, + StoreName: storeName, ResourceId: resourceID, LockOwner: owner2, Expire: 1000, @@ -106,7 +107,7 @@ func TestLockApi(t *testing.T) { wg.Wait() // 3. client1 unlock unlockResp, err := cli.Unlock(ctx, &runtimev1pb.UnlockRequest{ - StoreName: componentName, + StoreName: storeName, ResourceId: resourceID, LockOwner: owner1, }) @@ -117,7 +118,7 @@ func TestLockApi(t *testing.T) { wg.Add(1) go func() { resp, err := cli.TryLock(ctx, &runtimev1pb.TryLockRequest{ - StoreName: componentName, + StoreName: storeName, ResourceId: resourceID, LockOwner: owner2, Expire: 10, @@ -126,7 +127,7 @@ func TestLockApi(t *testing.T) { assert.True(t, true, resp.Success) // 5. client2 unlock unlockResp, err := cli.Unlock(ctx, &runtimev1pb.UnlockRequest{ - StoreName: componentName, + StoreName: storeName, ResourceId: resourceID, LockOwner: owner2, }) From 671ab356ce90744b938d97e176a525db11051bda Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Mon, 16 May 2022 15:34:52 +0800 Subject: [PATCH 33/62] decouple Name and Type --- test/runtime/redis_integrate_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/runtime/redis_integrate_test.go b/test/runtime/redis_integrate_test.go index fab823d735..5b04931ac9 100644 --- a/test/runtime/redis_integrate_test.go +++ b/test/runtime/redis_integrate_test.go @@ -67,7 +67,7 @@ func TestStateApi(t *testing.T) { } func TestLockApi(t *testing.T) { - storeName := "lock_state" + storeName := "lock_demo" cli, err := client.NewClientWithAddress("127.0.0.1:34904") if err != nil { t.Fatal(err) @@ -150,7 +150,7 @@ func TestSequencerApi(t *testing.T) { for i := 1; i < 10; i++ { resp, err := cli.GetNextId(ctx, &runtimev1pb.GetNextIdRequest{ - StoreName: componentName, + StoreName: "sequencer_demo", Key: sequencerKey, }) assert.Nil(t, err) From eca8ecc779d3e8896fcbea85d2040d1c90f75961 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Mon, 16 May 2022 16:10:16 +0800 Subject: [PATCH 34/62] decouple Name and Type --- demo/faas/code/golang/server/function.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/faas/code/golang/server/function.go b/demo/faas/code/golang/server/function.go index 4364778e96..5cbb031fe6 100644 --- a/demo/faas/code/golang/server/function.go +++ b/demo/faas/code/golang/server/function.go @@ -65,7 +65,7 @@ func (ctx *httpHeaders) OnHttpRequestBody(bodySize int, endOfStream bool) types. bookName := string(body) //2. get request state from redis by specific key through ABI - inventories, err := proxywasm.GetState("redis", bookName) + inventories, err := proxywasm.GetState("state_demo", bookName) if err != nil { proxywasm.LogErrorf("GetState failed: %v", err) return types.ActionPause From 3fabb6ebbc45e05450a9342cb35c9ff29280ed4d Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Mon, 16 May 2022 17:31:14 +0800 Subject: [PATCH 35/62] decouple Name and Type --- components/rpc/types.go | 1 - configs/config_integration_redis_etcd.json | 1 - demo/faas/config.json | 1 - demo/rpc/dubbo_json_rpc/example.json | 1 - demo/rpc/http/example.json | 1 - pkg/runtime/runtime.go | 2 +- 6 files changed, 1 insertion(+), 6 deletions(-) diff --git a/components/rpc/types.go b/components/rpc/types.go index b4034f5575..150b28fb23 100644 --- a/components/rpc/types.go +++ b/components/rpc/types.go @@ -72,7 +72,6 @@ type RPCResponse struct { } type RpcConfig struct { - Type string `json:"type"` Config json.RawMessage } diff --git a/configs/config_integration_redis_etcd.json b/configs/config_integration_redis_etcd.json index 1152f54160..046910a352 100644 --- a/configs/config_integration_redis_etcd.json +++ b/configs/config_integration_redis_etcd.json @@ -49,7 +49,6 @@ "grpc_config": { "rpcs": { "demo": { - "type": "mosn", "config": { "channel": [ { diff --git a/demo/faas/config.json b/demo/faas/config.json index 83cbb30824..376538ef31 100644 --- a/demo/faas/config.json +++ b/demo/faas/config.json @@ -16,7 +16,6 @@ "grpc_config": { "rpcs": { "mosn": { - "type": "mosn", "config": { "channel": [{ "size": 16, diff --git a/demo/rpc/dubbo_json_rpc/example.json b/demo/rpc/dubbo_json_rpc/example.json index a25b050d9e..17d12ddd89 100644 --- a/demo/rpc/dubbo_json_rpc/example.json +++ b/demo/rpc/dubbo_json_rpc/example.json @@ -33,7 +33,6 @@ "grpc_config": { "rpcs": { "mosn": { - "type": "mosn", "config": { "before_invoke": [{ "name": "dubbo_json_rpc" diff --git a/demo/rpc/http/example.json b/demo/rpc/http/example.json index c134e3cbbe..1464b9e055 100644 --- a/demo/rpc/http/example.json +++ b/demo/rpc/http/example.json @@ -38,7 +38,6 @@ "grpc_config": { "rpcs": { "mosn": { - "type": "mosn", "config": { "channel": [{ "size": 16, diff --git a/pkg/runtime/runtime.go b/pkg/runtime/runtime.go index 57dcb14e76..faf4ae7bec 100644 --- a/pkg/runtime/runtime.go +++ b/pkg/runtime/runtime.go @@ -310,7 +310,7 @@ func (m *MosnRuntime) initRpcs(rpcs ...*rpc.Factory) error { // register all rpc components m.rpcRegistry.Register(rpcs...) for name, config := range m.runtimeConfig.RpcManagement { - c, err := m.rpcRegistry.Create(config.Type) + c, err := m.rpcRegistry.Create(name) if err != nil { m.errInt(err, "create rpc's component %s failed", name) return err From cc161330cb97691f8acfe8400fa70fef8ab5a436 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Mon, 16 May 2022 17:48:13 +0800 Subject: [PATCH 36/62] decouple Name and Type --- pkg/runtime/runtime_test.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkg/runtime/runtime_test.go b/pkg/runtime/runtime_test.go index 932dbc27bf..c22f6ddc8d 100644 --- a/pkg/runtime/runtime_test.go +++ b/pkg/runtime/runtime_test.go @@ -369,9 +369,7 @@ func TestMosnRuntime_initRpc(t *testing.T) { cfg := &MosnRuntimeConfig{ RpcManagement: map[string]rpc.RpcConfig{ - "mock": { - Type: "rpc", - }, + "mock": {}, }, } // construct MosnRuntime From 4ff1c6b2b2281097bfba4b2b9bd33910139b1df0 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Mon, 16 May 2022 17:55:29 +0800 Subject: [PATCH 37/62] decouple Name and Type --- pkg/runtime/runtime_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/runtime/runtime_test.go b/pkg/runtime/runtime_test.go index c22f6ddc8d..43f902d04a 100644 --- a/pkg/runtime/runtime_test.go +++ b/pkg/runtime/runtime_test.go @@ -369,7 +369,7 @@ func TestMosnRuntime_initRpc(t *testing.T) { cfg := &MosnRuntimeConfig{ RpcManagement: map[string]rpc.RpcConfig{ - "mock": {}, + "rpc": {}, }, } // construct MosnRuntime From 12d1f58e4c3c3b1de3afea3365b66a92092d1c64 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Tue, 17 May 2022 16:45:06 +0800 Subject: [PATCH 38/62] decouple Name and Type --- demo/faas/code/golang/server/function.go | 2 +- demo/faas/code/golang/server/function_2.wasm | Bin 274556 -> 297950 bytes demo/faas/config.json | 2 +- pkg/runtime/secretstores/factory_test.go | 13 +++++++++++ sdk/go-sdk/client/lock_test.go | 23 +++++++++++++++++++ 5 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 pkg/runtime/secretstores/factory_test.go create mode 100644 sdk/go-sdk/client/lock_test.go diff --git a/demo/faas/code/golang/server/function.go b/demo/faas/code/golang/server/function.go index 5cbb031fe6..4364778e96 100644 --- a/demo/faas/code/golang/server/function.go +++ b/demo/faas/code/golang/server/function.go @@ -65,7 +65,7 @@ func (ctx *httpHeaders) OnHttpRequestBody(bodySize int, endOfStream bool) types. bookName := string(body) //2. get request state from redis by specific key through ABI - inventories, err := proxywasm.GetState("state_demo", bookName) + inventories, err := proxywasm.GetState("redis", bookName) if err != nil { proxywasm.LogErrorf("GetState failed: %v", err) return types.ActionPause diff --git a/demo/faas/code/golang/server/function_2.wasm b/demo/faas/code/golang/server/function_2.wasm index a735a0d35f1871ee0b3337337a57a6bf0a267364..f7d079c5c1d0e0b75921bdd8de1a6aa664b49a97 100755 GIT binary patch literal 297950 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

w! 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 literal 274556 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

F!28BnVo@ryD43OOO*SXlvU1(D#TuJ~ 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 diff --git a/demo/faas/config.json b/demo/faas/config.json index 376538ef31..3029be3e1a 100644 --- a/demo/faas/config.json +++ b/demo/faas/config.json @@ -26,7 +26,7 @@ } }, "state": { - "state_demo": { + "redis": { "type": "redis", "metadata": { "redisHost": "localhost:6379", diff --git a/pkg/runtime/secretstores/factory_test.go b/pkg/runtime/secretstores/factory_test.go new file mode 100644 index 0000000000..5f35753711 --- /dev/null +++ b/pkg/runtime/secretstores/factory_test.go @@ -0,0 +1,13 @@ +package secretstores + +import ( + "github.com/dapr/components-contrib/secretstores" + "mosn.io/layotto/pkg/mock/components/secret" + "testing" +) + +func TestNewFactory(t *testing.T) { + NewFactory("test", func() secretstores.SecretStore { + return secret.FakeSecretStore{} + }) +} diff --git a/sdk/go-sdk/client/lock_test.go b/sdk/go-sdk/client/lock_test.go new file mode 100644 index 0000000000..9185059627 --- /dev/null +++ b/sdk/go-sdk/client/lock_test.go @@ -0,0 +1,23 @@ +package client + +import ( + "context" + runtimev1pb "mosn.io/layotto/spec/proto/runtime/v1" + "testing" +) + +func TestTryLock(t *testing.T) { + ctx := context.Background() + t.Run("try lock", func(t *testing.T) { + request := runtimev1pb.TryLockRequest{} + testClient.TryLock(ctx, &request) + }) +} + +func TestUnLock(t *testing.T) { + ctx := context.Background() + t.Run("try lock", func(t *testing.T) { + request := runtimev1pb.UnlockRequest{} + testClient.Unlock(ctx, &request) + }) +} From a07316138682ff3cb29b456ee62be1ac0f66f607 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Tue, 17 May 2022 16:57:56 +0800 Subject: [PATCH 39/62] decouple Name and Type --- pkg/runtime/secretstores/factory_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/runtime/secretstores/factory_test.go b/pkg/runtime/secretstores/factory_test.go index 5f35753711..4854212191 100644 --- a/pkg/runtime/secretstores/factory_test.go +++ b/pkg/runtime/secretstores/factory_test.go @@ -1,13 +1,13 @@ package secretstores import ( - "github.com/dapr/components-contrib/secretstores" + secretstores_loader "github.com/dapr/components-contrib/secretstores" "mosn.io/layotto/pkg/mock/components/secret" "testing" ) func TestNewFactory(t *testing.T) { - NewFactory("test", func() secretstores.SecretStore { + NewFactory("test", func() secretstores_loader.SecretStore { return secret.FakeSecretStore{} }) } From 5c073e9e9a0e7af0561c555df40f4bffdeb63058 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Tue, 17 May 2022 17:29:13 +0800 Subject: [PATCH 40/62] decouple Name and Type --- pkg/runtime/secretstores/factory_test.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pkg/runtime/secretstores/factory_test.go b/pkg/runtime/secretstores/factory_test.go index 4854212191..cec6750ddb 100644 --- a/pkg/runtime/secretstores/factory_test.go +++ b/pkg/runtime/secretstores/factory_test.go @@ -1,13 +1,15 @@ package secretstores import ( - secretstores_loader "github.com/dapr/components-contrib/secretstores" - "mosn.io/layotto/pkg/mock/components/secret" "testing" + + "mosn.io/layotto/pkg/mock/components/secret" + + "github.com/dapr/components-contrib/secretstores" ) func TestNewFactory(t *testing.T) { - NewFactory("test", func() secretstores_loader.SecretStore { + NewFactory("test", func() secretstores.SecretStore { return secret.FakeSecretStore{} }) } From 26ab6e12678182e6d48af47077d636b599696b4b Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Tue, 17 May 2022 17:38:33 +0800 Subject: [PATCH 41/62] decouple Name and Type --- pkg/runtime/secretstores/factory_test.go | 16 ++++++++++++++++ sdk/go-sdk/client/lock_test.go | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/pkg/runtime/secretstores/factory_test.go b/pkg/runtime/secretstores/factory_test.go index cec6750ddb..087da25c73 100644 --- a/pkg/runtime/secretstores/factory_test.go +++ b/pkg/runtime/secretstores/factory_test.go @@ -1,5 +1,21 @@ package secretstores +/* + * Copyright 2021 Layotto Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import ( "testing" diff --git a/sdk/go-sdk/client/lock_test.go b/sdk/go-sdk/client/lock_test.go index 9185059627..2e29afa951 100644 --- a/sdk/go-sdk/client/lock_test.go +++ b/sdk/go-sdk/client/lock_test.go @@ -1,5 +1,21 @@ package client +/* + * Copyright 2021 Layotto Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import ( "context" runtimev1pb "mosn.io/layotto/spec/proto/runtime/v1" From 2b6fba7388128682db330689545f6fb6ca424e4c Mon Sep 17 00:00:00 2001 From: Marco Date: Wed, 18 May 2022 22:24:14 +0800 Subject: [PATCH 42/62] update wasm demo --- .../code/assemblyscript/assembly/server.ts | 2 +- demo/faas/code/golang/server/function.go | 2 +- demo/faas/code/golang/server/function_2.wasm | Bin 297950 -> 128147 bytes demo/faas/code/rust/server/src/lib.rs | 2 +- demo/faas/config.json | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) diff --git a/demo/faas/code/assemblyscript/assembly/server.ts b/demo/faas/code/assemblyscript/assembly/server.ts index 4fe9f12589..7eabb66e84 100644 --- a/demo/faas/code/assemblyscript/assembly/server.ts +++ b/demo/faas/code/assemblyscript/assembly/server.ts @@ -24,7 +24,7 @@ class ServerHttpContext extends Context { onRequestBody(body_buffer_length: usize, _end_of_stream: bool): FilterDataStatusValues { let name = String.UTF8.decode(get_buffer_bytes(BufferTypeValues.HttpRequestBody, 0, body_buffer_length as u32)); - set_http_response_body(String.UTF8.decode(getState("redis", name))); + set_http_response_body(String.UTF8.decode(getState("state_demo", name))); return FilterDataStatusValues.Continue } } diff --git a/demo/faas/code/golang/server/function.go b/demo/faas/code/golang/server/function.go index 4364778e96..5cbb031fe6 100644 --- a/demo/faas/code/golang/server/function.go +++ b/demo/faas/code/golang/server/function.go @@ -65,7 +65,7 @@ func (ctx *httpHeaders) OnHttpRequestBody(bodySize int, endOfStream bool) types. bookName := string(body) //2. get request state from redis by specific key through ABI - inventories, err := proxywasm.GetState("redis", bookName) + inventories, err := proxywasm.GetState("state_demo", bookName) if err != nil { proxywasm.LogErrorf("GetState failed: %v", err) return types.ActionPause diff --git a/demo/faas/code/golang/server/function_2.wasm b/demo/faas/code/golang/server/function_2.wasm index f7d079c5c1d0e0b75921bdd8de1a6aa664b49a97..b81560d05998e7d36ff3d5f27bc961beb7cc28ca 100755 GIT binary patch literal 128147 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

w! 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 diff --git a/demo/faas/code/rust/server/src/lib.rs b/demo/faas/code/rust/server/src/lib.rs index 3f0de58170..3a131cd917 100644 --- a/demo/faas/code/rust/server/src/lib.rs +++ b/demo/faas/code/rust/server/src/lib.rs @@ -34,7 +34,7 @@ impl HttpContext for ServerHttpContext { None => None, }); match book_name { - Some(book_name) => match get_state("redis", &book_name) { + Some(book_name) => match get_state("state_demo", &book_name) { Ok(response) => { let response = response.unwrap_or(vec![]); set_buffer(BufferType::HttpResponseBody, 0, &response).unwrap(); diff --git a/demo/faas/config.json b/demo/faas/config.json index 3029be3e1a..376538ef31 100644 --- a/demo/faas/config.json +++ b/demo/faas/config.json @@ -26,7 +26,7 @@ } }, "state": { - "redis": { + "state_demo": { "type": "redis", "metadata": { "redisHost": "localhost:6379", From ae5d00a73338fd7dbeb0e26231f2000f58c1f321 Mon Sep 17 00:00:00 2001 From: seeflood Date: Thu, 19 May 2022 18:08:38 +0800 Subject: [PATCH 43/62] add type field Signed-off-by: seeflood --- pkg/runtime/secretstores/metadata.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/runtime/secretstores/metadata.go b/pkg/runtime/secretstores/metadata.go index 03c967cc13..7f4acd728c 100644 --- a/pkg/runtime/secretstores/metadata.go +++ b/pkg/runtime/secretstores/metadata.go @@ -17,6 +17,7 @@ package secretstores type Metadata struct { + Type string `json:"type"` Version string Metadata map[string]string `json:"metadata"` } From cc55fb3c6c609190e7764ba4bf46688db44adb06 Mon Sep 17 00:00:00 2001 From: seeflood Date: Thu, 19 May 2022 20:51:27 +0800 Subject: [PATCH 44/62] modify custom component Signed-off-by: seeflood --- .../helloworld/grpc_api.go | 4 +-- components/custom/registry.go | 10 +++--- configs/config_in_memory.json | 2 +- docs/zh/component_specs/custom/common.md | 9 +++-- docs/zh/design/api_plugin/design.md | 33 ++----------------- pkg/runtime/options.go | 6 ++-- pkg/runtime/runtime.go | 24 +++++++------- 7 files changed, 31 insertions(+), 57 deletions(-) diff --git a/cmd/layotto_multiple_api/helloworld/grpc_api.go b/cmd/layotto_multiple_api/helloworld/grpc_api.go index b58e8987f9..435e79ba34 100644 --- a/cmd/layotto_multiple_api/helloworld/grpc_api.go +++ b/cmd/layotto_multiple_api/helloworld/grpc_api.go @@ -30,7 +30,7 @@ import ( grpc_api "mosn.io/layotto/pkg/grpc" ) -const componentType = "helloworld" +const kind = "helloworld" // This demo will always use this component name. const componentName = "in-memory" @@ -40,7 +40,7 @@ func NewHelloWorldAPI(ac *grpc_api.ApplicationContext) grpc.GrpcAPI { name2component := make(map[string]component.HelloWorld) if len(ac.CustomComponent) != 0 { // we only care about those components of type "helloworld" - name2comp, ok := ac.CustomComponent[componentType] + name2comp, ok := ac.CustomComponent[kind] if ok && len(name2comp) > 0 { for name, v := range name2comp { // convert them using type assertion diff --git a/components/custom/registry.go b/components/custom/registry.go index a12af8dfa7..779eb015ce 100644 --- a/components/custom/registry.go +++ b/components/custom/registry.go @@ -25,13 +25,13 @@ type Registry interface { } type ComponentFactory struct { - Name string + Type string FactoryMethod func() Component } -func NewComponentFactory(name string, f func() Component) *ComponentFactory { +func NewComponentFactory(compType string, f func() Component) *ComponentFactory { return &ComponentFactory{ - Name: name, + Type: compType, FactoryMethod: f, } } @@ -59,8 +59,8 @@ func (r *componentRegistry) Register(componentType string, fs ...*ComponentFacto } // register FactoryMethod for _, f := range fs { - r.stores[componentType][f.Name] = f.FactoryMethod - r.info.RegisterComponent(componentType, f.Name) + r.stores[componentType][f.Type] = f.FactoryMethod + r.info.RegisterComponent(componentType, f.Type) } } diff --git a/configs/config_in_memory.json b/configs/config_in_memory.json index e824a76f9d..98ddf984ad 100644 --- a/configs/config_in_memory.json +++ b/configs/config_in_memory.json @@ -57,7 +57,7 @@ }, "custom_component": { "helloworld": { - "custom_component_demo": { + "demo": { "type": "in-memory", "metadata": {} } diff --git a/docs/zh/component_specs/custom/common.md b/docs/zh/component_specs/custom/common.md index dfc96bf786..ad5ab8ba7b 100644 --- a/docs/zh/component_specs/custom/common.md +++ b/docs/zh/component_specs/custom/common.md @@ -13,14 +13,16 @@ Layotto 中的组件分为两种: ## 配置文件结构 ```json "custom_component": { - "": { + "": { "": { + "type":"", "metadata": { "": "", "": "" } }, "": { + "type":"", "metadata": { "": "", "": "" @@ -33,12 +35,13 @@ Layotto 中的组件分为两种: 您可以在metadata里配置组件关心的key/value配置。 ## 示例 -例如,在`configs/config_in_memory.json` 中,配置了类型是`helloworld` 的 `CustomComponent`,只有一个组件,其组件名是 `in-memory`: +例如,在`configs/config_in_memory.json` 中,配置了 kind 是`helloworld` 的 `CustomComponent`,只有一个组件,其组件名是 `demo`, type 是 `in-memory`: ```json "custom_component": { "helloworld": { - "in-memory": { + "demo": { + "type":"in-memory"", "metadata": {} } } diff --git a/docs/zh/design/api_plugin/design.md b/docs/zh/design/api_plugin/design.md index 8539badee3..7f56191253 100644 --- a/docs/zh/design/api_plugin/design.md +++ b/docs/zh/design/api_plugin/design.md @@ -223,36 +223,7 @@ Layotto 中的组件分为两种: 允许您自己扩展自己的组件,比如下面示例中的 `HelloWorld` 组件。 ##### 解释:如何配置自定义组件? -在 json 配置文件中按以下格式配置: -```json - "custom_component": { - "": { - "": { - "metadata": { - "": "", - "": "" - } - }, - "": { - "metadata": { - "": "", - "": "" - } - } - } - }, -``` - -例如,在`configs/config_in_memory.json` 中,配置了类型是`helloworld` 的 `CustomComponent`,只有一个组件,其组件名是 `in-memory`: -```json - "custom_component": { - "helloworld": { - "in-memory": { - "metadata": {} - } - } - }, -``` +详见[自定义组件的配置文档](zh/component_specs/custom/common) ##### 看个例子 看个具体的例子,在[helloworld 示例中](https://github.com/mosn/layotto/blob/main/cmd/layotto_multiple_api/helloworld/grpc_api.go), `*server` 实现了 `Init` @@ -277,7 +248,7 @@ func NewHelloWorldAPI(ac *grpc_api.ApplicationContext) grpc.GrpcAPI { name2component := make(map[string]component.HelloWorld) if len(ac.CustomComponent) != 0 { // we only care about those components of type "helloworld" - name2comp, ok := ac.CustomComponent[componentType] + name2comp, ok := ac.CustomComponent[kind] if ok && len(name2comp) > 0 { for name, v := range name2comp { // convert them using type assertion diff --git a/pkg/runtime/options.go b/pkg/runtime/options.go index 13e6b9b148..39d7a44f9b 100644 --- a/pkg/runtime/options.go +++ b/pkg/runtime/options.go @@ -48,7 +48,7 @@ type services struct { inputBinding []*mbindings.InputBindingFactory secretStores []*msecretstores.SecretStoresFactory // Custom components. - // The key is component type + // The key is component kind custom map[string][]*custom.ComponentFactory } @@ -102,12 +102,12 @@ func WithErrInterceptor(i ErrInterceptor) Option { } } -func WithCustomComponentFactory(componentType string, factorys ...*custom.ComponentFactory) Option { +func WithCustomComponentFactory(kind string, factorys ...*custom.ComponentFactory) Option { return func(o *runtimeOptions) { if len(factorys) == 0 { return } - o.services.custom[componentType] = append(o.services.custom[componentType], factorys...) + o.services.custom[kind] = append(o.services.custom[kind], factorys...) } } diff --git a/pkg/runtime/runtime.go b/pkg/runtime/runtime.go index faf4ae7bec..27d5390198 100644 --- a/pkg/runtime/runtime.go +++ b/pkg/runtime/runtime.go @@ -560,17 +560,17 @@ func (m *MosnRuntime) initRuntime(r *runtimeOptions) error { return nil } -func (m *MosnRuntime) SetCustomComponent(componentType string, name string, component custom.Component) { - if _, ok := m.customComponent[componentType]; !ok { - m.customComponent[componentType] = make(map[string]custom.Component) +func (m *MosnRuntime) SetCustomComponent(kind string, name string, component custom.Component) { + if _, ok := m.customComponent[kind]; !ok { + m.customComponent[kind] = make(map[string]custom.Component) } - m.customComponent[componentType][name] = component + m.customComponent[kind][name] = component } -func (m *MosnRuntime) initCustomComponents(type2factorys map[string][]*custom.ComponentFactory) error { +func (m *MosnRuntime) initCustomComponents(kind2factorys map[string][]*custom.ComponentFactory) error { log.DefaultLogger.Infof("[runtime] start initializing custom components") // 1. validation - if len(type2factorys) == 0 { + if len(kind2factorys) == 0 { log.DefaultLogger.Infof("[runtime] no custom component factorys compiled") return nil } @@ -579,22 +579,22 @@ func (m *MosnRuntime) initCustomComponents(type2factorys map[string][]*custom.Co return nil } // 2. loop registering all types of components. - for compType, factorys := range type2factorys { + for kind, factorys := range kind2factorys { // 2.0. check empty if len(factorys) == 0 { continue } - name2Config, ok := m.runtimeConfig.CustomComponent[compType] + name2Config, ok := m.runtimeConfig.CustomComponent[kind] if !ok { - log.DefaultLogger.Errorf("[runtime] Your required component type %s is not supported.Please check your configuration", compType) + log.DefaultLogger.Errorf("[runtime] Your required component type %s is not supported.Please check your configuration", kind) continue } // 2.1. register all the factorys - m.customComponentRegistry.Register(compType, factorys...) + m.customComponentRegistry.Register(kind, factorys...) // 2.2. loop initializing component instances for name, config := range name2Config { // create the component - comp, err := m.customComponentRegistry.Create(compType, config.Type) + comp, err := m.customComponentRegistry.Create(kind, config.Type) if err != nil { m.errInt(err, "create custom component %s failed", name) return err @@ -605,7 +605,7 @@ func (m *MosnRuntime) initCustomComponents(type2factorys map[string][]*custom.Co return err } // initialization finish - m.SetCustomComponent(compType, name, comp) + m.SetCustomComponent(kind, name, comp) } } return nil From d940cf9c2a6dea3cad065de2d62e92cb6fc44e3a Mon Sep 17 00:00:00 2001 From: seeflood Date: Thu, 19 May 2022 20:55:08 +0800 Subject: [PATCH 45/62] fix typo Signed-off-by: seeflood --- configs/config_redis.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/configs/config_redis.json b/configs/config_redis.json index 0800552432..c4db395101 100644 --- a/configs/config_redis.json +++ b/configs/config_redis.json @@ -21,9 +21,9 @@ "config": { "server_name": "runtime", "grpc_config": { - "quick_start_demo": { - "type": "hellos", - "helloworld": { + "hellos": { + "quick_start_demo": { + "type": "helloworld", "hello": "greeting" } }, @@ -38,7 +38,7 @@ }, "sequencer": { "sequencer_demo": { - "Type": "redis", + "type": "redis", "metadata": { "redisHost": "127.0.0.1:6380", "redisPassword": "" @@ -47,7 +47,7 @@ }, "lock": { "lock_demo": { - "type" : "redis", + "type": "redis", "metadata": { "redisHost": "localhost:6380", "redisPassword": "" From 17a8c106249f65195021967490e3517df1e58063 Mon Sep 17 00:00:00 2001 From: seeflood Date: Thu, 19 May 2022 20:56:19 +0800 Subject: [PATCH 46/62] demo -> mosn Signed-off-by: seeflood --- configs/config_integration_redis_etcd.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/config_integration_redis_etcd.json b/configs/config_integration_redis_etcd.json index 046910a352..ae5d7c73bf 100644 --- a/configs/config_integration_redis_etcd.json +++ b/configs/config_integration_redis_etcd.json @@ -48,7 +48,7 @@ "server_name": "runtime", "grpc_config": { "rpcs": { - "demo": { + "mosn": { "config": { "channel": [ { From b54b43d41ca3cdeb23b97d8bda782c92651b3a6e Mon Sep 17 00:00:00 2001 From: seeflood Date: Thu, 19 May 2022 20:58:59 +0800 Subject: [PATCH 47/62] fix typo Signed-off-by: seeflood --- docs/zh/component_specs/custom/common.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/component_specs/custom/common.md b/docs/zh/component_specs/custom/common.md index ad5ab8ba7b..9481eeb498 100644 --- a/docs/zh/component_specs/custom/common.md +++ b/docs/zh/component_specs/custom/common.md @@ -41,7 +41,7 @@ Layotto 中的组件分为两种: "custom_component": { "helloworld": { "demo": { - "type":"in-memory"", + "type":"in-memory", "metadata": {} } } From 86253bf0f474a6a83fdd312a20068a17bbdc26b7 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Thu, 19 May 2022 22:21:06 +0800 Subject: [PATCH 48/62] decouple Name and Type --- pkg/runtime/runtime_test.go | 10 +- pkg/runtime/secretstores/factory_test.go | 5 +- sdk/go-sdk/client/client_test.go | 73 +- sdk/go-sdk/client/lock_test.go | 50 +- sdk/go-sdk/go.mod | 7 +- sdk/go-sdk/go.sum | 1126 +++++++++++++++++++++- 6 files changed, 1231 insertions(+), 40 deletions(-) diff --git a/pkg/runtime/runtime_test.go b/pkg/runtime/runtime_test.go index 43f902d04a..c120e73942 100644 --- a/pkg/runtime/runtime_test.go +++ b/pkg/runtime/runtime_test.go @@ -607,7 +607,7 @@ func TestMosnRuntime_runWithPubsub(t *testing.T) { ), // PubSub WithPubSubFactory( - mpubsub.NewFactory("mock", f), + mpubsub.NewFactory("pubsub", f), ), // Sequencer WithSequencerFactory( @@ -664,7 +664,7 @@ func TestMosnRuntime_runWithPubsub(t *testing.T) { ), // PubSub WithPubSubFactory( - mpubsub.NewFactory("mock", f), + mpubsub.NewFactory("pubsub", f), ), ) // 4. assert @@ -711,7 +711,7 @@ func TestMosnRuntime_runWithPubsub(t *testing.T) { ), // PubSub WithPubSubFactory( - mpubsub.NewFactory("mock", f), + mpubsub.NewFactory("pubsub", f), ), ) // 4. assert @@ -758,7 +758,7 @@ func TestMosnRuntime_runWithPubsub(t *testing.T) { ), // PubSub WithPubSubFactory( - mpubsub.NewFactory("mock", f), + mpubsub.NewFactory("pubsub", f), ), ) // 4. assert @@ -814,7 +814,7 @@ func runtimeWithCallbackConnection(t *testing.T) (*MosnRuntime, *mock_appcallbac cfg := &MosnRuntimeConfig{ PubSubManagement: map[string]mpubsub.Config{ "mock": { - Type: "mock", + Type: "pubsub", Metadata: map[string]string{ "target": "layotto", }, diff --git a/pkg/runtime/secretstores/factory_test.go b/pkg/runtime/secretstores/factory_test.go index 087da25c73..fa13f76289 100644 --- a/pkg/runtime/secretstores/factory_test.go +++ b/pkg/runtime/secretstores/factory_test.go @@ -17,6 +17,7 @@ package secretstores */ import ( + "github.com/stretchr/testify/assert" "testing" "mosn.io/layotto/pkg/mock/components/secret" @@ -25,7 +26,9 @@ import ( ) func TestNewFactory(t *testing.T) { - NewFactory("test", func() secretstores.SecretStore { + factory := NewFactory("test", func() secretstores.SecretStore { return secret.FakeSecretStore{} }) + + assert.NotNil(t, factory) } diff --git a/sdk/go-sdk/client/client_test.go b/sdk/go-sdk/client/client_test.go index 8716228f11..e39a302683 100644 --- a/sdk/go-sdk/client/client_test.go +++ b/sdk/go-sdk/client/client_test.go @@ -19,6 +19,7 @@ package client import ( "context" "fmt" + "net" "os" "testing" @@ -29,6 +30,7 @@ import ( "google.golang.org/protobuf/types/known/anypb" empty "google.golang.org/protobuf/types/known/emptypb" + "mosn.io/layotto/components/lock" pb "mosn.io/layotto/spec/proto/runtime/v1" runtimev1pb "mosn.io/layotto/spec/proto/runtime/v1" ) @@ -81,6 +83,7 @@ func getTestClient(ctx context.Context) (client Client, closer func()) { kv: make(map[string]string), subscribed: make(map[string]bool), state: make(map[string][]byte), + lock: make(map[string]string), }) l := bufconn.Listen(testBufSize) @@ -113,9 +116,10 @@ type testRuntimeServer struct { kv map[string]string subscribed map[string]bool state map[string][]byte + lock map[string]string } -func (s *testRuntimeServer) InvokeService(ctx context.Context, req *runtimev1pb.InvokeServiceRequest) (*runtimev1pb.InvokeResponse, error) { +func (t *testRuntimeServer) InvokeService(ctx context.Context, req *runtimev1pb.InvokeServiceRequest) (*runtimev1pb.InvokeResponse, error) { if req.Message == nil { return &runtimev1pb.InvokeResponse{ ContentType: "text/plain", @@ -130,17 +134,17 @@ func (s *testRuntimeServer) InvokeService(ctx context.Context, req *runtimev1pb. }, nil } -func (s *testRuntimeServer) GetState(ctx context.Context, req *runtimev1pb.GetStateRequest) (*runtimev1pb.GetStateResponse, error) { +func (t *testRuntimeServer) GetState(ctx context.Context, req *runtimev1pb.GetStateRequest) (*runtimev1pb.GetStateResponse, error) { return &pb.GetStateResponse{ - Data: s.state[req.Key], + Data: t.state[req.Key], Etag: "1", }, nil } -func (s *testRuntimeServer) GetBulkState(ctx context.Context, in *runtimev1pb.GetBulkStateRequest) (*runtimev1pb.GetBulkStateResponse, error) { +func (t *testRuntimeServer) GetBulkState(ctx context.Context, in *runtimev1pb.GetBulkStateRequest) (*runtimev1pb.GetBulkStateResponse, error) { items := make([]*runtimev1pb.BulkStateItem, 0) for _, k := range in.GetKeys() { - if v, found := s.state[k]; found { + if v, found := t.state[k]; found { item := &pb.BulkStateItem{ Key: k, Etag: "1", @@ -154,7 +158,7 @@ func (s *testRuntimeServer) GetBulkState(ctx context.Context, in *runtimev1pb.Ge }, nil } -func (s *testRuntimeServer) SaveState(ctx context.Context, req *runtimev1pb.SaveStateRequest) (*empty.Empty, error) { +func (t *testRuntimeServer) SaveState(ctx context.Context, req *runtimev1pb.SaveStateRequest) (*empty.Empty, error) { if req == nil { return &empty.Empty{}, nil } @@ -162,31 +166,31 @@ func (s *testRuntimeServer) SaveState(ctx context.Context, req *runtimev1pb.Save if item == nil { continue } - s.state[item.Key] = item.Value + t.state[item.Key] = item.Value } return &empty.Empty{}, nil } -func (s *testRuntimeServer) DeleteState(ctx context.Context, req *runtimev1pb.DeleteStateRequest) (*empty.Empty, error) { - delete(s.state, req.Key) +func (t *testRuntimeServer) DeleteState(ctx context.Context, req *runtimev1pb.DeleteStateRequest) (*empty.Empty, error) { + delete(t.state, req.Key) return &empty.Empty{}, nil } -func (s *testRuntimeServer) DeleteBulkState(ctx context.Context, req *runtimev1pb.DeleteBulkStateRequest) (*empty.Empty, error) { +func (t *testRuntimeServer) DeleteBulkState(ctx context.Context, req *runtimev1pb.DeleteBulkStateRequest) (*empty.Empty, error) { for _, item := range req.States { - delete(s.state, item.Key) + delete(t.state, item.Key) } return &empty.Empty{}, nil } -func (s *testRuntimeServer) ExecuteStateTransaction(ctx context.Context, in *runtimev1pb.ExecuteStateTransactionRequest) (*empty.Empty, error) { +func (t *testRuntimeServer) ExecuteStateTransaction(ctx context.Context, in *runtimev1pb.ExecuteStateTransactionRequest) (*empty.Empty, error) { for _, op := range in.GetOperations() { item := op.GetRequest() switch opType := op.GetOperationType(); opType { case "upsert": - s.state[item.Key] = item.Value + t.state[item.Key] = item.Value case "delete": - delete(s.state, item.Key) + delete(t.state, item.Key) default: return &empty.Empty{}, fmt.Errorf("invalid operation type: %s", opType) } @@ -194,7 +198,7 @@ func (s *testRuntimeServer) ExecuteStateTransaction(ctx context.Context, in *run return &empty.Empty{}, nil } -func (s *testRuntimeServer) PublishEvent(ctx context.Context, req *runtimev1pb.PublishEventRequest) (*empty.Empty, error) { +func (t *testRuntimeServer) PublishEvent(ctx context.Context, req *runtimev1pb.PublishEventRequest) (*empty.Empty, error) { return &empty.Empty{}, nil } @@ -264,3 +268,42 @@ func (*testRuntimeServer) GetBulkSecret(ctx context.Context, in *runtimev1pb.Get } return resp, nil } + +func (t *testRuntimeServer) TryLock(ctx context.Context, in *runtimev1pb.TryLockRequest) (*runtimev1pb.TryLockResponse, error) { + + if len(t.lock[in.ResourceId]) == 0 { + t.lock[in.ResourceId] = in.LockOwner + resp := &runtimev1pb.TryLockResponse{ + Success: true, + } + return resp, nil + } else { + resp := &runtimev1pb.TryLockResponse{ + Success: false, + } + return resp, nil + } +} + +func (t *testRuntimeServer) Unlock(ctx context.Context, in *runtimev1pb.UnlockRequest) (*runtimev1pb.UnlockResponse, error) { + if len(t.lock[in.ResourceId]) != 0 { + if t.lock[in.ResourceId] == in.LockOwner { + delete(t.lock, in.ResourceId) + resp := &runtimev1pb.UnlockResponse{ + Status: runtimev1pb.UnlockResponse_Status(lock.SUCCESS), + } + return resp, nil + } else { + resp := &runtimev1pb.UnlockResponse{ + Status: runtimev1pb.UnlockResponse_Status(lock.LOCK_BELONG_TO_OTHERS), + } + return resp, nil + } + + } else { + resp := &runtimev1pb.UnlockResponse{ + Status: runtimev1pb.UnlockResponse_Status(lock.LOCK_UNEXIST), + } + return resp, nil + } +} diff --git a/sdk/go-sdk/client/lock_test.go b/sdk/go-sdk/client/lock_test.go index 2e29afa951..1f741d0ad7 100644 --- a/sdk/go-sdk/client/lock_test.go +++ b/sdk/go-sdk/client/lock_test.go @@ -18,6 +18,8 @@ package client import ( "context" + "github.com/stretchr/testify/assert" + "mosn.io/layotto/components/lock" runtimev1pb "mosn.io/layotto/spec/proto/runtime/v1" "testing" ) @@ -25,15 +27,55 @@ import ( func TestTryLock(t *testing.T) { ctx := context.Background() t.Run("try lock", func(t *testing.T) { - request := runtimev1pb.TryLockRequest{} - testClient.TryLock(ctx, &request) + request := runtimev1pb.TryLockRequest{ + ResourceId: "lock_test", + LockOwner: "layotto", + } + lock, err := testClient.TryLock(ctx, &request) + assert.Nil(t, err) + assert.NotNil(t, lock.Success, true) }) } func TestUnLock(t *testing.T) { ctx := context.Background() t.Run("try lock", func(t *testing.T) { - request := runtimev1pb.UnlockRequest{} - testClient.Unlock(ctx, &request) + request := runtimev1pb.TryLockRequest{ + ResourceId: "lock_test", + LockOwner: "layotto", + } + lock, err := testClient.TryLock(ctx, &request) + assert.Nil(t, err) + assert.NotNil(t, lock.Success, true) + }) + + t.Run("unlock", func(t *testing.T) { + request := runtimev1pb.UnlockRequest{ + ResourceId: "lock_test", + LockOwner: "layotto1", + } + unlock, err := testClient.Unlock(ctx, &request) + assert.Nil(t, err) + assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_Status(lock.LOCK_BELONG_TO_OTHERS)) + }) + + t.Run("unlock", func(t *testing.T) { + request := runtimev1pb.UnlockRequest{ + ResourceId: "lock_test", + LockOwner: "layotto", + } + unlock, err := testClient.Unlock(ctx, &request) + assert.Nil(t, err) + assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_Status(lock.SUCCESS)) + }) + + t.Run("unlock", func(t *testing.T) { + request := runtimev1pb.UnlockRequest{ + ResourceId: "lock_test", + LockOwner: "layotto", + } + unlock, err := testClient.Unlock(ctx, &request) + assert.Nil(t, err) + assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_Status(lock.LOCK_UNEXIST)) }) } diff --git a/sdk/go-sdk/go.mod b/sdk/go-sdk/go.mod index 35224da897..9740afc7c6 100644 --- a/sdk/go-sdk/go.mod +++ b/sdk/go-sdk/go.mod @@ -3,11 +3,12 @@ module mosn.io/layotto/sdk/go-sdk go 1.14 require ( - github.com/golang/protobuf v1.5.0 + github.com/golang/protobuf v1.5.2 github.com/pkg/errors v0.9.1 github.com/stretchr/testify v1.7.0 - google.golang.org/grpc v1.37.0 - google.golang.org/protobuf v1.26.0-rc.1 + google.golang.org/grpc v1.38.0 + google.golang.org/protobuf v1.26.0 + mosn.io/layotto/components v0.0.0-20220519092435-5db44ed16f38 mosn.io/layotto/spec v0.0.0-20210707123820-584778d048d3 ) diff --git a/sdk/go-sdk/go.sum b/sdk/go-sdk/go.sum index aa5bc4e378..0afacedab2 100644 --- a/sdk/go-sdk/go.sum +++ b/sdk/go-sdk/go.sum @@ -1,18 +1,259 @@ cloud.google.com/go v0.26.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.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw= +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= +cloud.google.com/go v0.44.2/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.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.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +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/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= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +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= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU= 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/HdrHistogram/hdrhistogram-go v1.0.1/go.mod h1:BWJ+nMSHY3L41Zj7CA3uXnloDp7xxV0YvstAE7nKTaM= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM= +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/SkyAPM/go2sky v0.5.0/go.mod h1:TANzYw5EvIlTidGWvQxtvO87rM6C746HkM0xkWqnPQw= +github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/TarsCloud/TarsGo v1.1.4/go.mod h1:jkslu43B0kZitq9ztCH6ZM6l4rCKGkMjdqEPjHoOdjc= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/Xuanwo/gg v0.2.0/go.mod h1:0fLiiSxR87u2UA0ZNZiKZXuz3jnJdbDHWtU2xpdcH3s= +github.com/Xuanwo/go-bufferpool v0.2.0/go.mod h1:Mle++9GGouhOwGj52i9PJLNAPmW2nb8PWBP7JJzNCzk= +github.com/Xuanwo/templateutils v0.1.0/go.mod h1:OdE0DJ+CJxDBq6psX5DPV+gOZi8bhuHuVUpPCG++Wb8= +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/alibaba/sentinel-golang v1.0.2-0.20210112133552-db6063eb263e/go.mod h1:uHDiUhfQjc9ACs9AdwP9CxmSze/B7tJ74QCdAbWl7x0= +github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= +github.com/alicebob/miniredis/v2 v2.16.0/go.mod h1:gquAfGbzn92jvtrSC69+6zZnwSODVXVpYDRaGhWaL6I= +github.com/aliyun/alibaba-cloud-sdk-go v1.61.18/go.mod h1:v8ESoHo4SyHmuB4b1tJqDHxfTGEciD+yhvOU/5s1Rfk= +github.com/aliyun/aliyun-oss-go-sdk v2.1.8+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= +github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= +github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/antlr/antlr4 v0.0.0-20200503195918-621b933c7a7f/go.mod h1:T7PbCXFs94rrTttyxjbyT5+/1V8T2TYDejxUfHJjw1Y= +github.com/apache/dubbo-go-hessian2 v1.7.0/go.mod h1:7rEw9guWABQa6Aqb8HeZcsYPHsOS7XT1qtJvkmI6c5w= +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/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/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/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/config v1.8.2/go.mod h1:r0bkX9NyuCuf28qVcsEMtpAQibT7gA1Q0gzkjvgJdLU= +github.com/aws/aws-sdk-go-v2/credentials v1.4.2/go.mod h1:9Sp6u121/f0NnvHyhG7dgoYeUTEFC2vsvJqJ6wXpkaI= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.5.1/go.mod h1:W1ldHfsgeGlKpJ4xZMKZUI6Wmp6EAstU7PxnhbXWWrI= +github.com/aws/aws-sdk-go-v2/internal/ini v1.2.3/go.mod h1:EES9ToeC3h063zCFDdqWGnARExNdULPaBvARm1FLwxA= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.3.0/go.mod h1:v8ygadNyATSm6elwJ/4gzJwcFhri9RqS8skgHKiwXPU= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.1/go.mod h1:Ve+eJOx9UWaT/lMVebnFhDhO49fSLVedHoA82+Rqme0= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.7.1/go.mod h1:yg4EN/BKoc7+DLhNOxxdvoO3+iyW2FuynvaKqLcLDUM= +github.com/aws/aws-sdk-go-v2/service/s3 v1.16.0/go.mod h1:Tk23mCmfL3wb3tNIeMk/0diUZ0W4R6uZtjYKguMLW2s= +github.com/aws/aws-sdk-go-v2/service/sso v1.4.1/go.mod h1:ycPdbJZlM0BLhuBnd80WX9PucWPG88qps/2jl9HugXs= +github.com/aws/aws-sdk-go-v2/service/sts v1.7.1/go.mod h1:r1i8QwKPzwByXqZb3POQfBs7jozrdnHz8PVbsvyx73w= +github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= +github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/c2h5oh/datasize v0.0.0-20171227191756-4eba002a5eae/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cch123/supermonkey v1.0.1-0.20210420090843-d792ef7fb1d7/go.mod h1:d5jXTCyG6nu/pu0vYmoC0P/l0eBGesv3oQQ315uNBOA= +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/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/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +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/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-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= +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-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/colinmarc/hdfs/v2 v2.2.0/go.mod h1:Wss6n3mtaZyRwWaqtSH+6ge01qT0rw9dJJmvoUnIQ/E= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +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.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/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/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/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/dave/dst v0.26.2/go.mod h1:UMDJuIRPfyUCC78eFuB+SV/WI8oDeyFDvM/JR6NI3IU= +github.com/dave/gopackages v0.0.0-20170318123100-46e7023ec56e/go.mod h1:i00+b/gKdIDIxuLDFob7ustLAVqhsZRk2qVZrArELGQ= +github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= +github.com/dave/kerr v0.0.0-20170318121727-bc25dd6abe8e/go.mod h1:qZqlPyPvfsDJt+3wHJ1EvSXDuVjFTK0j2p/ca+gtsb8= +github.com/dave/rebecca v0.9.1/go.mod h1:N6XYdMD/OKw3lkF3ywh8Z6wPGuwNFDNtWYEMFWEmXBA= +github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/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/dchest/siphash v1.2.1/go.mod h1:q+IRvb2gOSrUnYoPqHiyHXS0FOBBOdl6tONBlVnOnt4= +github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/dubbogo/getty v1.3.4/go.mod h1:36f+gH/ekaqcDWKbxNBQk9b9HXcGtaI6YHxp4YTntX8= +github.com/dubbogo/go-zookeeper v1.0.3/go.mod h1:fn6n2CAEer3novYgk9ULLwAjuV8/g4DdC2ENwRb6E+c= +github.com/dubbogo/gost v1.5.2/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8= +github.com/dubbogo/gost v1.9.0/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8= +github.com/dubbogo/gost v1.11.11/go.mod h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI= +github.com/dubbogo/gost v1.11.16/go.mod h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI= +github.com/dubbogo/jsonparser v1.0.1/go.mod h1:tYAtpctvSP/tWw4MeelsowSPgXQRVHHWbqL6ynps8jU= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +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/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239/go.mod h1:Gdwt2ce0yfBxPvZrHkprdPPTTS3N5rwmLE8T22KBXlw= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +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/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/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/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/go-chi/chi v4.1.0+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +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-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/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +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-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/validator/v10 v10.8.0/go.mod h1:9JhgTzTaE31GZDpH/HSvHiRJrJ3iKAgqqH0Bl/Ocjdk= +github.com/go-redis/redis/v8 v8.8.0/go.mod h1:F7resOH5Kdug49Otu24RjHWwgK7u9AmtqWMnCV1iP5Y= +github.com/go-resty/resty/v2 v2.6.0/go.mod h1:PwvJS6hvaPkjtjNg9ph+VrSD92bi5Zq73w/BIH7cC3Q= +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-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:56xuuqnHyryaerycW3BfssRdxQstACi0Epw/yC5E2xM= +github.com/go-xorm/xorm v0.7.9/go.mod h1:XiVxrMMIhFkwSkh96BW7PACl7UhLtx2iJIHMdmjh5sQ= +github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= +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/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= +github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= 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.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +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.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.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= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -20,62 +261,851 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0 h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4= +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/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/cel-go v0.5.1/go.mod h1:9SvtVVTtZV4DTB1/RuAD1D2HhuqEIdmZEE/r/lrFyKE= +github.com/google/cel-spec v0.4.0/go.mod h1:2pBM5cU4UKjbPDXBgwWkiwBsVgnxknuEJ7C5TDWwORQ= 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.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +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.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181127221834-b4f47329b966/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +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-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +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.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.3.0/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/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +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/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/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= +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/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +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.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= +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.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.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/api v1.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.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= +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/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2/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/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/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +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/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= +github.com/jackc/pgx v3.6.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= +github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= +github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= +github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= +github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= +github.com/jcmturner/gokrb5/v8 v8.4.1/go.mod h1:T1hnNppQsBtxW0tCHMHTkAt8n/sABdzZgZdoFrZaZNM= +github.com/jcmturner/rpc/v2 v2.0.2/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= +github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag= +github.com/jinzhu/copier v0.3.2/go.mod h1:24xnZezI2Yqac9J61UC6/dG/k76ttpq0DdJI3QmUvro= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +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/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.5/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/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/ansiterm v0.0.0-20160907234532-b99631de12cf/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= +github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c/go.mod h1:nD0vlnrUjcjJhqN5WuCWZyzfd5AHZAC9/ajvbSx69xA= +github.com/juju/cmd v0.0.0-20171107070456-e74f39857ca0/go.mod h1:yWJQHl73rdSX4DHVKGqkAip+huBslxRwS8m9CrOLq18= +github.com/juju/collections v0.0.0-20200605021417-0d0ec82b7271/go.mod h1:5XgO71dV1JClcOJE+4dzdn4HrI5LiyKd7PlVG6eZYhY= +github.com/juju/errors v0.0.0-20150916125642-1b5e39b83d18/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= +github.com/juju/errors v0.0.0-20190930114154-d42613fe1ab9/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= +github.com/juju/errors v0.0.0-20200330140219-3fe23663418f/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= +github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE= +github.com/juju/httpprof v0.0.0-20141217160036-14bf14c30767/go.mod h1:+MaLYz4PumRkkyHYeXJ2G5g5cIW0sli2bOfpmbaMV/g= +github.com/juju/loggo v0.0.0-20170605014607-8232ab8918d9/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= +github.com/juju/loggo v0.0.0-20200526014432-9ce3a2e09b5e/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= +github.com/juju/mgo/v2 v2.0.0-20210302023703-70d5d206e208/go.mod h1:0OChplkvPTZ174D2FYZXg4IB9hbEwyHkD+zT+/eK+Fg= +github.com/juju/mutex v0.0.0-20171110020013-1fe2a4bf0a3a/go.mod h1:Y3oOzHH8CQ0Ppt0oCKJ2JFO81/EsWenH5AEqigLH+yY= +github.com/juju/retry v0.0.0-20151029024821-62c620325291/go.mod h1:OohPQGsr4pnxwD5YljhQ+TZnuVRYpa5irjugL1Yuif4= +github.com/juju/retry v0.0.0-20180821225755-9058e192b216/go.mod h1:OohPQGsr4pnxwD5YljhQ+TZnuVRYpa5irjugL1Yuif4= +github.com/juju/testing v0.0.0-20180402130637-44801989f0f7/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= +github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= +github.com/juju/testing v0.0.0-20210324180055-18c50b0c2098/go.mod h1:7lxZW0B50+xdGFkvhAb8bwAGt6IU87JB1H9w4t8MNVM= +github.com/juju/utils v0.0.0-20180424094159-2000ea4ff043/go.mod h1:6/KLg8Wz/y2KVGWEpkK9vMNGkOnu4k/cqs8Z1fKjTOk= +github.com/juju/utils v0.0.0-20200116185830-d40c2fe10647/go.mod h1:6/KLg8Wz/y2KVGWEpkK9vMNGkOnu4k/cqs8Z1fKjTOk= +github.com/juju/utils/v2 v2.0.0-20200923005554-4646bfea2ef1/go.mod h1:fdlDtQlzundleLLz/ggoYinEt/LmnrpNKcNTABQATNI= +github.com/juju/version v0.0.0-20161031051906-1f41e27e54f2/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U= +github.com/juju/version v0.0.0-20180108022336-b64dbd566305/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U= +github.com/juju/version v0.0.0-20191219164919-81c1be00b9a6/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U= +github.com/julienschmidt/httprouter v1.1.1-0.20151013225520-77a895ad01eb/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +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/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= +github.com/k0kubun/pp v3.0.1+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg= +github.com/kevinburke/go-bindata v3.22.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +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/klauspost/compress v1.10.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.12.2/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +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/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4= +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/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/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/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/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/lestrrat/go-envload v0.0.0-20180220120943-6ed08b54a570/go.mod h1:BLt8L9ld7wVsvEWQbuLrUZnCMnUmLZ+CGDzKtclrTlE= +github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f/go.mod h1:UGmTpUd3rjbtfIpwAPrcfmGf/Z1HS95TATB+m57TPB8= +github.com/lestrrat/go-jwx v0.0.0-20180221005942-b7d4802280ae/go.mod h1:T+yHdCP6MJKtzoVQMHvVCeam5VFwX1+rWzn5zZgKYMI= +github.com/lestrrat/go-pdebug v0.0.0-20180220043741-569c97477ae8/go.mod h1:VXFH11P7fHn2iPBsfSW1JacR59rttTcafJnwYcI/IdY= +github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042/go.mod h1:TPpsiPUEh0zFL1Snz4crhMlBe60PYxRHr5oFF3rRYg0= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +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/lunixbochs/vtclean v0.0.0-20160125035106-4fbf7632a2c6/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/masterzen/azure-sdk-for-go v3.2.0-beta.0.20161014135628-ee4f0065d00c+incompatible/go.mod h1:mf8fjOu33zCqxUjuiU3I8S1lJMyEAlH+0F2+M5xl3hE= +github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= +github.com/masterzen/winrm v0.0.0-20161014151040-7a535cd943fc/go.mod h1:CfZSN7zwz5gJiFhZJz49Uzk7mEBHIceWmbFmYx7Hf7E= +github.com/masterzen/xmlpath v0.0.0-20140218185901-13f4951698ad/go.mod h1:A0zPC53iKKKcXYxr4ROjpQRQ5FgJXtelNdSmHHuq/tY= +github.com/mattn/go-colorable v0.0.6/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-isatty v0.0.0-20160806122752-66b8e73f3f5c/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +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/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +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/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.25/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw= +github.com/minio/minio-go/v7 v7.0.15/go.mod h1:pUV0Pc+hPd1nccgmzQF/EXh48l/Z/yps6QPF1aaie4g= +github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= +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 v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +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.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +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/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/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/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/nacos-group/nacos-sdk-go v1.0.8/go.mod h1:hlAPn3UdzlxIlSILAyOXKxjFSvDJ9oLzTJ9hLAK1KzA= +github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk= +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/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= +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 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.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/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.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/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +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/opentrx/seata-golang/v2 v2.0.4/go.mod h1:uVMIDsvM4NBQXoZgtfHleBGrAqwkUry3jD3cf/JYi9k= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.3.5/go.mod h1:uVHyebswE1cCXr2A73cRM2frx5ld1RJUCJkFNZ90ZiI= +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/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/pborman/getopt v0.0.0-20180729010549-6fdd0a2c7117/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.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +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/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/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/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/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.5.1/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.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-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/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.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.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/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/qiniu/dyn v1.3.0/go.mod h1:E8oERcm8TtwJiZvkQPbcAh0RL8jO1G0VXJMW3FAWdkk= +github.com/qiniu/go-sdk/v7 v7.11.1/go.mod h1:btsaOc8CA3hdVloULfFdDgDc+g4f3TDZEFsDY0BLE+w= +github.com/qiniu/x v1.10.5/go.mod h1:03Ni9tj+N2h2aKnAz+6N0Xfl8FwMEDRC2PAlxekASDs= +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/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +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/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +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/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shirou/gopsutil v3.20.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil/v3 v3.20.11/go.mod h1:igHnfak0qnw1biGeI2qKQvu0ZkwvEkUcCLlYhZzdr/4= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +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.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/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +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/goconvey v1.6.6/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/soheilhy/cmux v0.1.5-0.20210205191134-5ec6847320e5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +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/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +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/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/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/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +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/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/testify v0.0.0-20151208002404-e3a8ff8ce365/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/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tebeka/strftime v0.1.3/go.mod h1:7wJm3dZlpr4l/oVK0t1HYIc4rMzQ2XJlOMIUJUJH6XQ= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.194/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.194/go.mod h1:yrBKWhChnDqNz1xuXdSbWXG56XawEq0G5j1lg4VwBD4= +github.com/tencentyun/cos-go-sdk-v5 v0.7.33/go.mod h1:4E4+bQ2gBVJcgEC9Cufwylio4mXOct2iu05WjgEBx1o= +github.com/tevid/gohamcrest v1.1.1/go.mod h1:3UvtWlqm8j5JbwYZh80D/PVBt0mJ1eJiYgZMibh0H/k= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +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/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3/go.mod h1:QDlpd3qS71vYtakd2hmdpqhJ9nwv6mD6A30bQ1BPBFE= +github.com/trainyao/go-maglev v0.0.0-20200611125015-4c1ae64d96a8/go.mod h1:VBsRn0SDTltC3/SzN6SgXlQtmBk6U5sf0KW+eT+WMbc= +github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/uber/jaeger-lib v2.4.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +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/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.14.1-0.20200605121233-ac51d598dc54/go.mod h1:hWrFNtR2Jc1XrK0fDq2Y+MkA7F/v3lYKRDXd2CmSikc= +github.com/valyala/fasthttp v1.26.0/go.mod h1:cmWIqlu99AO/RKcp1HWaViTqc57FswJOfYYdPJBl8BA= +github.com/valyala/fasttemplate v1.1.0/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +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/wasmerio/wasmer-go v1.0.3/go.mod h1:0gzVdSfg6pysA6QVp6iVRPTagC6Wq9pOE8J86WKb2Fk= +github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= +github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= +github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= +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/gopher-lua v0.0.0-20200816102855-ee81675732da/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA= +github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= +github.com/zouyx/agollo/v4 v4.0.7/go.mod h1:unhojnZiGLlT4gLpWz3Oa7sGcChZWv/1DJBkV6s8uAE= +go.beyondstorage.io/endpoint v1.2.0/go.mod h1:oZ7Z7HZ7mAo337JBLjuCF/DM66HVEUu6+hw68c3UcLs= +go.beyondstorage.io/services/hdfs v0.3.0/go.mod h1:yU0eL80JczPPuR5hoK21Dck0H9gXDBu3WN51Od7wtlo= +go.beyondstorage.io/v5 v5.0.0/go.mod h1:3wV9gCQnqu7tD/3LMeo2yimUKIeTSHpTc6wHSb0yY20= +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/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/api/v3 v3.5.0-alpha.0/go.mod h1:mPcW6aZJukV6Aa81LSKpBjQXTWlXB5r74ymPoSWa3Sw= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.0-alpha.0/go.mod h1:kdV+xzCJ3luEBSIeQyB/OEKkWKd8Zkux4sbDeANrosU= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/client/v3 v3.5.0-alpha.0/go.mod h1:wKt7jgDgf/OfKiYmCq5WFGxOFAkVMLxiiXgLDFhECr8= +go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= +go.etcd.io/etcd/pkg/v3 v3.5.0-alpha.0/go.mod h1:tV31atvwzcybuqejDoY3oaNRTtlD2l/Ot78Pc9w7DMY= +go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= +go.etcd.io/etcd/raft/v3 v3.5.0-alpha.0/go.mod h1:FAwse6Zlm5v4tEWZaTjmNhe17Int4Oxbu7+2r0DiD3w= +go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= +go.etcd.io/etcd/server/v3 v3.5.0-alpha.0/go.mod h1:tsKetYpt980ZTpzl/gb+UOJj9RkIyCb1u4wjzMg90BQ= +go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= +go.mongodb.org/mongo-driver v1.8.0/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= +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.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/otel v0.19.0/go.mod h1:j9bF567N9EfomkSidSfmMwIwIBuP37AMAIzVW85OxSg= +go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= +go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= +go.opentelemetry.io/otel/metric v0.19.0/go.mod h1:8f9fglJPRnXuskQmKpnad31lcLJ2VmNNqIsx/uIwBSc= +go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= +go.opentelemetry.io/otel/oteltest v0.19.0/go.mod h1:tI4yxwh8U21v7JD6R3BcA/2+RBoTKFexE/PJ/nSO7IA= +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/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.19.0/go.mod h1:4IXiNextNOpPnRlI4ryK69mn5iC84bjBWZQA5DXz/qg= +go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +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.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/automaxprocs v1.3.0/go.mod h1:9CWT6lKIep8U41DDaPiH6eFscnTyjfTANNQNx6LrIcA= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +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.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +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.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= +go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +golang.org/x/arch v0.0.0-20180920145803-b19384d3c130/go.mod h1:cYlCBUl1MsqxdiKgmc4uh7TxZfWSFLOGSRR090WDxt8= +golang.org/x/arch v0.0.0-20200826200359-b19915210f00/go.mod h1:flIaEI6LNU6xOCD5PaJvn9wGP0agmIOqjrtsKGRguv4= +golang.org/x/crypto v0.0.0-20180214000028-650f4a345ab4/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-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +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-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/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-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= 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-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.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180406214816-61147c48b25b/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-20180826012351-8a410e7b638d/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 h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628= 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= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-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-20191004110552-13f9640d40b9/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-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/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-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-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210614182718-04defd469f4e h1:XpT3nA5TvE525Ne3hInMh6+GETgn27Zfm9dxsThnX2Q= +golang.org/x/net v0.0.0-20210614182718-04defd469f4e/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= +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-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= 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-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/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-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9/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-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +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-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-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-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-20191026070338-33540a1f6037/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= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +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-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200602100848-8d3cce7afc34/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/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-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201024232916-9f70ab9862d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201223074533-0d417f636930/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/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-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-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211020174200-9d6173849985 h1:LOlKVhfDyahgmqa97awczplwkjzNaELFg3zRIJ13RYo= +golang.org/x/sys v0.0.0-20211020174200-9d6173849985/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/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.1-0.20181010134911-4d1c5fb19474/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +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.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/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-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/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-20180828015842-6cd1fcedba52/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-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= 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= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/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-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-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-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-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= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/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-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/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-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-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-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20201014170642-d1624618ad65/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +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.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.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= +google.golang.org/api v0.9.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.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/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.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.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.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/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-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-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/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-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-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-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +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-20200806141610-86f49bd18e98/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-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.37.0 h1:uSZWeQJX5j11bIQ4AJoj+McDBo29cY1MCoC1wO3ts+c= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc/examples v0.0.0-20210818220435-8ab16ef276a3/go.mod h1:bF8wuZSAZTcbF7ZPKrDI/qY52toTP/yxLpRRY4Eu9Js= 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= @@ -84,13 +1114,85 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +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 h1:7QnIQpGRHE5RnLKnESfDoxm2dTapTZua5a0kS0A+VXQ= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= +google.golang.org/protobuf v1.26.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-20160105164936-4f90aeace3a2/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-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/errgo.v1 v1.0.0-20161222125816-442357a80af5/go.mod h1:u0ALmqvLRxLI95fkdCEWrE6mhWYZW1aMOJHp5YXLHTg= +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/httprequest.v1 v1.1.1/go.mod h1:/CkavNL+g3qLOrpFHVrEx4NKepeqR4XTZWNj4sGGjz0= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/mgo.v2 v2.0.0-20160818015218-f2b6f6c918c4/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +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/src-d/go-billy.v4 v4.3.0/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637/go.mod h1:BHsqpu/nsuzkT5BpiH1EMZPLyqSMM8JbIavyFACoFNk= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170712054546-1be3d31502d6/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +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.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +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/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/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= +istio.io/api v0.0.0-20200227213531-891bf31f3c32/go.mod h1:bcY3prusO/6vA6zGHz4PNG2v79clPyTw06Xx3fprJSQ= +istio.io/gogo-genproto v0.0.0-20190930162913-45029607206a/go.mod h1:OzpAts7jljZceG4Vqi5/zXy/pOg1b209T3jb7Nv5wIs= +k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= +k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= +k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM= +launchpad.net/xmlpath v0.0.0-20130614043138-000000000004/go.mod h1:vqyExLOM3qBx7mvYRkoxjSCF945s0mbe7YynlKYXtsA= +mosn.io/api v0.0.0-20210204052134-5b9a826795fd/go.mod h1:TBv4bz2f2RbpgdohbVAFRFVOoN8YyEUiLH3jAh752Qc= +mosn.io/api v0.0.0-20211217011300-b851d129be01/go.mod h1:TBv4bz2f2RbpgdohbVAFRFVOoN8YyEUiLH3jAh752Qc= +mosn.io/layotto/components v0.0.0-20220519092435-5db44ed16f38 h1:7jiT7KYm3e8c00O/1Vv2V+qDZGA6qzefhZqIoLszYF4= +mosn.io/layotto/components v0.0.0-20220519092435-5db44ed16f38/go.mod h1:EaUv7I3YjQNmeHfT3afM4tzVQgjBPC3tyDQWoilhXlM= +mosn.io/mosn v0.25.1-0.20211217125944-69b50c40af81/go.mod h1:JwLkls6oMaap0+P1uZ1d1ccdLPigdK8xH8gDSm3SEq4= +mosn.io/pkg v0.0.0-20211217101631-d914102d1baf/go.mod h1:tK3Vbw6CcVeJ9H/BGjJ1wn6hRXt4Oxjfq1+gkOM0zG8= +mosn.io/proxy-wasm-go-host v0.1.1-0.20210524020952-3fb13ba763a6/go.mod h1:wBRY9Xjf77GZhvAuEc6nQXZ6dQK39kNU2ok/+Z8mSU8= +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/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +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= +vimagination.zapto.org/byteio v0.0.0-20200222190125-d27cba0f0b10/go.mod h1:fl9OF22g6MTKgvHA1hqMXe/L7+ULWofVTwbC9loGu7A= +vimagination.zapto.org/memio v0.0.0-20200222190306-588ebc67b97d/go.mod h1:zHGDKp2tyvF4IAfLti4pKYqCJucXYmmKMb3UMrCHK/4= +xorm.io/builder v0.3.6/go.mod h1:LEFAPISnRzG+zxaxj2vPicRwz67BdhFreKg8yv8/TgU= +xorm.io/builder v0.3.9/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE= +xorm.io/core v0.7.2-0.20190928055935-90aeac8d08eb/go.mod h1:jJfd0UAEzZ4t87nbQYtVjmqpIODugN6PD2D9E+dJvdM= From 45ce42665fe11db57a43e20bbee7d2239d7838b3 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Thu, 19 May 2022 22:28:45 +0800 Subject: [PATCH 49/62] decouple Name and Type --- pkg/runtime/secretstores/factory_test.go | 2 +- sdk/go-sdk/client/lock_test.go | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/runtime/secretstores/factory_test.go b/pkg/runtime/secretstores/factory_test.go index fa13f76289..4a9743c007 100644 --- a/pkg/runtime/secretstores/factory_test.go +++ b/pkg/runtime/secretstores/factory_test.go @@ -17,12 +17,12 @@ package secretstores */ import ( - "github.com/stretchr/testify/assert" "testing" "mosn.io/layotto/pkg/mock/components/secret" "github.com/dapr/components-contrib/secretstores" + "github.com/stretchr/testify/assert" ) func TestNewFactory(t *testing.T) { diff --git a/sdk/go-sdk/client/lock_test.go b/sdk/go-sdk/client/lock_test.go index 1f741d0ad7..bd3f974f36 100644 --- a/sdk/go-sdk/client/lock_test.go +++ b/sdk/go-sdk/client/lock_test.go @@ -17,11 +17,14 @@ package client */ import ( + "testing" + + "mosn.io/layotto/components/lock" + "context" "github.com/stretchr/testify/assert" - "mosn.io/layotto/components/lock" + runtimev1pb "mosn.io/layotto/spec/proto/runtime/v1" - "testing" ) func TestTryLock(t *testing.T) { From 7137fdeff0d507094a77ea81da92879ac8350725 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Thu, 19 May 2022 22:51:58 +0800 Subject: [PATCH 50/62] decouple Name and Type --- demo/go.mod | 8 +- demo/go.sum | 1066 ++++++++++++++++++++++++++++++ demo/sequencer/common/client.go | 1 + docs/en/start/sequencer/start.md | 2 +- 4 files changed, 1072 insertions(+), 5 deletions(-) diff --git a/demo/go.mod b/demo/go.mod index 109a79ee5a..549c6bb140 100644 --- a/demo/go.mod +++ b/demo/go.mod @@ -3,12 +3,12 @@ module mosn.io/layotto/demo go 1.14 require ( - github.com/golang/protobuf v1.5.0 - github.com/google/uuid v1.2.0 + github.com/golang/protobuf v1.5.2 + github.com/google/uuid v1.3.0 github.com/minio/minio-go/v7 v7.0.15 github.com/tetratelabs/proxy-wasm-go-sdk v0.14.1-0.20210922004205-46e3ac3a25fe - google.golang.org/grpc v1.37.0 - google.golang.org/protobuf v1.26.0-rc.1 + google.golang.org/grpc v1.38.0 + google.golang.org/protobuf v1.26.0 mosn.io/layotto/sdk/go-sdk v0.0.0-20211020084508-6f5ee3cfeba0 mosn.io/layotto/spec v0.0.0-20211020084508-6f5ee3cfeba0 ) diff --git a/demo/go.sum b/demo/go.sum index 1bbc5afdef..8f6c2afc10 100644 --- a/demo/go.sum +++ b/demo/go.sum @@ -1,21 +1,260 @@ cloud.google.com/go v0.26.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.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw= +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= +cloud.google.com/go v0.44.2/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.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.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +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/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= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +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= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU= 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/HdrHistogram/hdrhistogram-go v1.0.1/go.mod h1:BWJ+nMSHY3L41Zj7CA3uXnloDp7xxV0YvstAE7nKTaM= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM= +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/SkyAPM/go2sky v0.5.0/go.mod h1:TANzYw5EvIlTidGWvQxtvO87rM6C746HkM0xkWqnPQw= +github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/TarsCloud/TarsGo v1.1.4/go.mod h1:jkslu43B0kZitq9ztCH6ZM6l4rCKGkMjdqEPjHoOdjc= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/Xuanwo/gg v0.2.0/go.mod h1:0fLiiSxR87u2UA0ZNZiKZXuz3jnJdbDHWtU2xpdcH3s= +github.com/Xuanwo/go-bufferpool v0.2.0/go.mod h1:Mle++9GGouhOwGj52i9PJLNAPmW2nb8PWBP7JJzNCzk= +github.com/Xuanwo/templateutils v0.1.0/go.mod h1:OdE0DJ+CJxDBq6psX5DPV+gOZi8bhuHuVUpPCG++Wb8= +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/alibaba/sentinel-golang v1.0.2-0.20210112133552-db6063eb263e/go.mod h1:uHDiUhfQjc9ACs9AdwP9CxmSze/B7tJ74QCdAbWl7x0= +github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= +github.com/alicebob/miniredis/v2 v2.16.0/go.mod h1:gquAfGbzn92jvtrSC69+6zZnwSODVXVpYDRaGhWaL6I= +github.com/aliyun/alibaba-cloud-sdk-go v1.61.18/go.mod h1:v8ESoHo4SyHmuB4b1tJqDHxfTGEciD+yhvOU/5s1Rfk= +github.com/aliyun/aliyun-oss-go-sdk v2.1.8+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= +github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= +github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/antlr/antlr4 v0.0.0-20200503195918-621b933c7a7f/go.mod h1:T7PbCXFs94rrTttyxjbyT5+/1V8T2TYDejxUfHJjw1Y= +github.com/apache/dubbo-go-hessian2 v1.7.0/go.mod h1:7rEw9guWABQa6Aqb8HeZcsYPHsOS7XT1qtJvkmI6c5w= +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/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/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/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/config v1.8.2/go.mod h1:r0bkX9NyuCuf28qVcsEMtpAQibT7gA1Q0gzkjvgJdLU= +github.com/aws/aws-sdk-go-v2/credentials v1.4.2/go.mod h1:9Sp6u121/f0NnvHyhG7dgoYeUTEFC2vsvJqJ6wXpkaI= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.5.1/go.mod h1:W1ldHfsgeGlKpJ4xZMKZUI6Wmp6EAstU7PxnhbXWWrI= +github.com/aws/aws-sdk-go-v2/internal/ini v1.2.3/go.mod h1:EES9ToeC3h063zCFDdqWGnARExNdULPaBvARm1FLwxA= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.3.0/go.mod h1:v8ygadNyATSm6elwJ/4gzJwcFhri9RqS8skgHKiwXPU= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.1/go.mod h1:Ve+eJOx9UWaT/lMVebnFhDhO49fSLVedHoA82+Rqme0= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.7.1/go.mod h1:yg4EN/BKoc7+DLhNOxxdvoO3+iyW2FuynvaKqLcLDUM= +github.com/aws/aws-sdk-go-v2/service/s3 v1.16.0/go.mod h1:Tk23mCmfL3wb3tNIeMk/0diUZ0W4R6uZtjYKguMLW2s= +github.com/aws/aws-sdk-go-v2/service/sso v1.4.1/go.mod h1:ycPdbJZlM0BLhuBnd80WX9PucWPG88qps/2jl9HugXs= +github.com/aws/aws-sdk-go-v2/service/sts v1.7.1/go.mod h1:r1i8QwKPzwByXqZb3POQfBs7jozrdnHz8PVbsvyx73w= +github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= +github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/c2h5oh/datasize v0.0.0-20171227191756-4eba002a5eae/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cch123/supermonkey v1.0.1-0.20210420090843-d792ef7fb1d7/go.mod h1:d5jXTCyG6nu/pu0vYmoC0P/l0eBGesv3oQQ315uNBOA= +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/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/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +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/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-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= +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-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/colinmarc/hdfs/v2 v2.2.0/go.mod h1:Wss6n3mtaZyRwWaqtSH+6ge01qT0rw9dJJmvoUnIQ/E= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +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.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/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/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/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/dave/dst v0.26.2/go.mod h1:UMDJuIRPfyUCC78eFuB+SV/WI8oDeyFDvM/JR6NI3IU= +github.com/dave/gopackages v0.0.0-20170318123100-46e7023ec56e/go.mod h1:i00+b/gKdIDIxuLDFob7ustLAVqhsZRk2qVZrArELGQ= +github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= +github.com/dave/kerr v0.0.0-20170318121727-bc25dd6abe8e/go.mod h1:qZqlPyPvfsDJt+3wHJ1EvSXDuVjFTK0j2p/ca+gtsb8= +github.com/dave/rebecca v0.9.1/go.mod h1:N6XYdMD/OKw3lkF3ywh8Z6wPGuwNFDNtWYEMFWEmXBA= +github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/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/dchest/siphash v1.2.1/go.mod h1:q+IRvb2gOSrUnYoPqHiyHXS0FOBBOdl6tONBlVnOnt4= +github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/dubbogo/getty v1.3.4/go.mod h1:36f+gH/ekaqcDWKbxNBQk9b9HXcGtaI6YHxp4YTntX8= +github.com/dubbogo/go-zookeeper v1.0.3/go.mod h1:fn6n2CAEer3novYgk9ULLwAjuV8/g4DdC2ENwRb6E+c= +github.com/dubbogo/gost v1.5.2/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8= +github.com/dubbogo/gost v1.9.0/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8= +github.com/dubbogo/gost v1.11.11/go.mod h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI= +github.com/dubbogo/gost v1.11.16/go.mod h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI= +github.com/dubbogo/jsonparser v1.0.1/go.mod h1:tYAtpctvSP/tWw4MeelsowSPgXQRVHHWbqL6ynps8jU= +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/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/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239/go.mod h1:Gdwt2ce0yfBxPvZrHkprdPPTTS3N5rwmLE8T22KBXlw= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +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/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/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/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/go-chi/chi v4.1.0+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +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-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/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +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-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/validator/v10 v10.8.0/go.mod h1:9JhgTzTaE31GZDpH/HSvHiRJrJ3iKAgqqH0Bl/Ocjdk= +github.com/go-redis/redis/v8 v8.8.0/go.mod h1:F7resOH5Kdug49Otu24RjHWwgK7u9AmtqWMnCV1iP5Y= +github.com/go-resty/resty/v2 v2.6.0/go.mod h1:PwvJS6hvaPkjtjNg9ph+VrSD92bi5Zq73w/BIH7cC3Q= +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-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:56xuuqnHyryaerycW3BfssRdxQstACi0Epw/yC5E2xM= +github.com/go-xorm/xorm v0.7.9/go.mod h1:XiVxrMMIhFkwSkh96BW7PACl7UhLtx2iJIHMdmjh5sQ= +github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= +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/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= +github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= 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.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +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.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.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= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -23,122 +262,880 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= 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 h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4= 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/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/cel-go v0.5.1/go.mod h1:9SvtVVTtZV4DTB1/RuAD1D2HhuqEIdmZEE/r/lrFyKE= +github.com/google/cel-spec v0.4.0/go.mod h1:2pBM5cU4UKjbPDXBgwWkiwBsVgnxknuEJ7C5TDWwORQ= 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.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-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181127221834-b4f47329b966/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +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-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +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.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 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/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/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= 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/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/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= +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/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +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.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= +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.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.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/api v1.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.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= +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/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2/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/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/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +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/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= +github.com/jackc/pgx v3.6.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= +github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= +github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= +github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= +github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= +github.com/jcmturner/gokrb5/v8 v8.4.1/go.mod h1:T1hnNppQsBtxW0tCHMHTkAt8n/sABdzZgZdoFrZaZNM= +github.com/jcmturner/rpc/v2 v2.0.2/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= +github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag= +github.com/jinzhu/copier v0.3.2/go.mod h1:24xnZezI2Yqac9J61UC6/dG/k76ttpq0DdJI3QmUvro= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +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/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.5/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 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/juju/ansiterm v0.0.0-20160907234532-b99631de12cf/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= +github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c/go.mod h1:nD0vlnrUjcjJhqN5WuCWZyzfd5AHZAC9/ajvbSx69xA= +github.com/juju/cmd v0.0.0-20171107070456-e74f39857ca0/go.mod h1:yWJQHl73rdSX4DHVKGqkAip+huBslxRwS8m9CrOLq18= +github.com/juju/collections v0.0.0-20200605021417-0d0ec82b7271/go.mod h1:5XgO71dV1JClcOJE+4dzdn4HrI5LiyKd7PlVG6eZYhY= +github.com/juju/errors v0.0.0-20150916125642-1b5e39b83d18/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= +github.com/juju/errors v0.0.0-20190930114154-d42613fe1ab9/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= +github.com/juju/errors v0.0.0-20200330140219-3fe23663418f/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= +github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE= +github.com/juju/httpprof v0.0.0-20141217160036-14bf14c30767/go.mod h1:+MaLYz4PumRkkyHYeXJ2G5g5cIW0sli2bOfpmbaMV/g= +github.com/juju/loggo v0.0.0-20170605014607-8232ab8918d9/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= +github.com/juju/loggo v0.0.0-20200526014432-9ce3a2e09b5e/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= +github.com/juju/mgo/v2 v2.0.0-20210302023703-70d5d206e208/go.mod h1:0OChplkvPTZ174D2FYZXg4IB9hbEwyHkD+zT+/eK+Fg= +github.com/juju/mutex v0.0.0-20171110020013-1fe2a4bf0a3a/go.mod h1:Y3oOzHH8CQ0Ppt0oCKJ2JFO81/EsWenH5AEqigLH+yY= +github.com/juju/retry v0.0.0-20151029024821-62c620325291/go.mod h1:OohPQGsr4pnxwD5YljhQ+TZnuVRYpa5irjugL1Yuif4= +github.com/juju/retry v0.0.0-20180821225755-9058e192b216/go.mod h1:OohPQGsr4pnxwD5YljhQ+TZnuVRYpa5irjugL1Yuif4= +github.com/juju/testing v0.0.0-20180402130637-44801989f0f7/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= +github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= +github.com/juju/testing v0.0.0-20210324180055-18c50b0c2098/go.mod h1:7lxZW0B50+xdGFkvhAb8bwAGt6IU87JB1H9w4t8MNVM= +github.com/juju/utils v0.0.0-20180424094159-2000ea4ff043/go.mod h1:6/KLg8Wz/y2KVGWEpkK9vMNGkOnu4k/cqs8Z1fKjTOk= +github.com/juju/utils v0.0.0-20200116185830-d40c2fe10647/go.mod h1:6/KLg8Wz/y2KVGWEpkK9vMNGkOnu4k/cqs8Z1fKjTOk= +github.com/juju/utils/v2 v2.0.0-20200923005554-4646bfea2ef1/go.mod h1:fdlDtQlzundleLLz/ggoYinEt/LmnrpNKcNTABQATNI= +github.com/juju/version v0.0.0-20161031051906-1f41e27e54f2/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U= +github.com/juju/version v0.0.0-20180108022336-b64dbd566305/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U= +github.com/juju/version v0.0.0-20191219164919-81c1be00b9a6/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U= +github.com/julienschmidt/httprouter v1.1.1-0.20151013225520-77a895ad01eb/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +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/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= +github.com/k0kubun/pp v3.0.1+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg= +github.com/kevinburke/go-bindata v3.22.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +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/klauspost/compress v1.10.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.12.2/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.5 h1:9O69jUPDcsT9fEm74W92rZL9FQY7rCdaXVneq+yyzl4= github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= +github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.3.1 h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s= github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4= +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/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= 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/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/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/layotto/proxy-wasm-go-sdk v0.14.1-0.20210929091432-0e4ff35b75af h1:47gHlqE7EQXW2qRXWiAnogq8U7H+2VJUYxRLmCnVfsQ= github.com/layotto/proxy-wasm-go-sdk v0.14.1-0.20210929091432-0e4ff35b75af/go.mod h1:qZ+4i6e2wHlhnhgpH0VG4QFzqd2BEvQbQFU0npt2e2k= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/lestrrat/go-envload v0.0.0-20180220120943-6ed08b54a570/go.mod h1:BLt8L9ld7wVsvEWQbuLrUZnCMnUmLZ+CGDzKtclrTlE= +github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f/go.mod h1:UGmTpUd3rjbtfIpwAPrcfmGf/Z1HS95TATB+m57TPB8= +github.com/lestrrat/go-jwx v0.0.0-20180221005942-b7d4802280ae/go.mod h1:T+yHdCP6MJKtzoVQMHvVCeam5VFwX1+rWzn5zZgKYMI= +github.com/lestrrat/go-pdebug v0.0.0-20180220043741-569c97477ae8/go.mod h1:VXFH11P7fHn2iPBsfSW1JacR59rttTcafJnwYcI/IdY= +github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042/go.mod h1:TPpsiPUEh0zFL1Snz4crhMlBe60PYxRHr5oFF3rRYg0= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +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/lunixbochs/vtclean v0.0.0-20160125035106-4fbf7632a2c6/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/masterzen/azure-sdk-for-go v3.2.0-beta.0.20161014135628-ee4f0065d00c+incompatible/go.mod h1:mf8fjOu33zCqxUjuiU3I8S1lJMyEAlH+0F2+M5xl3hE= +github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= +github.com/masterzen/winrm v0.0.0-20161014151040-7a535cd943fc/go.mod h1:CfZSN7zwz5gJiFhZJz49Uzk7mEBHIceWmbFmYx7Hf7E= +github.com/masterzen/xmlpath v0.0.0-20140218185901-13f4951698ad/go.mod h1:A0zPC53iKKKcXYxr4ROjpQRQ5FgJXtelNdSmHHuq/tY= +github.com/mattn/go-colorable v0.0.6/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-isatty v0.0.0-20160806122752-66b8e73f3f5c/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +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/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +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/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.25/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/minio/md5-simd v1.1.0 h1:QPfiOqlZH+Cj9teu0t9b1nTBfPbyTl16Of5MeuShdK4= github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw= github.com/minio/minio-go/v7 v7.0.15 h1:r9/NhjJ+nXYrIYvbObhvc1wPj3YH1iDpJzz61uRKLyY= github.com/minio/minio-go/v7 v7.0.15/go.mod h1:pUV0Pc+hPd1nccgmzQF/EXh48l/Z/yps6QPF1aaie4g= github.com/minio/sha256-simd v0.1.1 h1:5QHSlgo3nt5yKOJrC7W8w7X+NFl8cMPZm96iu8kKUJU= github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= +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 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +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.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= 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 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/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/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/nacos-group/nacos-sdk-go v1.0.8/go.mod h1:hlAPn3UdzlxIlSILAyOXKxjFSvDJ9oLzTJ9hLAK1KzA= +github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk= +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/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= +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 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.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/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.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/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +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/opentrx/seata-golang/v2 v2.0.4/go.mod h1:uVMIDsvM4NBQXoZgtfHleBGrAqwkUry3jD3cf/JYi9k= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.3.5/go.mod h1:uVHyebswE1cCXr2A73cRM2frx5ld1RJUCJkFNZ90ZiI= +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/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/pborman/getopt v0.0.0-20180729010549-6fdd0a2c7117/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.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +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/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/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/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/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.5.1/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.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-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/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.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.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/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/qiniu/dyn v1.3.0/go.mod h1:E8oERcm8TtwJiZvkQPbcAh0RL8jO1G0VXJMW3FAWdkk= +github.com/qiniu/go-sdk/v7 v7.11.1/go.mod h1:btsaOc8CA3hdVloULfFdDgDc+g4f3TDZEFsDY0BLE+w= +github.com/qiniu/x v1.10.5/go.mod h1:03Ni9tj+N2h2aKnAz+6N0Xfl8FwMEDRC2PAlxekASDs= +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/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +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/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +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/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shirou/gopsutil v3.20.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil/v3 v3.20.11/go.mod h1:igHnfak0qnw1biGeI2qKQvu0ZkwvEkUcCLlYhZzdr/4= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +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.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 v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/goconvey v1.6.6/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/soheilhy/cmux v0.1.5-0.20210205191134-5ec6847320e5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +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/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +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/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/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/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +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/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/testify v0.0.0-20151208002404-e3a8ff8ce365/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/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tebeka/strftime v0.1.3/go.mod h1:7wJm3dZlpr4l/oVK0t1HYIc4rMzQ2XJlOMIUJUJH6XQ= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.194/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.194/go.mod h1:yrBKWhChnDqNz1xuXdSbWXG56XawEq0G5j1lg4VwBD4= +github.com/tencentyun/cos-go-sdk-v5 v0.7.33/go.mod h1:4E4+bQ2gBVJcgEC9Cufwylio4mXOct2iu05WjgEBx1o= +github.com/tevid/gohamcrest v1.1.1/go.mod h1:3UvtWlqm8j5JbwYZh80D/PVBt0mJ1eJiYgZMibh0H/k= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +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/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3/go.mod h1:QDlpd3qS71vYtakd2hmdpqhJ9nwv6mD6A30bQ1BPBFE= +github.com/trainyao/go-maglev v0.0.0-20200611125015-4c1ae64d96a8/go.mod h1:VBsRn0SDTltC3/SzN6SgXlQtmBk6U5sf0KW+eT+WMbc= +github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/uber/jaeger-lib v2.4.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +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/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.14.1-0.20200605121233-ac51d598dc54/go.mod h1:hWrFNtR2Jc1XrK0fDq2Y+MkA7F/v3lYKRDXd2CmSikc= +github.com/valyala/fasthttp v1.26.0/go.mod h1:cmWIqlu99AO/RKcp1HWaViTqc57FswJOfYYdPJBl8BA= +github.com/valyala/fasttemplate v1.1.0/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +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/wasmerio/wasmer-go v1.0.3/go.mod h1:0gzVdSfg6pysA6QVp6iVRPTagC6Wq9pOE8J86WKb2Fk= +github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= +github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= +github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= +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/gopher-lua v0.0.0-20200816102855-ee81675732da/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA= +github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= +github.com/zouyx/agollo/v4 v4.0.7/go.mod h1:unhojnZiGLlT4gLpWz3Oa7sGcChZWv/1DJBkV6s8uAE= +go.beyondstorage.io/endpoint v1.2.0/go.mod h1:oZ7Z7HZ7mAo337JBLjuCF/DM66HVEUu6+hw68c3UcLs= +go.beyondstorage.io/services/hdfs v0.3.0/go.mod h1:yU0eL80JczPPuR5hoK21Dck0H9gXDBu3WN51Od7wtlo= +go.beyondstorage.io/v5 v5.0.0/go.mod h1:3wV9gCQnqu7tD/3LMeo2yimUKIeTSHpTc6wHSb0yY20= +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/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/api/v3 v3.5.0-alpha.0/go.mod h1:mPcW6aZJukV6Aa81LSKpBjQXTWlXB5r74ymPoSWa3Sw= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.0-alpha.0/go.mod h1:kdV+xzCJ3luEBSIeQyB/OEKkWKd8Zkux4sbDeANrosU= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/client/v3 v3.5.0-alpha.0/go.mod h1:wKt7jgDgf/OfKiYmCq5WFGxOFAkVMLxiiXgLDFhECr8= +go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= +go.etcd.io/etcd/pkg/v3 v3.5.0-alpha.0/go.mod h1:tV31atvwzcybuqejDoY3oaNRTtlD2l/Ot78Pc9w7DMY= +go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= +go.etcd.io/etcd/raft/v3 v3.5.0-alpha.0/go.mod h1:FAwse6Zlm5v4tEWZaTjmNhe17Int4Oxbu7+2r0DiD3w= +go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= +go.etcd.io/etcd/server/v3 v3.5.0-alpha.0/go.mod h1:tsKetYpt980ZTpzl/gb+UOJj9RkIyCb1u4wjzMg90BQ= +go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= +go.mongodb.org/mongo-driver v1.8.0/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= +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.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/otel v0.19.0/go.mod h1:j9bF567N9EfomkSidSfmMwIwIBuP37AMAIzVW85OxSg= +go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= +go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= +go.opentelemetry.io/otel/metric v0.19.0/go.mod h1:8f9fglJPRnXuskQmKpnad31lcLJ2VmNNqIsx/uIwBSc= +go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= +go.opentelemetry.io/otel/oteltest v0.19.0/go.mod h1:tI4yxwh8U21v7JD6R3BcA/2+RBoTKFexE/PJ/nSO7IA= +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/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.19.0/go.mod h1:4IXiNextNOpPnRlI4ryK69mn5iC84bjBWZQA5DXz/qg= +go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +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.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/automaxprocs v1.3.0/go.mod h1:9CWT6lKIep8U41DDaPiH6eFscnTyjfTANNQNx6LrIcA= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +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.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +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.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= +go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +golang.org/x/arch v0.0.0-20180920145803-b19384d3c130/go.mod h1:cYlCBUl1MsqxdiKgmc4uh7TxZfWSFLOGSRR090WDxt8= +golang.org/x/arch v0.0.0-20200826200359-b19915210f00/go.mod h1:flIaEI6LNU6xOCD5PaJvn9wGP0agmIOqjrtsKGRguv4= +golang.org/x/crypto v0.0.0-20180214000028-650f4a345ab4/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-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f h1:aZp0e2vLN4MToVqnjNEYEtrEA8RH8U8FN1CU7JgqsPU= golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +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-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/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-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= 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-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.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180406214816-61147c48b25b/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-20180826012351-8a410e7b638d/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= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-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-20191004110552-13f9640d40b9/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 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/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-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-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210614182718-04defd469f4e h1:XpT3nA5TvE525Ne3hInMh6+GETgn27Zfm9dxsThnX2Q= +golang.org/x/net v0.0.0-20210614182718-04defd469f4e/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= +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-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= 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-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/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-20180903190138-2b024373dcd9/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-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/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-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-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-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-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-20191026070338-33540a1f6037/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= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +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-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200602100848-8d3cce7afc34/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 h1:Ih9Yo4hSPImZOpfGuA4bR/ORKTAbhZo2AbWNRCnevdo= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/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-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201024232916-9f70ab9862d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201223074533-0d417f636930/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/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-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-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211020174200-9d6173849985 h1:LOlKVhfDyahgmqa97awczplwkjzNaELFg3zRIJ13RYo= +golang.org/x/sys v0.0.0-20211020174200-9d6173849985/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/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.1-0.20181010134911-4d1c5fb19474/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +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.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/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-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/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-20180828015842-6cd1fcedba52/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-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= 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= +golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/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-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-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-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-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= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/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-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/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-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-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-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20201014170642-d1624618ad65/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +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.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +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 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= 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= +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= +google.golang.org/api v0.9.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.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/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.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.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.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/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-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= +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-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-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 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +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-20200806141610-86f49bd18e98/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-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.37.0 h1:uSZWeQJX5j11bIQ4AJoj+McDBo29cY1MCoC1wO3ts+c= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc/examples v0.0.0-20210818220435-8ab16ef276a3/go.mod h1:bF8wuZSAZTcbF7ZPKrDI/qY52toTP/yxLpRRY4Eu9Js= 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= @@ -147,17 +1144,86 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +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 h1:7QnIQpGRHE5RnLKnESfDoxm2dTapTZua5a0kS0A+VXQ= 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= +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-20160105164936-4f90aeace3a2/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= 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-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v1 v1.0.0-20161222125816-442357a80af5/go.mod h1:u0ALmqvLRxLI95fkdCEWrE6mhWYZW1aMOJHp5YXLHTg= +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/httprequest.v1 v1.1.1/go.mod h1:/CkavNL+g3qLOrpFHVrEx4NKepeqR4XTZWNj4sGGjz0= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.57.0 h1:9unxIsFcTt4I55uWluz+UmL95q4kdJ0buvQ1ZIqVQww= gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/mgo.v2 v2.0.0-20160818015218-f2b6f6c918c4/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +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/src-d/go-billy.v4 v4.3.0/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637/go.mod h1:BHsqpu/nsuzkT5BpiH1EMZPLyqSMM8JbIavyFACoFNk= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170712054546-1be3d31502d6/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +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/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-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/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= +istio.io/api v0.0.0-20200227213531-891bf31f3c32/go.mod h1:bcY3prusO/6vA6zGHz4PNG2v79clPyTw06Xx3fprJSQ= +istio.io/gogo-genproto v0.0.0-20190930162913-45029607206a/go.mod h1:OzpAts7jljZceG4Vqi5/zXy/pOg1b209T3jb7Nv5wIs= +k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= +k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= +k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM= +launchpad.net/xmlpath v0.0.0-20130614043138-000000000004/go.mod h1:vqyExLOM3qBx7mvYRkoxjSCF945s0mbe7YynlKYXtsA= +mosn.io/api v0.0.0-20210204052134-5b9a826795fd/go.mod h1:TBv4bz2f2RbpgdohbVAFRFVOoN8YyEUiLH3jAh752Qc= +mosn.io/api v0.0.0-20211217011300-b851d129be01/go.mod h1:TBv4bz2f2RbpgdohbVAFRFVOoN8YyEUiLH3jAh752Qc= +mosn.io/layotto/components v0.0.0-20220519092435-5db44ed16f38/go.mod h1:EaUv7I3YjQNmeHfT3afM4tzVQgjBPC3tyDQWoilhXlM= +mosn.io/mosn v0.25.1-0.20211217125944-69b50c40af81/go.mod h1:JwLkls6oMaap0+P1uZ1d1ccdLPigdK8xH8gDSm3SEq4= +mosn.io/pkg v0.0.0-20211217101631-d914102d1baf/go.mod h1:tK3Vbw6CcVeJ9H/BGjJ1wn6hRXt4Oxjfq1+gkOM0zG8= +mosn.io/proxy-wasm-go-host v0.1.1-0.20210524020952-3fb13ba763a6/go.mod h1:wBRY9Xjf77GZhvAuEc6nQXZ6dQK39kNU2ok/+Z8mSU8= +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/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +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= +vimagination.zapto.org/byteio v0.0.0-20200222190125-d27cba0f0b10/go.mod h1:fl9OF22g6MTKgvHA1hqMXe/L7+ULWofVTwbC9loGu7A= +vimagination.zapto.org/memio v0.0.0-20200222190306-588ebc67b97d/go.mod h1:zHGDKp2tyvF4IAfLti4pKYqCJucXYmmKMb3UMrCHK/4= +xorm.io/builder v0.3.6/go.mod h1:LEFAPISnRzG+zxaxj2vPicRwz67BdhFreKg8yv8/TgU= +xorm.io/builder v0.3.9/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE= +xorm.io/core v0.7.2-0.20190928055935-90aeac8d08eb/go.mod h1:jJfd0UAEzZ4t87nbQYtVjmqpIODugN6PD2D9E+dJvdM= diff --git a/demo/sequencer/common/client.go b/demo/sequencer/common/client.go index 87dd634269..863d395265 100644 --- a/demo/sequencer/common/client.go +++ b/demo/sequencer/common/client.go @@ -40,6 +40,7 @@ func main() { Metadata: nil, }) if err != nil { + panic(err) return } fmt.Printf("Next id:%v \n", id) diff --git a/docs/en/start/sequencer/start.md b/docs/en/start/sequencer/start.md index ca754a76c0..63f3508370 100644 --- a/docs/en/start/sequencer/start.md +++ b/docs/en/start/sequencer/start.md @@ -50,7 +50,7 @@ Once finished, the layotto file will be generated in the directory, run it: ```shell cd ${project_path}/demo/sequencer/common/ go build -o client - ./client -s "config_sequencer_etcd" + ./client -s "sequencer_demo" ``` If the following information is printed, the demo is successful: From 8392e11a61a216d3e4a2b3e5cea065ed78578a71 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sat, 21 May 2022 15:18:10 +0800 Subject: [PATCH 51/62] decouple Name and Type --- components/configstores/registry.go | 10 +++++----- components/custom/registry.go | 2 +- components/file/registry.go | 10 +++++----- components/hello/registry.go | 10 +++++----- components/pkg/info/info.go | 4 ++-- pkg/runtime/bindings/registry.go | 20 ++++++++++---------- pkg/runtime/lock/registry.go | 10 +++++----- pkg/runtime/pubsub/registry.go | 10 +++++----- pkg/runtime/secretstores/registry.go | 10 +++++----- pkg/runtime/sequencer/registry.go | 10 +++++----- pkg/runtime/state/registry.go | 10 +++++----- 11 files changed, 53 insertions(+), 53 deletions(-) diff --git a/components/configstores/registry.go b/components/configstores/registry.go index f6a7b0ea1b..3078af330a 100644 --- a/components/configstores/registry.go +++ b/components/configstores/registry.go @@ -24,7 +24,7 @@ import ( type Registry interface { Register(fs ...*StoreFactory) - Create(name string) (Store, error) + Create(componentType string) (Store, error) } type StoreFactory struct { @@ -59,10 +59,10 @@ func (r *StoreRegistry) Register(fs ...*StoreFactory) { } } -func (r *StoreRegistry) Create(name string) (Store, error) { - if f, ok := r.stores[name]; ok { - r.info.LoadComponent(ServiceName, name) +func (r *StoreRegistry) Create(componentType string) (Store, error) { + if f, ok := r.stores[componentType]; ok { + r.info.LoadComponent(ServiceName, componentType) return f(), nil } - return nil, fmt.Errorf("service component %s is not regsitered", name) + return nil, fmt.Errorf("service component %s is not regsitered", componentType) } diff --git a/components/custom/registry.go b/components/custom/registry.go index 779eb015ce..ebf2a3179c 100644 --- a/components/custom/registry.go +++ b/components/custom/registry.go @@ -21,7 +21,7 @@ import ( type Registry interface { Register(componentType string, factorys ...*ComponentFactory) - Create(componentType, name string) (Component, error) + Create(kind, componentType string) (Component, error) } type ComponentFactory struct { diff --git a/components/file/registry.go b/components/file/registry.go index ee986b7c31..139194b6e5 100644 --- a/components/file/registry.go +++ b/components/file/registry.go @@ -24,7 +24,7 @@ import ( type Registry interface { Register(fs ...*FileFactory) - Create(name string) (File, error) + Create(componentType string) (File, error) } type FileFactory struct { @@ -59,10 +59,10 @@ func (r *FileStoreRegistry) Register(fs ...*FileFactory) { } } -func (r *FileStoreRegistry) Create(name string) (File, error) { - if f, ok := r.files[name]; ok { - r.info.LoadComponent(ServiceName, name) +func (r *FileStoreRegistry) Create(componentType string) (File, error) { + if f, ok := r.files[componentType]; ok { + r.info.LoadComponent(ServiceName, componentType) return f(), nil } - return nil, fmt.Errorf("service component %s is not regsitered", name) + return nil, fmt.Errorf("service component %s is not regsitered", componentType) } diff --git a/components/hello/registry.go b/components/hello/registry.go index 5aa3dbbaf2..2e582bf086 100644 --- a/components/hello/registry.go +++ b/components/hello/registry.go @@ -24,7 +24,7 @@ import ( type Registry interface { Register(fs ...*HelloFactory) - Create(name string) (HelloService, error) + Create(componentType string) (HelloService, error) } type HelloFactory struct { @@ -59,10 +59,10 @@ func (r *helloRegistry) Register(fs ...*HelloFactory) { } } -func (r *helloRegistry) Create(name string) (HelloService, error) { - if f, ok := r.stores[name]; ok { - r.info.LoadComponent(ServiceName, name) // 加载组件信息 +func (r *helloRegistry) Create(componentType string) (HelloService, error) { + if f, ok := r.stores[componentType]; ok { + r.info.LoadComponent(ServiceName, componentType) // 加载组件信息 return f(), nil } - return nil, fmt.Errorf("service component %s is not regsitered", name) + return nil, fmt.Errorf("service component %s is not regsitered", componentType) } diff --git a/components/pkg/info/info.go b/components/pkg/info/info.go index b16280923a..5efd51eebf 100644 --- a/components/pkg/info/info.go +++ b/components/pkg/info/info.go @@ -48,8 +48,8 @@ func (info *RuntimeInfo) RegisterComponent(service string, name string) { } } -func (info *RuntimeInfo) LoadComponent(service string, name string) { +func (info *RuntimeInfo) LoadComponent(service string, componentType string) { if c, ok := info.Services[service]; ok { - c.Loaded = append(c.Loaded, name) + c.Loaded = append(c.Loaded, componentType) } } diff --git a/pkg/runtime/bindings/registry.go b/pkg/runtime/bindings/registry.go index 478837ae33..586b76aa8d 100644 --- a/pkg/runtime/bindings/registry.go +++ b/pkg/runtime/bindings/registry.go @@ -31,8 +31,8 @@ const ( type Registry interface { RegisterOutputBinding(fs ...*OutputBindingFactory) RegisterInputBinding(fs ...*InputBindingFactory) - CreateOutputBinding(name string) (bindings.OutputBinding, error) - CreateInputBinding(name string) (bindings.InputBinding, error) + CreateOutputBinding(componentType string) (bindings.OutputBinding, error) + CreateInputBinding(componentType string) (bindings.InputBinding, error) } type bindingsRegistry struct { @@ -64,18 +64,18 @@ func (r *bindingsRegistry) RegisterInputBinding(fs ...*InputBindingFactory) { } } -func (r *bindingsRegistry) CreateOutputBinding(name string) (bindings.OutputBinding, error) { - if f, ok := r.outputBindingStores[name]; ok { - r.info.LoadComponent(ServiceName, name) +func (r *bindingsRegistry) CreateOutputBinding(componentType string) (bindings.OutputBinding, error) { + if f, ok := r.outputBindingStores[componentType]; ok { + r.info.LoadComponent(ServiceName, componentType) return f(), nil } - return nil, fmt.Errorf("service component %s is not regsitered", name) + return nil, fmt.Errorf("service component %s is not regsitered", componentType) } -func (r *bindingsRegistry) CreateInputBinding(name string) (bindings.InputBinding, error) { - if f, ok := r.inputBindingStores[name]; ok { - r.info.LoadComponent(ServiceName, name) +func (r *bindingsRegistry) CreateInputBinding(componentType string) (bindings.InputBinding, error) { + if f, ok := r.inputBindingStores[componentType]; ok { + r.info.LoadComponent(ServiceName, componentType) return f(), nil } - return nil, fmt.Errorf("service component %s is not regsitered", name) + return nil, fmt.Errorf("service component %s is not regsitered", componentType) } diff --git a/pkg/runtime/lock/registry.go b/pkg/runtime/lock/registry.go index 8c9a942230..e7d9ccaa77 100644 --- a/pkg/runtime/lock/registry.go +++ b/pkg/runtime/lock/registry.go @@ -26,7 +26,7 @@ const ( type Registry interface { Register(fs ...*Factory) - Create(name string) (lock.LockStore, error) + Create(componentType string) (lock.LockStore, error) } type lockRegistry struct { @@ -49,10 +49,10 @@ func (r *lockRegistry) Register(fs ...*Factory) { } } -func (r *lockRegistry) Create(name string) (lock.LockStore, error) { - if f, ok := r.stores[name]; ok { - r.info.LoadComponent(ServiceName, name) +func (r *lockRegistry) Create(componentType string) (lock.LockStore, error) { + if f, ok := r.stores[componentType]; ok { + r.info.LoadComponent(ServiceName, componentType) return f(), nil } - return nil, fmt.Errorf("service component %s is not regsitered", name) + return nil, fmt.Errorf("service component %s is not regsitered", componentType) } diff --git a/pkg/runtime/pubsub/registry.go b/pkg/runtime/pubsub/registry.go index 8320054104..52d315ad50 100644 --- a/pkg/runtime/pubsub/registry.go +++ b/pkg/runtime/pubsub/registry.go @@ -29,7 +29,7 @@ const serviceName = "pubsub" // Registry is the pubsub registry with pubsub name as the key type Registry interface { Register(fs ...*Factory) - Create(name string) (dpubsub.PubSub, error) + Create(componentType string) (dpubsub.PubSub, error) } type pubsubRegistry struct { @@ -52,10 +52,10 @@ func (r *pubsubRegistry) Register(fs ...*Factory) { } } -func (r *pubsubRegistry) Create(name string) (dpubsub.PubSub, error) { - if f, ok := r.stores[name]; ok { - r.info.LoadComponent(serviceName, name) +func (r *pubsubRegistry) Create(componentType string) (dpubsub.PubSub, error) { + if f, ok := r.stores[componentType]; ok { + r.info.LoadComponent(serviceName, componentType) return f(), nil } - return nil, fmt.Errorf("service component %s is not registered", name) + return nil, fmt.Errorf("service component %s is not registered", componentType) } diff --git a/pkg/runtime/secretstores/registry.go b/pkg/runtime/secretstores/registry.go index bdf34ef56b..c900705983 100644 --- a/pkg/runtime/secretstores/registry.go +++ b/pkg/runtime/secretstores/registry.go @@ -29,7 +29,7 @@ type ( // Registry is used to get registered secret store implementations. Registry interface { Register(ss ...*SecretStoresFactory) - Create(name string) (secretstores.SecretStore, error) + Create(componentType string) (secretstores.SecretStore, error) } secretStoreRegistry struct { @@ -56,11 +56,11 @@ func (s *secretStoreRegistry) Register(ss ...*SecretStoresFactory) { } // Create instantiates a secret store based on `name`. -func (s *secretStoreRegistry) Create(name string) (secretstores.SecretStore, error) { - if method, ok := s.secretStores[name]; ok { - s.info.LoadComponent(ServiceName, name) +func (s *secretStoreRegistry) Create(componentType string) (secretstores.SecretStore, error) { + if method, ok := s.secretStores[componentType]; ok { + s.info.LoadComponent(ServiceName, componentType) return method(), nil } - return nil, errors.Errorf("couldn't find secret store %s", name) + return nil, errors.Errorf("couldn't find secret store %s", componentType) } diff --git a/pkg/runtime/sequencer/registry.go b/pkg/runtime/sequencer/registry.go index 16c7749213..866d879593 100644 --- a/pkg/runtime/sequencer/registry.go +++ b/pkg/runtime/sequencer/registry.go @@ -26,7 +26,7 @@ const ( type Registry interface { Register(fs ...*Factory) - Create(name string) (sequencer.Store, error) + Create(componentType string) (sequencer.Store, error) } type sequencerRegistry struct { @@ -49,10 +49,10 @@ func (r *sequencerRegistry) Register(fs ...*Factory) { } } -func (r *sequencerRegistry) Create(name string) (sequencer.Store, error) { - if f, ok := r.stores[name]; ok { - r.info.LoadComponent(ServiceName, name) +func (r *sequencerRegistry) Create(componentType string) (sequencer.Store, error) { + if f, ok := r.stores[componentType]; ok { + r.info.LoadComponent(ServiceName, componentType) return f(), nil } - return nil, fmt.Errorf("service component %s is not regsitered", name) + return nil, fmt.Errorf("service component %s is not regsitered", componentType) } diff --git a/pkg/runtime/state/registry.go b/pkg/runtime/state/registry.go index 9cff8415c8..90d207efbf 100644 --- a/pkg/runtime/state/registry.go +++ b/pkg/runtime/state/registry.go @@ -30,7 +30,7 @@ const ( type Registry interface { Register(fs ...*Factory) - Create(name string) (state.Store, error) + Create(componentType string) (state.Store, error) } type stateRegistry struct { @@ -56,10 +56,10 @@ func (r *stateRegistry) Register(fs ...*Factory) { } // Loading components for a registered Factory -func (r *stateRegistry) Create(name string) (state.Store, error) { - if f, ok := r.stores[name]; ok { - r.info.LoadComponent(ServiceName, name) +func (r *stateRegistry) Create(componentType string) (state.Store, error) { + if f, ok := r.stores[componentType]; ok { + r.info.LoadComponent(ServiceName, componentType) return f(), nil } - return nil, fmt.Errorf("service component %s is not regsitered", name) + return nil, fmt.Errorf("service component %s is not regsitered", componentType) } From 8452cc9a6d006bc080f9165b0da4a2aa31574564 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Sat, 21 May 2022 16:23:31 +0800 Subject: [PATCH 52/62] decouple Name and Type --- sdk/go-sdk/go.mod | 1 + sdk/go-sdk/go.sum | 1 + sdk/go-sdk/test/runtime/redis_integrate_test.go | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/sdk/go-sdk/go.mod b/sdk/go-sdk/go.mod index 9740afc7c6..6f6dbea4d3 100644 --- a/sdk/go-sdk/go.mod +++ b/sdk/go-sdk/go.mod @@ -6,6 +6,7 @@ require ( github.com/golang/protobuf v1.5.2 github.com/pkg/errors v0.9.1 github.com/stretchr/testify v1.7.0 + github.com/google/uuid v1.3.0 google.golang.org/grpc v1.38.0 google.golang.org/protobuf v1.26.0 mosn.io/layotto/components v0.0.0-20220519092435-5db44ed16f38 diff --git a/sdk/go-sdk/go.sum b/sdk/go-sdk/go.sum index 0afacedab2..3b9e7c036d 100644 --- a/sdk/go-sdk/go.sum +++ b/sdk/go-sdk/go.sum @@ -303,6 +303,7 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 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.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/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= diff --git a/sdk/go-sdk/test/runtime/redis_integrate_test.go b/sdk/go-sdk/test/runtime/redis_integrate_test.go index bab256fddd..506e2222c1 100644 --- a/sdk/go-sdk/test/runtime/redis_integrate_test.go +++ b/sdk/go-sdk/test/runtime/redis_integrate_test.go @@ -78,7 +78,7 @@ func TestLockApi(t *testing.T) { owner1 := uuid.New().String() owner2 := uuid.New().String() resourceID := "MyLock" - + storeName := "lock_demo" // 1. client1 tryLock resp, err := cli.TryLock(ctx, &runtimev1pb.TryLockRequest{ StoreName: storeName, From 800af6d00ae30246420795e24d7f9d8478029021 Mon Sep 17 00:00:00 2001 From: seeflood Date: Mon, 23 May 2022 14:44:03 +0800 Subject: [PATCH 53/62] improve runtime_test.go Signed-off-by: seeflood --- pkg/runtime/runtime_test.go | 51 ++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/pkg/runtime/runtime_test.go b/pkg/runtime/runtime_test.go index c120e73942..3eaea81f8d 100644 --- a/pkg/runtime/runtime_test.go +++ b/pkg/runtime/runtime_test.go @@ -195,8 +195,8 @@ func TestMosnRuntime_Run(t *testing.T) { // 2. construct runtime cfg := &MosnRuntimeConfig{ PubSubManagement: map[string]mpubsub.Config{ - "mock": { - Type: "pubsub", + "demo": { + Type: "mock", Metadata: map[string]string{ "target": "layotto", }, @@ -217,7 +217,7 @@ func TestMosnRuntime_Run(t *testing.T) { ), // PubSub WithPubSubFactory( - mpubsub.NewFactory("pubsub", f), + mpubsub.NewFactory("mock", f), ), // Sequencer WithSequencerFactory( @@ -276,8 +276,8 @@ func TestMosnRuntime_initPubSubs(t *testing.T) { cfg := &MosnRuntimeConfig{ PubSubManagement: map[string]mpubsub.Config{ - "mock": { - Type: "pubsub", + "demo": { + Type: "mock", Metadata: map[string]string{ "target": "layotto", }, @@ -290,7 +290,7 @@ func TestMosnRuntime_initPubSubs(t *testing.T) { log.DefaultLogger.Errorf("[runtime] occurs an error: "+err.Error()+", "+format, args...) } // test initPubSubs - err := m.initPubSubs(mpubsub.NewFactory("pubsub", f)) + err := m.initPubSubs(mpubsub.NewFactory("mock", f)) // assert result assert.Nil(t, err) }) @@ -307,8 +307,8 @@ func TestMosnRuntime_initPubSubsNotExistMetadata(t *testing.T) { cfg := &MosnRuntimeConfig{ PubSubManagement: map[string]mpubsub.Config{ - "mock": { - Type: "pubsub", + "demo": { + Type: "mock", Metadata: map[string]string{ "target": "layotto", }, @@ -321,7 +321,7 @@ func TestMosnRuntime_initPubSubsNotExistMetadata(t *testing.T) { log.DefaultLogger.Errorf("[runtime] occurs an error: "+err.Error()+", "+format, args...) } // test initPubSubs - err := m.initPubSubs(mpubsub.NewFactory("pubsub", f)) + err := m.initPubSubs(mpubsub.NewFactory("mock", f)) // assert result assert.Nil(t, err) }) @@ -516,14 +516,15 @@ func TestMosnRuntime_initOutputBinding(t *testing.T) { func TestMosnRuntime_runWithCustomComponentAndAPI(t *testing.T) { t.Run("normal", func(t *testing.T) { - compType := "super_pubsub" - compName := "etcd" + kind := "super_pubsub" + compName := "demo" + compType := "etcd" // 1. construct config cfg := &MosnRuntimeConfig{ CustomComponent: map[string]map[string]custom.Config{ - compType: { + kind: { compName: custom.Config{ - Type: compName, + Type: compType, Version: "", Metadata: nil, }, @@ -542,14 +543,14 @@ func TestMosnRuntime_runWithCustomComponentAndAPI(t *testing.T) { WithGrpcAPI( default_api.NewGrpcAPI, func(ac *grpc.ApplicationContext) grpc.GrpcAPI { - comp := ac.CustomComponent[compType][compName].(superPubsub) + comp := ac.CustomComponent[kind][compName].(superPubsub) customAPI = &mockGrpcAPI{comp: comp} return customAPI }, ), // Custom components - WithCustomComponentFactory(compType, - custom.NewComponentFactory(compName, newSuperPubsub), + WithCustomComponentFactory(kind, + custom.NewComponentFactory(compType, newSuperPubsub), ), // Hello WithHelloFactory( @@ -557,7 +558,7 @@ func TestMosnRuntime_runWithCustomComponentAndAPI(t *testing.T) { ), // Sequencer WithSequencerFactory( - runtime_sequencer.NewFactory(compName, func() sequencer.Store { + runtime_sequencer.NewFactory(compType, func() sequencer.Store { return sequencer_etcd.NewEtcdSequencer(log.DefaultLogger) }), runtime_sequencer.NewFactory("redis", func() sequencer.Store { @@ -607,7 +608,7 @@ func TestMosnRuntime_runWithPubsub(t *testing.T) { ), // PubSub WithPubSubFactory( - mpubsub.NewFactory("pubsub", f), + mpubsub.NewFactory("mock", f), ), // Sequencer WithSequencerFactory( @@ -664,7 +665,7 @@ func TestMosnRuntime_runWithPubsub(t *testing.T) { ), // PubSub WithPubSubFactory( - mpubsub.NewFactory("pubsub", f), + mpubsub.NewFactory("mock", f), ), ) // 4. assert @@ -711,7 +712,7 @@ func TestMosnRuntime_runWithPubsub(t *testing.T) { ), // PubSub WithPubSubFactory( - mpubsub.NewFactory("pubsub", f), + mpubsub.NewFactory("mock", f), ), ) // 4. assert @@ -758,7 +759,7 @@ func TestMosnRuntime_runWithPubsub(t *testing.T) { ), // PubSub WithPubSubFactory( - mpubsub.NewFactory("pubsub", f), + mpubsub.NewFactory("mock", f), ), ) // 4. assert @@ -781,12 +782,14 @@ func constructCloudEvent() map[string]interface{} { } func runtimeWithCallbackConnection(t *testing.T) (*MosnRuntime, *mock_appcallback.MockAppCallbackServer) { + compName := "demo" + compType := "mock" // 1. prepare callback // mock callback response subResp := &runtimev1pb.ListTopicSubscriptionsResponse{ Subscriptions: []*runtimev1pb.TopicSubscription{ { - PubsubName: "mock", + PubsubName: compName, Topic: "layotto", Metadata: nil, }, @@ -813,8 +816,8 @@ func runtimeWithCallbackConnection(t *testing.T) (*MosnRuntime, *mock_appcallbac // 3. construct mosn runtime cfg := &MosnRuntimeConfig{ PubSubManagement: map[string]mpubsub.Config{ - "mock": { - Type: "pubsub", + compName: { + Type: compType, Metadata: map[string]string{ "target": "layotto", }, From 8a0eda932692adcbefaf0d658f605e1b54a76f72 Mon Sep 17 00:00:00 2001 From: seeflood Date: Mon, 23 May 2022 15:26:55 +0800 Subject: [PATCH 54/62] fix ut Signed-off-by: seeflood --- sdk/go-sdk/client/lock_test.go | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/sdk/go-sdk/client/lock_test.go b/sdk/go-sdk/client/lock_test.go index bd3f974f36..c6d0782aa8 100644 --- a/sdk/go-sdk/client/lock_test.go +++ b/sdk/go-sdk/client/lock_test.go @@ -19,8 +19,6 @@ package client import ( "testing" - "mosn.io/layotto/components/lock" - "context" "github.com/stretchr/testify/assert" @@ -29,8 +27,9 @@ import ( func TestTryLock(t *testing.T) { ctx := context.Background() - t.Run("try lock", func(t *testing.T) { + t.Run("try lock successfully", func(t *testing.T) { request := runtimev1pb.TryLockRequest{ + StoreName: "demo", ResourceId: "lock_test", LockOwner: "layotto", } @@ -42,43 +41,46 @@ func TestTryLock(t *testing.T) { func TestUnLock(t *testing.T) { ctx := context.Background() - t.Run("try lock", func(t *testing.T) { + t.Run("unlock with different owner failed", func(t *testing.T) { + // 1. try lock request := runtimev1pb.TryLockRequest{ + StoreName: "demo", ResourceId: "lock_test", LockOwner: "layotto", } lock, err := testClient.TryLock(ctx, &request) assert.Nil(t, err) assert.NotNil(t, lock.Success, true) - }) - - t.Run("unlock", func(t *testing.T) { - request := runtimev1pb.UnlockRequest{ + // 2. unlock with different owner + unlockReq := runtimev1pb.UnlockRequest{ + StoreName: "demo", ResourceId: "lock_test", LockOwner: "layotto1", } - unlock, err := testClient.Unlock(ctx, &request) + unlock, err := testClient.Unlock(ctx, &unlockReq) assert.Nil(t, err) - assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_Status(lock.LOCK_BELONG_TO_OTHERS)) + assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_LOCK_BELONG_TO_OTHERS) }) - t.Run("unlock", func(t *testing.T) { + t.Run("unlock successfully", func(t *testing.T) { request := runtimev1pb.UnlockRequest{ + StoreName: "demo", ResourceId: "lock_test", LockOwner: "layotto", } unlock, err := testClient.Unlock(ctx, &request) assert.Nil(t, err) - assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_Status(lock.SUCCESS)) + assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_SUCCESS) }) - t.Run("unlock", func(t *testing.T) { + t.Run("unlock but LOCK_UNEXIST", func(t *testing.T) { request := runtimev1pb.UnlockRequest{ + StoreName: "demo", ResourceId: "lock_test", LockOwner: "layotto", } unlock, err := testClient.Unlock(ctx, &request) assert.Nil(t, err) - assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_Status(lock.LOCK_UNEXIST)) + assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_LOCK_UNEXIST) }) } From 1f167299200cf33b0e2781597bedb5b268dd03e8 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Tue, 24 May 2022 19:29:29 +0800 Subject: [PATCH 55/62] decouple Name and Type --- components/configstores/registry.go | 20 ++++++------ components/custom/registry.go | 24 +++++++------- components/file/registry.go | 20 ++++++------ components/hello/registry.go | 20 ++++++------ components/pkg/info/info.go | 4 +-- docs/en/component_specs/lock/common.md | 13 ++++++-- docs/en/component_specs/pubsub/common.md | 13 ++++++-- docs/en/component_specs/secret/common.md | 31 +++++++++++++------ docs/en/component_specs/sequencer/common.md | 17 ++++++++-- docs/en/component_specs/state/common.md | 21 +++++++++---- docs/en/configuration/overview.md | 9 +++--- .../configuration-api-with-apollo.md | 3 +- docs/zh/component_specs/file/common.md | 7 +++-- docs/zh/component_specs/lock/common.md | 13 ++++++-- docs/zh/component_specs/pubsub/common.md | 13 ++++++-- docs/zh/component_specs/secret/common.md | 29 +++++++++++------ docs/zh/component_specs/sequencer/common.md | 17 ++++++++-- docs/zh/component_specs/state/common.md | 21 +++++++++---- docs/zh/configuration/overview.md | 9 +++--- docs/zh/design/actuator/grpc-design-doc.md | 6 ++-- .../configuration-api-with-apollo.md | 3 +- docs/zh/design/file/file-design.md | 3 +- pkg/runtime/bindings/factory.go | 12 +++---- pkg/runtime/bindings/registry.go | 28 ++++++++--------- pkg/runtime/lock/factory.go | 6 ++-- pkg/runtime/lock/registry.go | 14 ++++----- pkg/runtime/pubsub/factory.go | 6 ++-- pkg/runtime/pubsub/registry.go | 14 ++++----- pkg/runtime/secretstores/factory.go | 6 ++-- pkg/runtime/secretstores/registry.go | 14 ++++----- pkg/runtime/sequencer/factory.go | 6 ++-- pkg/runtime/sequencer/registry.go | 14 ++++----- pkg/runtime/state/factory.go | 6 ++-- pkg/runtime/state/registry.go | 14 ++++----- sdk/go-sdk/client/client_test.go | 7 ++--- sdk/go-sdk/client/lock_test.go | 14 ++++----- sdk/go-sdk/go.mod | 1 - sdk/go-sdk/go.sum | 6 ++++ 38 files changed, 299 insertions(+), 185 deletions(-) diff --git a/components/configstores/registry.go b/components/configstores/registry.go index 3078af330a..8b91996bf3 100644 --- a/components/configstores/registry.go +++ b/components/configstores/registry.go @@ -24,17 +24,17 @@ import ( type Registry interface { Register(fs ...*StoreFactory) - Create(componentType string) (Store, error) + Create(compType string) (Store, error) } type StoreFactory struct { - Name string + CompType string FactoryMethod func() Store } -func NewStoreFactory(name string, f func() Store) *StoreFactory { +func NewStoreFactory(compType string, f func() Store) *StoreFactory { return &StoreFactory{ - Name: name, + CompType: compType, FactoryMethod: f, } } @@ -54,15 +54,15 @@ func NewRegistry(info *info.RuntimeInfo) Registry { func (r *StoreRegistry) Register(fs ...*StoreFactory) { for _, f := range fs { - r.stores[f.Name] = f.FactoryMethod - r.info.RegisterComponent(ServiceName, f.Name) + r.stores[f.CompType] = f.FactoryMethod + r.info.RegisterComponent(ServiceName, f.CompType) } } -func (r *StoreRegistry) Create(componentType string) (Store, error) { - if f, ok := r.stores[componentType]; ok { - r.info.LoadComponent(ServiceName, componentType) +func (r *StoreRegistry) Create(compType string) (Store, error) { + if f, ok := r.stores[compType]; ok { + r.info.LoadComponent(ServiceName, compType) return f(), nil } - return nil, fmt.Errorf("service component %s is not regsitered", componentType) + return nil, fmt.Errorf("service component %s is not regsitered", compType) } diff --git a/components/custom/registry.go b/components/custom/registry.go index ebf2a3179c..416b143892 100644 --- a/components/custom/registry.go +++ b/components/custom/registry.go @@ -20,8 +20,8 @@ import ( ) type Registry interface { - Register(componentType string, factorys ...*ComponentFactory) - Create(kind, componentType string) (Component, error) + Register(compType string, factorys ...*ComponentFactory) + Create(kind, compType string) (Component, error) } type ComponentFactory struct { @@ -48,29 +48,29 @@ func NewRegistry(info *info.RuntimeInfo) Registry { } } -func (r *componentRegistry) Register(componentType string, fs ...*ComponentFactory) { +func (r *componentRegistry) Register(compType string, fs ...*ComponentFactory) { if len(fs) == 0 { return } - r.info.AddService(componentType) + r.info.AddService(compType) // lazy init - if _, ok := r.stores[componentType]; !ok { - r.stores[componentType] = make(map[string]func() Component) + if _, ok := r.stores[compType]; !ok { + r.stores[compType] = make(map[string]func() Component) } // register FactoryMethod for _, f := range fs { - r.stores[componentType][f.Type] = f.FactoryMethod - r.info.RegisterComponent(componentType, f.Type) + r.stores[compType][f.Type] = f.FactoryMethod + r.info.RegisterComponent(compType, f.Type) } } -func (r *componentRegistry) Create(componentType, name string) (Component, error) { - store, ok := r.stores[componentType] +func (r *componentRegistry) Create(compType, name string) (Component, error) { + store, ok := r.stores[compType] if !ok { - return nil, fmt.Errorf("custom component type %s is not regsitered", componentType) + return nil, fmt.Errorf("custom component type %s is not regsitered", compType) } if f, ok := store[name]; ok { - r.info.LoadComponent(componentType, name) + r.info.LoadComponent(compType, name) return f(), nil } return nil, fmt.Errorf("custom component %s is not regsitered", name) diff --git a/components/file/registry.go b/components/file/registry.go index 139194b6e5..c3102a237b 100644 --- a/components/file/registry.go +++ b/components/file/registry.go @@ -24,17 +24,17 @@ import ( type Registry interface { Register(fs ...*FileFactory) - Create(componentType string) (File, error) + Create(compType string) (File, error) } type FileFactory struct { - Name string + CompType string FactoryMethod func() File } -func NewFileFactory(name string, f func() File) *FileFactory { +func NewFileFactory(CompType string, f func() File) *FileFactory { return &FileFactory{ - Name: name, + CompType: CompType, FactoryMethod: f, } } @@ -54,15 +54,15 @@ func NewRegistry(info *info.RuntimeInfo) Registry { func (r *FileStoreRegistry) Register(fs ...*FileFactory) { for _, f := range fs { - r.files[f.Name] = f.FactoryMethod - r.info.RegisterComponent(ServiceName, f.Name) + r.files[f.CompType] = f.FactoryMethod + r.info.RegisterComponent(ServiceName, f.CompType) } } -func (r *FileStoreRegistry) Create(componentType string) (File, error) { - if f, ok := r.files[componentType]; ok { - r.info.LoadComponent(ServiceName, componentType) +func (r *FileStoreRegistry) Create(compType string) (File, error) { + if f, ok := r.files[compType]; ok { + r.info.LoadComponent(ServiceName, compType) return f(), nil } - return nil, fmt.Errorf("service component %s is not regsitered", componentType) + return nil, fmt.Errorf("service component %s is not regsitered", compType) } diff --git a/components/hello/registry.go b/components/hello/registry.go index 2e582bf086..8a0236717c 100644 --- a/components/hello/registry.go +++ b/components/hello/registry.go @@ -24,17 +24,17 @@ import ( type Registry interface { Register(fs ...*HelloFactory) - Create(componentType string) (HelloService, error) + Create(compType string) (HelloService, error) } type HelloFactory struct { - Name string + CompType string FatcoryMethod func() HelloService } -func NewHelloFactory(name string, f func() HelloService) *HelloFactory { +func NewHelloFactory(compType string, f func() HelloService) *HelloFactory { return &HelloFactory{ - Name: name, + CompType: compType, FatcoryMethod: f, } } @@ -54,15 +54,15 @@ func NewRegistry(info *info.RuntimeInfo) Registry { func (r *helloRegistry) Register(fs ...*HelloFactory) { for _, f := range fs { - r.stores[f.Name] = f.FatcoryMethod - r.info.RegisterComponent(ServiceName, f.Name) // 注册组件信息 + r.stores[f.CompType] = f.FatcoryMethod + r.info.RegisterComponent(ServiceName, f.CompType) // 注册组件信息 } } -func (r *helloRegistry) Create(componentType string) (HelloService, error) { - if f, ok := r.stores[componentType]; ok { - r.info.LoadComponent(ServiceName, componentType) // 加载组件信息 +func (r *helloRegistry) Create(compType string) (HelloService, error) { + if f, ok := r.stores[compType]; ok { + r.info.LoadComponent(ServiceName, compType) // 加载组件信息 return f(), nil } - return nil, fmt.Errorf("service component %s is not regsitered", componentType) + return nil, fmt.Errorf("service component %s is not regsitered", compType) } diff --git a/components/pkg/info/info.go b/components/pkg/info/info.go index 5efd51eebf..61b3664565 100644 --- a/components/pkg/info/info.go +++ b/components/pkg/info/info.go @@ -48,8 +48,8 @@ func (info *RuntimeInfo) RegisterComponent(service string, name string) { } } -func (info *RuntimeInfo) LoadComponent(service string, componentType string) { +func (info *RuntimeInfo) LoadComponent(service string, compType string) { if c, ok := info.Services[service]; ok { - c.Loaded = append(c.Loaded, componentType) + c.Loaded = append(c.Loaded, compType) } } diff --git a/docs/en/component_specs/lock/common.md b/docs/en/component_specs/lock/common.md index cb8a3dda53..115971905c 100644 --- a/docs/en/component_specs/lock/common.md +++ b/docs/en/component_specs/lock/common.md @@ -4,7 +4,15 @@ The json configuration file has the following structure: ```json "lock": { - "": { + "": { + "type":"", + "metadata": { + "": "", + "": "" + } + }, + "": { + "type":"", "metadata": { "": "", "": "" @@ -16,7 +24,8 @@ You can configure the key/value configuration items that the component cares abo ```json "lock": { - "redis": { + "lock_demo": { + "type": "redis", "metadata": { "redisHost": "localhost:6380", "redisPassword": "" diff --git a/docs/en/component_specs/pubsub/common.md b/docs/en/component_specs/pubsub/common.md index 31cecd5b07..058e265f61 100644 --- a/docs/en/component_specs/pubsub/common.md +++ b/docs/en/component_specs/pubsub/common.md @@ -4,7 +4,15 @@ The json configuration file has the following structure: ```json "pub_subs": { - "": { + "": { + "type":"", + "metadata": { + "": "", + "": "" + } + }, + "": { + "type":"", "metadata": { "": "", "": "" @@ -16,7 +24,8 @@ You can configure the key/value configuration items that the component cares abo ```json "pub_subs": { - "redis": { + "pubsub_dmoe": { + "type": "redis", "metadata": { "redisHost": "localhost:6380", "redisPassword": "" diff --git a/docs/en/component_specs/secret/common.md b/docs/en/component_specs/secret/common.md index 43081de715..e6c5600232 100644 --- a/docs/en/component_specs/secret/common.md +++ b/docs/en/component_specs/secret/common.md @@ -5,29 +5,40 @@ This component can access secrets from local files, environment variables, k8s, The json configuration file has the following structure: ```json "secret_store": { - "": { - "metadata": { - "": "", - "": "" + "": { + "type":"", + "metadata": { + "": "", + "": "" + } + }, + "": { + "type":"", + "metadata": { + "": "", + "": "" + } } - } } ``` Configuration examples of local file keys, local environment variables, and k8s keys: -``` +```json "secret_store": { - "local.file": { + "secret_demo": { + "type": "local.file", "metadata": { "secretsFile": "../../configs/config_secret_local_file.json" } }, - "local.env": { + "secret_demo1": { + "type": "local.env", "metadata": { } }, - "kubernetes": { + "secret_demo2": { + "type": "kubernetes", "metadata": { } } - } +} ``` \ No newline at end of file diff --git a/docs/en/component_specs/sequencer/common.md b/docs/en/component_specs/sequencer/common.md index c079902508..f899713b4f 100644 --- a/docs/en/component_specs/sequencer/common.md +++ b/docs/en/component_specs/sequencer/common.md @@ -4,7 +4,19 @@ The json configuration file has the following structure: ```json "sequencer": { - "": { + "": { + "type": "Component A Name", + "biggerThan": { + "": "", + "": "" + }, + "metadata": { + "": "", + "": "" + } + }, + "": { + "type": "Component B Name", "biggerThan": { "": "", "": "" @@ -21,7 +33,8 @@ You can configure the key/value configuration items that the component cares abo ```json "sequencer": { - "etcd": { + "sequencer_demo": { + "type": "etcd", "biggerThan": { "key1": 1, "key2": 111 diff --git a/docs/en/component_specs/state/common.md b/docs/en/component_specs/state/common.md index ac53c52a8a..f880372c34 100644 --- a/docs/en/component_specs/state/common.md +++ b/docs/en/component_specs/state/common.md @@ -4,19 +4,28 @@ The json configuration file has the following structure: ```json "state": { - "": { - "metadata": { - "": "", - "": "" + "": { + "type":"", + "metadata": { + "": "", + "": "" + } + }, + "": { + "type":"", + "metadata": { + "": "", + "": "" + } } - } } ``` You can configure the key/value configuration items that the component cares about in the metadata. For example, [redis component configuration](https://github.com/mosn/layotto/blob/main/configs/config_state_redis.json) is as follows: ```json "state": { - "redis": { + "state_demo": { + "type": "redis", "metadata": { "redisHost": "localhost:6380", "redisPassword": "" diff --git a/docs/en/configuration/overview.md b/docs/en/configuration/overview.md index e655d2882d..a6211878ed 100644 --- a/docs/en/configuration/overview.md +++ b/docs/en/configuration/overview.md @@ -14,7 +14,8 @@ The configuration item in `grpc_config` is Layotto's component configuration, th ```json "grpc_config": { "": { - "": { + "": { + "type": "" "": "", "metadata": { "": "", @@ -23,16 +24,16 @@ The configuration item in `grpc_config` is Layotto's component configuration, th } }, "": { - "": { + "": { + "type": "" "": "", "metadata": { "": "", "": "" } } - } + }, } - ``` As for what to fill in each ``, what is each ``, and which `"": ""` configuration items can be configured with the components, you can refer to [Component specs](en/component_specs/overview) . diff --git a/docs/en/design/configuration/configuration-api-with-apollo.md b/docs/en/design/configuration/configuration-api-with-apollo.md index ca0334c783..9300014a5f 100644 --- a/docs/en/design/configuration/configuration-api-with-apollo.md +++ b/docs/en/design/configuration/configuration-api-with-apollo.md @@ -51,7 +51,8 @@ A: Legacy systems using apollo can't migrate to our sidecar if we design like th ### config.json for sidecar ```json { - "apollo": { + "config_store": { + "type": "apollo", "address": [ "http://106.54.227.205:8080" ], diff --git a/docs/zh/component_specs/file/common.md b/docs/zh/component_specs/file/common.md index c8e6f8dda7..a202a0bf30 100644 --- a/docs/zh/component_specs/file/common.md +++ b/docs/zh/component_specs/file/common.md @@ -6,7 +6,8 @@ json配置文件有如下结构: ```json "file": { - "aliOSS": { + "file_demo": { + "type": "aliOSS" "metadata":[ { "endpoint": "endpoint_address", @@ -26,6 +27,7 @@ json配置文件有如下结构: ```golang type FileConfig struct { + Type string Metadata json.RawMessage } @@ -36,7 +38,8 @@ json配置文件有如下结构: ```json "file": { - "localFile": { + "file_demo": { + "type": "localFile", "group":{ "name": "group1" "permisson":"rwx", diff --git a/docs/zh/component_specs/lock/common.md b/docs/zh/component_specs/lock/common.md index adecb61454..cb15d5eece 100644 --- a/docs/zh/component_specs/lock/common.md +++ b/docs/zh/component_specs/lock/common.md @@ -4,7 +4,15 @@ json配置文件有如下结构: ```json "lock": { - "": { + "": { + "type":"", + "metadata": { + "": "", + "": "" + } + }, + "": { + "type":"", "metadata": { "": "", "": "" @@ -17,7 +25,8 @@ json配置文件有如下结构: ```json "lock": { - "redis": { + "lock_demo": { + "type": "redis", "metadata": { "redisHost": "localhost:6380", "redisPassword": "" diff --git a/docs/zh/component_specs/pubsub/common.md b/docs/zh/component_specs/pubsub/common.md index 18f6bee51a..7e8f65ebc5 100644 --- a/docs/zh/component_specs/pubsub/common.md +++ b/docs/zh/component_specs/pubsub/common.md @@ -4,7 +4,15 @@ json配置文件有如下结构: ```json "pub_subs": { - "": { + "": { + "type":"", + "metadata": { + "": "", + "": "" + } + }, + "": { + "type":"", "metadata": { "": "", "": "" @@ -17,7 +25,8 @@ json配置文件有如下结构: ```json "pub_subs": { - "redis": { + "pubsub_dmoe": { + "type": "redis", "metadata": { "redisHost": "localhost:6380", "redisPassword": "" diff --git a/docs/zh/component_specs/secret/common.md b/docs/zh/component_specs/secret/common.md index 66df5d6914..4740f19c8a 100644 --- a/docs/zh/component_specs/secret/common.md +++ b/docs/zh/component_specs/secret/common.md @@ -6,27 +6,38 @@ json配置文件有如下结构: ```json "secret_store": { - "": { - "metadata": { - "": "", - "": "" + "": { + "type":"", + "metadata": { + "": "", + "": "" + } + }, + "": { + "type":"", + "metadata": { + "": "", + "": "" + } } - } } ``` 本地文件秘钥、本地环境变量、k8s秘钥的配置例子: -``` +```json "secret_store": { - "local.file": { + "secret_demo": { + "type": "local.file", "metadata": { "secretsFile": "../../configs/config_secret_local_file.json" } }, - "local.env": { + "secret_demo1": { + "type": "local.env", "metadata": { } }, - "kubernetes": { + "secret_demo2": { + "type": "kubernetes", "metadata": { } } diff --git a/docs/zh/component_specs/sequencer/common.md b/docs/zh/component_specs/sequencer/common.md index 2ac1d5c459..e5308862fa 100644 --- a/docs/zh/component_specs/sequencer/common.md +++ b/docs/zh/component_specs/sequencer/common.md @@ -4,7 +4,19 @@ json配置文件有如下结构: ```json "sequencer": { - "": { + "": { + "type": "Component A Name", + "biggerThan": { + "": "", + "": "" + }, + "metadata": { + "": "", + "": "" + } + }, + "": { + "type": "Component B Name", "biggerThan": { "": "", "": "" @@ -21,7 +33,8 @@ json配置文件有如下结构: ```json "sequencer": { - "etcd": { + "sequencer_demo": { + "type": "etcd", "biggerThan": { "key1": 1, "key2": 111 diff --git a/docs/zh/component_specs/state/common.md b/docs/zh/component_specs/state/common.md index bb307265ba..6da16cc14a 100644 --- a/docs/zh/component_specs/state/common.md +++ b/docs/zh/component_specs/state/common.md @@ -4,12 +4,20 @@ json配置文件有如下结构: ```json "state": { - "": { - "metadata": { - "": "", - "": "" + "": { + "type":"", + "metadata": { + "": "", + "": "" + } + }, + "": { + "type":"", + "metadata": { + "": "", + "": "" + } } - } } ``` @@ -17,7 +25,8 @@ json配置文件有如下结构: ```json "state": { - "redis": { + "state_demo": { + "type": "redis", "metadata": { "redisHost": "localhost:6380", "redisPassword": "" diff --git a/docs/zh/configuration/overview.md b/docs/zh/configuration/overview.md index c340cb5e5a..4549f6a174 100644 --- a/docs/zh/configuration/overview.md +++ b/docs/zh/configuration/overview.md @@ -14,7 +14,8 @@ Layotto 启动时需要读取一个 json 格式的配置文件。示例配置文 ```json "grpc_config": { "": { - "": { + "": { + "type": "" "": "", "metadata": { "": "", @@ -23,16 +24,16 @@ Layotto 启动时需要读取一个 json 格式的配置文件。示例配置文 } }, "": { - "": { + "": { + "type": "" "": "", "metadata": { "": "", "": "" } } - } + }, } - ``` 至于每个API NAME填啥、每个组件名是啥、组件能配哪些Key/Value配置项,您可以查阅[组件配置说明](zh/component_specs/overview) \ No newline at end of file diff --git a/docs/zh/design/actuator/grpc-design-doc.md b/docs/zh/design/actuator/grpc-design-doc.md index c0ed3bd5b2..0071a48987 100644 --- a/docs/zh/design/actuator/grpc-design-doc.md +++ b/docs/zh/design/actuator/grpc-design-doc.md @@ -72,12 +72,14 @@ func MyFunc(_ json.RawMessage) *grpc.Server { "server_name":"runtime", "grpc_config": { "hellos": { - "helloworld": { + "quick_start_demo": { + "type": "helloworld", "hello": "greeting" } }, "config_store": { - "etcd": { + "config_store_demo": { + "type": "etcd", "address": ["127.0.0.1:2379"], "timeout": "10" } diff --git a/docs/zh/design/configuration/configuration-api-with-apollo.md b/docs/zh/design/configuration/configuration-api-with-apollo.md index ca0334c783..9300014a5f 100644 --- a/docs/zh/design/configuration/configuration-api-with-apollo.md +++ b/docs/zh/design/configuration/configuration-api-with-apollo.md @@ -51,7 +51,8 @@ A: Legacy systems using apollo can't migrate to our sidecar if we design like th ### config.json for sidecar ```json { - "apollo": { + "config_store": { + "type": "apollo", "address": [ "http://106.54.227.205:8080" ], diff --git a/docs/zh/design/file/file-design.md b/docs/zh/design/file/file-design.md index 959e5a5ade..5b3b9c2cc5 100644 --- a/docs/zh/design/file/file-design.md +++ b/docs/zh/design/file/file-design.md @@ -109,7 +109,8 @@ Put接口入参主要有三个,多了一个data字段用来传输文件内容 { "file": { - "aliOSS": { + "file_demo": { + "type": "aliOSS", "metadata":[ { "endpoint": "endpoint_address", diff --git a/pkg/runtime/bindings/factory.go b/pkg/runtime/bindings/factory.go index 7c74300d72..ba7f34c3c6 100644 --- a/pkg/runtime/bindings/factory.go +++ b/pkg/runtime/bindings/factory.go @@ -21,25 +21,25 @@ import ( ) type OutputBindingFactory struct { - Name string + CompType string FactoryMethod func() bindings.OutputBinding } -func NewOutputBindingFactory(name string, f func() bindings.OutputBinding) *OutputBindingFactory { +func NewOutputBindingFactory(compType string, f func() bindings.OutputBinding) *OutputBindingFactory { return &OutputBindingFactory{ - Name: name, + CompType: compType, FactoryMethod: f, } } type InputBindingFactory struct { - Name string + CompType string FactoryMethod func() bindings.InputBinding } -func NewInputBindingFactory(name string, f func() bindings.InputBinding) *InputBindingFactory { +func NewInputBindingFactory(compType string, f func() bindings.InputBinding) *InputBindingFactory { return &InputBindingFactory{ - Name: name, + CompType: compType, FactoryMethod: f, } } diff --git a/pkg/runtime/bindings/registry.go b/pkg/runtime/bindings/registry.go index 586b76aa8d..0e41647a84 100644 --- a/pkg/runtime/bindings/registry.go +++ b/pkg/runtime/bindings/registry.go @@ -31,8 +31,8 @@ const ( type Registry interface { RegisterOutputBinding(fs ...*OutputBindingFactory) RegisterInputBinding(fs ...*InputBindingFactory) - CreateOutputBinding(componentType string) (bindings.OutputBinding, error) - CreateInputBinding(componentType string) (bindings.InputBinding, error) + CreateOutputBinding(compType string) (bindings.OutputBinding, error) + CreateInputBinding(compType string) (bindings.InputBinding, error) } type bindingsRegistry struct { @@ -52,30 +52,30 @@ func NewRegistry(info *info.RuntimeInfo) Registry { func (r *bindingsRegistry) RegisterOutputBinding(fs ...*OutputBindingFactory) { for _, f := range fs { - r.outputBindingStores[f.Name] = f.FactoryMethod - r.info.RegisterComponent(ServiceName, f.Name) + r.outputBindingStores[f.CompType] = f.FactoryMethod + r.info.RegisterComponent(ServiceName, f.CompType) } } func (r *bindingsRegistry) RegisterInputBinding(fs ...*InputBindingFactory) { for _, f := range fs { - r.inputBindingStores[f.Name] = f.FactoryMethod - r.info.RegisterComponent(ServiceName, f.Name) + r.inputBindingStores[f.CompType] = f.FactoryMethod + r.info.RegisterComponent(ServiceName, f.CompType) } } -func (r *bindingsRegistry) CreateOutputBinding(componentType string) (bindings.OutputBinding, error) { - if f, ok := r.outputBindingStores[componentType]; ok { - r.info.LoadComponent(ServiceName, componentType) +func (r *bindingsRegistry) CreateOutputBinding(compType string) (bindings.OutputBinding, error) { + if f, ok := r.outputBindingStores[compType]; ok { + r.info.LoadComponent(ServiceName, compType) return f(), nil } - return nil, fmt.Errorf("service component %s is not regsitered", componentType) + return nil, fmt.Errorf("service component %s is not regsitered", compType) } -func (r *bindingsRegistry) CreateInputBinding(componentType string) (bindings.InputBinding, error) { - if f, ok := r.inputBindingStores[componentType]; ok { - r.info.LoadComponent(ServiceName, componentType) +func (r *bindingsRegistry) CreateInputBinding(compType string) (bindings.InputBinding, error) { + if f, ok := r.inputBindingStores[compType]; ok { + r.info.LoadComponent(ServiceName, compType) return f(), nil } - return nil, fmt.Errorf("service component %s is not regsitered", componentType) + return nil, fmt.Errorf("service component %s is not regsitered", compType) } diff --git a/pkg/runtime/lock/factory.go b/pkg/runtime/lock/factory.go index 17ac251634..7db50702d1 100644 --- a/pkg/runtime/lock/factory.go +++ b/pkg/runtime/lock/factory.go @@ -16,13 +16,13 @@ package lock import "mosn.io/layotto/components/lock" type Factory struct { - Name string + CompType string FactoryMethod func() lock.LockStore } -func NewFactory(name string, f func() lock.LockStore) *Factory { +func NewFactory(compType string, f func() lock.LockStore) *Factory { return &Factory{ - Name: name, + CompType: compType, FactoryMethod: f, } } diff --git a/pkg/runtime/lock/registry.go b/pkg/runtime/lock/registry.go index e7d9ccaa77..46cbc9c762 100644 --- a/pkg/runtime/lock/registry.go +++ b/pkg/runtime/lock/registry.go @@ -26,7 +26,7 @@ const ( type Registry interface { Register(fs ...*Factory) - Create(componentType string) (lock.LockStore, error) + Create(compType string) (lock.LockStore, error) } type lockRegistry struct { @@ -44,15 +44,15 @@ func NewRegistry(info *info.RuntimeInfo) Registry { func (r *lockRegistry) Register(fs ...*Factory) { for _, f := range fs { - r.stores[f.Name] = f.FactoryMethod - r.info.RegisterComponent(ServiceName, f.Name) + r.stores[f.CompType] = f.FactoryMethod + r.info.RegisterComponent(ServiceName, f.CompType) } } -func (r *lockRegistry) Create(componentType string) (lock.LockStore, error) { - if f, ok := r.stores[componentType]; ok { - r.info.LoadComponent(ServiceName, componentType) +func (r *lockRegistry) Create(compType string) (lock.LockStore, error) { + if f, ok := r.stores[compType]; ok { + r.info.LoadComponent(ServiceName, compType) return f(), nil } - return nil, fmt.Errorf("service component %s is not regsitered", componentType) + return nil, fmt.Errorf("service component %s is not regsitered", compType) } diff --git a/pkg/runtime/pubsub/factory.go b/pkg/runtime/pubsub/factory.go index 20f3284d90..f12423f1ee 100644 --- a/pkg/runtime/pubsub/factory.go +++ b/pkg/runtime/pubsub/factory.go @@ -19,13 +19,13 @@ package pubsub import "github.com/dapr/components-contrib/pubsub" type Factory struct { - Name string + CompType string FactoryMethod func() pubsub.PubSub } -func NewFactory(name string, f func() pubsub.PubSub) *Factory { +func NewFactory(compType string, f func() pubsub.PubSub) *Factory { return &Factory{ - Name: name, + CompType: compType, FactoryMethod: f, } } diff --git a/pkg/runtime/pubsub/registry.go b/pkg/runtime/pubsub/registry.go index 52d315ad50..6db051d6c7 100644 --- a/pkg/runtime/pubsub/registry.go +++ b/pkg/runtime/pubsub/registry.go @@ -29,7 +29,7 @@ const serviceName = "pubsub" // Registry is the pubsub registry with pubsub name as the key type Registry interface { Register(fs ...*Factory) - Create(componentType string) (dpubsub.PubSub, error) + Create(compType string) (dpubsub.PubSub, error) } type pubsubRegistry struct { @@ -47,15 +47,15 @@ func NewRegistry(info *info.RuntimeInfo) Registry { func (r *pubsubRegistry) Register(fs ...*Factory) { for _, f := range fs { - r.stores[f.Name] = f.FactoryMethod - r.info.RegisterComponent(serviceName, f.Name) + r.stores[f.CompType] = f.FactoryMethod + r.info.RegisterComponent(serviceName, f.CompType) } } -func (r *pubsubRegistry) Create(componentType string) (dpubsub.PubSub, error) { - if f, ok := r.stores[componentType]; ok { - r.info.LoadComponent(serviceName, componentType) +func (r *pubsubRegistry) Create(compType string) (dpubsub.PubSub, error) { + if f, ok := r.stores[compType]; ok { + r.info.LoadComponent(serviceName, compType) return f(), nil } - return nil, fmt.Errorf("service component %s is not registered", componentType) + return nil, fmt.Errorf("service component %s is not registered", compType) } diff --git a/pkg/runtime/secretstores/factory.go b/pkg/runtime/secretstores/factory.go index c799652c74..ef96c0afed 100644 --- a/pkg/runtime/secretstores/factory.go +++ b/pkg/runtime/secretstores/factory.go @@ -18,13 +18,13 @@ import ( ) type SecretStoresFactory struct { - Name string + CompType string FactoryMethod func() secretstores.SecretStore } -func NewFactory(name string, f func() secretstores.SecretStore) *SecretStoresFactory { +func NewFactory(compType string, f func() secretstores.SecretStore) *SecretStoresFactory { return &SecretStoresFactory{ - Name: name, + CompType: compType, FactoryMethod: f, } } diff --git a/pkg/runtime/secretstores/registry.go b/pkg/runtime/secretstores/registry.go index c900705983..4e7e210a4e 100644 --- a/pkg/runtime/secretstores/registry.go +++ b/pkg/runtime/secretstores/registry.go @@ -29,7 +29,7 @@ type ( // Registry is used to get registered secret store implementations. Registry interface { Register(ss ...*SecretStoresFactory) - Create(componentType string) (secretstores.SecretStore, error) + Create(compType string) (secretstores.SecretStore, error) } secretStoreRegistry struct { @@ -50,17 +50,17 @@ func NewRegistry(info *info.RuntimeInfo) Registry { // Register adds one or many new secret stores to the registry. func (s *secretStoreRegistry) Register(ss ...*SecretStoresFactory) { for _, component := range ss { - s.secretStores[component.Name] = component.FactoryMethod - s.info.RegisterComponent(ServiceName, component.Name) + s.secretStores[component.CompType] = component.FactoryMethod + s.info.RegisterComponent(ServiceName, component.CompType) } } // Create instantiates a secret store based on `name`. -func (s *secretStoreRegistry) Create(componentType string) (secretstores.SecretStore, error) { - if method, ok := s.secretStores[componentType]; ok { - s.info.LoadComponent(ServiceName, componentType) +func (s *secretStoreRegistry) Create(compType string) (secretstores.SecretStore, error) { + if method, ok := s.secretStores[compType]; ok { + s.info.LoadComponent(ServiceName, compType) return method(), nil } - return nil, errors.Errorf("couldn't find secret store %s", componentType) + return nil, errors.Errorf("couldn't find secret store %s", compType) } diff --git a/pkg/runtime/sequencer/factory.go b/pkg/runtime/sequencer/factory.go index 605bb09406..ac2778b7de 100644 --- a/pkg/runtime/sequencer/factory.go +++ b/pkg/runtime/sequencer/factory.go @@ -18,13 +18,13 @@ import ( ) type Factory struct { - Name string + CompType string FactoryMethod func() sequencer.Store } -func NewFactory(name string, f func() sequencer.Store) *Factory { +func NewFactory(compType string, f func() sequencer.Store) *Factory { return &Factory{ - Name: name, + CompType: compType, FactoryMethod: f, } } diff --git a/pkg/runtime/sequencer/registry.go b/pkg/runtime/sequencer/registry.go index 866d879593..c54894ad42 100644 --- a/pkg/runtime/sequencer/registry.go +++ b/pkg/runtime/sequencer/registry.go @@ -26,7 +26,7 @@ const ( type Registry interface { Register(fs ...*Factory) - Create(componentType string) (sequencer.Store, error) + Create(compType string) (sequencer.Store, error) } type sequencerRegistry struct { @@ -44,15 +44,15 @@ func NewRegistry(info *info.RuntimeInfo) Registry { func (r *sequencerRegistry) Register(fs ...*Factory) { for _, f := range fs { - r.stores[f.Name] = f.FactoryMethod - r.info.RegisterComponent(ServiceName, f.Name) + r.stores[f.CompType] = f.FactoryMethod + r.info.RegisterComponent(ServiceName, f.CompType) } } -func (r *sequencerRegistry) Create(componentType string) (sequencer.Store, error) { - if f, ok := r.stores[componentType]; ok { - r.info.LoadComponent(ServiceName, componentType) +func (r *sequencerRegistry) Create(compType string) (sequencer.Store, error) { + if f, ok := r.stores[compType]; ok { + r.info.LoadComponent(ServiceName, compType) return f(), nil } - return nil, fmt.Errorf("service component %s is not regsitered", componentType) + return nil, fmt.Errorf("service component %s is not regsitered", compType) } diff --git a/pkg/runtime/state/factory.go b/pkg/runtime/state/factory.go index 13cabd1144..b38e56cd9f 100644 --- a/pkg/runtime/state/factory.go +++ b/pkg/runtime/state/factory.go @@ -21,14 +21,14 @@ import ( ) type Factory struct { - Name string + CompType string FactoryMethod func() state.Store } // Create a new Factory type variable -func NewFactory(name string, f func() state.Store) *Factory { +func NewFactory(compType string, f func() state.Store) *Factory { return &Factory{ - Name: name, + CompType: compType, FactoryMethod: f, } } diff --git a/pkg/runtime/state/registry.go b/pkg/runtime/state/registry.go index 90d207efbf..63a2a3a3aa 100644 --- a/pkg/runtime/state/registry.go +++ b/pkg/runtime/state/registry.go @@ -30,7 +30,7 @@ const ( type Registry interface { Register(fs ...*Factory) - Create(componentType string) (state.Store, error) + Create(compType string) (state.Store, error) } type stateRegistry struct { @@ -50,16 +50,16 @@ func NewRegistry(info *info.RuntimeInfo) Registry { // Registration for multiple Factories func (r *stateRegistry) Register(fs ...*Factory) { for _, f := range fs { - r.stores[f.Name] = f.FactoryMethod - r.info.RegisterComponent(ServiceName, f.Name) + r.stores[f.CompType] = f.FactoryMethod + r.info.RegisterComponent(ServiceName, f.CompType) } } // Loading components for a registered Factory -func (r *stateRegistry) Create(componentType string) (state.Store, error) { - if f, ok := r.stores[componentType]; ok { - r.info.LoadComponent(ServiceName, componentType) +func (r *stateRegistry) Create(compType string) (state.Store, error) { + if f, ok := r.stores[compType]; ok { + r.info.LoadComponent(ServiceName, compType) return f(), nil } - return nil, fmt.Errorf("service component %s is not regsitered", componentType) + return nil, fmt.Errorf("service component %s is not regsitered", compType) } diff --git a/sdk/go-sdk/client/client_test.go b/sdk/go-sdk/client/client_test.go index e39a302683..f3c67aca09 100644 --- a/sdk/go-sdk/client/client_test.go +++ b/sdk/go-sdk/client/client_test.go @@ -30,7 +30,6 @@ import ( "google.golang.org/protobuf/types/known/anypb" empty "google.golang.org/protobuf/types/known/emptypb" - "mosn.io/layotto/components/lock" pb "mosn.io/layotto/spec/proto/runtime/v1" runtimev1pb "mosn.io/layotto/spec/proto/runtime/v1" ) @@ -290,19 +289,19 @@ func (t *testRuntimeServer) Unlock(ctx context.Context, in *runtimev1pb.UnlockRe if t.lock[in.ResourceId] == in.LockOwner { delete(t.lock, in.ResourceId) resp := &runtimev1pb.UnlockResponse{ - Status: runtimev1pb.UnlockResponse_Status(lock.SUCCESS), + Status: pb.UnlockResponse_SUCCESS, } return resp, nil } else { resp := &runtimev1pb.UnlockResponse{ - Status: runtimev1pb.UnlockResponse_Status(lock.LOCK_BELONG_TO_OTHERS), + Status: pb.UnlockResponse_LOCK_BELONG_TO_OTHERS, } return resp, nil } } else { resp := &runtimev1pb.UnlockResponse{ - Status: runtimev1pb.UnlockResponse_Status(lock.LOCK_UNEXIST), + Status: pb.UnlockResponse_LOCK_UNEXIST, } return resp, nil } diff --git a/sdk/go-sdk/client/lock_test.go b/sdk/go-sdk/client/lock_test.go index bd3f974f36..1f52117afd 100644 --- a/sdk/go-sdk/client/lock_test.go +++ b/sdk/go-sdk/client/lock_test.go @@ -19,8 +19,6 @@ package client import ( "testing" - "mosn.io/layotto/components/lock" - "context" "github.com/stretchr/testify/assert" @@ -52,33 +50,33 @@ func TestUnLock(t *testing.T) { assert.NotNil(t, lock.Success, true) }) - t.Run("unlock", func(t *testing.T) { + t.Run("Test to release locks held by others", func(t *testing.T) { request := runtimev1pb.UnlockRequest{ ResourceId: "lock_test", LockOwner: "layotto1", } unlock, err := testClient.Unlock(ctx, &request) assert.Nil(t, err) - assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_Status(lock.LOCK_BELONG_TO_OTHERS)) + assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_LOCK_BELONG_TO_OTHERS) }) - t.Run("unlock", func(t *testing.T) { + t.Run("the lock release test succeeded. ", func(t *testing.T) { request := runtimev1pb.UnlockRequest{ ResourceId: "lock_test", LockOwner: "layotto", } unlock, err := testClient.Unlock(ctx, &request) assert.Nil(t, err) - assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_Status(lock.SUCCESS)) + assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_SUCCESS) }) - t.Run("unlock", func(t *testing.T) { + t.Run("the test lock does not exist", func(t *testing.T) { request := runtimev1pb.UnlockRequest{ ResourceId: "lock_test", LockOwner: "layotto", } unlock, err := testClient.Unlock(ctx, &request) assert.Nil(t, err) - assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_Status(lock.LOCK_UNEXIST)) + assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_LOCK_UNEXIST) }) } diff --git a/sdk/go-sdk/go.mod b/sdk/go-sdk/go.mod index 6f6dbea4d3..f7775cb522 100644 --- a/sdk/go-sdk/go.mod +++ b/sdk/go-sdk/go.mod @@ -9,7 +9,6 @@ require ( github.com/google/uuid v1.3.0 google.golang.org/grpc v1.38.0 google.golang.org/protobuf v1.26.0 - mosn.io/layotto/components v0.0.0-20220519092435-5db44ed16f38 mosn.io/layotto/spec v0.0.0-20210707123820-584778d048d3 ) diff --git a/sdk/go-sdk/go.sum b/sdk/go-sdk/go.sum index 3b9e7c036d..4eb5298e39 100644 --- a/sdk/go-sdk/go.sum +++ b/sdk/go-sdk/go.sum @@ -141,6 +141,7 @@ github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhr github.com/dave/kerr v0.0.0-20170318121727-bc25dd6abe8e/go.mod h1:qZqlPyPvfsDJt+3wHJ1EvSXDuVjFTK0j2p/ca+gtsb8= github.com/dave/rebecca v0.9.1/go.mod h1:N6XYdMD/OKw3lkF3ywh8Z6wPGuwNFDNtWYEMFWEmXBA= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= 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= @@ -811,6 +812,7 @@ golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73r 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 h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628= 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= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -877,6 +879,7 @@ golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/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= @@ -940,6 +943,7 @@ golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXR golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 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 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= 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.1-0.20181010134911-4d1c5fb19474/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -1074,6 +1078,7 @@ google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfG 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 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1156,6 +1161,7 @@ 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/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-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 201c561f8c1c8783c8fd980f88f5aa9aa85bf1b5 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Tue, 24 May 2022 19:44:02 +0800 Subject: [PATCH 56/62] decouple Name and Type --- demo/sequencer/common/client.go | 16 ++++++++++++++++ demo/sequencer/in-memory/client.go | 0 demo/sequencer/mongo/client.go | 0 demo/sequencer/redis/client.go | 0 demo/sequencer/zookeeper/client.go | 0 5 files changed, 16 insertions(+) delete mode 100644 demo/sequencer/in-memory/client.go delete mode 100644 demo/sequencer/mongo/client.go delete mode 100644 demo/sequencer/redis/client.go delete mode 100644 demo/sequencer/zookeeper/client.go diff --git a/demo/sequencer/common/client.go b/demo/sequencer/common/client.go index 863d395265..335eaa89b1 100644 --- a/demo/sequencer/common/client.go +++ b/demo/sequencer/common/client.go @@ -1,3 +1,19 @@ +/* + * Copyright 2021 Layotto Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package main import ( diff --git a/demo/sequencer/in-memory/client.go b/demo/sequencer/in-memory/client.go deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/demo/sequencer/mongo/client.go b/demo/sequencer/mongo/client.go deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/demo/sequencer/redis/client.go b/demo/sequencer/redis/client.go deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/demo/sequencer/zookeeper/client.go b/demo/sequencer/zookeeper/client.go deleted file mode 100644 index e69de29bb2..0000000000 From 760fc30dd237ab6bda30c084cc9fd4636d664aa8 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Tue, 24 May 2022 19:48:34 +0800 Subject: [PATCH 57/62] decouple Name and Type --- sdk/go-sdk/go.mod | 2 +- sdk/go-sdk/go.sum | 1110 +-------------------------------------------- 2 files changed, 4 insertions(+), 1108 deletions(-) diff --git a/sdk/go-sdk/go.mod b/sdk/go-sdk/go.mod index f7775cb522..231d33fb15 100644 --- a/sdk/go-sdk/go.mod +++ b/sdk/go-sdk/go.mod @@ -4,9 +4,9 @@ go 1.14 require ( github.com/golang/protobuf v1.5.2 + github.com/google/uuid v1.3.0 github.com/pkg/errors v0.9.1 github.com/stretchr/testify v1.7.0 - github.com/google/uuid v1.3.0 google.golang.org/grpc v1.38.0 google.golang.org/protobuf v1.26.0 mosn.io/layotto/spec v0.0.0-20210707123820-584778d048d3 diff --git a/sdk/go-sdk/go.sum b/sdk/go-sdk/go.sum index 4eb5298e39..3aaa69fbc4 100644 --- a/sdk/go-sdk/go.sum +++ b/sdk/go-sdk/go.sum @@ -1,260 +1,18 @@ cloud.google.com/go v0.26.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.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw= -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= -cloud.google.com/go v0.44.2/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.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.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -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/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= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -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= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU= 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/HdrHistogram/hdrhistogram-go v1.0.1/go.mod h1:BWJ+nMSHY3L41Zj7CA3uXnloDp7xxV0YvstAE7nKTaM= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM= -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/SkyAPM/go2sky v0.5.0/go.mod h1:TANzYw5EvIlTidGWvQxtvO87rM6C746HkM0xkWqnPQw= -github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/TarsCloud/TarsGo v1.1.4/go.mod h1:jkslu43B0kZitq9ztCH6ZM6l4rCKGkMjdqEPjHoOdjc= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/Xuanwo/gg v0.2.0/go.mod h1:0fLiiSxR87u2UA0ZNZiKZXuz3jnJdbDHWtU2xpdcH3s= -github.com/Xuanwo/go-bufferpool v0.2.0/go.mod h1:Mle++9GGouhOwGj52i9PJLNAPmW2nb8PWBP7JJzNCzk= -github.com/Xuanwo/templateutils v0.1.0/go.mod h1:OdE0DJ+CJxDBq6psX5DPV+gOZi8bhuHuVUpPCG++Wb8= -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/alibaba/sentinel-golang v1.0.2-0.20210112133552-db6063eb263e/go.mod h1:uHDiUhfQjc9ACs9AdwP9CxmSze/B7tJ74QCdAbWl7x0= -github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= -github.com/alicebob/miniredis/v2 v2.16.0/go.mod h1:gquAfGbzn92jvtrSC69+6zZnwSODVXVpYDRaGhWaL6I= -github.com/aliyun/alibaba-cloud-sdk-go v1.61.18/go.mod h1:v8ESoHo4SyHmuB4b1tJqDHxfTGEciD+yhvOU/5s1Rfk= -github.com/aliyun/aliyun-oss-go-sdk v2.1.8+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= -github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= -github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antlr/antlr4 v0.0.0-20200503195918-621b933c7a7f/go.mod h1:T7PbCXFs94rrTttyxjbyT5+/1V8T2TYDejxUfHJjw1Y= -github.com/apache/dubbo-go-hessian2 v1.7.0/go.mod h1:7rEw9guWABQa6Aqb8HeZcsYPHsOS7XT1qtJvkmI6c5w= -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/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/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/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/config v1.8.2/go.mod h1:r0bkX9NyuCuf28qVcsEMtpAQibT7gA1Q0gzkjvgJdLU= -github.com/aws/aws-sdk-go-v2/credentials v1.4.2/go.mod h1:9Sp6u121/f0NnvHyhG7dgoYeUTEFC2vsvJqJ6wXpkaI= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.5.1/go.mod h1:W1ldHfsgeGlKpJ4xZMKZUI6Wmp6EAstU7PxnhbXWWrI= -github.com/aws/aws-sdk-go-v2/internal/ini v1.2.3/go.mod h1:EES9ToeC3h063zCFDdqWGnARExNdULPaBvARm1FLwxA= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.3.0/go.mod h1:v8ygadNyATSm6elwJ/4gzJwcFhri9RqS8skgHKiwXPU= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.1/go.mod h1:Ve+eJOx9UWaT/lMVebnFhDhO49fSLVedHoA82+Rqme0= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.7.1/go.mod h1:yg4EN/BKoc7+DLhNOxxdvoO3+iyW2FuynvaKqLcLDUM= -github.com/aws/aws-sdk-go-v2/service/s3 v1.16.0/go.mod h1:Tk23mCmfL3wb3tNIeMk/0diUZ0W4R6uZtjYKguMLW2s= -github.com/aws/aws-sdk-go-v2/service/sso v1.4.1/go.mod h1:ycPdbJZlM0BLhuBnd80WX9PucWPG88qps/2jl9HugXs= -github.com/aws/aws-sdk-go-v2/service/sts v1.7.1/go.mod h1:r1i8QwKPzwByXqZb3POQfBs7jozrdnHz8PVbsvyx73w= -github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= -github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= -github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= -github.com/c2h5oh/datasize v0.0.0-20171227191756-4eba002a5eae/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cch123/supermonkey v1.0.1-0.20210420090843-d792ef7fb1d7/go.mod h1:d5jXTCyG6nu/pu0vYmoC0P/l0eBGesv3oQQ315uNBOA= -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/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/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -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/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-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= -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-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/colinmarc/hdfs/v2 v2.2.0/go.mod h1:Wss6n3mtaZyRwWaqtSH+6ge01qT0rw9dJJmvoUnIQ/E= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -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.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/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/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/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/dave/dst v0.26.2/go.mod h1:UMDJuIRPfyUCC78eFuB+SV/WI8oDeyFDvM/JR6NI3IU= -github.com/dave/gopackages v0.0.0-20170318123100-46e7023ec56e/go.mod h1:i00+b/gKdIDIxuLDFob7ustLAVqhsZRk2qVZrArELGQ= -github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= -github.com/dave/kerr v0.0.0-20170318121727-bc25dd6abe8e/go.mod h1:qZqlPyPvfsDJt+3wHJ1EvSXDuVjFTK0j2p/ca+gtsb8= -github.com/dave/rebecca v0.9.1/go.mod h1:N6XYdMD/OKw3lkF3ywh8Z6wPGuwNFDNtWYEMFWEmXBA= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= 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/dchest/siphash v1.2.1/go.mod h1:q+IRvb2gOSrUnYoPqHiyHXS0FOBBOdl6tONBlVnOnt4= -github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/dubbogo/getty v1.3.4/go.mod h1:36f+gH/ekaqcDWKbxNBQk9b9HXcGtaI6YHxp4YTntX8= -github.com/dubbogo/go-zookeeper v1.0.3/go.mod h1:fn6n2CAEer3novYgk9ULLwAjuV8/g4DdC2ENwRb6E+c= -github.com/dubbogo/gost v1.5.2/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8= -github.com/dubbogo/gost v1.9.0/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8= -github.com/dubbogo/gost v1.11.11/go.mod h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI= -github.com/dubbogo/gost v1.11.16/go.mod h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI= -github.com/dubbogo/jsonparser v1.0.1/go.mod h1:tYAtpctvSP/tWw4MeelsowSPgXQRVHHWbqL6ynps8jU= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -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/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239/go.mod h1:Gdwt2ce0yfBxPvZrHkprdPPTTS3N5rwmLE8T22KBXlw= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -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/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/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/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/go-chi/chi v4.1.0+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -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-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/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -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-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= -github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.8.0/go.mod h1:9JhgTzTaE31GZDpH/HSvHiRJrJ3iKAgqqH0Bl/Ocjdk= -github.com/go-redis/redis/v8 v8.8.0/go.mod h1:F7resOH5Kdug49Otu24RjHWwgK7u9AmtqWMnCV1iP5Y= -github.com/go-resty/resty/v2 v2.6.0/go.mod h1:PwvJS6hvaPkjtjNg9ph+VrSD92bi5Zq73w/BIH7cC3Q= -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-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:56xuuqnHyryaerycW3BfssRdxQstACi0Epw/yC5E2xM= -github.com/go-xorm/xorm v0.7.9/go.mod h1:XiVxrMMIhFkwSkh96BW7PACl7UhLtx2iJIHMdmjh5sQ= -github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= -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/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= -github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= 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.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -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.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.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= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -262,856 +20,66 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= 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/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/cel-go v0.5.1/go.mod h1:9SvtVVTtZV4DTB1/RuAD1D2HhuqEIdmZEE/r/lrFyKE= -github.com/google/cel-spec v0.4.0/go.mod h1:2pBM5cU4UKjbPDXBgwWkiwBsVgnxknuEJ7C5TDWwORQ= 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.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 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181127221834-b4f47329b966/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -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-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -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.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.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/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/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -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/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/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= -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/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -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.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= -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.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.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.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.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= -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/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2/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/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/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -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/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= -github.com/jackc/pgx v3.6.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= -github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= -github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= -github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= -github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= -github.com/jcmturner/gokrb5/v8 v8.4.1/go.mod h1:T1hnNppQsBtxW0tCHMHTkAt8n/sABdzZgZdoFrZaZNM= -github.com/jcmturner/rpc/v2 v2.0.2/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= -github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag= -github.com/jinzhu/copier v0.3.2/go.mod h1:24xnZezI2Yqac9J61UC6/dG/k76ttpq0DdJI3QmUvro= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -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/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.5/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/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/ansiterm v0.0.0-20160907234532-b99631de12cf/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= -github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c/go.mod h1:nD0vlnrUjcjJhqN5WuCWZyzfd5AHZAC9/ajvbSx69xA= -github.com/juju/cmd v0.0.0-20171107070456-e74f39857ca0/go.mod h1:yWJQHl73rdSX4DHVKGqkAip+huBslxRwS8m9CrOLq18= -github.com/juju/collections v0.0.0-20200605021417-0d0ec82b7271/go.mod h1:5XgO71dV1JClcOJE+4dzdn4HrI5LiyKd7PlVG6eZYhY= -github.com/juju/errors v0.0.0-20150916125642-1b5e39b83d18/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= -github.com/juju/errors v0.0.0-20190930114154-d42613fe1ab9/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= -github.com/juju/errors v0.0.0-20200330140219-3fe23663418f/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= -github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE= -github.com/juju/httpprof v0.0.0-20141217160036-14bf14c30767/go.mod h1:+MaLYz4PumRkkyHYeXJ2G5g5cIW0sli2bOfpmbaMV/g= -github.com/juju/loggo v0.0.0-20170605014607-8232ab8918d9/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= -github.com/juju/loggo v0.0.0-20200526014432-9ce3a2e09b5e/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= -github.com/juju/mgo/v2 v2.0.0-20210302023703-70d5d206e208/go.mod h1:0OChplkvPTZ174D2FYZXg4IB9hbEwyHkD+zT+/eK+Fg= -github.com/juju/mutex v0.0.0-20171110020013-1fe2a4bf0a3a/go.mod h1:Y3oOzHH8CQ0Ppt0oCKJ2JFO81/EsWenH5AEqigLH+yY= -github.com/juju/retry v0.0.0-20151029024821-62c620325291/go.mod h1:OohPQGsr4pnxwD5YljhQ+TZnuVRYpa5irjugL1Yuif4= -github.com/juju/retry v0.0.0-20180821225755-9058e192b216/go.mod h1:OohPQGsr4pnxwD5YljhQ+TZnuVRYpa5irjugL1Yuif4= -github.com/juju/testing v0.0.0-20180402130637-44801989f0f7/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= -github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= -github.com/juju/testing v0.0.0-20210324180055-18c50b0c2098/go.mod h1:7lxZW0B50+xdGFkvhAb8bwAGt6IU87JB1H9w4t8MNVM= -github.com/juju/utils v0.0.0-20180424094159-2000ea4ff043/go.mod h1:6/KLg8Wz/y2KVGWEpkK9vMNGkOnu4k/cqs8Z1fKjTOk= -github.com/juju/utils v0.0.0-20200116185830-d40c2fe10647/go.mod h1:6/KLg8Wz/y2KVGWEpkK9vMNGkOnu4k/cqs8Z1fKjTOk= -github.com/juju/utils/v2 v2.0.0-20200923005554-4646bfea2ef1/go.mod h1:fdlDtQlzundleLLz/ggoYinEt/LmnrpNKcNTABQATNI= -github.com/juju/version v0.0.0-20161031051906-1f41e27e54f2/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U= -github.com/juju/version v0.0.0-20180108022336-b64dbd566305/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U= -github.com/juju/version v0.0.0-20191219164919-81c1be00b9a6/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U= -github.com/julienschmidt/httprouter v1.1.1-0.20151013225520-77a895ad01eb/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -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/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= -github.com/k0kubun/pp v3.0.1+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg= -github.com/kevinburke/go-bindata v3.22.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -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/klauspost/compress v1.10.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.12.2/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -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/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4= -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/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/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/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/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= -github.com/lestrrat/go-envload v0.0.0-20180220120943-6ed08b54a570/go.mod h1:BLt8L9ld7wVsvEWQbuLrUZnCMnUmLZ+CGDzKtclrTlE= -github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f/go.mod h1:UGmTpUd3rjbtfIpwAPrcfmGf/Z1HS95TATB+m57TPB8= -github.com/lestrrat/go-jwx v0.0.0-20180221005942-b7d4802280ae/go.mod h1:T+yHdCP6MJKtzoVQMHvVCeam5VFwX1+rWzn5zZgKYMI= -github.com/lestrrat/go-pdebug v0.0.0-20180220043741-569c97477ae8/go.mod h1:VXFH11P7fHn2iPBsfSW1JacR59rttTcafJnwYcI/IdY= -github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042/go.mod h1:TPpsiPUEh0zFL1Snz4crhMlBe60PYxRHr5oFF3rRYg0= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -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/lunixbochs/vtclean v0.0.0-20160125035106-4fbf7632a2c6/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/masterzen/azure-sdk-for-go v3.2.0-beta.0.20161014135628-ee4f0065d00c+incompatible/go.mod h1:mf8fjOu33zCqxUjuiU3I8S1lJMyEAlH+0F2+M5xl3hE= -github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= -github.com/masterzen/winrm v0.0.0-20161014151040-7a535cd943fc/go.mod h1:CfZSN7zwz5gJiFhZJz49Uzk7mEBHIceWmbFmYx7Hf7E= -github.com/masterzen/xmlpath v0.0.0-20140218185901-13f4951698ad/go.mod h1:A0zPC53iKKKcXYxr4ROjpQRQ5FgJXtelNdSmHHuq/tY= -github.com/mattn/go-colorable v0.0.6/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.0-20160806122752-66b8e73f3f5c/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -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/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -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/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.25/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw= -github.com/minio/minio-go/v7 v7.0.15/go.mod h1:pUV0Pc+hPd1nccgmzQF/EXh48l/Z/yps6QPF1aaie4g= -github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= -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 v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -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.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -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/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= -github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/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/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/nacos-group/nacos-sdk-go v1.0.8/go.mod h1:hlAPn3UdzlxIlSILAyOXKxjFSvDJ9oLzTJ9hLAK1KzA= -github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk= -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/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= -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 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.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/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.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/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -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/opentrx/seata-golang/v2 v2.0.4/go.mod h1:uVMIDsvM4NBQXoZgtfHleBGrAqwkUry3jD3cf/JYi9k= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.3.5/go.mod h1:uVHyebswE1cCXr2A73cRM2frx5ld1RJUCJkFNZ90ZiI= -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/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/pborman/getopt v0.0.0-20180729010549-6fdd0a2c7117/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.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -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/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/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/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/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.5.1/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.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-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/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.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.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/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/qiniu/dyn v1.3.0/go.mod h1:E8oERcm8TtwJiZvkQPbcAh0RL8jO1G0VXJMW3FAWdkk= -github.com/qiniu/go-sdk/v7 v7.11.1/go.mod h1:btsaOc8CA3hdVloULfFdDgDc+g4f3TDZEFsDY0BLE+w= -github.com/qiniu/x v1.10.5/go.mod h1:03Ni9tj+N2h2aKnAz+6N0Xfl8FwMEDRC2PAlxekASDs= -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/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -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/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= -github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -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/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shirou/gopsutil v3.20.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/gopsutil/v3 v3.20.11/go.mod h1:igHnfak0qnw1biGeI2qKQvu0ZkwvEkUcCLlYhZzdr/4= -github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= -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.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/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -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/goconvey v1.6.6/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/soheilhy/cmux v0.1.5-0.20210205191134-5ec6847320e5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -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/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -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/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/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/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -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/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/testify v0.0.0-20151208002404-e3a8ff8ce365/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/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/tebeka/strftime v0.1.3/go.mod h1:7wJm3dZlpr4l/oVK0t1HYIc4rMzQ2XJlOMIUJUJH6XQ= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.194/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.194/go.mod h1:yrBKWhChnDqNz1xuXdSbWXG56XawEq0G5j1lg4VwBD4= -github.com/tencentyun/cos-go-sdk-v5 v0.7.33/go.mod h1:4E4+bQ2gBVJcgEC9Cufwylio4mXOct2iu05WjgEBx1o= -github.com/tevid/gohamcrest v1.1.1/go.mod h1:3UvtWlqm8j5JbwYZh80D/PVBt0mJ1eJiYgZMibh0H/k= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -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/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3/go.mod h1:QDlpd3qS71vYtakd2hmdpqhJ9nwv6mD6A30bQ1BPBFE= -github.com/trainyao/go-maglev v0.0.0-20200611125015-4c1ae64d96a8/go.mod h1:VBsRn0SDTltC3/SzN6SgXlQtmBk6U5sf0KW+eT+WMbc= -github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-lib v2.4.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -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/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.14.1-0.20200605121233-ac51d598dc54/go.mod h1:hWrFNtR2Jc1XrK0fDq2Y+MkA7F/v3lYKRDXd2CmSikc= -github.com/valyala/fasthttp v1.26.0/go.mod h1:cmWIqlu99AO/RKcp1HWaViTqc57FswJOfYYdPJBl8BA= -github.com/valyala/fasttemplate v1.1.0/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -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/wasmerio/wasmer-go v1.0.3/go.mod h1:0gzVdSfg6pysA6QVp6iVRPTagC6Wq9pOE8J86WKb2Fk= -github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= -github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= -github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= -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/gopher-lua v0.0.0-20200816102855-ee81675732da/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA= -github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= -github.com/zouyx/agollo/v4 v4.0.7/go.mod h1:unhojnZiGLlT4gLpWz3Oa7sGcChZWv/1DJBkV6s8uAE= -go.beyondstorage.io/endpoint v1.2.0/go.mod h1:oZ7Z7HZ7mAo337JBLjuCF/DM66HVEUu6+hw68c3UcLs= -go.beyondstorage.io/services/hdfs v0.3.0/go.mod h1:yU0eL80JczPPuR5hoK21Dck0H9gXDBu3WN51Od7wtlo= -go.beyondstorage.io/v5 v5.0.0/go.mod h1:3wV9gCQnqu7tD/3LMeo2yimUKIeTSHpTc6wHSb0yY20= -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/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/api/v3 v3.5.0-alpha.0/go.mod h1:mPcW6aZJukV6Aa81LSKpBjQXTWlXB5r74ymPoSWa3Sw= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0-alpha.0/go.mod h1:kdV+xzCJ3luEBSIeQyB/OEKkWKd8Zkux4sbDeANrosU= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.etcd.io/etcd/client/v3 v3.5.0-alpha.0/go.mod h1:wKt7jgDgf/OfKiYmCq5WFGxOFAkVMLxiiXgLDFhECr8= -go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= -go.etcd.io/etcd/pkg/v3 v3.5.0-alpha.0/go.mod h1:tV31atvwzcybuqejDoY3oaNRTtlD2l/Ot78Pc9w7DMY= -go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= -go.etcd.io/etcd/raft/v3 v3.5.0-alpha.0/go.mod h1:FAwse6Zlm5v4tEWZaTjmNhe17Int4Oxbu7+2r0DiD3w= -go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= -go.etcd.io/etcd/server/v3 v3.5.0-alpha.0/go.mod h1:tsKetYpt980ZTpzl/gb+UOJj9RkIyCb1u4wjzMg90BQ= -go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= -go.mongodb.org/mongo-driver v1.8.0/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= -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.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/otel v0.19.0/go.mod h1:j9bF567N9EfomkSidSfmMwIwIBuP37AMAIzVW85OxSg= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= -go.opentelemetry.io/otel/metric v0.19.0/go.mod h1:8f9fglJPRnXuskQmKpnad31lcLJ2VmNNqIsx/uIwBSc= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/oteltest v0.19.0/go.mod h1:tI4yxwh8U21v7JD6R3BcA/2+RBoTKFexE/PJ/nSO7IA= -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/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.19.0/go.mod h1:4IXiNextNOpPnRlI4ryK69mn5iC84bjBWZQA5DXz/qg= -go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -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.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/automaxprocs v1.3.0/go.mod h1:9CWT6lKIep8U41DDaPiH6eFscnTyjfTANNQNx6LrIcA= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -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.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -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.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= -go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -golang.org/x/arch v0.0.0-20180920145803-b19384d3c130/go.mod h1:cYlCBUl1MsqxdiKgmc4uh7TxZfWSFLOGSRR090WDxt8= -golang.org/x/arch v0.0.0-20200826200359-b19915210f00/go.mod h1:flIaEI6LNU6xOCD5PaJvn9wGP0agmIOqjrtsKGRguv4= -golang.org/x/crypto v0.0.0-20180214000028-650f4a345ab4/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-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= -golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -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-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/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-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= 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-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.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180406214816-61147c48b25b/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-20180826012351-8a410e7b638d/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 h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628= 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= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-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-20191004110552-13f9640d40b9/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-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/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-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-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e h1:XpT3nA5TvE525Ne3hInMh6+GETgn27Zfm9dxsThnX2Q= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e/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= -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-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= 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-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/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-20180903190138-2b024373dcd9/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-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/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-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-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-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-20191026070338-33540a1f6037/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= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -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-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200602100848-8d3cce7afc34/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/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-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201024232916-9f70ab9862d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201223074533-0d417f636930/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/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-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-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211020174200-9d6173849985 h1:LOlKVhfDyahgmqa97awczplwkjzNaELFg3zRIJ13RYo= -golang.org/x/sys v0.0.0-20211020174200-9d6173849985/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/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 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= 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.1-0.20181010134911-4d1c5fb19474/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -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.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/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-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/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-20180828015842-6cd1fcedba52/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-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= 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= -golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/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-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-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-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-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= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/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-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/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-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-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-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20201014170642-d1624618ad65/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -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.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -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 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.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= -google.golang.org/api v0.9.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.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/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.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.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.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/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-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= -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-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-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 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -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-20200806141610-86f49bd18e98/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-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc/examples v0.0.0-20210818220435-8ab16ef276a3/go.mod h1:bF8wuZSAZTcbF7ZPKrDI/qY52toTP/yxLpRRY4Eu9Js= 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= @@ -1120,86 +88,14 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -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= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20160105164936-4f90aeace3a2/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-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/errgo.v1 v1.0.0-20161222125816-442357a80af5/go.mod h1:u0ALmqvLRxLI95fkdCEWrE6mhWYZW1aMOJHp5YXLHTg= -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/httprequest.v1 v1.1.1/go.mod h1:/CkavNL+g3qLOrpFHVrEx4NKepeqR4XTZWNj4sGGjz0= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/mgo.v2 v2.0.0-20160818015218-f2b6f6c918c4/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -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/src-d/go-billy.v4 v4.3.0/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637/go.mod h1:BHsqpu/nsuzkT5BpiH1EMZPLyqSMM8JbIavyFACoFNk= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170712054546-1be3d31502d6/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -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/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-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/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= -istio.io/api v0.0.0-20200227213531-891bf31f3c32/go.mod h1:bcY3prusO/6vA6zGHz4PNG2v79clPyTw06Xx3fprJSQ= -istio.io/gogo-genproto v0.0.0-20190930162913-45029607206a/go.mod h1:OzpAts7jljZceG4Vqi5/zXy/pOg1b209T3jb7Nv5wIs= -k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= -k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM= -launchpad.net/xmlpath v0.0.0-20130614043138-000000000004/go.mod h1:vqyExLOM3qBx7mvYRkoxjSCF945s0mbe7YynlKYXtsA= -mosn.io/api v0.0.0-20210204052134-5b9a826795fd/go.mod h1:TBv4bz2f2RbpgdohbVAFRFVOoN8YyEUiLH3jAh752Qc= -mosn.io/api v0.0.0-20211217011300-b851d129be01/go.mod h1:TBv4bz2f2RbpgdohbVAFRFVOoN8YyEUiLH3jAh752Qc= -mosn.io/layotto/components v0.0.0-20220519092435-5db44ed16f38 h1:7jiT7KYm3e8c00O/1Vv2V+qDZGA6qzefhZqIoLszYF4= -mosn.io/layotto/components v0.0.0-20220519092435-5db44ed16f38/go.mod h1:EaUv7I3YjQNmeHfT3afM4tzVQgjBPC3tyDQWoilhXlM= -mosn.io/mosn v0.25.1-0.20211217125944-69b50c40af81/go.mod h1:JwLkls6oMaap0+P1uZ1d1ccdLPigdK8xH8gDSm3SEq4= -mosn.io/pkg v0.0.0-20211217101631-d914102d1baf/go.mod h1:tK3Vbw6CcVeJ9H/BGjJ1wn6hRXt4Oxjfq1+gkOM0zG8= -mosn.io/proxy-wasm-go-host v0.1.1-0.20210524020952-3fb13ba763a6/go.mod h1:wBRY9Xjf77GZhvAuEc6nQXZ6dQK39kNU2ok/+Z8mSU8= -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/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -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= -vimagination.zapto.org/byteio v0.0.0-20200222190125-d27cba0f0b10/go.mod h1:fl9OF22g6MTKgvHA1hqMXe/L7+ULWofVTwbC9loGu7A= -vimagination.zapto.org/memio v0.0.0-20200222190306-588ebc67b97d/go.mod h1:zHGDKp2tyvF4IAfLti4pKYqCJucXYmmKMb3UMrCHK/4= -xorm.io/builder v0.3.6/go.mod h1:LEFAPISnRzG+zxaxj2vPicRwz67BdhFreKg8yv8/TgU= -xorm.io/builder v0.3.9/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE= -xorm.io/core v0.7.2-0.20190928055935-90aeac8d08eb/go.mod h1:jJfd0UAEzZ4t87nbQYtVjmqpIODugN6PD2D9E+dJvdM= From b1263b5ae32727afc00b8c2957be91a97b797e08 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Tue, 24 May 2022 19:53:08 +0800 Subject: [PATCH 58/62] decouple Name and Type --- sdk/go-sdk/go.mod | 8 ++++---- sdk/go-sdk/go.sum | 12 ++++-------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/sdk/go-sdk/go.mod b/sdk/go-sdk/go.mod index 231d33fb15..d685a85bfe 100644 --- a/sdk/go-sdk/go.mod +++ b/sdk/go-sdk/go.mod @@ -3,12 +3,12 @@ module mosn.io/layotto/sdk/go-sdk go 1.14 require ( - github.com/golang/protobuf v1.5.2 - github.com/google/uuid v1.3.0 + github.com/golang/protobuf v1.5.0 + github.com/google/uuid v1.1.2 github.com/pkg/errors v0.9.1 github.com/stretchr/testify v1.7.0 - google.golang.org/grpc v1.38.0 - google.golang.org/protobuf v1.26.0 + google.golang.org/grpc v1.37.0 + google.golang.org/protobuf v1.26.0-rc.1 mosn.io/layotto/spec v0.0.0-20210707123820-584778d048d3 ) diff --git a/sdk/go-sdk/go.sum b/sdk/go-sdk/go.sum index 3aaa69fbc4..f63b65b4ce 100644 --- a/sdk/go-sdk/go.sum +++ b/sdk/go-sdk/go.sum @@ -20,9 +20,8 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0 h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4= 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/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= @@ -30,9 +29,8 @@ github.com/google/go-cmp v0.4.0/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.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -77,9 +75,8 @@ google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZi google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.37.0 h1:uSZWeQJX5j11bIQ4AJoj+McDBo29cY1MCoC1wO3ts+c= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= 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= @@ -89,9 +86,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1 h1:7QnIQpGRHE5RnLKnESfDoxm2dTapTZua5a0kS0A+VXQ= 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= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From 0c9c2cfa470704886f527142ab3b403231ae356f Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Tue, 24 May 2022 19:55:31 +0800 Subject: [PATCH 59/62] decouple Name and Type --- sdk/go-sdk/client/lock_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/go-sdk/client/lock_test.go b/sdk/go-sdk/client/lock_test.go index 7b08877178..547bbb2bfc 100644 --- a/sdk/go-sdk/client/lock_test.go +++ b/sdk/go-sdk/client/lock_test.go @@ -41,7 +41,7 @@ func TestTryLock(t *testing.T) { func TestUnLock(t *testing.T) { ctx := context.Background() - t.Run("try lock", func(t *testing.T) { + t.Run("try lock successfully", func(t *testing.T) { request := runtimev1pb.TryLockRequest{ StoreName: "demo", ResourceId: "lock_test", From d996572756df62d023577cd3570cc95a9641d843 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Tue, 24 May 2022 20:05:48 +0800 Subject: [PATCH 60/62] decouple Name and Type --- demo/go.sum | 1063 -------------------------------- sdk/go-sdk/client/lock_test.go | 1 + 2 files changed, 1 insertion(+), 1063 deletions(-) diff --git a/demo/go.sum b/demo/go.sum index 8f6c2afc10..31f0a75b75 100644 --- a/demo/go.sum +++ b/demo/go.sum @@ -1,260 +1,21 @@ cloud.google.com/go v0.26.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.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw= -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= -cloud.google.com/go v0.44.2/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.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.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -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/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= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -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= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU= 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/HdrHistogram/hdrhistogram-go v1.0.1/go.mod h1:BWJ+nMSHY3L41Zj7CA3uXnloDp7xxV0YvstAE7nKTaM= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM= -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/SkyAPM/go2sky v0.5.0/go.mod h1:TANzYw5EvIlTidGWvQxtvO87rM6C746HkM0xkWqnPQw= -github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/TarsCloud/TarsGo v1.1.4/go.mod h1:jkslu43B0kZitq9ztCH6ZM6l4rCKGkMjdqEPjHoOdjc= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/Xuanwo/gg v0.2.0/go.mod h1:0fLiiSxR87u2UA0ZNZiKZXuz3jnJdbDHWtU2xpdcH3s= -github.com/Xuanwo/go-bufferpool v0.2.0/go.mod h1:Mle++9GGouhOwGj52i9PJLNAPmW2nb8PWBP7JJzNCzk= -github.com/Xuanwo/templateutils v0.1.0/go.mod h1:OdE0DJ+CJxDBq6psX5DPV+gOZi8bhuHuVUpPCG++Wb8= -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/alibaba/sentinel-golang v1.0.2-0.20210112133552-db6063eb263e/go.mod h1:uHDiUhfQjc9ACs9AdwP9CxmSze/B7tJ74QCdAbWl7x0= -github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= -github.com/alicebob/miniredis/v2 v2.16.0/go.mod h1:gquAfGbzn92jvtrSC69+6zZnwSODVXVpYDRaGhWaL6I= -github.com/aliyun/alibaba-cloud-sdk-go v1.61.18/go.mod h1:v8ESoHo4SyHmuB4b1tJqDHxfTGEciD+yhvOU/5s1Rfk= -github.com/aliyun/aliyun-oss-go-sdk v2.1.8+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= -github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= -github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antlr/antlr4 v0.0.0-20200503195918-621b933c7a7f/go.mod h1:T7PbCXFs94rrTttyxjbyT5+/1V8T2TYDejxUfHJjw1Y= -github.com/apache/dubbo-go-hessian2 v1.7.0/go.mod h1:7rEw9guWABQa6Aqb8HeZcsYPHsOS7XT1qtJvkmI6c5w= -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/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/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/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/config v1.8.2/go.mod h1:r0bkX9NyuCuf28qVcsEMtpAQibT7gA1Q0gzkjvgJdLU= -github.com/aws/aws-sdk-go-v2/credentials v1.4.2/go.mod h1:9Sp6u121/f0NnvHyhG7dgoYeUTEFC2vsvJqJ6wXpkaI= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.5.1/go.mod h1:W1ldHfsgeGlKpJ4xZMKZUI6Wmp6EAstU7PxnhbXWWrI= -github.com/aws/aws-sdk-go-v2/internal/ini v1.2.3/go.mod h1:EES9ToeC3h063zCFDdqWGnARExNdULPaBvARm1FLwxA= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.3.0/go.mod h1:v8ygadNyATSm6elwJ/4gzJwcFhri9RqS8skgHKiwXPU= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.1/go.mod h1:Ve+eJOx9UWaT/lMVebnFhDhO49fSLVedHoA82+Rqme0= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.7.1/go.mod h1:yg4EN/BKoc7+DLhNOxxdvoO3+iyW2FuynvaKqLcLDUM= -github.com/aws/aws-sdk-go-v2/service/s3 v1.16.0/go.mod h1:Tk23mCmfL3wb3tNIeMk/0diUZ0W4R6uZtjYKguMLW2s= -github.com/aws/aws-sdk-go-v2/service/sso v1.4.1/go.mod h1:ycPdbJZlM0BLhuBnd80WX9PucWPG88qps/2jl9HugXs= -github.com/aws/aws-sdk-go-v2/service/sts v1.7.1/go.mod h1:r1i8QwKPzwByXqZb3POQfBs7jozrdnHz8PVbsvyx73w= -github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= -github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= -github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= -github.com/c2h5oh/datasize v0.0.0-20171227191756-4eba002a5eae/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cch123/supermonkey v1.0.1-0.20210420090843-d792ef7fb1d7/go.mod h1:d5jXTCyG6nu/pu0vYmoC0P/l0eBGesv3oQQ315uNBOA= -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/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/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -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/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-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= -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-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/colinmarc/hdfs/v2 v2.2.0/go.mod h1:Wss6n3mtaZyRwWaqtSH+6ge01qT0rw9dJJmvoUnIQ/E= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -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.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/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/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/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/dave/dst v0.26.2/go.mod h1:UMDJuIRPfyUCC78eFuB+SV/WI8oDeyFDvM/JR6NI3IU= -github.com/dave/gopackages v0.0.0-20170318123100-46e7023ec56e/go.mod h1:i00+b/gKdIDIxuLDFob7ustLAVqhsZRk2qVZrArELGQ= -github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= -github.com/dave/kerr v0.0.0-20170318121727-bc25dd6abe8e/go.mod h1:qZqlPyPvfsDJt+3wHJ1EvSXDuVjFTK0j2p/ca+gtsb8= -github.com/dave/rebecca v0.9.1/go.mod h1:N6XYdMD/OKw3lkF3ywh8Z6wPGuwNFDNtWYEMFWEmXBA= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/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/dchest/siphash v1.2.1/go.mod h1:q+IRvb2gOSrUnYoPqHiyHXS0FOBBOdl6tONBlVnOnt4= -github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/dubbogo/getty v1.3.4/go.mod h1:36f+gH/ekaqcDWKbxNBQk9b9HXcGtaI6YHxp4YTntX8= -github.com/dubbogo/go-zookeeper v1.0.3/go.mod h1:fn6n2CAEer3novYgk9ULLwAjuV8/g4DdC2ENwRb6E+c= -github.com/dubbogo/gost v1.5.2/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8= -github.com/dubbogo/gost v1.9.0/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8= -github.com/dubbogo/gost v1.11.11/go.mod h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI= -github.com/dubbogo/gost v1.11.16/go.mod h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI= -github.com/dubbogo/jsonparser v1.0.1/go.mod h1:tYAtpctvSP/tWw4MeelsowSPgXQRVHHWbqL6ynps8jU= -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/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/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239/go.mod h1:Gdwt2ce0yfBxPvZrHkprdPPTTS3N5rwmLE8T22KBXlw= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -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/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/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/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/go-chi/chi v4.1.0+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -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-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/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -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-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= -github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.8.0/go.mod h1:9JhgTzTaE31GZDpH/HSvHiRJrJ3iKAgqqH0Bl/Ocjdk= -github.com/go-redis/redis/v8 v8.8.0/go.mod h1:F7resOH5Kdug49Otu24RjHWwgK7u9AmtqWMnCV1iP5Y= -github.com/go-resty/resty/v2 v2.6.0/go.mod h1:PwvJS6hvaPkjtjNg9ph+VrSD92bi5Zq73w/BIH7cC3Q= -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-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:56xuuqnHyryaerycW3BfssRdxQstACi0Epw/yC5E2xM= -github.com/go-xorm/xorm v0.7.9/go.mod h1:XiVxrMMIhFkwSkh96BW7PACl7UhLtx2iJIHMdmjh5sQ= -github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= -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/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= -github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= 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.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -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.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.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= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -262,880 +23,124 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= 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 h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4= 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/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/cel-go v0.5.1/go.mod h1:9SvtVVTtZV4DTB1/RuAD1D2HhuqEIdmZEE/r/lrFyKE= -github.com/google/cel-spec v0.4.0/go.mod h1:2pBM5cU4UKjbPDXBgwWkiwBsVgnxknuEJ7C5TDWwORQ= 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.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-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181127221834-b4f47329b966/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -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-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -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.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 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/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/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= 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/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/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= -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/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -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.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= -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.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.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.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.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= -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/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2/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/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/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -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/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= -github.com/jackc/pgx v3.6.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= -github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= -github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= -github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= -github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= -github.com/jcmturner/gokrb5/v8 v8.4.1/go.mod h1:T1hnNppQsBtxW0tCHMHTkAt8n/sABdzZgZdoFrZaZNM= -github.com/jcmturner/rpc/v2 v2.0.2/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= -github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag= -github.com/jinzhu/copier v0.3.2/go.mod h1:24xnZezI2Yqac9J61UC6/dG/k76ttpq0DdJI3QmUvro= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -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/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.5/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 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/juju/ansiterm v0.0.0-20160907234532-b99631de12cf/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= -github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c/go.mod h1:nD0vlnrUjcjJhqN5WuCWZyzfd5AHZAC9/ajvbSx69xA= -github.com/juju/cmd v0.0.0-20171107070456-e74f39857ca0/go.mod h1:yWJQHl73rdSX4DHVKGqkAip+huBslxRwS8m9CrOLq18= -github.com/juju/collections v0.0.0-20200605021417-0d0ec82b7271/go.mod h1:5XgO71dV1JClcOJE+4dzdn4HrI5LiyKd7PlVG6eZYhY= -github.com/juju/errors v0.0.0-20150916125642-1b5e39b83d18/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= -github.com/juju/errors v0.0.0-20190930114154-d42613fe1ab9/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= -github.com/juju/errors v0.0.0-20200330140219-3fe23663418f/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= -github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE= -github.com/juju/httpprof v0.0.0-20141217160036-14bf14c30767/go.mod h1:+MaLYz4PumRkkyHYeXJ2G5g5cIW0sli2bOfpmbaMV/g= -github.com/juju/loggo v0.0.0-20170605014607-8232ab8918d9/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= -github.com/juju/loggo v0.0.0-20200526014432-9ce3a2e09b5e/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= -github.com/juju/mgo/v2 v2.0.0-20210302023703-70d5d206e208/go.mod h1:0OChplkvPTZ174D2FYZXg4IB9hbEwyHkD+zT+/eK+Fg= -github.com/juju/mutex v0.0.0-20171110020013-1fe2a4bf0a3a/go.mod h1:Y3oOzHH8CQ0Ppt0oCKJ2JFO81/EsWenH5AEqigLH+yY= -github.com/juju/retry v0.0.0-20151029024821-62c620325291/go.mod h1:OohPQGsr4pnxwD5YljhQ+TZnuVRYpa5irjugL1Yuif4= -github.com/juju/retry v0.0.0-20180821225755-9058e192b216/go.mod h1:OohPQGsr4pnxwD5YljhQ+TZnuVRYpa5irjugL1Yuif4= -github.com/juju/testing v0.0.0-20180402130637-44801989f0f7/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= -github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= -github.com/juju/testing v0.0.0-20210324180055-18c50b0c2098/go.mod h1:7lxZW0B50+xdGFkvhAb8bwAGt6IU87JB1H9w4t8MNVM= -github.com/juju/utils v0.0.0-20180424094159-2000ea4ff043/go.mod h1:6/KLg8Wz/y2KVGWEpkK9vMNGkOnu4k/cqs8Z1fKjTOk= -github.com/juju/utils v0.0.0-20200116185830-d40c2fe10647/go.mod h1:6/KLg8Wz/y2KVGWEpkK9vMNGkOnu4k/cqs8Z1fKjTOk= -github.com/juju/utils/v2 v2.0.0-20200923005554-4646bfea2ef1/go.mod h1:fdlDtQlzundleLLz/ggoYinEt/LmnrpNKcNTABQATNI= -github.com/juju/version v0.0.0-20161031051906-1f41e27e54f2/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U= -github.com/juju/version v0.0.0-20180108022336-b64dbd566305/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U= -github.com/juju/version v0.0.0-20191219164919-81c1be00b9a6/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U= -github.com/julienschmidt/httprouter v1.1.1-0.20151013225520-77a895ad01eb/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -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/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= -github.com/k0kubun/pp v3.0.1+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg= -github.com/kevinburke/go-bindata v3.22.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -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/klauspost/compress v1.10.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.12.2/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.5 h1:9O69jUPDcsT9fEm74W92rZL9FQY7rCdaXVneq+yyzl4= github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= -github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.3.1 h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s= github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4= -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/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= 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/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/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/layotto/proxy-wasm-go-sdk v0.14.1-0.20210929091432-0e4ff35b75af h1:47gHlqE7EQXW2qRXWiAnogq8U7H+2VJUYxRLmCnVfsQ= github.com/layotto/proxy-wasm-go-sdk v0.14.1-0.20210929091432-0e4ff35b75af/go.mod h1:qZ+4i6e2wHlhnhgpH0VG4QFzqd2BEvQbQFU0npt2e2k= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= -github.com/lestrrat/go-envload v0.0.0-20180220120943-6ed08b54a570/go.mod h1:BLt8L9ld7wVsvEWQbuLrUZnCMnUmLZ+CGDzKtclrTlE= -github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f/go.mod h1:UGmTpUd3rjbtfIpwAPrcfmGf/Z1HS95TATB+m57TPB8= -github.com/lestrrat/go-jwx v0.0.0-20180221005942-b7d4802280ae/go.mod h1:T+yHdCP6MJKtzoVQMHvVCeam5VFwX1+rWzn5zZgKYMI= -github.com/lestrrat/go-pdebug v0.0.0-20180220043741-569c97477ae8/go.mod h1:VXFH11P7fHn2iPBsfSW1JacR59rttTcafJnwYcI/IdY= -github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042/go.mod h1:TPpsiPUEh0zFL1Snz4crhMlBe60PYxRHr5oFF3rRYg0= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -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/lunixbochs/vtclean v0.0.0-20160125035106-4fbf7632a2c6/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/masterzen/azure-sdk-for-go v3.2.0-beta.0.20161014135628-ee4f0065d00c+incompatible/go.mod h1:mf8fjOu33zCqxUjuiU3I8S1lJMyEAlH+0F2+M5xl3hE= -github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= -github.com/masterzen/winrm v0.0.0-20161014151040-7a535cd943fc/go.mod h1:CfZSN7zwz5gJiFhZJz49Uzk7mEBHIceWmbFmYx7Hf7E= -github.com/masterzen/xmlpath v0.0.0-20140218185901-13f4951698ad/go.mod h1:A0zPC53iKKKcXYxr4ROjpQRQ5FgJXtelNdSmHHuq/tY= -github.com/mattn/go-colorable v0.0.6/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.0-20160806122752-66b8e73f3f5c/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -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/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -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/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.25/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/minio/md5-simd v1.1.0 h1:QPfiOqlZH+Cj9teu0t9b1nTBfPbyTl16Of5MeuShdK4= github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw= github.com/minio/minio-go/v7 v7.0.15 h1:r9/NhjJ+nXYrIYvbObhvc1wPj3YH1iDpJzz61uRKLyY= github.com/minio/minio-go/v7 v7.0.15/go.mod h1:pUV0Pc+hPd1nccgmzQF/EXh48l/Z/yps6QPF1aaie4g= github.com/minio/sha256-simd v0.1.1 h1:5QHSlgo3nt5yKOJrC7W8w7X+NFl8cMPZm96iu8kKUJU= github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= -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 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -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.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= 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 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= -github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/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/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/nacos-group/nacos-sdk-go v1.0.8/go.mod h1:hlAPn3UdzlxIlSILAyOXKxjFSvDJ9oLzTJ9hLAK1KzA= -github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk= -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/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= -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 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.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/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.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/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -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/opentrx/seata-golang/v2 v2.0.4/go.mod h1:uVMIDsvM4NBQXoZgtfHleBGrAqwkUry3jD3cf/JYi9k= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.3.5/go.mod h1:uVHyebswE1cCXr2A73cRM2frx5ld1RJUCJkFNZ90ZiI= -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/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/pborman/getopt v0.0.0-20180729010549-6fdd0a2c7117/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.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -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/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/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/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/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.5.1/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.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-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/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.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.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/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/qiniu/dyn v1.3.0/go.mod h1:E8oERcm8TtwJiZvkQPbcAh0RL8jO1G0VXJMW3FAWdkk= -github.com/qiniu/go-sdk/v7 v7.11.1/go.mod h1:btsaOc8CA3hdVloULfFdDgDc+g4f3TDZEFsDY0BLE+w= -github.com/qiniu/x v1.10.5/go.mod h1:03Ni9tj+N2h2aKnAz+6N0Xfl8FwMEDRC2PAlxekASDs= -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/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -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/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -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/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shirou/gopsutil v3.20.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/gopsutil/v3 v3.20.11/go.mod h1:igHnfak0qnw1biGeI2qKQvu0ZkwvEkUcCLlYhZzdr/4= -github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= -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.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 v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smartystreets/goconvey v1.6.6/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/soheilhy/cmux v0.1.5-0.20210205191134-5ec6847320e5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -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/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -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/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/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/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -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/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/testify v0.0.0-20151208002404-e3a8ff8ce365/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/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/tebeka/strftime v0.1.3/go.mod h1:7wJm3dZlpr4l/oVK0t1HYIc4rMzQ2XJlOMIUJUJH6XQ= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.194/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.194/go.mod h1:yrBKWhChnDqNz1xuXdSbWXG56XawEq0G5j1lg4VwBD4= -github.com/tencentyun/cos-go-sdk-v5 v0.7.33/go.mod h1:4E4+bQ2gBVJcgEC9Cufwylio4mXOct2iu05WjgEBx1o= -github.com/tevid/gohamcrest v1.1.1/go.mod h1:3UvtWlqm8j5JbwYZh80D/PVBt0mJ1eJiYgZMibh0H/k= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -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/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3/go.mod h1:QDlpd3qS71vYtakd2hmdpqhJ9nwv6mD6A30bQ1BPBFE= -github.com/trainyao/go-maglev v0.0.0-20200611125015-4c1ae64d96a8/go.mod h1:VBsRn0SDTltC3/SzN6SgXlQtmBk6U5sf0KW+eT+WMbc= -github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-lib v2.4.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -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/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.14.1-0.20200605121233-ac51d598dc54/go.mod h1:hWrFNtR2Jc1XrK0fDq2Y+MkA7F/v3lYKRDXd2CmSikc= -github.com/valyala/fasthttp v1.26.0/go.mod h1:cmWIqlu99AO/RKcp1HWaViTqc57FswJOfYYdPJBl8BA= -github.com/valyala/fasttemplate v1.1.0/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -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/wasmerio/wasmer-go v1.0.3/go.mod h1:0gzVdSfg6pysA6QVp6iVRPTagC6Wq9pOE8J86WKb2Fk= -github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= -github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= -github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= -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/gopher-lua v0.0.0-20200816102855-ee81675732da/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA= -github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= -github.com/zouyx/agollo/v4 v4.0.7/go.mod h1:unhojnZiGLlT4gLpWz3Oa7sGcChZWv/1DJBkV6s8uAE= -go.beyondstorage.io/endpoint v1.2.0/go.mod h1:oZ7Z7HZ7mAo337JBLjuCF/DM66HVEUu6+hw68c3UcLs= -go.beyondstorage.io/services/hdfs v0.3.0/go.mod h1:yU0eL80JczPPuR5hoK21Dck0H9gXDBu3WN51Od7wtlo= -go.beyondstorage.io/v5 v5.0.0/go.mod h1:3wV9gCQnqu7tD/3LMeo2yimUKIeTSHpTc6wHSb0yY20= -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/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/api/v3 v3.5.0-alpha.0/go.mod h1:mPcW6aZJukV6Aa81LSKpBjQXTWlXB5r74ymPoSWa3Sw= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0-alpha.0/go.mod h1:kdV+xzCJ3luEBSIeQyB/OEKkWKd8Zkux4sbDeANrosU= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.etcd.io/etcd/client/v3 v3.5.0-alpha.0/go.mod h1:wKt7jgDgf/OfKiYmCq5WFGxOFAkVMLxiiXgLDFhECr8= -go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= -go.etcd.io/etcd/pkg/v3 v3.5.0-alpha.0/go.mod h1:tV31atvwzcybuqejDoY3oaNRTtlD2l/Ot78Pc9w7DMY= -go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= -go.etcd.io/etcd/raft/v3 v3.5.0-alpha.0/go.mod h1:FAwse6Zlm5v4tEWZaTjmNhe17Int4Oxbu7+2r0DiD3w= -go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= -go.etcd.io/etcd/server/v3 v3.5.0-alpha.0/go.mod h1:tsKetYpt980ZTpzl/gb+UOJj9RkIyCb1u4wjzMg90BQ= -go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= -go.mongodb.org/mongo-driver v1.8.0/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= -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.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/otel v0.19.0/go.mod h1:j9bF567N9EfomkSidSfmMwIwIBuP37AMAIzVW85OxSg= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= -go.opentelemetry.io/otel/metric v0.19.0/go.mod h1:8f9fglJPRnXuskQmKpnad31lcLJ2VmNNqIsx/uIwBSc= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/oteltest v0.19.0/go.mod h1:tI4yxwh8U21v7JD6R3BcA/2+RBoTKFexE/PJ/nSO7IA= -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/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.19.0/go.mod h1:4IXiNextNOpPnRlI4ryK69mn5iC84bjBWZQA5DXz/qg= -go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -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.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/automaxprocs v1.3.0/go.mod h1:9CWT6lKIep8U41DDaPiH6eFscnTyjfTANNQNx6LrIcA= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -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.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -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.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= -go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -golang.org/x/arch v0.0.0-20180920145803-b19384d3c130/go.mod h1:cYlCBUl1MsqxdiKgmc4uh7TxZfWSFLOGSRR090WDxt8= -golang.org/x/arch v0.0.0-20200826200359-b19915210f00/go.mod h1:flIaEI6LNU6xOCD5PaJvn9wGP0agmIOqjrtsKGRguv4= -golang.org/x/crypto v0.0.0-20180214000028-650f4a345ab4/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-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f h1:aZp0e2vLN4MToVqnjNEYEtrEA8RH8U8FN1CU7JgqsPU= golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= -golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -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-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/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-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= 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-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.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180406214816-61147c48b25b/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-20180826012351-8a410e7b638d/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= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-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-20191004110552-13f9640d40b9/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 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/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-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-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e h1:XpT3nA5TvE525Ne3hInMh6+GETgn27Zfm9dxsThnX2Q= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e/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= -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-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= 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-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/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-20180903190138-2b024373dcd9/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-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/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-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-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-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-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-20191026070338-33540a1f6037/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= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -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-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200602100848-8d3cce7afc34/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 h1:Ih9Yo4hSPImZOpfGuA4bR/ORKTAbhZo2AbWNRCnevdo= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/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-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201024232916-9f70ab9862d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201223074533-0d417f636930/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/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-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-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211020174200-9d6173849985 h1:LOlKVhfDyahgmqa97awczplwkjzNaELFg3zRIJ13RYo= -golang.org/x/sys v0.0.0-20211020174200-9d6173849985/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/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.1-0.20181010134911-4d1c5fb19474/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -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.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/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-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/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-20180828015842-6cd1fcedba52/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-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= 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= -golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/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-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-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-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-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= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/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-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/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-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-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-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20201014170642-d1624618ad65/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -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.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -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 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= 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= -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= -google.golang.org/api v0.9.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.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/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.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.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.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/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-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= -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-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-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 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -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-20200806141610-86f49bd18e98/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-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0 h1:uSZWeQJX5j11bIQ4AJoj+McDBo29cY1MCoC1wO3ts+c= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc/examples v0.0.0-20210818220435-8ab16ef276a3/go.mod h1:bF8wuZSAZTcbF7ZPKrDI/qY52toTP/yxLpRRY4Eu9Js= 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= @@ -1144,86 +149,18 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -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 h1:7QnIQpGRHE5RnLKnESfDoxm2dTapTZua5a0kS0A+VXQ= 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= -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-20160105164936-4f90aeace3a2/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= 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-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v1 v1.0.0-20161222125816-442357a80af5/go.mod h1:u0ALmqvLRxLI95fkdCEWrE6mhWYZW1aMOJHp5YXLHTg= -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/httprequest.v1 v1.1.1/go.mod h1:/CkavNL+g3qLOrpFHVrEx4NKepeqR4XTZWNj4sGGjz0= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.57.0 h1:9unxIsFcTt4I55uWluz+UmL95q4kdJ0buvQ1ZIqVQww= gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/mgo.v2 v2.0.0-20160818015218-f2b6f6c918c4/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -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/src-d/go-billy.v4 v4.3.0/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637/go.mod h1:BHsqpu/nsuzkT5BpiH1EMZPLyqSMM8JbIavyFACoFNk= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170712054546-1be3d31502d6/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -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/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-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/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= -istio.io/api v0.0.0-20200227213531-891bf31f3c32/go.mod h1:bcY3prusO/6vA6zGHz4PNG2v79clPyTw06Xx3fprJSQ= -istio.io/gogo-genproto v0.0.0-20190930162913-45029607206a/go.mod h1:OzpAts7jljZceG4Vqi5/zXy/pOg1b209T3jb7Nv5wIs= -k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= -k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM= -launchpad.net/xmlpath v0.0.0-20130614043138-000000000004/go.mod h1:vqyExLOM3qBx7mvYRkoxjSCF945s0mbe7YynlKYXtsA= -mosn.io/api v0.0.0-20210204052134-5b9a826795fd/go.mod h1:TBv4bz2f2RbpgdohbVAFRFVOoN8YyEUiLH3jAh752Qc= -mosn.io/api v0.0.0-20211217011300-b851d129be01/go.mod h1:TBv4bz2f2RbpgdohbVAFRFVOoN8YyEUiLH3jAh752Qc= -mosn.io/layotto/components v0.0.0-20220519092435-5db44ed16f38/go.mod h1:EaUv7I3YjQNmeHfT3afM4tzVQgjBPC3tyDQWoilhXlM= -mosn.io/mosn v0.25.1-0.20211217125944-69b50c40af81/go.mod h1:JwLkls6oMaap0+P1uZ1d1ccdLPigdK8xH8gDSm3SEq4= -mosn.io/pkg v0.0.0-20211217101631-d914102d1baf/go.mod h1:tK3Vbw6CcVeJ9H/BGjJ1wn6hRXt4Oxjfq1+gkOM0zG8= -mosn.io/proxy-wasm-go-host v0.1.1-0.20210524020952-3fb13ba763a6/go.mod h1:wBRY9Xjf77GZhvAuEc6nQXZ6dQK39kNU2ok/+Z8mSU8= -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/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -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= -vimagination.zapto.org/byteio v0.0.0-20200222190125-d27cba0f0b10/go.mod h1:fl9OF22g6MTKgvHA1hqMXe/L7+ULWofVTwbC9loGu7A= -vimagination.zapto.org/memio v0.0.0-20200222190306-588ebc67b97d/go.mod h1:zHGDKp2tyvF4IAfLti4pKYqCJucXYmmKMb3UMrCHK/4= -xorm.io/builder v0.3.6/go.mod h1:LEFAPISnRzG+zxaxj2vPicRwz67BdhFreKg8yv8/TgU= -xorm.io/builder v0.3.9/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE= -xorm.io/core v0.7.2-0.20190928055935-90aeac8d08eb/go.mod h1:jJfd0UAEzZ4t87nbQYtVjmqpIODugN6PD2D9E+dJvdM= diff --git a/sdk/go-sdk/client/lock_test.go b/sdk/go-sdk/client/lock_test.go index 547bbb2bfc..6806b4b39d 100644 --- a/sdk/go-sdk/client/lock_test.go +++ b/sdk/go-sdk/client/lock_test.go @@ -20,6 +20,7 @@ import ( "testing" "context" + "github.com/stretchr/testify/assert" runtimev1pb "mosn.io/layotto/spec/proto/runtime/v1" From eeab6f0395850ddc7ccc3011d11ab459e79ea239 Mon Sep 17 00:00:00 2001 From: qiangzhiwei <318575094@qq.com> Date: Tue, 24 May 2022 23:30:25 +0800 Subject: [PATCH 61/62] decouple Name and Type --- components/custom/registry.go | 14 +++++++------- components/pkg/info/info.go | 4 ++-- demo/sequencer/common/client.go | 1 - sdk/go-sdk/client/lock_test.go | 12 ++++++------ 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/components/custom/registry.go b/components/custom/registry.go index 416b143892..659662a235 100644 --- a/components/custom/registry.go +++ b/components/custom/registry.go @@ -20,7 +20,7 @@ import ( ) type Registry interface { - Register(compType string, factorys ...*ComponentFactory) + Register(kind string, factorys ...*ComponentFactory) Create(kind, compType string) (Component, error) } @@ -48,19 +48,19 @@ func NewRegistry(info *info.RuntimeInfo) Registry { } } -func (r *componentRegistry) Register(compType string, fs ...*ComponentFactory) { +func (r *componentRegistry) Register(kind string, fs ...*ComponentFactory) { if len(fs) == 0 { return } - r.info.AddService(compType) + r.info.AddService(kind) // lazy init - if _, ok := r.stores[compType]; !ok { - r.stores[compType] = make(map[string]func() Component) + if _, ok := r.stores[kind]; !ok { + r.stores[kind] = make(map[string]func() Component) } // register FactoryMethod for _, f := range fs { - r.stores[compType][f.Type] = f.FactoryMethod - r.info.RegisterComponent(compType, f.Type) + r.stores[kind][f.Type] = f.FactoryMethod + r.info.RegisterComponent(kind, f.Type) } } diff --git a/components/pkg/info/info.go b/components/pkg/info/info.go index 61b3664565..2c88fd6590 100644 --- a/components/pkg/info/info.go +++ b/components/pkg/info/info.go @@ -42,9 +42,9 @@ func (info *RuntimeInfo) AddService(service string) { info.Services[service] = &ComponentInfo{} } -func (info *RuntimeInfo) RegisterComponent(service string, name string) { +func (info *RuntimeInfo) RegisterComponent(service string, compType string) { if c, ok := info.Services[service]; ok { - c.Registered = append(c.Registered, name) + c.Registered = append(c.Registered, compType) } } diff --git a/demo/sequencer/common/client.go b/demo/sequencer/common/client.go index 335eaa89b1..1ef3c04c09 100644 --- a/demo/sequencer/common/client.go +++ b/demo/sequencer/common/client.go @@ -57,7 +57,6 @@ func main() { }) if err != nil { panic(err) - return } fmt.Printf("Next id:%v \n", id) } diff --git a/sdk/go-sdk/client/lock_test.go b/sdk/go-sdk/client/lock_test.go index 6806b4b39d..0376672770 100644 --- a/sdk/go-sdk/client/lock_test.go +++ b/sdk/go-sdk/client/lock_test.go @@ -36,13 +36,13 @@ func TestTryLock(t *testing.T) { } lock, err := testClient.TryLock(ctx, &request) assert.Nil(t, err) - assert.NotNil(t, lock.Success, true) + assert.True(t, lock.Success, true) }) } func TestUnLock(t *testing.T) { ctx := context.Background() - t.Run("try lock successfully", func(t *testing.T) { + t.Run("can't unlock with different owner", func(t *testing.T) { request := runtimev1pb.TryLockRequest{ StoreName: "demo", ResourceId: "lock_test", @@ -50,7 +50,7 @@ func TestUnLock(t *testing.T) { } lock, err := testClient.TryLock(ctx, &request) assert.Nil(t, err) - assert.NotNil(t, lock.Success, true) + assert.True(t, lock.Success, true) // 2. unlock with different owner unlockReq := runtimev1pb.UnlockRequest{ StoreName: "demo", @@ -59,7 +59,7 @@ func TestUnLock(t *testing.T) { } unlock, err := testClient.Unlock(ctx, &unlockReq) assert.Nil(t, err) - assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_LOCK_BELONG_TO_OTHERS) + assert.Equal(t, unlock.Status, runtimev1pb.UnlockResponse_LOCK_BELONG_TO_OTHERS) }) t.Run("unlock successfully", func(t *testing.T) { @@ -70,7 +70,7 @@ func TestUnLock(t *testing.T) { } unlock, err := testClient.Unlock(ctx, &request) assert.Nil(t, err) - assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_SUCCESS) + assert.Equal(t, unlock.Status, runtimev1pb.UnlockResponse_SUCCESS) }) t.Run("unlock but LOCK_UNEXIST", func(t *testing.T) { @@ -81,6 +81,6 @@ func TestUnLock(t *testing.T) { } unlock, err := testClient.Unlock(ctx, &request) assert.Nil(t, err) - assert.NotNil(t, unlock.Status, runtimev1pb.UnlockResponse_LOCK_UNEXIST) + assert.Equal(t, unlock.Status, runtimev1pb.UnlockResponse_LOCK_UNEXIST) }) } From 405a2717c8b76e83c8ec3a9321390f6861bc5370 Mon Sep 17 00:00:00 2001 From: seeflood Date: Wed, 25 May 2022 11:00:43 +0800 Subject: [PATCH 62/62] fix ut Signed-off-by: seeflood --- sdk/go-sdk/client/lock_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sdk/go-sdk/client/lock_test.go b/sdk/go-sdk/client/lock_test.go index 0376672770..2258643ec9 100644 --- a/sdk/go-sdk/client/lock_test.go +++ b/sdk/go-sdk/client/lock_test.go @@ -36,7 +36,7 @@ func TestTryLock(t *testing.T) { } lock, err := testClient.TryLock(ctx, &request) assert.Nil(t, err) - assert.True(t, lock.Success, true) + assert.True(t, lock.Success) }) } @@ -45,16 +45,16 @@ func TestUnLock(t *testing.T) { t.Run("can't unlock with different owner", func(t *testing.T) { request := runtimev1pb.TryLockRequest{ StoreName: "demo", - ResourceId: "lock_test", + ResourceId: "unlock_test", LockOwner: "layotto", } lock, err := testClient.TryLock(ctx, &request) assert.Nil(t, err) - assert.True(t, lock.Success, true) + assert.True(t, lock.Success) // 2. unlock with different owner unlockReq := runtimev1pb.UnlockRequest{ StoreName: "demo", - ResourceId: "lock_test", + ResourceId: "unlock_test", LockOwner: "layotto1", } unlock, err := testClient.Unlock(ctx, &unlockReq) @@ -65,7 +65,7 @@ func TestUnLock(t *testing.T) { t.Run("unlock successfully", func(t *testing.T) { request := runtimev1pb.UnlockRequest{ StoreName: "demo", - ResourceId: "lock_test", + ResourceId: "unlock_test", LockOwner: "layotto", } unlock, err := testClient.Unlock(ctx, &request) @@ -76,7 +76,7 @@ func TestUnLock(t *testing.T) { t.Run("unlock but LOCK_UNEXIST", func(t *testing.T) { request := runtimev1pb.UnlockRequest{ StoreName: "demo", - ResourceId: "lock_test", + ResourceId: "unlock_test", LockOwner: "layotto", } unlock, err := testClient.Unlock(ctx, &request)