├── README.md ├── milvus-java ├── README.md ├── pom.xml └── src │ └── main │ ├── java │ ├── demo │ │ └── HelloZillizVectorDB.java │ └── util │ │ └── PropertyFilesUtil.java │ └── resources │ └── RunSettings.properties ├── node ├── .gitignore ├── HelloZillizCloud.js ├── HelloZillizCloud.serverless.js ├── README.md ├── config.js ├── config.serverless.js ├── package.json ├── utils.js └── yarn.lock ├── python ├── README.md ├── config.ini └── hello_zilliz_vectordb.py └── zilliz_go ├── HelloZillizCloud.go ├── README.md ├── config.go ├── go.mod └── go.sum /README.md: -------------------------------------------------------------------------------- 1 | # cloud-vectordb-examples 2 | This repository containslanguage examples demonstrating how to use Zilliz Cloud VectorDB. 3 | 4 | ## Introduction 5 | [Zilliz Cloud VectorDB](https://cloud.zilliz.com) is a cloud-based service that provides fast and efficient search capabilities for vector data. It is based on Milvus, an open-source vector database developed by Zilliz. 6 | 7 | This repository provides two examples that show how to use Zilliz Cloud VectorDB with Python and Java. 8 | 9 | ## Python Example 10 | https://github.com/zilliztech/cloud-vectordb-examples/tree/master/python 11 | 12 | ## Java Example 13 | https://github.com/zilliztech/cloud-vectordb-examples/tree/master/milvus-java 14 | 15 | ## Node.js Example 16 | https://github.com/zilliztech/cloud-vectordb-examples/tree/master/node 17 | -------------------------------------------------------------------------------- /milvus-java/README.md: -------------------------------------------------------------------------------- 1 | ## Getting started 2 | 3 | ### Prerequisites 4 | 5 | Java 8+ 6 | Apache Maven 3.6+ 7 | 8 | ### Git clone the example code repo 9 | git clone https://github.com/zilliztech/cloud-vectordb-examples 10 | 11 | ### Go to milvus-java folder 12 | cd cloud-vectordb-examples 13 | cd milvus-java 14 | 15 | ### Modify uri, token in configuration file.(src/main/resources/RunSettings.properties) 16 | uri = https://in01-XXXXXXXXXXXX.aws-us-west-2.vectordb.zillizcloud.com:XXXXX 17 | token = db_admin:password (or ApiKey) 18 | 19 | ### Compile project 20 | mvn compile 21 | 22 | ### Run HelloZillizVectorDB.java 23 | mvn exec:java -Dexec.mainClass="demo.HelloZillizVectorDB" 24 | 25 | ### It should print information on the console 26 | Connecting to DB: https://in01-XXXXXXXXXXXXX.aws-us-west-2.vectordb.zillizcloud.com:XXXXX 27 | Success! 28 | Creating example collection: book 29 | Schema: {...} 30 | Success! 31 | Inserting 2000 entities... 32 | Succeed in 0.3321 seconds! 33 | Flushing... 34 | Succeed in 0.81 seconds! 35 | Building AutoIndex... 36 | Succeed in 18.9318 seconds! 37 | Loading collection... 38 | Succeed in 1.718 seconds! 39 | Searching vector:[[...][...]...] 40 | search 0 latency: 0.0154 seconds! 41 | Searching vector:[[...][...]...] 42 | search 1 latency: 0.0147 seconds! 43 | Searching vector:[[...][...]...] 44 | search 2 latency: 0.0151 seconds! 45 | ... 46 | ... 47 | 48 | -------------------------------------------------------------------------------- /milvus-java/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | org.example 8 | milvus-java 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 8 13 | 8 14 | 15 | 16 | 17 | 18 | io.milvus 19 | milvus-sdk-java 20 | 2.4.8 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /milvus-java/src/main/java/demo/HelloZillizVectorDB.java: -------------------------------------------------------------------------------- 1 | package demo; 2 | 3 | 4 | import com.google.gson.Gson; 5 | import com.google.gson.JsonObject; 6 | import io.milvus.v2.client.ConnectConfig; 7 | import io.milvus.v2.client.MilvusClientV2; 8 | import io.milvus.v2.common.ConsistencyLevel; 9 | import io.milvus.v2.common.IndexParam; 10 | import io.milvus.v2.service.collection.request.CreateCollectionReq; 11 | import io.milvus.v2.service.collection.request.DescribeCollectionReq; 12 | import io.milvus.v2.service.collection.request.DropCollectionReq; 13 | import io.milvus.v2.service.collection.request.LoadCollectionReq; 14 | import io.milvus.v2.service.collection.response.DescribeCollectionResp; 15 | import io.milvus.v2.service.index.request.CreateIndexReq; 16 | import io.milvus.v2.service.utility.request.FlushReq; 17 | import io.milvus.v2.service.vector.request.InsertReq; 18 | import io.milvus.v2.service.vector.request.SearchReq; 19 | import io.milvus.v2.service.vector.request.data.BaseVector; 20 | import io.milvus.v2.service.vector.request.data.FloatVec; 21 | import io.milvus.v2.service.vector.response.InsertResp; 22 | import io.milvus.v2.service.vector.response.SearchResp; 23 | import util.PropertyFilesUtil; 24 | 25 | import java.util.*; 26 | 27 | 28 | public class HelloZillizVectorDB { 29 | public static void main(String[] args) { 30 | // connect to milvus 31 | final MilvusClientV2 milvusClientV2 = new MilvusClientV2(ConnectConfig.builder() 32 | .uri(PropertyFilesUtil.getRunValue("uri")) 33 | .token(PropertyFilesUtil.getRunValue("token")) 34 | .secure(false) 35 | .connectTimeoutMs(5000L) 36 | .build()); 37 | System.out.println("Connecting to DB: " + PropertyFilesUtil.getRunValue("uri")); 38 | // Check if the collection exists 39 | String collectionName = "book"; 40 | DescribeCollectionResp describeCollectionResp = null; 41 | try { 42 | describeCollectionResp = milvusClientV2.describeCollection(DescribeCollectionReq.builder().collectionName(collectionName).build()); 43 | } catch (Exception e) { 44 | System.out.println(e.getMessage()); 45 | } 46 | if (describeCollectionResp != null) { 47 | milvusClientV2.dropCollection(DropCollectionReq.builder().collectionName(collectionName).build()); 48 | } 49 | System.out.println("Success!"); 50 | 51 | // create a collection with customized primary field: book_id 52 | int dim = 64; 53 | CreateCollectionReq.FieldSchema bookIdField = CreateCollectionReq.FieldSchema.builder() 54 | .autoID(false) 55 | .dataType(io.milvus.v2.common.DataType.Int64) 56 | .isPrimaryKey(true) 57 | .name("book_id") 58 | .build(); 59 | CreateCollectionReq.FieldSchema wordCountField = CreateCollectionReq.FieldSchema.builder() 60 | .dataType(io.milvus.v2.common.DataType.Int64) 61 | .name("word_count") 62 | .isPrimaryKey(false) 63 | .build(); 64 | CreateCollectionReq.FieldSchema bookIntroField = CreateCollectionReq.FieldSchema.builder() 65 | .dataType(io.milvus.v2.common.DataType.FloatVector) 66 | .name("book_intro") 67 | .isPrimaryKey(false) 68 | .dimension(dim) 69 | .build(); 70 | List fieldSchemaList = new ArrayList<>(); 71 | fieldSchemaList.add(bookIdField); 72 | fieldSchemaList.add(wordCountField); 73 | fieldSchemaList.add(bookIntroField); 74 | CreateCollectionReq.CollectionSchema collectionSchema = CreateCollectionReq.CollectionSchema.builder() 75 | .fieldSchemaList(fieldSchemaList) 76 | .build(); 77 | System.out.println("Creating example collection: " + collectionName); 78 | System.out.println("Schema: " + collectionSchema); 79 | CreateCollectionReq createCollectionReq = CreateCollectionReq.builder() 80 | .collectionSchema(collectionSchema) 81 | .collectionName(collectionName) 82 | .enableDynamicField(false) 83 | .description("create collection demo") 84 | .numShards(1) 85 | .build(); 86 | milvusClientV2.createCollection(createCollectionReq); 87 | System.out.println("Success!"); 88 | 89 | //insert data with customized ids 90 | Random ran = new Random(); 91 | Gson gson = new Gson(); 92 | int singleNum = 1000; 93 | int insertRounds = 2; 94 | long insertTotalTime = 0L; 95 | System.out.println("Inserting " + singleNum * insertRounds + " entities... "); 96 | for (int r = 0; r < insertRounds; r++) { 97 | List jsonList = new ArrayList<>(); 98 | for (long i = r * singleNum; i < (r + 1) * singleNum; ++i) { 99 | JsonObject row = new JsonObject(); 100 | row.addProperty(bookIdField.getName(), i); 101 | row.addProperty(wordCountField.getName(), i + 10000); 102 | List vector = new ArrayList<>(); 103 | for (int k = 0; k < dim; ++k) { 104 | vector.add(ran.nextFloat()); 105 | } 106 | row.add(bookIntroField.getName(), gson.toJsonTree(vector)); 107 | jsonList.add(row); 108 | } 109 | long startTime = System.currentTimeMillis(); 110 | InsertResp insert = milvusClientV2.insert(InsertReq.builder() 111 | .collectionName(collectionName) 112 | .data(jsonList).build()); 113 | long endTime = System.currentTimeMillis(); 114 | insertTotalTime += (endTime - startTime) / 1000.00; 115 | } 116 | System.out.println("Succeed in " + insertTotalTime + " seconds!"); 117 | 118 | // flush data 119 | System.out.println("Flushing..."); 120 | long startFlushTime = System.currentTimeMillis(); 121 | milvusClientV2.flush(FlushReq.builder().collectionNames(Collections.singletonList(collectionName)).build()); 122 | long endFlushTime = System.currentTimeMillis(); 123 | System.out.println("Succeed in " + (endFlushTime - startFlushTime) / 1000.00 + " seconds!"); 124 | 125 | // build index 126 | System.out.println("Building AutoIndex..."); 127 | IndexParam indexParam = IndexParam.builder() 128 | .fieldName(bookIntroField.getName()) 129 | .indexType(IndexParam.IndexType.AUTOINDEX) 130 | .metricType(IndexParam.MetricType.L2) 131 | .build(); 132 | long startIndexTime = System.currentTimeMillis(); 133 | milvusClientV2.createIndex(CreateIndexReq.builder() 134 | .collectionName(collectionName) 135 | .indexParams(Collections.singletonList(indexParam)) 136 | .build()); 137 | long endIndexTime = System.currentTimeMillis(); 138 | System.out.println("Succeed in " + (endIndexTime - startIndexTime) / 1000.00 + " seconds!"); 139 | 140 | // load collection 141 | System.out.println("Loading collection..."); 142 | long startLoadTime = System.currentTimeMillis(); 143 | milvusClientV2.loadCollection(LoadCollectionReq.builder() 144 | .collectionName(collectionName) 145 | .async(false) 146 | .build()); 147 | long endLoadTime = System.currentTimeMillis(); 148 | System.out.println("Succeed in " + (endLoadTime - startLoadTime) / 1000.00 + " seconds"); 149 | 150 | // search 151 | final Integer SEARCH_K = 2; // TopK 152 | Map searchLevel = new HashMap<>(); // Params 153 | searchLevel.put("level", 1); 154 | List search_output_fields = Arrays.asList("book_id", "word_count"); 155 | for (int i = 0; i < 10; i++) { 156 | List data = new ArrayList<>(); 157 | List floatList = new ArrayList<>(); 158 | for (int k = 0; k < dim; ++k) { 159 | floatList.add(ran.nextFloat()); 160 | } 161 | data.add(new FloatVec(floatList)); 162 | List> search_vectors = Collections.singletonList(floatList); 163 | 164 | long startSearchTime = System.currentTimeMillis(); 165 | SearchResp search = milvusClientV2.search(SearchReq.builder() 166 | .data(data) 167 | .consistencyLevel(ConsistencyLevel.STRONG) 168 | .collectionName(collectionName) 169 | .searchParams(searchLevel) 170 | .outputFields(search_output_fields) 171 | .metricType(IndexParam.MetricType.L2) 172 | .topK(SEARCH_K) 173 | .build()); 174 | long endSearchTime = System.currentTimeMillis(); 175 | System.out.println("Searching vector: " + search_vectors); 176 | System.out.println("Result: " + search.getSearchResults()); 177 | System.out.println("search " + i + " latency: " + (endSearchTime - startSearchTime) / 1000.00 + " seconds"); 178 | } 179 | 180 | milvusClientV2.close(); 181 | } 182 | 183 | } 184 | -------------------------------------------------------------------------------- /milvus-java/src/main/java/util/PropertyFilesUtil.java: -------------------------------------------------------------------------------- 1 | package util; 2 | 3 | 4 | import java.io.BufferedInputStream; 5 | import java.io.InputStream; 6 | import java.nio.file.Files; 7 | import java.nio.file.Paths; 8 | import java.util.HashMap; 9 | import java.util.Properties; 10 | 11 | public class PropertyFilesUtil { 12 | public static HashMap readPropertyFile(String propertyFileName) { 13 | HashMap hashMap=new HashMap<>(); 14 | Properties prop = new Properties(); 15 | try { 16 | InputStream in = new BufferedInputStream(Files.newInputStream(Paths.get(propertyFileName))); 17 | prop.load(in); 18 | for (String key : prop.stringPropertyNames()) { 19 | hashMap.put(key, prop.getProperty(key)); 20 | } 21 | in.close(); 22 | } catch (Exception e) { 23 | throw new RuntimeException(e); 24 | } 25 | return hashMap; 26 | } 27 | 28 | public static String getRunValue(String key){ 29 | HashMap hashMap = PropertyFilesUtil.readPropertyFile("./src/main/resources/RunSettings.properties"); 30 | String value; 31 | value=hashMap.get(key); 32 | return value; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /milvus-java/src/main/resources/RunSettings.properties: -------------------------------------------------------------------------------- 1 | uri = https://in01-XXXXXXXXXXXXX.aws-us-west-2.vectordb.zillizcloud.com:XXXXX 2 | token = db_admin:password (or ApiKey) -------------------------------------------------------------------------------- /node/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /node/HelloZillizCloud.js: -------------------------------------------------------------------------------- 1 | import { 2 | MilvusClient, 3 | DataType, 4 | ConsistencyLevelEnum, 5 | } from "@zilliz/milvus2-sdk-node"; 6 | import { config } from "./config.js"; 7 | import { isVersionAtLeast } from "./utils.js"; 8 | 9 | if (!isVersionAtLeast("2.2.17", MilvusClient.sdkInfo.version)) { 10 | console.warn( 11 | `Please upgrade your node sdk version, it should >= 2.2.17, your sdk version is ${MilvusClient.sdkInfo.version}` 12 | ); 13 | process.exit(); 14 | } 15 | 16 | const { uri, user, password, token } = config; 17 | 18 | // connecting 19 | console.info(`Connecting to DB: ${uri}`); 20 | const client = new MilvusClient({ 21 | address: uri, 22 | username: user, 23 | password: password, 24 | token, 25 | }); 26 | 27 | /* 28 | Please check your connection guide in Zilliz Cloud console, if the cluster provides a token, you can use it to authenticate your cluster\ 29 | // token based cluster 30 | const client = new MilvusClient({ 31 | address: uri, 32 | token: token, 33 | }); 34 | */ 35 | 36 | (async () => { 37 | // dimension 38 | const dimension = 64; 39 | const collection_name = "hello_milvus"; 40 | const num_of_rows = 1000; 41 | // create colleciton 42 | console.time(`Creating example collection: ${collection_name}`); 43 | await client.createCollection({ 44 | collection_name, 45 | dimension, 46 | }); 47 | console.info(`Success!`); 48 | console.timeEnd(`Creating example collection: ${collection_name}`); 49 | 50 | const data = []; 51 | Array(num_of_rows) 52 | .fill(1) 53 | .forEach(() => { 54 | data.push({ 55 | id: Math.floor(Math.random() * 100000), 56 | vector: [...Array(dimension)].map(() => Math.random()), 57 | }); 58 | }); 59 | // inserting 60 | console.time(`Inserting 1000 entities successfully`); 61 | await client.insert({ 62 | collection_name, 63 | data, 64 | }); 65 | console.timeEnd(`Inserting 1000 entities successfully`); 66 | 67 | await client.flushSync({ collection_names: [collection_name] }); 68 | console.log(`Flush data successfully`); 69 | 70 | // search 71 | console.time(`Searching vector`); 72 | const res = await client.search({ 73 | collection_name, 74 | vector: data[0]["vector"], 75 | output_fields: ["id"], 76 | vector_type: DataType.FloatVector, 77 | limit: 10, 78 | consistency_level: ConsistencyLevelEnum.Bounded, 79 | }); 80 | console.timeEnd(`Searching vector`); 81 | console.log(res); 82 | })(); 83 | -------------------------------------------------------------------------------- /node/HelloZillizCloud.serverless.js: -------------------------------------------------------------------------------- 1 | import { MilvusClient, ConsistencyLevelEnum } from "@zilliz/milvus2-sdk-node"; 2 | import { config } from "./config.serverless.js"; 3 | import { isVersionAtLeast } from "./utils.js"; 4 | 5 | if (!isVersionAtLeast("2.2.17", MilvusClient.sdkInfo.version)) { 6 | console.warn( 7 | `Please upgrade your node sdk version, it should >= 2.2.17, your version is ${MilvusClient.sdkInfo.version}` 8 | ); 9 | process.exit(); 10 | } 11 | 12 | const { uri, token } = config; 13 | 14 | // connecting 15 | console.info(`Connecting to DB: ${uri}`); 16 | const client = new MilvusClient({ 17 | address: uri, 18 | token: token, 19 | }); 20 | console.info(`Success!`); 21 | 22 | (async () => { 23 | // dimension 24 | const dimension = 64; 25 | const collection_name = "hello_milvus"; 26 | const num_of_rows = 1000; 27 | 28 | // create colleciton 29 | console.time(`Creating example collection: ${collection_name}`); 30 | await client.createCollection({ 31 | collection_name, 32 | dimension, 33 | }); 34 | console.timeEnd(`Creating example collection: ${collection_name}`); 35 | 36 | const data = []; 37 | Array(num_of_rows) 38 | .fill(1) 39 | .forEach(() => { 40 | data.push({ 41 | id: Math.floor(Math.random() * 100000), 42 | vector: [...Array(dimension)].map(() => Math.random()), 43 | }); 44 | }); 45 | // inserting 46 | console.time(`Inserting 1000 entities successfully`); 47 | await client.insert({ 48 | collection_name, 49 | data, 50 | }); 51 | console.timeEnd(`Inserting 1000 entities successfully`); 52 | 53 | // flush 54 | await client.flushSync({ collection_names: [collection_name] }); 55 | console.log(`Flush data successfully`); 56 | // search 57 | console.time(`Searching vector`); 58 | const res = await client.search({ 59 | collection_name, 60 | vector: data[0]["vector"], 61 | output_fields: ["id"], 62 | limit: 10, 63 | consistency_level: ConsistencyLevelEnum.Bounded, 64 | }); 65 | console.timeEnd(`Searching vector`); 66 | console.log(res); 67 | })(); 68 | -------------------------------------------------------------------------------- /node/README.md: -------------------------------------------------------------------------------- 1 | ## Getting started 2 | 3 | ### Prerequisites 4 | 5 | Node 14+ 6 | 7 | ### Git clone the example code repo 8 | 9 | ```bash 10 | git clone https://github.com/zilliztech/cloud-vectordb-examples 11 | ``` 12 | 13 | ### Go to milvus-node folder 14 | 15 | ```bash 16 | cd cloud-vectordb-examples 17 | cd node 18 | ``` 19 | 20 | ### Install sdk 21 | 22 | ```bash 23 | npm install 24 | ``` 25 | 26 | #### Dedicated cluster 27 | 28 | ##### Modify uri, user name and user password in configuration file.(config.js) 29 | 30 | ```javascript 31 | { 32 | uri: " https://in01-XXXXXXXXXXXXX.aws-us-west-2.vectordb.zillizcloud.com:XXXXX", 33 | token: "username:password", 34 | }; 35 | ``` 36 | 37 | #### Serverless cluster 38 | 39 | ##### Modify uri, token in configuration file.(config.js) 40 | 41 | ```javascript 42 | { 43 | uri: "https://in03-XXXXXXXXXXXXX.api.gcp-us-west1.cloud-uat3.zilliz.com", 44 | token: "api-key", 45 | }; 46 | 47 | ``` 48 | 49 | ### Run HelloZillizCloud.js 50 | 51 | ```shell 52 | npm install 53 | node HelloZillizCloud.js 54 | ``` 55 | -------------------------------------------------------------------------------- /node/config.js: -------------------------------------------------------------------------------- 1 | export const config = { 2 | uri: "https://in03-XXXXXXXXXXXXX.api.gcp-us-west1.cloud-uat3.zilliz.com:port", 3 | user: 'username', 4 | password: 'password', 5 | token: 'some-token', // optinal, please check your Zilliz Cloud connection guide 6 | }; 7 | -------------------------------------------------------------------------------- /node/config.serverless.js: -------------------------------------------------------------------------------- 1 | export const config = { 2 | uri: "https://in03-XXXXXXXXXXXXX.api.gcp-us-west1.cloud-uat3.zilliz.com", 3 | token: 4 | "cfda6bf09e57d2608851bd30ec0a76469297011bce00e87cd1189ab202d52ec59103c0942e7bdab776d7b6b3cbf487ed2c3c61ff", 5 | }; 6 | -------------------------------------------------------------------------------- /node/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "dependencies": { 4 | "@zilliz/milvus2-sdk-node": "2.3.2" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /node/utils.js: -------------------------------------------------------------------------------- 1 | export const isVersionAtLeast = (targetVersion, version) => { 2 | const targetParts = targetVersion.split(".").map(Number); 3 | const parts = version.split(".").map(Number); 4 | for (let i = 0; i < targetParts.length; i++) { 5 | if (parts[i] > targetParts[i]) { 6 | return true; 7 | } else if (parts[i] < targetParts[i]) { 8 | return false; 9 | } 10 | } 11 | return true; 12 | }; 13 | -------------------------------------------------------------------------------- /node/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@colors/colors@1.5.0": 6 | version "1.5.0" 7 | resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" 8 | integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== 9 | 10 | "@dabh/diagnostics@^2.0.2": 11 | version "2.0.3" 12 | resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" 13 | integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== 14 | dependencies: 15 | colorspace "1.1.x" 16 | enabled "2.0.x" 17 | kuler "^2.0.0" 18 | 19 | "@grpc/grpc-js@1.8.17": 20 | version "1.8.17" 21 | resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.8.17.tgz#a3a2f826fc033eae7d2f5ee41e0ab39cee948838" 22 | integrity sha512-DGuSbtMFbaRsyffMf+VEkVu8HkSXEUfO3UyGJNtqxW9ABdtTIA+2UXAJpwbJS+xfQxuwqLUeELmL6FuZkOqPxw== 23 | dependencies: 24 | "@grpc/proto-loader" "^0.7.0" 25 | "@types/node" ">=12.12.47" 26 | 27 | "@grpc/proto-loader@0.7.7": 28 | version "0.7.7" 29 | resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.7.tgz#d33677a77eea8407f7c66e2abd97589b60eb4b21" 30 | integrity sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ== 31 | dependencies: 32 | "@types/long" "^4.0.1" 33 | lodash.camelcase "^4.3.0" 34 | long "^4.0.0" 35 | protobufjs "^7.0.0" 36 | yargs "^17.7.2" 37 | 38 | "@grpc/proto-loader@^0.7.0": 39 | version "0.7.6" 40 | resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.6.tgz#b71fdf92b184af184b668c4e9395a5ddc23d61de" 41 | integrity sha512-QyAXR8Hyh7uMDmveWxDSUcJr9NAWaZ2I6IXgAYvQmfflwouTM+rArE2eEaCtLlRqO81j7pRLCt81IefUei6Zbw== 42 | dependencies: 43 | "@types/long" "^4.0.1" 44 | lodash.camelcase "^4.3.0" 45 | long "^4.0.0" 46 | protobufjs "^7.0.0" 47 | yargs "^16.2.0" 48 | 49 | "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": 50 | version "1.1.2" 51 | resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" 52 | integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== 53 | 54 | "@protobufjs/base64@^1.1.2": 55 | version "1.1.2" 56 | resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" 57 | integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== 58 | 59 | "@protobufjs/codegen@^2.0.4": 60 | version "2.0.4" 61 | resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" 62 | integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== 63 | 64 | "@protobufjs/eventemitter@^1.1.0": 65 | version "1.1.0" 66 | resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" 67 | integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== 68 | 69 | "@protobufjs/fetch@^1.1.0": 70 | version "1.1.0" 71 | resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" 72 | integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== 73 | dependencies: 74 | "@protobufjs/aspromise" "^1.1.1" 75 | "@protobufjs/inquire" "^1.1.0" 76 | 77 | "@protobufjs/float@^1.0.2": 78 | version "1.0.2" 79 | resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" 80 | integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== 81 | 82 | "@protobufjs/inquire@^1.1.0": 83 | version "1.1.0" 84 | resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" 85 | integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== 86 | 87 | "@protobufjs/path@^1.1.2": 88 | version "1.1.2" 89 | resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" 90 | integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== 91 | 92 | "@protobufjs/pool@^1.1.0": 93 | version "1.1.0" 94 | resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" 95 | integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== 96 | 97 | "@protobufjs/utf8@^1.1.0": 98 | version "1.1.0" 99 | resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" 100 | integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== 101 | 102 | "@types/long@^4.0.1": 103 | version "4.0.2" 104 | resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" 105 | integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== 106 | 107 | "@types/node@>=12.12.47", "@types/node@>=13.7.0": 108 | version "18.15.11" 109 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" 110 | integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== 111 | 112 | "@types/triple-beam@^1.3.2": 113 | version "1.3.2" 114 | resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.2.tgz#38ecb64f01aa0d02b7c8f4222d7c38af6316fef8" 115 | integrity sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g== 116 | 117 | "@zilliz/milvus2-sdk-node@2.3.2": 118 | version "2.3.2" 119 | resolved "https://registry.yarnpkg.com/@zilliz/milvus2-sdk-node/-/milvus2-sdk-node-2.3.2.tgz#1ea6a7b4ffedeb3d4ae6002fd3ebf74ef7daa316" 120 | integrity sha512-2V9wvJl76oAwCZZzRZl03nCSOc392/u4Obk1jRmmgBUiQ8E5lfncvQgQfd+Meg++fgpEb3m4sRhyFUVSTZRK5g== 121 | dependencies: 122 | "@grpc/grpc-js" "1.8.17" 123 | "@grpc/proto-loader" "0.7.7" 124 | dayjs "^1.11.7" 125 | lru-cache "^9.1.2" 126 | protobufjs "7.2.4" 127 | winston "^3.9.0" 128 | 129 | ansi-regex@^5.0.1: 130 | version "5.0.1" 131 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 132 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 133 | 134 | ansi-styles@^4.0.0: 135 | version "4.3.0" 136 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 137 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 138 | dependencies: 139 | color-convert "^2.0.1" 140 | 141 | async@^3.2.3: 142 | version "3.2.4" 143 | resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" 144 | integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== 145 | 146 | cliui@^7.0.2: 147 | version "7.0.4" 148 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 149 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 150 | dependencies: 151 | string-width "^4.2.0" 152 | strip-ansi "^6.0.0" 153 | wrap-ansi "^7.0.0" 154 | 155 | cliui@^8.0.1: 156 | version "8.0.1" 157 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" 158 | integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== 159 | dependencies: 160 | string-width "^4.2.0" 161 | strip-ansi "^6.0.1" 162 | wrap-ansi "^7.0.0" 163 | 164 | color-convert@^1.9.3: 165 | version "1.9.3" 166 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 167 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 168 | dependencies: 169 | color-name "1.1.3" 170 | 171 | color-convert@^2.0.1: 172 | version "2.0.1" 173 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 174 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 175 | dependencies: 176 | color-name "~1.1.4" 177 | 178 | color-name@1.1.3: 179 | version "1.1.3" 180 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 181 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 182 | 183 | color-name@^1.0.0, color-name@~1.1.4: 184 | version "1.1.4" 185 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 186 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 187 | 188 | color-string@^1.6.0: 189 | version "1.9.1" 190 | resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" 191 | integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== 192 | dependencies: 193 | color-name "^1.0.0" 194 | simple-swizzle "^0.2.2" 195 | 196 | color@^3.1.3: 197 | version "3.2.1" 198 | resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" 199 | integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== 200 | dependencies: 201 | color-convert "^1.9.3" 202 | color-string "^1.6.0" 203 | 204 | colorspace@1.1.x: 205 | version "1.1.4" 206 | resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" 207 | integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== 208 | dependencies: 209 | color "^3.1.3" 210 | text-hex "1.0.x" 211 | 212 | dayjs@^1.11.7: 213 | version "1.11.8" 214 | resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.8.tgz#4282f139c8c19dd6d0c7bd571e30c2d0ba7698ea" 215 | integrity sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ== 216 | 217 | emoji-regex@^8.0.0: 218 | version "8.0.0" 219 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 220 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 221 | 222 | enabled@2.0.x: 223 | version "2.0.0" 224 | resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" 225 | integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== 226 | 227 | escalade@^3.1.1: 228 | version "3.1.1" 229 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 230 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 231 | 232 | fecha@^4.2.0: 233 | version "4.2.3" 234 | resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" 235 | integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== 236 | 237 | fn.name@1.x.x: 238 | version "1.1.0" 239 | resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" 240 | integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== 241 | 242 | get-caller-file@^2.0.5: 243 | version "2.0.5" 244 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 245 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 246 | 247 | inherits@^2.0.3: 248 | version "2.0.4" 249 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 250 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 251 | 252 | is-arrayish@^0.3.1: 253 | version "0.3.2" 254 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" 255 | integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== 256 | 257 | is-fullwidth-code-point@^3.0.0: 258 | version "3.0.0" 259 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 260 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 261 | 262 | is-stream@^2.0.0: 263 | version "2.0.1" 264 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" 265 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== 266 | 267 | kuler@^2.0.0: 268 | version "2.0.0" 269 | resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" 270 | integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== 271 | 272 | lodash.camelcase@^4.3.0: 273 | version "4.3.0" 274 | resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" 275 | integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== 276 | 277 | logform@^2.3.2, logform@^2.4.0: 278 | version "2.5.1" 279 | resolved "https://registry.yarnpkg.com/logform/-/logform-2.5.1.tgz#44c77c34becd71b3a42a3970c77929e52c6ed48b" 280 | integrity sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg== 281 | dependencies: 282 | "@colors/colors" "1.5.0" 283 | "@types/triple-beam" "^1.3.2" 284 | fecha "^4.2.0" 285 | ms "^2.1.1" 286 | safe-stable-stringify "^2.3.1" 287 | triple-beam "^1.3.0" 288 | 289 | long@^4.0.0: 290 | version "4.0.0" 291 | resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" 292 | integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== 293 | 294 | long@^5.0.0: 295 | version "5.2.3" 296 | resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" 297 | integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== 298 | 299 | lru-cache@^9.1.2: 300 | version "9.1.2" 301 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-9.1.2.tgz#255fdbc14b75589d6d0e73644ca167a8db506835" 302 | integrity sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ== 303 | 304 | ms@^2.1.1: 305 | version "2.1.3" 306 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 307 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 308 | 309 | one-time@^1.0.0: 310 | version "1.0.0" 311 | resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" 312 | integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== 313 | dependencies: 314 | fn.name "1.x.x" 315 | 316 | protobufjs@7.2.4: 317 | version "7.2.4" 318 | resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.4.tgz#3fc1ec0cdc89dd91aef9ba6037ba07408485c3ae" 319 | integrity sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ== 320 | dependencies: 321 | "@protobufjs/aspromise" "^1.1.2" 322 | "@protobufjs/base64" "^1.1.2" 323 | "@protobufjs/codegen" "^2.0.4" 324 | "@protobufjs/eventemitter" "^1.1.0" 325 | "@protobufjs/fetch" "^1.1.0" 326 | "@protobufjs/float" "^1.0.2" 327 | "@protobufjs/inquire" "^1.1.0" 328 | "@protobufjs/path" "^1.1.2" 329 | "@protobufjs/pool" "^1.1.0" 330 | "@protobufjs/utf8" "^1.1.0" 331 | "@types/node" ">=13.7.0" 332 | long "^5.0.0" 333 | 334 | protobufjs@^7.0.0: 335 | version "7.2.3" 336 | resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.3.tgz#01af019e40d9c6133c49acbb3ff9e30f4f0f70b2" 337 | integrity sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg== 338 | dependencies: 339 | "@protobufjs/aspromise" "^1.1.2" 340 | "@protobufjs/base64" "^1.1.2" 341 | "@protobufjs/codegen" "^2.0.4" 342 | "@protobufjs/eventemitter" "^1.1.0" 343 | "@protobufjs/fetch" "^1.1.0" 344 | "@protobufjs/float" "^1.0.2" 345 | "@protobufjs/inquire" "^1.1.0" 346 | "@protobufjs/path" "^1.1.2" 347 | "@protobufjs/pool" "^1.1.0" 348 | "@protobufjs/utf8" "^1.1.0" 349 | "@types/node" ">=13.7.0" 350 | long "^5.0.0" 351 | 352 | readable-stream@^3.4.0, readable-stream@^3.6.0: 353 | version "3.6.2" 354 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" 355 | integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== 356 | dependencies: 357 | inherits "^2.0.3" 358 | string_decoder "^1.1.1" 359 | util-deprecate "^1.0.1" 360 | 361 | require-directory@^2.1.1: 362 | version "2.1.1" 363 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 364 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 365 | 366 | safe-buffer@~5.2.0: 367 | version "5.2.1" 368 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 369 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 370 | 371 | safe-stable-stringify@^2.3.1: 372 | version "2.4.3" 373 | resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" 374 | integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== 375 | 376 | simple-swizzle@^0.2.2: 377 | version "0.2.2" 378 | resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" 379 | integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== 380 | dependencies: 381 | is-arrayish "^0.3.1" 382 | 383 | stack-trace@0.0.x: 384 | version "0.0.10" 385 | resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" 386 | integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== 387 | 388 | string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: 389 | version "4.2.3" 390 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 391 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 392 | dependencies: 393 | emoji-regex "^8.0.0" 394 | is-fullwidth-code-point "^3.0.0" 395 | strip-ansi "^6.0.1" 396 | 397 | string_decoder@^1.1.1: 398 | version "1.3.0" 399 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 400 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 401 | dependencies: 402 | safe-buffer "~5.2.0" 403 | 404 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 405 | version "6.0.1" 406 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 407 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 408 | dependencies: 409 | ansi-regex "^5.0.1" 410 | 411 | text-hex@1.0.x: 412 | version "1.0.0" 413 | resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" 414 | integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== 415 | 416 | triple-beam@^1.3.0: 417 | version "1.3.0" 418 | resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" 419 | integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== 420 | 421 | util-deprecate@^1.0.1: 422 | version "1.0.2" 423 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 424 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 425 | 426 | winston-transport@^4.5.0: 427 | version "4.5.0" 428 | resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" 429 | integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q== 430 | dependencies: 431 | logform "^2.3.2" 432 | readable-stream "^3.6.0" 433 | triple-beam "^1.3.0" 434 | 435 | winston@^3.9.0: 436 | version "3.9.0" 437 | resolved "https://registry.yarnpkg.com/winston/-/winston-3.9.0.tgz#2bbdeb8167a75fac6d9a0c6d002890cd908016c2" 438 | integrity sha512-jW51iW/X95BCW6MMtZWr2jKQBP4hV5bIDq9QrIjfDk6Q9QuxvTKEAlpUNAzP+HYHFFCeENhph16s0zEunu4uuQ== 439 | dependencies: 440 | "@colors/colors" "1.5.0" 441 | "@dabh/diagnostics" "^2.0.2" 442 | async "^3.2.3" 443 | is-stream "^2.0.0" 444 | logform "^2.4.0" 445 | one-time "^1.0.0" 446 | readable-stream "^3.4.0" 447 | safe-stable-stringify "^2.3.1" 448 | stack-trace "0.0.x" 449 | triple-beam "^1.3.0" 450 | winston-transport "^4.5.0" 451 | 452 | wrap-ansi@^7.0.0: 453 | version "7.0.0" 454 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 455 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 456 | dependencies: 457 | ansi-styles "^4.0.0" 458 | string-width "^4.1.0" 459 | strip-ansi "^6.0.0" 460 | 461 | y18n@^5.0.5: 462 | version "5.0.8" 463 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 464 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 465 | 466 | yargs-parser@^20.2.2: 467 | version "20.2.9" 468 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 469 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 470 | 471 | yargs-parser@^21.1.1: 472 | version "21.1.1" 473 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" 474 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 475 | 476 | yargs@^16.2.0: 477 | version "16.2.0" 478 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 479 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 480 | dependencies: 481 | cliui "^7.0.2" 482 | escalade "^3.1.1" 483 | get-caller-file "^2.0.5" 484 | require-directory "^2.1.1" 485 | string-width "^4.2.0" 486 | y18n "^5.0.5" 487 | yargs-parser "^20.2.2" 488 | 489 | yargs@^17.7.2: 490 | version "17.7.2" 491 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" 492 | integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== 493 | dependencies: 494 | cliui "^8.0.1" 495 | escalade "^3.1.1" 496 | get-caller-file "^2.0.5" 497 | require-directory "^2.1.1" 498 | string-width "^4.2.3" 499 | y18n "^5.0.5" 500 | yargs-parser "^21.1.1" 501 | -------------------------------------------------------------------------------- /python/README.md: -------------------------------------------------------------------------------- 1 | ## Getting started 2 | 3 | ### Prerequisites 4 | Install Python 3.8+ 5 | pip3 6 | 7 | 8 | ### Git clone the example code repo 9 | git clone https://github.com/zilliztech/cloud-vectordb-examples.git 10 | 11 | ### Install pymilvus 12 | pip3 install pymilvus==2.4.12 13 | 14 | ### Go to python folder 15 | cd cloud-vectordb-examples 16 | cd python 17 | 18 | ### Modify uri,token in the configuration file.(config.ini) 19 | uri = https://in01-XXXXXXXXXXXX.aws-us-west-2.vectordb.zillizcloud.com:XXXXX 20 | token = db_admin:password (or ApiKey) 21 | 22 | ### Run hello_zilliz_vectordb.py 23 | python3 hello_zilliz_vectordb.py 24 | 25 | ### It should print information on the console 26 | Connecting to DB: https://in01-xxxxxxxxxxxxx.aws-us-west-2.vectordb.zillizcloud.com:XXXXX 27 | Success! 28 | Creating example collection: book 29 | Schema: {...} 30 | Success! 31 | Inserting 2000 entities... 32 | Succeed in 0.3021 seconds! 33 | Flushing... 34 | Succeed in 0.77 seconds! 35 | Building AutoIndex... 36 | Succeed in 18.9118 seconds! 37 | Loading collection... 38 | Succeed in 2.5229 seconds! 39 | Searching vector:[[...][...]...] 40 | search 0 latency: 0.0057 seconds! 41 | Searching vector:[[...][...]...] 42 | search 1 latency: 0.0049 seconds! 43 | Searching vector:[[...][...]...] 44 | search 2 latency: 0.0051 seconds! 45 | ... 46 | ... 47 | 48 | -------------------------------------------------------------------------------- /python/config.ini: -------------------------------------------------------------------------------- 1 | [example] 2 | uri = https://in01-XXXXXXXXXXXXX.aws-us-west-2.vectordb.zillizcloud.com:XXXXX 3 | token = db_admin:password (or ApiKey) -------------------------------------------------------------------------------- /python/hello_zilliz_vectordb.py: -------------------------------------------------------------------------------- 1 | import configparser 2 | import time 3 | import random 4 | 5 | from pymilvus import MilvusClient 6 | from pymilvus import DataType 7 | 8 | cfp = configparser.RawConfigParser() 9 | cfp.read('config.ini') 10 | milvus_uri = cfp.get('example', 'uri') 11 | token = cfp.get('example', 'token') 12 | 13 | milvus_client = MilvusClient(uri=milvus_uri, token=token) 14 | print(f"Connected to DB: {milvus_uri} successfully") 15 | 16 | 17 | # Check if the collection exists 18 | collection_name = "book" 19 | check_collection = milvus_client.has_collection(collection_name) 20 | 21 | if check_collection: 22 | milvus_client.drop_collection(collection_name) 23 | print(f"Dropped the existing collection {collection_name} successfully") 24 | 25 | dim = 64 26 | 27 | print("Start to create the collection schema") 28 | schema = milvus_client.create_schema() 29 | schema.add_field("book_id", DataType.INT64, is_primary=True, description="customized primary id") 30 | schema.add_field("word_count", DataType.INT64, description="word count") 31 | schema.add_field("book_intro", DataType.FLOAT_VECTOR, dim=dim, description="book introduction") 32 | print("Start to prepare index parameters with default AUTOINDEX") 33 | index_params = milvus_client.prepare_index_params() 34 | index_params.add_index("book_intro", metric_type="L2") 35 | 36 | print(f"Start to create example collection: {collection_name}") 37 | # create collection with the above schema and index parameters, and then load automatically 38 | milvus_client.create_collection(collection_name, schema=schema, index_params=index_params) 39 | collection_property = milvus_client.describe_collection(collection_name) 40 | print("Collection details: %s" % collection_property) 41 | 42 | # insert data with customized ids 43 | nb = 1000 44 | insert_rounds = 2 45 | start = 0 # first primary key id 46 | total_rt = 0 # total response time for inert 47 | 48 | print(f"Start to insert {nb*insert_rounds} entities into example collection: {collection_name}") 49 | for i in range(insert_rounds): 50 | vector = [random.random() for _ in range(dim)] 51 | rows = [{"book_id": i, "word_count": random.randint(1, 100), "book_intro": vector} for i in range(start, start+nb)] 52 | t0 = time.time() 53 | milvus_client.insert(collection_name, rows) 54 | ins_rt = time.time() - t0 55 | start += nb 56 | total_rt += ins_rt 57 | print(f"Insert completed in {round(total_rt,4)} seconds") 58 | 59 | print("Start to flush") 60 | start_flush = time.time() 61 | milvus_client.flush(collection_name) 62 | end_flush = time.time() 63 | print(f"Flush completed in {round(end_flush - start_flush, 4)} seconds") 64 | 65 | # search 66 | nq = 3 67 | search_params = {"metric_type": "L2", "params": {"level": 2}} 68 | limit = 2 69 | 70 | for i in range(5): 71 | search_vectors = [[random.random() for _ in range(dim)] for _ in range(nq)] 72 | t0 = time.time() 73 | results = milvus_client.search(collection_name, 74 | data=search_vectors, 75 | limit=limit, 76 | search_params=search_params, 77 | anns_field="book_intro") 78 | t1 = time.time() 79 | assert len(results) == nq 80 | assert len(results[0]) == limit 81 | print(f"Search {i} results: {results}") 82 | print(f"Search {i} latency: {round(t1-t0, 4)} seconds") 83 | 84 | -------------------------------------------------------------------------------- /zilliz_go/HelloZillizCloud.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "context" 5 | "fmt" 6 | "log" 7 | "math/rand" 8 | "time" 9 | 10 | "github.com/milvus-io/milvus-sdk-go/v2/client" 11 | "github.com/milvus-io/milvus-sdk-go/v2/entity" 12 | ) 13 | 14 | func main() { 15 | collectionName := "book" 16 | uri := "" // https://in01-xxxx.region.zillizcloud.com:port 17 | user := "username" 18 | password := "password" 19 | 20 | // connect to milvus 21 | fmt.Println("Connecting to DB: ", uri) 22 | ctx, cancel := context.WithCancel(context.Background()) 23 | defer cancel() 24 | 25 | client, err := client.NewClient(ctx, client.Config{ 26 | Address: uri, 27 | Username: user, 28 | Password: password, 29 | }) 30 | 31 | if err != nil { 32 | log.Fatal("fail to connect to milvus", err.Error()) 33 | } 34 | fmt.Println("Success!") 35 | 36 | // delete collection if exists 37 | has, err := client.HasCollection(ctx, collectionName) 38 | if err != nil { 39 | log.Fatal("fail to check whether collection exists", err.Error()) 40 | } 41 | if has { 42 | client.DropCollection(ctx, collectionName) 43 | } 44 | 45 | // create a collection 46 | fmt.Println("Creating example collection: book") 47 | schema := entity.NewSchema().WithName(collectionName).WithDescription("Medium articles published between Jan 2020 to August 2020 in prominent publications"). 48 | WithField(entity.NewField().WithName("book_id").WithDataType(entity.FieldTypeInt64).WithIsPrimaryKey(true).WithDescription("customized primary id")). 49 | WithField(entity.NewField().WithName("word_count").WithDataType(entity.FieldTypeInt64).WithDescription("word count")). 50 | WithField(entity.NewField().WithName("book_intro").WithDataType(entity.FieldTypeFloatVector).WithDim(128)) 51 | 52 | err = client.CreateCollection(ctx, schema, entity.DefaultShardNumber) 53 | if err != nil { 54 | log.Fatal("failed to create collection", err.Error()) 55 | } 56 | fmt.Println("Success!") 57 | 58 | // insert data 59 | fmt.Println("Inserting 100000 entities... ") 60 | dim := 128 61 | num_entities := 100000 62 | idList, countList := make([]int64, 0, num_entities), make([]int64, 0, num_entities) 63 | vectorList := make([][]float32, 0, num_entities) 64 | for i := 0; i < num_entities; i++ { 65 | idList = append(idList, int64(i)) 66 | countList = append(countList, int64(i)) 67 | vec := make([]float32, 0, dim) 68 | for j := 0; j < dim; j++ { 69 | vec = append(vec, rand.Float32()) 70 | } 71 | vectorList = append(vectorList, vec) 72 | } 73 | 74 | idData := entity.NewColumnInt64("book_id", idList) 75 | countData := entity.NewColumnInt64("word_count", countList) 76 | vectorData := entity.NewColumnFloatVector("book_intro", dim, vectorList) 77 | 78 | begin := time.Now() 79 | _, err = client.Insert(ctx, collectionName, "", idData, countData, vectorData) 80 | if err != nil { 81 | log.Fatal("fail to insert data", err.Error()) 82 | } 83 | fmt.Println("Succeed in", time.Since(begin)) 84 | 85 | // create index 86 | fmt.Println("Building AutoIndex...") 87 | index, err := entity.NewIndexAUTOINDEX(entity.L2) 88 | if err != nil { 89 | log.Fatal("fail to get auto index", err.Error()) 90 | } 91 | begin = time.Now() 92 | err = client.CreateIndex(ctx, collectionName, "book_intro", index, false) 93 | if err != nil { 94 | log.Fatal("fail to create index", err.Error()) 95 | } 96 | fmt.Println("Succeed in", time.Since(begin)) 97 | 98 | // load collection 99 | fmt.Println("Loading collection...") 100 | begin = time.Now() 101 | err = client.LoadCollection(ctx, collectionName, false) 102 | if err != nil { 103 | log.Fatal("fail to load collection", err.Error()) 104 | } 105 | fmt.Println("Succeed in", time.Since(begin)) 106 | 107 | // search 108 | sp, _ := entity.NewIndexAUTOINDEXSearchParam(1) 109 | vectors := []entity.Vector{entity.FloatVector(vectorList[1])} 110 | fmt.Println("Search...") 111 | begin = time.Now() 112 | searchResult, err := client.Search( 113 | ctx, 114 | collectionName, // collectionName 115 | nil, // partitionNames 116 | "", // expression 117 | []string{"book_id"}, // outputFields 118 | vectors, // vectors 119 | "book_intro", // vectorField 120 | entity.L2, // metricType 121 | 10, // topK 122 | sp, // search params 123 | ) 124 | if err != nil { 125 | log.Fatal("search failed", err.Error()) 126 | } 127 | fmt.Println("Succeed in", time.Since(begin)) 128 | 129 | for _, sr := range searchResult { 130 | fmt.Println("ids: ", sr.IDs) 131 | fmt.Println("Scores: ", sr.Scores) 132 | } 133 | } 134 | -------------------------------------------------------------------------------- /zilliz_go/README.md: -------------------------------------------------------------------------------- 1 | ## Getting started 2 | 3 | ### Prerequisites 4 | go >= 1.18 5 | 6 | ### Git clone the example code repo 7 | git clone https://github.com/zilliztech/cloud-vectordb-examples.git 8 | 9 | ### Install milvus-sdk-go 10 | go get -u github.com/milvus-io/milvus-sdk-go/v2 11 | 12 | ### Go to milvus_go folder 13 | cd cloud-vectordb-examples 14 | cd milvus_go 15 | 16 | ### Modify uri, username and user password in the configuration file.(config.go) 17 | ```go 18 | const ( 19 | uri = "https://in01-XXXXXXXXXXXXX.aws-us-east-2.vectordb.zillizcloud.com:XXXXX" 20 | user = "db_admin" 21 | password = "XXXXXXXXXXXXX" 22 | ) 23 | ``` 24 | 25 | ### Run HelloZillizCloud.go 26 | go run HelloZillizCloud.go 27 | 28 | ### It should print information on the console 29 | ``` 30 | Connecting to DB: https://in01-XXXXXXXXXXXXX.aws-us-east-2.vectordb.zillizcloud.com:XXXXX 31 | Success! 32 | Creating example collection: book 33 | Success! 34 | Inserting 100000 entities... 35 | Succeed in 2.391643208s 36 | Building AutoIndex... 37 | Succeed in 1.170188209s 38 | Loading collection... 39 | Succeed in 9.246094375s 40 | Search... 41 | Succeed in 584.865167ms 42 | &{ [1 560 412 773 747 171 14 598 506 897]} 43 | [0 14.840795 15.720606 16.305355 16.57472 16.69268 16.71979 16.856443 16.934048 17.061205] 44 | ``` 45 | -------------------------------------------------------------------------------- /zilliz_go/config.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | const ( 4 | uri = "https://in01-XXXXXXXXXXXXX.aws-us-east-2.vectordb.zillizcloud.com:XXXXX" 5 | user = "db_admin" 6 | password = "XXXXXXXXXXXXX" 7 | ) 8 | -------------------------------------------------------------------------------- /zilliz_go/go.mod: -------------------------------------------------------------------------------- 1 | module zilliz_go 2 | 3 | go 1.18 4 | 5 | require github.com/milvus-io/milvus-sdk-go/v2 v2.2.3 6 | 7 | require ( 8 | github.com/cockroachdb/errors v1.9.1 // indirect 9 | github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect 10 | github.com/cockroachdb/redact v1.1.3 // indirect 11 | github.com/getsentry/sentry-go v0.12.0 // indirect 12 | github.com/gogo/protobuf v1.3.2 // indirect 13 | github.com/golang/protobuf v1.5.3 // indirect 14 | github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect 15 | github.com/kr/pretty v0.3.0 // indirect 16 | github.com/kr/text v0.2.0 // indirect 17 | github.com/milvus-io/milvus-proto/go-api v0.0.0-20230522080721-2975bfe7a190 // indirect 18 | github.com/pkg/errors v0.9.1 // indirect 19 | github.com/rogpeppe/go-internal v1.8.1 // indirect 20 | github.com/tidwall/gjson v1.14.4 // indirect 21 | github.com/tidwall/match v1.1.1 // indirect 22 | github.com/tidwall/pretty v1.2.0 // indirect 23 | golang.org/x/net v0.20.0 // indirect 24 | golang.org/x/sys v0.16.0 // indirect 25 | golang.org/x/text v0.14.0 // indirect 26 | google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect 27 | google.golang.org/grpc v1.56.3 // indirect 28 | google.golang.org/protobuf v1.32.0 // indirect 29 | ) 30 | -------------------------------------------------------------------------------- /zilliz_go/go.sum: -------------------------------------------------------------------------------- 1 | cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= 2 | github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= 3 | github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= 4 | github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= 5 | github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= 6 | github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= 7 | github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= 8 | github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= 9 | github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= 10 | github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= 11 | github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= 12 | github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= 13 | github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= 14 | github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= 15 | github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= 16 | github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= 17 | github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk= 18 | github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f h1:6jduT9Hfc0njg5jJ1DdKCFPdMBrp/mdZfCpa5h+WM74= 19 | github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= 20 | github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= 21 | github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= 22 | github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= 23 | github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= 24 | github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= 25 | github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= 26 | github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= 27 | github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= 28 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 29 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= 30 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 31 | github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= 32 | github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= 33 | github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= 34 | github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= 35 | github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= 36 | github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= 37 | github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= 38 | github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= 39 | github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= 40 | github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= 41 | github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= 42 | github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= 43 | github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= 44 | github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= 45 | github.com/getsentry/sentry-go v0.12.0 h1:era7g0re5iY13bHSdN/xMkyV+5zZppjRVQhZrXCaEIk= 46 | github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= 47 | github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= 48 | github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= 49 | github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= 50 | github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= 51 | github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= 52 | github.com/go-faker/faker/v4 v4.1.0 h1:ffuWmpDrducIUOO0QSKSF5Q2dxAht+dhsT9FvVHhPEI= 53 | github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= 54 | github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= 55 | github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= 56 | github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= 57 | github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= 58 | github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= 59 | github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= 60 | github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= 61 | github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= 62 | github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= 63 | github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= 64 | github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= 65 | github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= 66 | github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= 67 | github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= 68 | github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= 69 | github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 70 | github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 71 | github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 72 | github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= 73 | github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= 74 | github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= 75 | github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= 76 | github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= 77 | github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= 78 | github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= 79 | github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= 80 | github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= 81 | github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= 82 | github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= 83 | github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= 84 | github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= 85 | github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= 86 | github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= 87 | github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= 88 | github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 89 | github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 90 | github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 91 | github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= 92 | github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= 93 | github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= 94 | github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 95 | github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= 96 | github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= 97 | github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= 98 | github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= 99 | github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= 100 | github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= 101 | github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= 102 | github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= 103 | github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= 104 | github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= 105 | github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= 106 | github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= 107 | github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= 108 | github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= 109 | github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= 110 | github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= 111 | github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= 112 | github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= 113 | github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= 114 | github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= 115 | github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= 116 | github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= 117 | github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= 118 | github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= 119 | github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= 120 | github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= 121 | github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= 122 | github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= 123 | github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= 124 | github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= 125 | github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= 126 | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= 127 | github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= 128 | github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= 129 | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= 130 | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= 131 | github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= 132 | github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= 133 | github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= 134 | github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= 135 | github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= 136 | github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= 137 | github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= 138 | github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= 139 | github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= 140 | github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= 141 | github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= 142 | github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= 143 | github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= 144 | github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= 145 | github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= 146 | github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= 147 | github.com/milvus-io/milvus-proto/go-api v0.0.0-20230522080721-2975bfe7a190 h1:ZREJhOMgAvXs+K0ain51ibxAtCB8Lnn3EBZFHEykIlk= 148 | github.com/milvus-io/milvus-proto/go-api v0.0.0-20230522080721-2975bfe7a190/go.mod h1:148qnlmZ0Fdm1Fq+Mj/OW2uDoEP25g3mjh0vMGtkgmk= 149 | github.com/milvus-io/milvus-sdk-go/v2 v2.2.3 h1:JEX60ypjkWpikS/J4S1hClM6R1yghIUt4kmsNplwtTU= 150 | github.com/milvus-io/milvus-sdk-go/v2 v2.2.3/go.mod h1:bFT+53/Uc+pWP85UJkxnWQs3H78q4JQd/39ed+BEGhU= 151 | github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= 152 | github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= 153 | github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= 154 | github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= 155 | github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= 156 | github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= 157 | github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= 158 | github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= 159 | github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= 160 | github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= 161 | github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= 162 | github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= 163 | github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= 164 | github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= 165 | github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= 166 | github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= 167 | github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= 168 | github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= 169 | github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= 170 | github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 171 | github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= 172 | github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 173 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 174 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 175 | github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= 176 | github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= 177 | github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= 178 | github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= 179 | github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= 180 | github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= 181 | github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= 182 | github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= 183 | github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= 184 | github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= 185 | github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= 186 | github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= 187 | github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= 188 | github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= 189 | github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= 190 | github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= 191 | github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= 192 | github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= 193 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 194 | github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 195 | github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= 196 | github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= 197 | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 198 | github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= 199 | github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= 200 | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 201 | github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= 202 | github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= 203 | github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= 204 | github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= 205 | github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= 206 | github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= 207 | github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= 208 | github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= 209 | github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= 210 | github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= 211 | github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= 212 | github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= 213 | github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= 214 | github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= 215 | github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= 216 | github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= 217 | github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= 218 | github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= 219 | github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= 220 | github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= 221 | github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= 222 | github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= 223 | github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= 224 | github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= 225 | github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= 226 | github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 227 | github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 228 | github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= 229 | go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= 230 | go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= 231 | go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= 232 | golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= 233 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 234 | golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 235 | golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 236 | golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= 237 | golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= 238 | golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= 239 | golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= 240 | golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= 241 | golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= 242 | golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= 243 | golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= 244 | golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= 245 | golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= 246 | golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 247 | golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 248 | golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 249 | golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 250 | golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 251 | golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 252 | golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 253 | golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 254 | golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 255 | golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 256 | golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 257 | golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 258 | golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 259 | golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 260 | golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 261 | golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 262 | golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= 263 | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= 264 | golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= 265 | golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= 266 | golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= 267 | golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= 268 | golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= 269 | golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 270 | golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 271 | golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 272 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 273 | golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 274 | golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 275 | golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 276 | golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 277 | golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 278 | golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 279 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 280 | golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 281 | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 282 | golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 283 | golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 284 | golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 285 | golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 286 | golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 287 | golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 288 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 289 | golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 290 | golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 291 | golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 292 | golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 293 | golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 294 | golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 295 | golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 296 | golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 297 | golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 298 | golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= 299 | golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 300 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 301 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 302 | golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= 303 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 304 | golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 305 | golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 306 | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 307 | golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= 308 | golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 309 | golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 310 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 311 | golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 312 | golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 313 | golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= 314 | golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= 315 | golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= 316 | golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= 317 | golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= 318 | golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 319 | golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= 320 | golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= 321 | golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= 322 | golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 323 | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 324 | golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 325 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 326 | golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 327 | google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= 328 | google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= 329 | google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= 330 | google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= 331 | google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= 332 | google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= 333 | google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= 334 | google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= 335 | google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= 336 | google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= 337 | google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= 338 | google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= 339 | google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= 340 | google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= 341 | google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= 342 | google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= 343 | google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= 344 | google.golang.org/grpc v1.56.3 h1:8I4C0Yq1EjstUzUJzpcRVbuYA2mODtEmpWiQoN/b2nc= 345 | google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= 346 | google.golang.org/grpc/examples v0.0.0-20220617181431-3e7b97febc7f h1:rqzndB2lIQGivcXdTuY3Y9NBvr70X+y77woofSRluec= 347 | google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= 348 | google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= 349 | google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= 350 | google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= 351 | google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= 352 | google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= 353 | google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= 354 | google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= 355 | google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= 356 | google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= 357 | google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= 358 | google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= 359 | google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= 360 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 361 | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 362 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 363 | gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= 364 | gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= 365 | gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= 366 | gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= 367 | gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= 368 | gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= 369 | gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= 370 | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 371 | gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 372 | gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 373 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 374 | gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 375 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 376 | honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= 377 | honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= 378 | --------------------------------------------------------------------------------