Upgrade minio-go and add region and virtual host config for segcore chunk manager (#26194)

Signed-off-by: luzhang <luzhang@zilliz.com>
Co-authored-by: luzhang <luzhang@zilliz.com>
pull/26264/head
zhagnlu 2023-08-11 10:37:36 +08:00 committed by GitHub
parent 1971d98897
commit 411f9ac823
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 327 additions and 206 deletions

View File

@ -90,6 +90,10 @@ minio:
# Log level for aws sdk log.
# Supported level: off, fatal, error, warn, info, debug, trace
logLevel: error
# Cloud data center region
region: ""
# Cloud whether use virtual host bucket mode
useVirtualHost: false
# Milvus supports four MQ: rocksmq(based on RockDB), natsmq(embedded nats-server), Pulsar and Kafka.
# You can change your mq by setting mq.type field.

19
go.mod
View File

@ -24,7 +24,7 @@ require (
github.com/lingdor/stackerror v0.0.0-20191119040541-976d8885ed76
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d
github.com/milvus-io/milvus-proto/go-api/v2 v2.3.0-dev.1.0.20230716112827-c3fe148f5e1d
github.com/minio/minio-go/v7 v7.0.17
github.com/minio/minio-go/v7 v7.0.56
github.com/nats-io/nats-server/v2 v2.9.17
github.com/nats-io/nats.go v1.24.0
github.com/panjf2000/ants/v2 v2.7.2
@ -77,7 +77,6 @@ require (
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
golang.org/x/arch v0.3.0 // indirect
google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633 // indirect
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 // indirect
)
require (
@ -105,7 +104,7 @@ require (
github.com/danieljoos/wincred v1.1.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/docker/go-units v0.4.0 // indirect
github.com/dustin/go-humanize v1.0.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/dvsekhvalnov/jose2go v1.5.0 // indirect
github.com/form3tech-oss/jwt-go v3.2.3+incompatible // indirect
github.com/fsnotify/fsnotify v1.4.9 // indirect
@ -121,7 +120,7 @@ require (
github.com/goccy/go-json v0.10.2 // indirect
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
github.com/godbus/dbus/v5 v5.0.4 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/gogo/protobuf v1.3.2
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/btree v1.0.1
@ -139,7 +138,6 @@ require (
github.com/jonboulle/clockwork v0.2.2 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/asmfmt v1.3.1 // indirect
github.com/klauspost/cpuid v1.3.1 // indirect
github.com/klauspost/cpuid/v2 v2.2.4 // indirect
github.com/kr/pretty v0.3.0 // indirect
github.com/kr/text v0.2.0 // indirect
@ -152,9 +150,8 @@ require (
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 // indirect
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 // indirect
github.com/minio/md5-simd v1.1.0 // indirect
github.com/minio/sha256-simd v0.1.1 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/minio/md5-simd v1.1.2 // indirect
github.com/minio/sha256-simd v1.0.1 // indirect
github.com/mitchellh/mapstructure v1.4.1 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
@ -169,9 +166,9 @@ require (
github.com/prometheus/common v0.42.0
github.com/prometheus/procfs v0.9.0 // indirect
github.com/rogpeppe/go-internal v1.8.1 // indirect
github.com/rs/xid v1.2.1 // indirect
github.com/rs/xid v1.5.0 // indirect
github.com/shirou/gopsutil/v3 v3.22.9
github.com/sirupsen/logrus v1.8.1 // indirect
github.com/sirupsen/logrus v1.9.2 // indirect
github.com/soheilhy/cmux v0.1.5
github.com/spaolacci/murmur3 v1.1.0
github.com/spf13/afero v1.6.0 // indirect
@ -212,7 +209,7 @@ require (
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
gonum.org/v1/gonum v0.9.3 // indirect
google.golang.org/appengine v1.6.7 // indirect
gopkg.in/ini.v1 v1.62.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
sigs.k8s.io/yaml v1.2.0 // indirect

43
go.sum
View File

@ -201,8 +201,9 @@ github.com/dimfeld/httptreemux v5.0.1+incompatible/go.mod h1:rbUlSV+CCpv/SuqUTP/
github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw=
github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/dvsekhvalnov/jose2go v1.5.0 h1:3j8ya4Z4kMCwT5nXIKFSV84YS+HdqSSO0VsTQxaLAeM=
github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU=
github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM=
@ -399,14 +400,12 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20211008130755-947d60d73cc0/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0=
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
@ -490,7 +489,6 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/juju/qthttptest v0.1.1/go.mod h1:aTlAv8TYaflIiTDIQYzxnl1QdPjAg8Q8qJMErpKy6A4=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
@ -511,15 +509,12 @@ github.com/klauspost/asmfmt v1.3.1 h1:7xZi1N7s9gTLbqiM8KUv8TLyysavbTRGBT5/ly0bRt
github.com/klauspost/asmfmt v1.3.1/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE=
github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/compress v1.14.2/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/compress v1.14.4/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI=
github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid v1.3.1 h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s=
github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4=
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk=
github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
@ -584,8 +579,6 @@ github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/le
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/milvus-io/gorocksdb v0.0.0-20220624081344-8c5f4212846b h1:TfeY0NxYxZzUfIfYe5qYDBzt4ZYRqzUjTR6CvUzjat8=
github.com/milvus-io/gorocksdb v0.0.0-20220624081344-8c5f4212846b/go.mod h1:iwW+9cWfIzzDseEBCCeDSN5SD16Tidvy8cwQ7ZY8Qj4=
github.com/milvus-io/milvus-proto/go-api/v2 v2.3.0-dev.1 h1:x6vhrVyK3wEuXIDHt0uk2l/UFPa/RRGWk1nkjgN5jkI=
github.com/milvus-io/milvus-proto/go-api/v2 v2.3.0-dev.1/go.mod h1:1OIl0v5PQeNxIJhCvY+K55CBUOYDZevw9g9380u1Wek=
github.com/milvus-io/milvus-proto/go-api/v2 v2.3.0-dev.1.0.20230716112827-c3fe148f5e1d h1:XsQQ/MigebXEE2VXPKKmA3K7OHC+mkEUiErWvaWMikI=
github.com/milvus-io/milvus-proto/go-api/v2 v2.3.0-dev.1.0.20230716112827-c3fe148f5e1d/go.mod h1:1OIl0v5PQeNxIJhCvY+K55CBUOYDZevw9g9380u1Wek=
github.com/milvus-io/pulsar-client-go v0.6.10 h1:eqpJjU+/QX0iIhEo3nhOqMNXL+TyInAs1IAHZCrCM/A=
@ -596,15 +589,14 @@ github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8D
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE=
github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g=
github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
github.com/minio/md5-simd v1.1.0 h1:QPfiOqlZH+Cj9teu0t9b1nTBfPbyTl16Of5MeuShdK4=
github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw=
github.com/minio/minio-go/v7 v7.0.17 h1:5SiS3pqiQDbNhmXMxtqn2HzAInbN5cbHT7ip9F0F07E=
github.com/minio/minio-go/v7 v7.0.17/go.mod h1:SyQ1IFeJuaa+eV5yEDxW7hYE1s5VVq5sgImDe27R+zg=
github.com/minio/sha256-simd v0.1.1 h1:5QHSlgo3nt5yKOJrC7W8w7X+NFl8cMPZm96iu8kKUJU=
github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
github.com/minio/minio-go/v7 v7.0.56 h1:pkZplIEHu8vinjkmhsexcXpWth2tjVLphrTZx6fBVZY=
github.com/minio/minio-go/v7 v7.0.56/go.mod h1:NUDy4A4oXPq1l2yK6LTSvCEzAMeIcoz9lcj5dbzSrRE=
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
@ -731,8 +723,9 @@ github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTE
github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg=
github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o=
github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM=
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
@ -755,12 +748,11 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y=
github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/assertions v1.1.0 h1:MkTeG1DMwsrdH7QtLXy5W+fUxWq+vmb6cLmyJ7aRtF0=
github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js=
@ -956,7 +948,6 @@ golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
@ -1180,10 +1171,10 @@ golang.org/x/sys v0.0.0-20220204135822-1c1b9b1eba6a/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=
@ -1397,8 +1388,6 @@ google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ5
google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag=
google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y=
google.golang.org/grpc/examples v0.0.0-20220617181431-3e7b97febc7f h1:rqzndB2lIQGivcXdTuY3Y9NBvr70X+y77woofSRluec=
google.golang.org/grpc/examples v0.0.0-20220617181431-3e7b97febc7f/go.mod h1:gxndsbNG1n4TZcHGgsYEfVGnTxqfEdfiDv6/DADXX9o=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
@ -1434,9 +1423,9 @@ gopkg.in/httprequest.v1 v1.2.1/go.mod h1:x2Otw96yda5+8+6ZeWwHIJTFkEHWP/qP8pJOzqE
gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU=
gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=

View File

@ -85,8 +85,10 @@ typedef struct CStorageConfig {
const char* storage_type;
const char* iam_endpoint;
const char* log_level;
const char* region;
bool useSSL;
bool useIAM;
bool useVirtualHost;
} CStorageConfig;
typedef struct CTraceConfig {

View File

@ -297,6 +297,8 @@ NewBuildIndexInfo(CBuildIndexInfo* c_build_index_info,
std::string(c_storage_config.iam_endpoint);
storage_config.useSSL = c_storage_config.useSSL;
storage_config.useIAM = c_storage_config.useIAM;
storage_config.region = c_storage_config.region;
storage_config.useVirtualHost = c_storage_config.useVirtualHost;
*c_build_index_info = build_index_info.release();
auto status = CStatus();

View File

@ -176,7 +176,7 @@ MinioChunkManager::BuildS3Client(
provider,
config,
Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never,
false);
storage_config.useVirtualHost);
} else {
BuildAccessKeyClient(storage_config, config);
}
@ -197,7 +197,7 @@ MinioChunkManager::BuildAccessKeyClient(
ConvertToAwsString(storage_config.access_key_value)),
config,
Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never,
false);
storage_config.useVirtualHost);
}
void
@ -219,7 +219,7 @@ MinioChunkManager::BuildAliyunCloudClient(
aliyun_provider,
config,
Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never,
true);
storage_config.useVirtualHost);
} else {
BuildAccessKeyClient(storage_config, config);
}
@ -234,7 +234,7 @@ MinioChunkManager::BuildGoogleCloudClient(
client_ = std::make_shared<Aws::S3::S3Client>(
config,
Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never,
false);
storage_config.useVirtualHost);
} else {
BuildAccessKeyClient(storage_config, config);
}
@ -268,6 +268,10 @@ MinioChunkManager::MinioChunkManager(const StorageConfig& storage_config)
config.verifySSL = false;
}
if (!storage_config.region.empty()) {
config.region = ConvertToAwsString(storage_config.region);
}
if (storageType == RemoteStorageType::S3) {
BuildS3Client(storage_config, config);
} else if (storageType == RemoteStorageType::ALIYUN_CLOUD) {

View File

@ -90,8 +90,10 @@ struct StorageConfig {
std::string storage_type = "minio";
std::string iam_endpoint = "";
std::string log_level = "error";
std::string region = "";
bool useSSL = false;
bool useIAM = false;
bool useVirtualHost = false;
};
} // namespace milvus::storage

View File

@ -67,6 +67,8 @@ InitRemoteChunkManagerSingleton(CStorageConfig c_storage_config) {
storage_config.log_level = std::string(c_storage_config.log_level);
storage_config.useSSL = c_storage_config.useSSL;
storage_config.useIAM = c_storage_config.useIAM;
storage_config.useVirtualHost = c_storage_config.useVirtualHost;
storage_config.region = c_storage_config.region;
milvus::storage::RemoteChunkManagerSingleton::GetInstance().Init(
storage_config);

View File

@ -40,7 +40,7 @@ class DiskAnnFileManagerTest : public testing::Test {
virtual void
SetUp() {
cm_ = storage::CreateChunkManager(get_default_storage_config());
cm_ = storage::CreateChunkManager(get_default_local_storage_config());
}
protected:

View File

@ -29,7 +29,7 @@ class IndexWrapperTest : public ::testing::TestWithParam<Param> {
protected:
void
SetUp() override {
storage_config_ = get_default_storage_config();
storage_config_ = get_default_local_storage_config();
auto param = GetParam();
index_type = param.first;

View File

@ -287,7 +287,7 @@ class IndexTest : public ::testing::TestWithParam<Param> {
protected:
void
SetUp() override {
storage_config_ = get_default_storage_config();
storage_config_ = get_default_local_storage_config();
auto param = GetParam();
index_type = param.first;
@ -569,7 +569,7 @@ TEST(Indexing, SearchDiskAnnWithInvalidParam) {
int64_t build_id = 1000;
int64_t index_version = 1;
StorageConfig storage_config = get_default_storage_config();
StorageConfig storage_config = get_default_local_storage_config();
milvus::storage::FieldDataMeta field_data_meta{
collection_id, partition_id, segment_id, field_id};
milvus::storage::IndexMeta index_meta{

View File

@ -30,12 +30,13 @@ class MinioChunkManagerTest : public testing::Test {
virtual void
SetUp() {
chunk_manager_ =
std::make_unique<MinioChunkManager>(get_default_storage_config());
configs_ = get_default_remote_storage_config();
chunk_manager_ = std::make_unique<MinioChunkManager>(configs_);
}
protected:
MinioChunkManagerPtr chunk_manager_;
StorageConfig configs_;
};
StorageConfig
@ -56,6 +57,8 @@ get_google_cloud_storage_config() {
rootPath,
"minio",
iamEndPoint,
"error",
"",
useSSL,
useIam};
}
@ -127,7 +130,7 @@ TEST_F(MinioChunkManagerTest, BucketNegtive) {
}
TEST_F(MinioChunkManagerTest, ObjectExist) {
string testBucketName = "test-objexist";
string testBucketName = configs_.bucket_name;
string objPath = "1/3";
chunk_manager_->SetBucketName(testBucketName);
if (!chunk_manager_->BucketExists(testBucketName)) {
@ -140,15 +143,16 @@ TEST_F(MinioChunkManagerTest, ObjectExist) {
}
TEST_F(MinioChunkManagerTest, WritePositive) {
string testBucketName = "test-write";
string testBucketName = configs_.bucket_name;
chunk_manager_->SetBucketName(testBucketName);
EXPECT_EQ(chunk_manager_->GetBucketName(), testBucketName);
if (!chunk_manager_->BucketExists(testBucketName)) {
chunk_manager_->CreateBucket(testBucketName);
}
// if (!chunk_manager_->BucketExists(testBucketName)) {
// chunk_manager_->CreateBucket(testBucketName);
// }
auto has_bucket = chunk_manager_->BucketExists(testBucketName);
uint8_t data[5] = {0x17, 0x32, 0x45, 0x34, 0x23};
string path = "1/3/5";
string path = "1";
chunk_manager_->Write(path, data, sizeof(data));
bool exist = chunk_manager_->Exist(path);
@ -173,7 +177,7 @@ TEST_F(MinioChunkManagerTest, WritePositive) {
}
TEST_F(MinioChunkManagerTest, ReadPositive) {
string testBucketName = "test-read";
string testBucketName = configs_.bucket_name;
chunk_manager_->SetBucketName(testBucketName);
EXPECT_EQ(chunk_manager_->GetBucketName(), testBucketName);

View File

@ -57,22 +57,63 @@ find_file(const path& dir, const std::string& file_name, path& path_found) {
return true;
}
iter++;
} catch (filesystem_error& e) {
} catch (std::exception& e) {
// ignore error
LOG_SEGCORE_ERROR_ << e.what();
throw e;
}
}
return false;
}
StorageConfig
get_default_storage_config() {
get_default_local_storage_config() {
StorageConfig storage_config;
storage_config.storage_type = "local";
storage_config.root_path = TestRemotePath;
return storage_config;
}
StorageConfig
get_default_remote_storage_config() {
char testPath[100];
auto pwd = std::string(getcwd(testPath, sizeof(testPath)));
path filepath;
auto currentPath = path(pwd);
while (!find_file(currentPath, "milvus.yaml", filepath)) {
currentPath = currentPath.append("../");
}
auto configPath = filepath.string();
YAML::Node config;
config = YAML::LoadFile(configPath);
auto minioConfig = config["minio"];
auto address = minioConfig["address"].as<std::string>();
auto port = minioConfig["port"].as<std::string>();
auto endpoint = address + ":" + port;
auto accessKey = minioConfig["accessKeyID"].as<std::string>();
auto accessValue = minioConfig["secretAccessKey"].as<std::string>();
auto rootPath = minioConfig["rootPath"].as<std::string>();
auto useSSL = minioConfig["useSSL"].as<bool>();
auto useIam = minioConfig["useIAM"].as<bool>();
auto iamEndPoint = minioConfig["iamEndpoint"].as<std::string>();
auto logLevel = minioConfig["logLevel"].as<std::string>();
auto bucketName = minioConfig["bucketName"].as<std::string>();
auto useVirHost = minioConfig["useVirtualHost"].as<bool>();
auto region = minioConfig["region"].as<std::string>();
return StorageConfig{endpoint,
bucketName,
accessKey,
accessValue,
rootPath,
"minio",
iamEndPoint,
logLevel,
region,
useSSL,
useIam,
useVirHost};
}
void
delete_cstorage_config(CStorageConfig config) {
delete[] config.address;
@ -82,6 +123,7 @@ delete_cstorage_config(CStorageConfig config) {
delete[] config.root_path;
delete[] config.storage_type;
delete[] config.iam_endpoint;
delete[] config.region;
}
class TestConfigWrapper {

View File

@ -287,6 +287,8 @@ func (ib *indexBuilder) process(buildID UniqueID) bool {
UseIAM: Params.MinioCfg.UseIAM.GetAsBool(),
IAMEndpoint: Params.MinioCfg.IAMEndpoint.GetValue(),
StorageType: Params.CommonCfg.StorageType.GetValue(),
Region: Params.MinioCfg.Region.GetValue(),
UseVirtualHost: Params.MinioCfg.UseVirtualHost.GetAsBool(),
}
}
req := &indexpb.CreateJobRequest{

View File

@ -4187,7 +4187,7 @@ func Test_newChunkManagerFactory(t *testing.T) {
storageCli, err := server.newChunkManagerFactory()
assert.Nil(t, storageCli)
assert.Error(t, err)
assert.Contains(t, err.Error(), "too many colons in address")
assert.Contains(t, err.Error(), "invalid port")
})
t.Run("local storage init", func(t *testing.T) {
@ -4219,7 +4219,7 @@ func Test_initGarbageCollection(t *testing.T) {
storageCli, err := server.newChunkManagerFactory()
assert.Nil(t, storageCli)
assert.Error(t, err)
assert.Contains(t, err.Error(), "too many colons in address")
assert.Contains(t, err.Error(), "invalid port")
})
}

View File

@ -206,6 +206,8 @@ message StorageConfig {
bool useIAM = 7;
string IAMEndpoint = 8;
string storage_type = 9;
bool use_virtual_host = 10;
string region = 11;
}
message CreateJobRequest {

View File

@ -1388,6 +1388,8 @@ type StorageConfig struct {
UseIAM bool `protobuf:"varint,7,opt,name=useIAM,proto3" json:"useIAM,omitempty"`
IAMEndpoint string `protobuf:"bytes,8,opt,name=IAMEndpoint,proto3" json:"IAMEndpoint,omitempty"`
StorageType string `protobuf:"bytes,9,opt,name=storage_type,json=storageType,proto3" json:"storage_type,omitempty"`
UseVirtualHost bool `protobuf:"varint,10,opt,name=use_virtual_host,json=useVirtualHost,proto3" json:"use_virtual_host,omitempty"`
Region string `protobuf:"bytes,11,opt,name=region,proto3" json:"region,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -1481,6 +1483,20 @@ func (m *StorageConfig) GetStorageType() string {
return ""
}
func (m *StorageConfig) GetUseVirtualHost() bool {
if m != nil {
return m.UseVirtualHost
}
return false
}
func (m *StorageConfig) GetRegion() string {
if m != nil {
return m.Region
}
return ""
}
type CreateJobRequest struct {
ClusterID string `protobuf:"bytes,1,opt,name=clusterID,proto3" json:"clusterID,omitempty"`
IndexFilePrefix string `protobuf:"bytes,2,opt,name=index_file_prefix,json=indexFilePrefix,proto3" json:"index_file_prefix,omitempty"`
@ -2149,149 +2165,151 @@ func init() {
func init() { proto.RegisterFile("index_coord.proto", fileDescriptor_f9e019eb3fda53c2) }
var fileDescriptor_f9e019eb3fda53c2 = []byte{
// 2257 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x59, 0x4f, 0x8f, 0x1b, 0x49,
0x15, 0x4f, 0xbb, 0x3d, 0x33, 0xee, 0xd7, 0xf6, 0xfc, 0xa9, 0xcc, 0x82, 0xe3, 0x24, 0x64, 0xd2,
0xd9, 0x24, 0x03, 0x22, 0x93, 0x30, 0xcb, 0xa2, 0x05, 0x01, 0xd2, 0x64, 0x66, 0x93, 0x38, 0xd9,
0x44, 0x43, 0x3b, 0x5a, 0x89, 0x15, 0xc2, 0xb4, 0xdd, 0xe5, 0x99, 0xda, 0x69, 0x77, 0x39, 0x5d,
0xd5, 0x49, 0x26, 0x48, 0x08, 0x0e, 0x7b, 0x00, 0xad, 0x84, 0x40, 0x48, 0x7c, 0x01, 0x4e, 0xcb,
0x37, 0xe0, 0xc2, 0x85, 0x23, 0x27, 0xee, 0x5c, 0xf8, 0x12, 0x5c, 0x51, 0xfd, 0xe9, 0x76, 0x77,
0xbb, 0x3d, 0x76, 0x66, 0x06, 0x21, 0xb1, 0x37, 0xd7, 0xab, 0x57, 0x7f, 0xfa, 0xbd, 0xdf, 0x7b,
0xbf, 0xf7, 0xca, 0xb0, 0x46, 0x42, 0x1f, 0xbf, 0xee, 0xf6, 0x29, 0x8d, 0xfc, 0xad, 0x51, 0x44,
0x39, 0x45, 0x68, 0x48, 0x82, 0x97, 0x31, 0x53, 0xa3, 0x2d, 0x39, 0xdf, 0xaa, 0xf7, 0xe9, 0x70,
0x48, 0x43, 0x25, 0x6b, 0x2d, 0x93, 0x90, 0xe3, 0x28, 0xf4, 0x02, 0x3d, 0xae, 0x67, 0x57, 0x38,
0xff, 0xac, 0x82, 0xd5, 0x16, 0xab, 0xda, 0xe1, 0x80, 0x22, 0x07, 0xea, 0x7d, 0x1a, 0x04, 0xb8,
0xcf, 0x09, 0x0d, 0xdb, 0x7b, 0x4d, 0x63, 0xc3, 0xd8, 0x34, 0xdd, 0x9c, 0x0c, 0x35, 0x61, 0x69,
0x40, 0x70, 0xe0, 0xb7, 0xf7, 0x9a, 0x15, 0x39, 0x9d, 0x0c, 0xd1, 0x55, 0x00, 0x75, 0xc1, 0xd0,
0x1b, 0xe2, 0xa6, 0xb9, 0x61, 0x6c, 0x5a, 0xae, 0x25, 0x25, 0xcf, 0xbc, 0x21, 0x16, 0x0b, 0xe5,
0xa0, 0xbd, 0xd7, 0xac, 0xaa, 0x85, 0x7a, 0x88, 0xee, 0x83, 0xcd, 0x8f, 0x47, 0xb8, 0x3b, 0xf2,
0x22, 0x6f, 0xc8, 0x9a, 0x0b, 0x1b, 0xe6, 0xa6, 0xbd, 0x7d, 0x7d, 0x2b, 0xf7, 0x69, 0xfa, 0x9b,
0x9e, 0xe0, 0xe3, 0x8f, 0xbd, 0x20, 0xc6, 0xfb, 0x1e, 0x89, 0x5c, 0x10, 0xab, 0xf6, 0xe5, 0x22,
0xb4, 0x07, 0x75, 0x75, 0xb8, 0xde, 0x64, 0x71, 0xde, 0x4d, 0x6c, 0xb9, 0x4c, 0xef, 0x72, 0x5d,
0xef, 0x82, 0xfd, 0x6e, 0x44, 0x5f, 0xb1, 0xe6, 0x92, 0xbc, 0xa8, 0xad, 0x65, 0x2e, 0x7d, 0xc5,
0xc4, 0x57, 0x72, 0xca, 0xbd, 0x40, 0x29, 0xd4, 0xa4, 0x82, 0x25, 0x25, 0x72, 0xfa, 0x7d, 0x58,
0x60, 0xdc, 0xe3, 0xb8, 0x69, 0x6d, 0x18, 0x9b, 0xcb, 0xdb, 0xd7, 0x4a, 0x2f, 0x20, 0x2d, 0xde,
0x11, 0x6a, 0xae, 0xd2, 0x46, 0xef, 0xc3, 0x57, 0xd5, 0xf5, 0xe5, 0xb0, 0x3b, 0xf0, 0x48, 0xd0,
0x8d, 0xb0, 0xc7, 0x68, 0xd8, 0x04, 0x69, 0xc8, 0x75, 0x92, 0xae, 0x79, 0xe0, 0x91, 0xc0, 0x95,
0x73, 0xc8, 0x81, 0x06, 0x61, 0x5d, 0x2f, 0xe6, 0xb4, 0x2b, 0xe7, 0x9b, 0xf6, 0x86, 0xb1, 0x59,
0x73, 0x6d, 0xc2, 0x76, 0x62, 0x4e, 0xe5, 0x31, 0xe8, 0x29, 0xac, 0xc5, 0x0c, 0x47, 0xdd, 0x9c,
0x79, 0xea, 0xf3, 0x9a, 0x67, 0x45, 0xac, 0x6d, 0x67, 0x4c, 0xf4, 0x4d, 0x40, 0x23, 0x1c, 0xfa,
0x24, 0x3c, 0xd0, 0x3b, 0x4a, 0x3b, 0x34, 0xa4, 0x1d, 0x56, 0xf5, 0x8c, 0xd4, 0x17, 0xe6, 0x70,
0x3e, 0x33, 0x00, 0x1e, 0x48, 0x7c, 0xc8, 0xbb, 0x7c, 0x3f, 0x81, 0x08, 0x09, 0x07, 0x54, 0xc2,
0xcb, 0xde, 0xbe, 0xba, 0x35, 0x89, 0xe1, 0xad, 0x14, 0x93, 0x1a, 0x41, 0x12, 0x9e, 0x4d, 0x58,
0xf2, 0x71, 0x80, 0x39, 0xf6, 0x25, 0xf4, 0x6a, 0x6e, 0x32, 0x44, 0xd7, 0xc0, 0xee, 0x47, 0x58,
0x58, 0x8e, 0x13, 0x8d, 0xbd, 0xaa, 0x0b, 0x4a, 0xf4, 0x9c, 0x0c, 0xb1, 0xf3, 0x59, 0x15, 0xea,
0x1d, 0x7c, 0x30, 0xc4, 0x21, 0x57, 0x37, 0x99, 0x07, 0xea, 0x1b, 0x60, 0x8f, 0xbc, 0x88, 0x13,
0xad, 0xa2, 0xe0, 0x9e, 0x15, 0xa1, 0x2b, 0x60, 0x31, 0xbd, 0xeb, 0x9e, 0x3c, 0xd5, 0x74, 0xc7,
0x02, 0x74, 0x09, 0x6a, 0x61, 0x3c, 0x54, 0x06, 0xd2, 0x90, 0x0f, 0xe3, 0xa1, 0x84, 0x49, 0x26,
0x18, 0x16, 0xf2, 0xc1, 0xd0, 0x84, 0xa5, 0x5e, 0x4c, 0x64, 0x7c, 0x2d, 0xaa, 0x19, 0x3d, 0x44,
0x5f, 0x81, 0xc5, 0x90, 0xfa, 0xb8, 0xbd, 0xa7, 0x61, 0xa9, 0x47, 0xe8, 0x06, 0x34, 0x94, 0x51,
0x5f, 0xe2, 0x88, 0x11, 0x1a, 0x6a, 0x50, 0x2a, 0x24, 0x7f, 0xac, 0x64, 0xa7, 0xc5, 0xe5, 0x35,
0xb0, 0x27, 0xb1, 0x08, 0x83, 0x31, 0x02, 0x6f, 0xc1, 0x8a, 0x3a, 0x7c, 0x40, 0x02, 0xdc, 0x3d,
0xc2, 0xc7, 0xac, 0x69, 0x6f, 0x98, 0x9b, 0x96, 0xab, 0xee, 0xf4, 0x80, 0x04, 0xf8, 0x09, 0x3e,
0x66, 0x59, 0xdf, 0xd5, 0x4f, 0xf4, 0x5d, 0xa3, 0xe8, 0x3b, 0x74, 0x13, 0x96, 0x19, 0x8e, 0x88,
0x17, 0x90, 0x37, 0xb8, 0xcb, 0xc8, 0x1b, 0xdc, 0x5c, 0x96, 0x3a, 0x8d, 0x54, 0xda, 0x21, 0x6f,
0xb0, 0x30, 0xc3, 0xab, 0x88, 0x70, 0xdc, 0x3d, 0xf4, 0x42, 0x9f, 0x0e, 0x06, 0xcd, 0x15, 0x79,
0x4e, 0x5d, 0x0a, 0x1f, 0x29, 0x99, 0xf3, 0x47, 0x03, 0x2e, 0xba, 0xf8, 0x80, 0x30, 0x8e, 0xa3,
0x67, 0xd4, 0xc7, 0x2e, 0x7e, 0x11, 0x63, 0xc6, 0xd1, 0x3d, 0xa8, 0xf6, 0x3c, 0x86, 0x35, 0x24,
0xaf, 0x94, 0x5a, 0xe7, 0x29, 0x3b, 0xb8, 0xef, 0x31, 0xec, 0x4a, 0x4d, 0xf4, 0x1d, 0x58, 0xf2,
0x7c, 0x3f, 0xc2, 0x8c, 0x49, 0x60, 0x4c, 0x5b, 0xb4, 0xa3, 0x74, 0xdc, 0x44, 0x39, 0xe3, 0x45,
0x33, 0xeb, 0x45, 0xe7, 0xb7, 0x06, 0xac, 0xe7, 0x6f, 0xc6, 0x46, 0x34, 0x64, 0x18, 0xbd, 0x07,
0x8b, 0xc2, 0x17, 0x31, 0xd3, 0x97, 0xbb, 0x5c, 0x7a, 0x4e, 0x47, 0xaa, 0xb8, 0x5a, 0x55, 0xa4,
0x54, 0x12, 0x12, 0x9e, 0x84, 0xbb, 0xba, 0xe1, 0xf5, 0x62, 0xa4, 0x69, 0x62, 0x68, 0x87, 0x84,
0xab, 0xe8, 0x76, 0x81, 0xa4, 0xbf, 0x9d, 0x1f, 0xc3, 0xfa, 0x43, 0xcc, 0x33, 0x98, 0xd0, 0xb6,
0x9a, 0x27, 0x74, 0xf2, 0x5c, 0x50, 0x29, 0x70, 0x81, 0xf3, 0x27, 0x03, 0xde, 0x29, 0xec, 0x7d,
0x96, 0xaf, 0x4d, 0xc1, 0x5d, 0x39, 0x0b, 0xb8, 0xcd, 0x22, 0xb8, 0x9d, 0x5f, 0x1a, 0x70, 0xf9,
0x21, 0xe6, 0xd9, 0xc4, 0x71, 0xce, 0x96, 0x40, 0x5f, 0x03, 0x48, 0x13, 0x06, 0x6b, 0x9a, 0x1b,
0xe6, 0xa6, 0xe9, 0x66, 0x24, 0xce, 0xaf, 0x0d, 0x58, 0x9b, 0x38, 0x3f, 0x9f, 0x77, 0x8c, 0x62,
0xde, 0xf9, 0x6f, 0x99, 0xe3, 0xf7, 0x06, 0x5c, 0x29, 0x37, 0xc7, 0x59, 0x9c, 0xf7, 0x03, 0xb5,
0x08, 0x0b, 0x94, 0x0a, 0x52, 0xba, 0x59, 0xc6, 0x07, 0x93, 0x67, 0xea, 0x45, 0xce, 0xe7, 0x26,
0xa0, 0x5d, 0x99, 0x2c, 0x14, 0xeb, 0xbc, 0x85, 0x6b, 0x4e, 0x5d, 0xca, 0x14, 0x0a, 0x96, 0xea,
0x79, 0x14, 0x2c, 0x0b, 0xa7, 0x2a, 0x58, 0xae, 0x80, 0x25, 0xb2, 0x26, 0xe3, 0xde, 0x70, 0x24,
0xf9, 0xa2, 0xea, 0x8e, 0x05, 0x93, 0xe5, 0xc1, 0xd2, 0x9c, 0xe5, 0x41, 0xed, 0xb4, 0xe5, 0x81,
0xf3, 0x1a, 0x2e, 0x26, 0x81, 0x2d, 0xe9, 0xfb, 0x2d, 0xdc, 0x91, 0x0f, 0x85, 0x4a, 0x31, 0x14,
0x66, 0x38, 0xc5, 0xf9, 0x77, 0x05, 0xd6, 0xda, 0x09, 0xe7, 0xec, 0x7b, 0xfc, 0x50, 0xd6, 0x0c,
0x27, 0x47, 0xca, 0x74, 0x04, 0x64, 0x08, 0xda, 0x9c, 0x4a, 0xd0, 0xd5, 0x3c, 0x41, 0xe7, 0x2f,
0xb8, 0x50, 0x44, 0xcd, 0xf9, 0x94, 0xa8, 0x9b, 0xb0, 0x9a, 0x21, 0xdc, 0x91, 0xc7, 0x0f, 0x45,
0x99, 0x2a, 0x18, 0x77, 0x99, 0x64, 0xbf, 0x9e, 0xa1, 0xdb, 0xb0, 0x92, 0x32, 0xa4, 0xaf, 0x88,
0xb3, 0x26, 0x11, 0x32, 0xa6, 0x53, 0x3f, 0x61, 0xce, 0x7c, 0x01, 0x61, 0x95, 0x14, 0x10, 0xd9,
0x62, 0x06, 0x72, 0xc5, 0x8c, 0xf3, 0x17, 0x03, 0xec, 0x34, 0x40, 0xe7, 0x6c, 0x23, 0x72, 0x7e,
0xa9, 0x14, 0xfd, 0x72, 0x1d, 0xea, 0x38, 0xf4, 0x7a, 0x01, 0xd6, 0xb8, 0x35, 0x15, 0x6e, 0x95,
0x4c, 0xe1, 0xf6, 0x01, 0xd8, 0xe3, 0x52, 0x32, 0x89, 0xc1, 0x9b, 0x53, 0x6b, 0xc9, 0x2c, 0x28,
0x5c, 0x48, 0x6b, 0x4a, 0xe6, 0xfc, 0xa6, 0x32, 0xa6, 0x39, 0x85, 0xd8, 0xb3, 0x24, 0xb3, 0x9f,
0x40, 0x5d, 0x7f, 0x85, 0x2a, 0x71, 0x55, 0x4a, 0xfb, 0x6e, 0xd9, 0xb5, 0xca, 0x0e, 0xdd, 0xca,
0x98, 0xf1, 0xc3, 0x90, 0x47, 0xc7, 0xae, 0xcd, 0xc6, 0x92, 0x56, 0x17, 0x56, 0x8b, 0x0a, 0x68,
0x15, 0xcc, 0x23, 0x7c, 0xac, 0x6d, 0x2c, 0x7e, 0x8a, 0xf4, 0xff, 0x52, 0x60, 0x47, 0xb3, 0xfe,
0xb5, 0x13, 0xf3, 0xe9, 0x80, 0xba, 0x4a, 0xfb, 0x7b, 0x95, 0x0f, 0x0c, 0xe7, 0x0f, 0x06, 0xac,
0xee, 0x45, 0x74, 0xf4, 0xd6, 0xa9, 0xd4, 0x81, 0x7a, 0xa6, 0x2e, 0x4e, 0xa2, 0x37, 0x27, 0x9b,
0x95, 0x54, 0x2f, 0x41, 0xcd, 0x8f, 0xe8, 0xa8, 0xeb, 0x05, 0x81, 0x0c, 0x2c, 0x51, 0x22, 0x46,
0x74, 0xb4, 0x13, 0x04, 0xce, 0x2b, 0x58, 0xdf, 0xc3, 0xac, 0x1f, 0x91, 0xde, 0xdb, 0x27, 0xf9,
0x19, 0xfc, 0x9b, 0x4b, 0xa0, 0x66, 0x21, 0x81, 0x3a, 0x9f, 0x1b, 0xf0, 0x4e, 0xe1, 0xe4, 0xb3,
0xa0, 0xe3, 0x87, 0x79, 0xcc, 0x2a, 0x70, 0xcc, 0xe8, 0x7f, 0xb2, 0x58, 0xf5, 0x24, 0xff, 0xca,
0xb9, 0xfb, 0x22, 0xe7, 0xec, 0x47, 0xf4, 0x40, 0x56, 0x97, 0xe7, 0x57, 0x99, 0xfd, 0xcd, 0x80,
0xab, 0x53, 0xce, 0x38, 0xcb, 0x97, 0x17, 0x1b, 0xeb, 0xca, 0xac, 0xc6, 0xda, 0x2c, 0x36, 0xd6,
0xe5, 0x7d, 0x67, 0x75, 0x4a, 0xdf, 0xf9, 0xe7, 0x0a, 0x34, 0x3a, 0x9c, 0x46, 0xde, 0x01, 0xde,
0xa5, 0xe1, 0x80, 0x1c, 0x88, 0xb4, 0x9d, 0xd4, 0xeb, 0x86, 0xfc, 0xe8, 0xb4, 0x22, 0xbf, 0x0e,
0x75, 0xaf, 0xdf, 0xc7, 0x8c, 0x89, 0xf6, 0x45, 0x67, 0x23, 0xcb, 0xb5, 0x95, 0xec, 0x89, 0x10,
0xa1, 0x6f, 0xc0, 0x1a, 0xc3, 0xfd, 0x08, 0xf3, 0xee, 0x58, 0x53, 0x23, 0x78, 0x45, 0x4d, 0xec,
0x24, 0xda, 0xa2, 0xc0, 0x8f, 0x19, 0xee, 0x74, 0x3e, 0xd2, 0x28, 0xd6, 0x23, 0x51, 0x5e, 0xf5,
0xe2, 0xfe, 0x11, 0xe6, 0x59, 0x7a, 0x00, 0x25, 0x92, 0x50, 0xbc, 0x0c, 0x56, 0x44, 0x29, 0x97,
0x39, 0x5d, 0x72, 0xb9, 0xe5, 0xd6, 0x84, 0x40, 0xa4, 0x2d, 0xbd, 0x6b, 0x7b, 0xe7, 0xa9, 0xe6,
0x70, 0x3d, 0x12, 0x3d, 0x6a, 0x7b, 0xe7, 0xe9, 0x87, 0xa1, 0x3f, 0xa2, 0x24, 0xe4, 0x32, 0xc1,
0x5b, 0x6e, 0x56, 0x24, 0x3e, 0x8f, 0x29, 0x4b, 0x74, 0x45, 0xf9, 0x21, 0x93, 0xbb, 0xe5, 0xda,
0x5a, 0xf6, 0xfc, 0x78, 0x84, 0x9d, 0x7f, 0x99, 0xb0, 0xaa, 0x6a, 0xa8, 0xc7, 0xb4, 0x97, 0x80,
0xe9, 0x0a, 0x58, 0xfd, 0x20, 0x16, 0xed, 0x88, 0x46, 0x92, 0xe5, 0x8e, 0x05, 0xc2, 0x22, 0x59,
0x1a, 0x8a, 0xf0, 0x80, 0xbc, 0xd6, 0x96, 0x5b, 0x19, 0xf3, 0x90, 0x14, 0x67, 0x19, 0xd3, 0x9c,
0x60, 0x4c, 0xdf, 0xe3, 0x9e, 0xa6, 0xb1, 0xaa, 0xa4, 0x31, 0x4b, 0x48, 0x14, 0x83, 0x4d, 0x10,
0xd3, 0x42, 0x09, 0x31, 0x65, 0x98, 0x7a, 0x31, 0xcf, 0xd4, 0x79, 0xa8, 0x2f, 0x15, 0x43, 0xff,
0x11, 0x2c, 0x27, 0x86, 0xe9, 0x4b, 0x8c, 0x48, 0xeb, 0x95, 0xb4, 0x49, 0x32, 0x61, 0x66, 0xc1,
0xe4, 0x36, 0x58, 0x0e, 0x5b, 0x45, 0x66, 0xb7, 0x4e, 0xc5, 0xec, 0x85, 0xaa, 0x12, 0x4e, 0x53,
0x55, 0x66, 0x59, 0xda, 0xce, 0xb3, 0xf4, 0x47, 0xb0, 0xfa, 0xa3, 0x18, 0x47, 0xc7, 0x8f, 0x69,
0x8f, 0xcd, 0xe7, 0xe3, 0x16, 0xd4, 0xb4, 0xa3, 0x92, 0x84, 0x9e, 0x8e, 0x9d, 0x7f, 0x18, 0xd0,
0x90, 0xe1, 0xf6, 0xdc, 0x63, 0x47, 0xc9, 0xeb, 0x4c, 0xe2, 0x65, 0x23, 0xef, 0xe5, 0x53, 0xf6,
0x23, 0x25, 0x4f, 0x0b, 0x66, 0xd9, 0xd3, 0x42, 0x49, 0x9d, 0x53, 0x2d, 0xad, 0x73, 0x0a, 0x0d,
0xce, 0xc2, 0x44, 0x83, 0xf3, 0x85, 0x01, 0x6b, 0x19, 0x1b, 0x9d, 0x25, 0xe1, 0xe5, 0x2c, 0x5b,
0x29, 0x5a, 0xf6, 0x7e, 0x9e, 0x08, 0xcc, 0x32, 0x57, 0x67, 0x88, 0x20, 0xb1, 0x71, 0x8e, 0x0c,
0x9e, 0xc0, 0x8a, 0xa0, 0xea, 0xf3, 0x71, 0xe7, 0xdf, 0x0d, 0x58, 0x7a, 0x4c, 0x7b, 0xd2, 0x91,
0x59, 0x0c, 0x19, 0xf9, 0x67, 0xab, 0x55, 0x30, 0x7d, 0x32, 0xd4, 0xd9, 0x5b, 0xfc, 0x14, 0x31,
0xc6, 0xb8, 0x17, 0xf1, 0xf1, 0xc3, 0x9b, 0x28, 0xe4, 0x84, 0x44, 0xbe, 0xdd, 0x5c, 0x82, 0x1a,
0x0e, 0x7d, 0x35, 0xa9, 0xab, 0x65, 0x1c, 0xfa, 0x72, 0xea, 0x7c, 0x1a, 0xa0, 0x75, 0x58, 0x18,
0xd1, 0xf1, 0x63, 0x99, 0x1a, 0x38, 0xeb, 0x80, 0x1e, 0x62, 0xfe, 0x98, 0xf6, 0x84, 0x57, 0x12,
0xf3, 0x38, 0x7f, 0xad, 0xc8, 0xe6, 0x64, 0x2c, 0x3e, 0x8b, 0x83, 0x1d, 0x68, 0x28, 0xba, 0xfa,
0x94, 0xf6, 0xba, 0x61, 0x9c, 0x18, 0xc5, 0x96, 0xc2, 0xc7, 0xb4, 0xf7, 0x2c, 0x1e, 0xa2, 0x3b,
0x70, 0x91, 0x84, 0xdd, 0x91, 0x66, 0xd0, 0x54, 0x53, 0x59, 0x69, 0x95, 0x84, 0x09, 0xb7, 0x6a,
0xf5, 0x5b, 0xb0, 0x82, 0xc3, 0x17, 0x31, 0x8e, 0x71, 0xaa, 0xaa, 0x6c, 0xd6, 0xd0, 0x62, 0xad,
0x27, 0x98, 0xd2, 0x63, 0x47, 0x5d, 0x16, 0x50, 0xce, 0x74, 0x4e, 0xb4, 0x84, 0xa4, 0x23, 0x04,
0xe8, 0x03, 0xb0, 0xc4, 0x72, 0x05, 0x2d, 0xd5, 0x64, 0x5c, 0x2e, 0x83, 0x96, 0xf6, 0xb7, 0x5b,
0xfb, 0x54, 0xfd, 0x60, 0x22, 0x40, 0x74, 0xd9, 0xed, 0x13, 0x76, 0xa4, 0x99, 0x06, 0x94, 0x68,
0x8f, 0xb0, 0x23, 0xe7, 0xa7, 0x70, 0x29, 0xfb, 0x6c, 0x43, 0x18, 0x27, 0xfd, 0xf3, 0xac, 0x3e,
0x7e, 0x67, 0x40, 0xab, 0xec, 0x80, 0xff, 0x61, 0xd1, 0xb5, 0xfd, 0x2b, 0x1b, 0x40, 0xce, 0xec,
0x52, 0x1a, 0xf9, 0x28, 0x90, 0xd0, 0xda, 0xa5, 0xc3, 0x11, 0x0d, 0x71, 0xc8, 0x65, 0xc6, 0x62,
0x68, 0x2b, 0xbf, 0x9f, 0x1e, 0x4c, 0x2a, 0x6a, 0x5b, 0xb5, 0xde, 0x2d, 0xd5, 0x2f, 0x28, 0x3b,
0x17, 0xd0, 0x0b, 0xd9, 0x9c, 0x8c, 0x4d, 0xb1, 0x7b, 0xe8, 0x85, 0x21, 0x0e, 0xd0, 0xf6, 0x94,
0xa7, 0xbc, 0x32, 0xe5, 0xe4, 0xcc, 0x1b, 0xa5, 0x67, 0x76, 0x78, 0x44, 0xc2, 0x83, 0xc4, 0xc4,
0xce, 0x05, 0xf4, 0x1c, 0xec, 0xcc, 0x7b, 0x0a, 0xba, 0x55, 0x66, 0xa9, 0xc9, 0x07, 0x97, 0xd6,
0x49, 0xbe, 0x70, 0x2e, 0xa0, 0x01, 0x34, 0x72, 0x0f, 0x7e, 0x68, 0xf3, 0xa4, 0x9e, 0x28, 0xfb,
0xca, 0xd6, 0xfa, 0xfa, 0x1c, 0x9a, 0xe9, 0xed, 0x7f, 0xae, 0x0c, 0x36, 0xf1, 0x62, 0x76, 0x77,
0xca, 0x26, 0xd3, 0xde, 0xf6, 0x5a, 0xf7, 0xe6, 0x5f, 0x90, 0x1e, 0xee, 0x8f, 0x3f, 0x52, 0x05,
0xd4, 0xed, 0xd9, 0x8d, 0x9f, 0x3a, 0x6d, 0x73, 0xde, 0x0e, 0xd1, 0xb9, 0x80, 0xf6, 0xc1, 0x4a,
0x7b, 0x34, 0xf4, 0x6e, 0xd9, 0xc2, 0x62, 0x0b, 0x37, 0x87, 0x73, 0x72, 0x5d, 0x4e, 0xb9, 0x73,
0xca, 0x5a, 0xb0, 0x72, 0xe7, 0x94, 0xb6, 0x4c, 0xce, 0x05, 0x14, 0xcb, 0xd8, 0x29, 0x44, 0x37,
0xba, 0x33, 0xcb, 0xbf, 0xb9, 0x34, 0xd3, 0xda, 0x9a, 0x57, 0x3d, 0x3d, 0xf6, 0x17, 0xe3, 0xc7,
0xe6, 0x5c, 0x4b, 0x83, 0xee, 0x9d, 0xb4, 0x55, 0x59, 0x87, 0xd5, 0xfa, 0xd6, 0x5b, 0xac, 0xc8,
0x60, 0x12, 0x75, 0x0e, 0xe9, 0x2b, 0x55, 0x2c, 0xc6, 0x91, 0x27, 0x72, 0x61, 0xc9, 0xe1, 0x3a,
0x84, 0x27, 0x55, 0xa7, 0x1e, 0x7e, 0xc2, 0x8a, 0xf4, 0xf0, 0x2e, 0xc0, 0x43, 0xcc, 0x9f, 0x62,
0x1e, 0x09, 0x5b, 0xdf, 0x9a, 0x96, 0xa7, 0xb4, 0x42, 0x72, 0xd4, 0xed, 0x99, 0x7a, 0xe9, 0x01,
0x3d, 0xb0, 0x77, 0x0f, 0x71, 0xff, 0xe8, 0x11, 0xf6, 0x02, 0x7e, 0x88, 0xca, 0x57, 0x66, 0x34,
0xa6, 0x40, 0xbe, 0x4c, 0x31, 0x39, 0x63, 0xfb, 0x8b, 0x45, 0xfd, 0x37, 0xf5, 0x33, 0xea, 0xe3,
0xff, 0xff, 0x14, 0xbc, 0x0f, 0x56, 0xda, 0x8e, 0x95, 0x47, 0x78, 0xb1, 0x5b, 0x9b, 0x15, 0xe1,
0x9f, 0x80, 0x95, 0x16, 0xb6, 0xe5, 0x3b, 0x16, 0x7b, 0x83, 0xd6, 0xcd, 0x19, 0x5a, 0xe9, 0x6d,
0x9f, 0x41, 0x2d, 0x29, 0x44, 0xd1, 0x8d, 0x69, 0xe9, 0x28, 0xbb, 0xf3, 0x8c, 0xbb, 0xfe, 0x0c,
0xec, 0x4c, 0x95, 0x56, 0x4e, 0x40, 0x93, 0xd5, 0x5d, 0xeb, 0xf6, 0x4c, 0xbd, 0x2f, 0x47, 0x40,
0xde, 0xff, 0xf6, 0x27, 0xdb, 0x07, 0x84, 0x1f, 0xc6, 0x3d, 0x61, 0xd9, 0xbb, 0x4a, 0xf3, 0x0e,
0xa1, 0xfa, 0xd7, 0xdd, 0xe4, 0x96, 0x77, 0xe5, 0x4e, 0x77, 0xa5, 0x9d, 0x46, 0xbd, 0xde, 0xa2,
0x1c, 0xbe, 0xf7, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc2, 0x46, 0x93, 0xfc, 0x65, 0x22, 0x00,
0x00,
// 2296 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x59, 0xcf, 0x6f, 0x1c, 0x49,
0xf5, 0x4f, 0x4f, 0xfb, 0xc7, 0xf4, 0xeb, 0x19, 0xff, 0xa8, 0x78, 0xbf, 0xdf, 0xc9, 0x24, 0x21,
0x4e, 0x67, 0x93, 0x18, 0x44, 0x9c, 0xe0, 0x65, 0xd1, 0x82, 0x00, 0xc9, 0xb1, 0x37, 0xc9, 0x24,
0x9b, 0xc8, 0xb4, 0xa3, 0x48, 0xac, 0x10, 0x4d, 0xcf, 0x74, 0x8d, 0x5d, 0xeb, 0x9e, 0xae, 0x49,
0x57, 0x75, 0x12, 0x07, 0x09, 0xc1, 0x61, 0x0f, 0xa0, 0x95, 0x10, 0x08, 0x89, 0x7f, 0x80, 0xd3,
0xfe, 0x09, 0x5c, 0xb8, 0x70, 0xe4, 0xc4, 0x9d, 0x0b, 0x77, 0xce, 0x5c, 0x51, 0xfd, 0xe8, 0x9e,
0xee, 0x9e, 0x1e, 0xcf, 0xc4, 0x36, 0x42, 0x82, 0xdb, 0xd4, 0xab, 0x57, 0x3f, 0xfa, 0xbd, 0xcf,
0x7b, 0x9f, 0xf7, 0x6a, 0x60, 0x95, 0x44, 0x01, 0x7e, 0xe3, 0xf5, 0x28, 0x8d, 0x83, 0xcd, 0x61,
0x4c, 0x39, 0x45, 0x68, 0x40, 0xc2, 0x57, 0x09, 0x53, 0xa3, 0x4d, 0x39, 0xdf, 0x6e, 0xf4, 0xe8,
0x60, 0x40, 0x23, 0x25, 0x6b, 0x2f, 0x91, 0x88, 0xe3, 0x38, 0xf2, 0x43, 0x3d, 0x6e, 0xe4, 0x57,
0x38, 0x7f, 0x9b, 0x03, 0xab, 0x23, 0x56, 0x75, 0xa2, 0x3e, 0x45, 0x0e, 0x34, 0x7a, 0x34, 0x0c,
0x71, 0x8f, 0x13, 0x1a, 0x75, 0x76, 0x5b, 0xc6, 0xba, 0xb1, 0x61, 0xba, 0x05, 0x19, 0x6a, 0xc1,
0x62, 0x9f, 0xe0, 0x30, 0xe8, 0xec, 0xb6, 0x6a, 0x72, 0x3a, 0x1d, 0xa2, 0xab, 0x00, 0xea, 0x82,
0x91, 0x3f, 0xc0, 0x2d, 0x73, 0xdd, 0xd8, 0xb0, 0x5c, 0x4b, 0x4a, 0x9e, 0xf9, 0x03, 0x2c, 0x16,
0xca, 0x41, 0x67, 0xb7, 0x35, 0xa7, 0x16, 0xea, 0x21, 0xba, 0x0f, 0x36, 0x3f, 0x1e, 0x62, 0x6f,
0xe8, 0xc7, 0xfe, 0x80, 0xb5, 0xe6, 0xd7, 0xcd, 0x0d, 0x7b, 0xeb, 0xfa, 0x66, 0xe1, 0xd3, 0xf4,
0x37, 0x3d, 0xc1, 0xc7, 0x2f, 0xfc, 0x30, 0xc1, 0x7b, 0x3e, 0x89, 0x5d, 0x10, 0xab, 0xf6, 0xe4,
0x22, 0xb4, 0x0b, 0x0d, 0x75, 0xb8, 0xde, 0x64, 0x61, 0xd6, 0x4d, 0x6c, 0xb9, 0x4c, 0xef, 0x72,
0x5d, 0xef, 0x82, 0x03, 0x2f, 0xa6, 0xaf, 0x59, 0x6b, 0x51, 0x5e, 0xd4, 0xd6, 0x32, 0x97, 0xbe,
0x66, 0xe2, 0x2b, 0x39, 0xe5, 0x7e, 0xa8, 0x14, 0xea, 0x52, 0xc1, 0x92, 0x12, 0x39, 0xfd, 0x21,
0xcc, 0x33, 0xee, 0x73, 0xdc, 0xb2, 0xd6, 0x8d, 0x8d, 0xa5, 0xad, 0x6b, 0x95, 0x17, 0x90, 0x16,
0xdf, 0x17, 0x6a, 0xae, 0xd2, 0x46, 0x1f, 0xc2, 0xff, 0xab, 0xeb, 0xcb, 0xa1, 0xd7, 0xf7, 0x49,
0xe8, 0xc5, 0xd8, 0x67, 0x34, 0x6a, 0x81, 0x34, 0xe4, 0x1a, 0xc9, 0xd6, 0x3c, 0xf0, 0x49, 0xe8,
0xca, 0x39, 0xe4, 0x40, 0x93, 0x30, 0xcf, 0x4f, 0x38, 0xf5, 0xe4, 0x7c, 0xcb, 0x5e, 0x37, 0x36,
0xea, 0xae, 0x4d, 0xd8, 0x76, 0xc2, 0xa9, 0x3c, 0x06, 0x3d, 0x85, 0xd5, 0x84, 0xe1, 0xd8, 0x2b,
0x98, 0xa7, 0x31, 0xab, 0x79, 0x96, 0xc5, 0xda, 0x4e, 0xce, 0x44, 0x5f, 0x07, 0x34, 0xc4, 0x51,
0x40, 0xa2, 0x03, 0xbd, 0xa3, 0xb4, 0x43, 0x53, 0xda, 0x61, 0x45, 0xcf, 0x48, 0x7d, 0x61, 0x0e,
0xe7, 0x73, 0x03, 0xe0, 0x81, 0xc4, 0x87, 0xbc, 0xcb, 0x77, 0x53, 0x88, 0x90, 0xa8, 0x4f, 0x25,
0xbc, 0xec, 0xad, 0xab, 0x9b, 0xe3, 0x18, 0xde, 0xcc, 0x30, 0xa9, 0x11, 0x24, 0xe1, 0xd9, 0x82,
0xc5, 0x00, 0x87, 0x98, 0xe3, 0x40, 0x42, 0xaf, 0xee, 0xa6, 0x43, 0x74, 0x0d, 0xec, 0x5e, 0x8c,
0x85, 0xe5, 0x38, 0xd1, 0xd8, 0x9b, 0x73, 0x41, 0x89, 0x9e, 0x93, 0x01, 0x76, 0x3e, 0x9f, 0x83,
0xc6, 0x3e, 0x3e, 0x18, 0xe0, 0x88, 0xab, 0x9b, 0xcc, 0x02, 0xf5, 0x75, 0xb0, 0x87, 0x7e, 0xcc,
0x89, 0x56, 0x51, 0x70, 0xcf, 0x8b, 0xd0, 0x15, 0xb0, 0x98, 0xde, 0x75, 0x57, 0x9e, 0x6a, 0xba,
0x23, 0x01, 0xba, 0x04, 0xf5, 0x28, 0x19, 0x28, 0x03, 0x69, 0xc8, 0x47, 0xc9, 0x40, 0xc2, 0x24,
0x17, 0x0c, 0xf3, 0xc5, 0x60, 0x68, 0xc1, 0x62, 0x37, 0x21, 0x32, 0xbe, 0x16, 0xd4, 0x8c, 0x1e,
0xa2, 0xff, 0x83, 0x85, 0x88, 0x06, 0xb8, 0xb3, 0xab, 0x61, 0xa9, 0x47, 0xe8, 0x06, 0x34, 0x95,
0x51, 0x5f, 0xe1, 0x98, 0x11, 0x1a, 0x69, 0x50, 0x2a, 0x24, 0xbf, 0x50, 0xb2, 0xd3, 0xe2, 0xf2,
0x1a, 0xd8, 0xe3, 0x58, 0x84, 0xfe, 0x08, 0x81, 0xb7, 0x60, 0x59, 0x1d, 0xde, 0x27, 0x21, 0xf6,
0x8e, 0xf0, 0x31, 0x6b, 0xd9, 0xeb, 0xe6, 0x86, 0xe5, 0xaa, 0x3b, 0x3d, 0x20, 0x21, 0x7e, 0x82,
0x8f, 0x59, 0xde, 0x77, 0x8d, 0x13, 0x7d, 0xd7, 0x2c, 0xfb, 0x0e, 0xdd, 0x84, 0x25, 0x86, 0x63,
0xe2, 0x87, 0xe4, 0x2d, 0xf6, 0x18, 0x79, 0x8b, 0x5b, 0x4b, 0x52, 0xa7, 0x99, 0x49, 0xf7, 0xc9,
0x5b, 0x2c, 0xcc, 0xf0, 0x3a, 0x26, 0x1c, 0x7b, 0x87, 0x7e, 0x14, 0xd0, 0x7e, 0xbf, 0xb5, 0x2c,
0xcf, 0x69, 0x48, 0xe1, 0x23, 0x25, 0x73, 0x7e, 0x6f, 0xc0, 0x45, 0x17, 0x1f, 0x10, 0xc6, 0x71,
0xfc, 0x8c, 0x06, 0xd8, 0xc5, 0x2f, 0x13, 0xcc, 0x38, 0xba, 0x07, 0x73, 0x5d, 0x9f, 0x61, 0x0d,
0xc9, 0x2b, 0x95, 0xd6, 0x79, 0xca, 0x0e, 0xee, 0xfb, 0x0c, 0xbb, 0x52, 0x13, 0x7d, 0x0b, 0x16,
0xfd, 0x20, 0x88, 0x31, 0x63, 0x12, 0x18, 0x93, 0x16, 0x6d, 0x2b, 0x1d, 0x37, 0x55, 0xce, 0x79,
0xd1, 0xcc, 0x7b, 0xd1, 0xf9, 0xb5, 0x01, 0x6b, 0xc5, 0x9b, 0xb1, 0x21, 0x8d, 0x18, 0x46, 0x1f,
0xc0, 0x82, 0xf0, 0x45, 0xc2, 0xf4, 0xe5, 0x2e, 0x57, 0x9e, 0xb3, 0x2f, 0x55, 0x5c, 0xad, 0x2a,
0x52, 0x2a, 0x89, 0x08, 0x4f, 0xc3, 0x5d, 0xdd, 0xf0, 0x7a, 0x39, 0xd2, 0x34, 0x31, 0x74, 0x22,
0xc2, 0x55, 0x74, 0xbb, 0x40, 0xb2, 0xdf, 0xce, 0x0f, 0x61, 0xed, 0x21, 0xe6, 0x39, 0x4c, 0x68,
0x5b, 0xcd, 0x12, 0x3a, 0x45, 0x2e, 0xa8, 0x95, 0xb8, 0xc0, 0xf9, 0x83, 0x01, 0xef, 0x95, 0xf6,
0x3e, 0xcb, 0xd7, 0x66, 0xe0, 0xae, 0x9d, 0x05, 0xdc, 0x66, 0x19, 0xdc, 0xce, 0xcf, 0x0d, 0xb8,
0xfc, 0x10, 0xf3, 0x7c, 0xe2, 0x38, 0x67, 0x4b, 0xa0, 0xaf, 0x00, 0x64, 0x09, 0x83, 0xb5, 0xcc,
0x75, 0x73, 0xc3, 0x74, 0x73, 0x12, 0xe7, 0x97, 0x06, 0xac, 0x8e, 0x9d, 0x5f, 0xcc, 0x3b, 0x46,
0x39, 0xef, 0xfc, 0xbb, 0xcc, 0xf1, 0x5b, 0x03, 0xae, 0x54, 0x9b, 0xe3, 0x2c, 0xce, 0xfb, 0x9e,
0x5a, 0x84, 0x05, 0x4a, 0x05, 0x29, 0xdd, 0xac, 0xe2, 0x83, 0xf1, 0x33, 0xf5, 0x22, 0xe7, 0x0b,
0x13, 0xd0, 0x8e, 0x4c, 0x16, 0x8a, 0x75, 0xde, 0xc1, 0x35, 0xa7, 0x2e, 0x65, 0x4a, 0x05, 0xcb,
0xdc, 0x79, 0x14, 0x2c, 0xf3, 0xa7, 0x2a, 0x58, 0xae, 0x80, 0x25, 0xb2, 0x26, 0xe3, 0xfe, 0x60,
0x28, 0xf9, 0x62, 0xce, 0x1d, 0x09, 0xc6, 0xcb, 0x83, 0xc5, 0x19, 0xcb, 0x83, 0xfa, 0x69, 0xcb,
0x03, 0xe7, 0x0d, 0x5c, 0x4c, 0x03, 0x5b, 0xd2, 0xf7, 0x3b, 0xb8, 0xa3, 0x18, 0x0a, 0xb5, 0x72,
0x28, 0x4c, 0x71, 0x8a, 0xf3, 0xcf, 0x1a, 0xac, 0x76, 0x52, 0xce, 0xd9, 0xf3, 0xf9, 0xa1, 0xac,
0x19, 0x4e, 0x8e, 0x94, 0xc9, 0x08, 0xc8, 0x11, 0xb4, 0x39, 0x91, 0xa0, 0xe7, 0x8a, 0x04, 0x5d,
0xbc, 0xe0, 0x7c, 0x19, 0x35, 0xe7, 0x53, 0xa2, 0x6e, 0xc0, 0x4a, 0x8e, 0x70, 0x87, 0x3e, 0x3f,
0x14, 0x65, 0xaa, 0x60, 0xdc, 0x25, 0x92, 0xff, 0x7a, 0x86, 0x6e, 0xc3, 0x72, 0xc6, 0x90, 0x81,
0x22, 0xce, 0xba, 0x44, 0xc8, 0x88, 0x4e, 0x83, 0x94, 0x39, 0x8b, 0x05, 0x84, 0x55, 0x51, 0x40,
0xe4, 0x8b, 0x19, 0x28, 0x14, 0x33, 0xce, 0x1f, 0x0d, 0xb0, 0xb3, 0x00, 0x9d, 0xb1, 0x8d, 0x28,
0xf8, 0xa5, 0x56, 0xf6, 0xcb, 0x75, 0x68, 0xe0, 0xc8, 0xef, 0x86, 0x58, 0xe3, 0xd6, 0x54, 0xb8,
0x55, 0x32, 0x85, 0xdb, 0x07, 0x60, 0x8f, 0x4a, 0xc9, 0x34, 0x06, 0x6f, 0x4e, 0xac, 0x25, 0xf3,
0xa0, 0x70, 0x21, 0xab, 0x29, 0x99, 0xf3, 0xab, 0xda, 0x88, 0xe6, 0x14, 0x62, 0xcf, 0x92, 0xcc,
0x7e, 0x04, 0x0d, 0xfd, 0x15, 0xaa, 0xc4, 0x55, 0x29, 0xed, 0xdb, 0x55, 0xd7, 0xaa, 0x3a, 0x74,
0x33, 0x67, 0xc6, 0x8f, 0x23, 0x1e, 0x1f, 0xbb, 0x36, 0x1b, 0x49, 0xda, 0x1e, 0xac, 0x94, 0x15,
0xd0, 0x0a, 0x98, 0x47, 0xf8, 0x58, 0xdb, 0x58, 0xfc, 0x14, 0xe9, 0xff, 0x95, 0xc0, 0x8e, 0x66,
0xfd, 0x6b, 0x27, 0xe6, 0xd3, 0x3e, 0x75, 0x95, 0xf6, 0x77, 0x6a, 0x1f, 0x19, 0xce, 0xef, 0x0c,
0x58, 0xd9, 0x8d, 0xe9, 0xf0, 0x9d, 0x53, 0xa9, 0x03, 0x8d, 0x5c, 0x5d, 0x9c, 0x46, 0x6f, 0x41,
0x36, 0x2d, 0xa9, 0x5e, 0x82, 0x7a, 0x10, 0xd3, 0xa1, 0xe7, 0x87, 0xa1, 0x0c, 0x2c, 0x51, 0x22,
0xc6, 0x74, 0xb8, 0x1d, 0x86, 0xce, 0x6b, 0x58, 0xdb, 0xc5, 0xac, 0x17, 0x93, 0xee, 0xbb, 0x27,
0xf9, 0x29, 0xfc, 0x5b, 0x48, 0xa0, 0x66, 0x29, 0x81, 0x3a, 0x5f, 0x18, 0xf0, 0x5e, 0xe9, 0xe4,
0xb3, 0xa0, 0xe3, 0xfb, 0x45, 0xcc, 0x2a, 0x70, 0x4c, 0xe9, 0x7f, 0xf2, 0x58, 0xf5, 0x25, 0xff,
0xca, 0xb9, 0xfb, 0x22, 0xe7, 0xec, 0xc5, 0xf4, 0x40, 0x56, 0x97, 0xe7, 0x57, 0x99, 0xfd, 0xd9,
0x80, 0xab, 0x13, 0xce, 0x38, 0xcb, 0x97, 0x97, 0x1b, 0xeb, 0xda, 0xb4, 0xc6, 0xda, 0x2c, 0x37,
0xd6, 0xd5, 0x7d, 0xe7, 0xdc, 0x84, 0xbe, 0xf3, 0x1f, 0x35, 0x68, 0xee, 0x73, 0x1a, 0xfb, 0x07,
0x78, 0x87, 0x46, 0x7d, 0x72, 0x20, 0xd2, 0x76, 0x5a, 0xaf, 0x1b, 0xf2, 0xa3, 0xb3, 0x8a, 0xfc,
0x3a, 0x34, 0xfc, 0x5e, 0x0f, 0x33, 0x26, 0xda, 0x17, 0x9d, 0x8d, 0x2c, 0xd7, 0x56, 0xb2, 0x27,
0x42, 0x84, 0xbe, 0x06, 0xab, 0x0c, 0xf7, 0x62, 0xcc, 0xbd, 0x91, 0xa6, 0x46, 0xf0, 0xb2, 0x9a,
0xd8, 0x4e, 0xb5, 0x45, 0x81, 0x9f, 0x30, 0xbc, 0xbf, 0xff, 0x89, 0x46, 0xb1, 0x1e, 0x89, 0xf2,
0xaa, 0x9b, 0xf4, 0x8e, 0x30, 0xcf, 0xd3, 0x03, 0x28, 0x91, 0x84, 0xe2, 0x65, 0xb0, 0x62, 0x4a,
0xb9, 0xcc, 0xe9, 0x92, 0xcb, 0x2d, 0xb7, 0x2e, 0x04, 0x22, 0x6d, 0xe9, 0x5d, 0x3b, 0xdb, 0x4f,
0x35, 0x87, 0xeb, 0x91, 0xe8, 0x51, 0x3b, 0xdb, 0x4f, 0x3f, 0x8e, 0x82, 0x21, 0x25, 0x11, 0x97,
0x09, 0xde, 0x72, 0xf3, 0x22, 0xf1, 0x79, 0x4c, 0x59, 0xc2, 0x13, 0xe5, 0x87, 0x4c, 0xee, 0x96,
0x6b, 0x6b, 0xd9, 0xf3, 0xe3, 0x21, 0x16, 0x9c, 0x92, 0x30, 0xec, 0xbd, 0x22, 0x31, 0x4f, 0xfc,
0xd0, 0x3b, 0xa4, 0x8c, 0xcb, 0x1c, 0x5f, 0x77, 0x97, 0x12, 0x86, 0x5f, 0x28, 0xf1, 0x23, 0xca,
0xb8, 0xb8, 0x46, 0x8c, 0x0f, 0x04, 0x47, 0xd8, 0x72, 0x1b, 0x3d, 0x72, 0xfe, 0x6e, 0xc2, 0x8a,
0xaa, 0xc2, 0x1e, 0xd3, 0x6e, 0x0a, 0xc7, 0x2b, 0x60, 0xf5, 0xc2, 0x44, 0x34, 0x34, 0x1a, 0x8b,
0x96, 0x3b, 0x12, 0x08, 0x9b, 0xe6, 0x89, 0x2c, 0xc6, 0x7d, 0xf2, 0x46, 0xdb, 0x7e, 0x79, 0xc4,
0x64, 0x52, 0x9c, 0xe7, 0x5c, 0x73, 0x8c, 0x73, 0x03, 0x9f, 0xfb, 0x9a, 0x08, 0xe7, 0x24, 0x11,
0x5a, 0x42, 0xa2, 0x38, 0x70, 0x8c, 0xda, 0xe6, 0x2b, 0xa8, 0x2d, 0xc7, 0xf5, 0x0b, 0x45, 0xae,
0x2f, 0x06, 0xcb, 0x62, 0x39, 0x79, 0x3c, 0x82, 0xa5, 0xd4, 0xb4, 0x3d, 0x89, 0x32, 0x69, 0xff,
0x8a, 0x46, 0x4b, 0xa6, 0xdc, 0x3c, 0x1c, 0xdd, 0x26, 0x2b, 0xa0, 0xb3, 0x5c, 0x1b, 0x58, 0xa7,
0xaa, 0x0d, 0x4a, 0x75, 0x29, 0x9c, 0xa6, 0x2e, 0xcd, 0xf3, 0xbc, 0x5d, 0xe4, 0xf9, 0x4f, 0x60,
0xe5, 0x07, 0x09, 0x8e, 0x8f, 0x1f, 0xd3, 0x2e, 0x9b, 0xcd, 0xc7, 0x6d, 0xa8, 0x6b, 0x47, 0xa5,
0x94, 0x90, 0x8d, 0x9d, 0xbf, 0x1a, 0xd0, 0x94, 0x01, 0xfb, 0xdc, 0x67, 0x47, 0xe9, 0xfb, 0x4e,
0xea, 0x65, 0xa3, 0xe8, 0xe5, 0x53, 0x76, 0x34, 0x15, 0x8f, 0x13, 0x66, 0xd5, 0xe3, 0x44, 0x45,
0xa5, 0x34, 0x57, 0x59, 0x29, 0x95, 0x5a, 0xa4, 0xf9, 0xb1, 0x16, 0xe9, 0x4b, 0x03, 0x56, 0x73,
0x36, 0x3a, 0x4b, 0xca, 0x2c, 0x58, 0xb6, 0x56, 0xb6, 0xec, 0xfd, 0x22, 0x95, 0x98, 0x55, 0xae,
0xce, 0x51, 0x49, 0x6a, 0xe3, 0x02, 0x9d, 0x3c, 0x81, 0x65, 0x41, 0xf6, 0xe7, 0xe3, 0xce, 0xbf,
0x18, 0xb0, 0xf8, 0x98, 0x76, 0xa5, 0x23, 0xf3, 0x18, 0x32, 0x8a, 0x0f, 0x5f, 0x2b, 0x60, 0x06,
0x64, 0xa0, 0xf3, 0xbf, 0xf8, 0x29, 0x62, 0x8c, 0x71, 0x3f, 0xe6, 0xa3, 0xa7, 0x3b, 0x51, 0x0a,
0x0a, 0x89, 0x7c, 0xfd, 0xb9, 0x04, 0x75, 0x1c, 0x05, 0x6a, 0x52, 0xd7, 0xdb, 0x38, 0x0a, 0xe4,
0xd4, 0xf9, 0xb4, 0x50, 0x6b, 0x30, 0x3f, 0xa4, 0xa3, 0xe7, 0x36, 0x35, 0x70, 0xd6, 0x00, 0x3d,
0xc4, 0xfc, 0x31, 0xed, 0x0a, 0xaf, 0xa4, 0xe6, 0x71, 0xfe, 0x54, 0x93, 0xed, 0xcd, 0x48, 0x7c,
0x16, 0x07, 0x3b, 0xd0, 0x54, 0x84, 0xf7, 0x19, 0xed, 0x7a, 0x51, 0x92, 0x1a, 0xc5, 0x96, 0xc2,
0xc7, 0xb4, 0xfb, 0x2c, 0x19, 0xa0, 0x3b, 0x70, 0x91, 0x44, 0xde, 0x50, 0x73, 0x70, 0xa6, 0xa9,
0xac, 0xb4, 0x42, 0xa2, 0x94, 0x9d, 0xb5, 0xfa, 0x2d, 0x58, 0xc6, 0xd1, 0xcb, 0x04, 0x27, 0x38,
0x53, 0x55, 0x36, 0x6b, 0x6a, 0xb1, 0xd6, 0x13, 0x5c, 0xeb, 0xb3, 0x23, 0x8f, 0x85, 0x94, 0x33,
0x9d, 0x13, 0x2d, 0x21, 0xd9, 0x17, 0x02, 0xf4, 0x11, 0x58, 0x62, 0xb9, 0x82, 0x96, 0x6a, 0x53,
0x2e, 0x57, 0x41, 0x4b, 0xfb, 0xdb, 0xad, 0x7f, 0xa6, 0x7e, 0x30, 0x11, 0x20, 0xba, 0x70, 0x0f,
0x08, 0x3b, 0xd2, 0x5c, 0x05, 0x4a, 0xb4, 0x4b, 0xd8, 0x91, 0xf3, 0x63, 0xb8, 0x94, 0x7f, 0xf8,
0x21, 0x8c, 0x93, 0xde, 0x79, 0xd6, 0x2f, 0xbf, 0x31, 0xa0, 0x5d, 0x75, 0xc0, 0x7f, 0xb0, 0x6c,
0xdb, 0xfa, 0x85, 0x0d, 0x20, 0x67, 0x76, 0x28, 0x8d, 0x03, 0x14, 0x4a, 0x68, 0xed, 0xd0, 0xc1,
0x90, 0x46, 0x38, 0xe2, 0x32, 0x63, 0x31, 0xb4, 0x59, 0xdc, 0x4f, 0x0f, 0xc6, 0x15, 0xb5, 0xad,
0xda, 0xef, 0x57, 0xea, 0x97, 0x94, 0x9d, 0x0b, 0xe8, 0xa5, 0x6c, 0x6f, 0x46, 0xa6, 0xd8, 0x39,
0xf4, 0xa3, 0x08, 0x87, 0x68, 0x6b, 0xc2, 0x63, 0x60, 0x95, 0x72, 0x7a, 0xe6, 0x8d, 0xca, 0x33,
0xf7, 0x79, 0x4c, 0xa2, 0x83, 0xd4, 0xc4, 0xce, 0x05, 0xf4, 0x1c, 0xec, 0xdc, 0x8b, 0x0c, 0xba,
0x55, 0x65, 0xa9, 0xf1, 0x27, 0x9b, 0xf6, 0x49, 0xbe, 0x70, 0x2e, 0xa0, 0x3e, 0x34, 0x0b, 0x4f,
0x86, 0x68, 0xe3, 0xa4, 0xae, 0x2a, 0xff, 0x4e, 0xd7, 0xfe, 0xea, 0x0c, 0x9a, 0xd9, 0xed, 0x7f,
0xaa, 0x0c, 0x36, 0xf6, 0xe6, 0x76, 0x77, 0xc2, 0x26, 0x93, 0x5e, 0x07, 0xdb, 0xf7, 0x66, 0x5f,
0x90, 0x1d, 0x1e, 0x8c, 0x3e, 0x52, 0x05, 0xd4, 0xed, 0xe9, 0xad, 0xa3, 0x3a, 0x6d, 0x63, 0xd6,
0x1e, 0xd3, 0xb9, 0x80, 0xf6, 0xc0, 0xca, 0xba, 0x3c, 0xf4, 0x7e, 0xd5, 0xc2, 0x72, 0x13, 0x38,
0x83, 0x73, 0x0a, 0x7d, 0x52, 0xb5, 0x73, 0xaa, 0x9a, 0xb8, 0x6a, 0xe7, 0x54, 0x36, 0x5d, 0xce,
0x05, 0x94, 0xc8, 0xd8, 0x29, 0x45, 0x37, 0xba, 0x33, 0xcd, 0xbf, 0x85, 0x34, 0xd3, 0xde, 0x9c,
0x55, 0x3d, 0x3b, 0xf6, 0x67, 0xa3, 0xe7, 0xea, 0x42, 0x53, 0x84, 0xee, 0x9d, 0xb4, 0x55, 0x55,
0x8f, 0xd6, 0xfe, 0xc6, 0x3b, 0xac, 0xc8, 0x61, 0x12, 0xed, 0x1f, 0xd2, 0xd7, 0xaa, 0x58, 0x4c,
0x62, 0x5f, 0xe4, 0xc2, 0x8a, 0xc3, 0x75, 0x08, 0x8f, 0xab, 0x4e, 0x3c, 0xfc, 0x84, 0x15, 0xd9,
0xe1, 0x1e, 0xc0, 0x43, 0xcc, 0x9f, 0x62, 0x1e, 0x0b, 0x5b, 0xdf, 0x9a, 0x94, 0xa7, 0xb4, 0x42,
0x7a, 0xd4, 0xed, 0xa9, 0x7a, 0xd9, 0x01, 0x5d, 0xb0, 0x77, 0x0e, 0x71, 0xef, 0xe8, 0x11, 0xf6,
0x43, 0x7e, 0x88, 0xaa, 0x57, 0xe6, 0x34, 0x26, 0x40, 0xbe, 0x4a, 0x31, 0x3d, 0x63, 0xeb, 0xcb,
0x05, 0xfd, 0x47, 0xf7, 0x33, 0x1a, 0xe0, 0xff, 0xfe, 0x14, 0xbc, 0x07, 0x56, 0xd6, 0x8e, 0x55,
0x47, 0x78, 0xb9, 0x5b, 0x9b, 0x16, 0xe1, 0x9f, 0x82, 0x95, 0x15, 0xb6, 0xd5, 0x3b, 0x96, 0x7b,
0x83, 0xf6, 0xcd, 0x29, 0x5a, 0xd9, 0x6d, 0x9f, 0x41, 0x3d, 0x2d, 0x44, 0xd1, 0x8d, 0x49, 0xe9,
0x28, 0xbf, 0xf3, 0x94, 0xbb, 0xfe, 0x04, 0xec, 0x5c, 0x95, 0x56, 0x4d, 0x40, 0xe3, 0xd5, 0x5d,
0xfb, 0xf6, 0x54, 0xbd, 0xff, 0x8d, 0x80, 0xbc, 0xff, 0xcd, 0x4f, 0xb7, 0x0e, 0x08, 0x3f, 0x4c,
0xba, 0xc2, 0xb2, 0x77, 0x95, 0xe6, 0x1d, 0x42, 0xf5, 0xaf, 0xbb, 0xe9, 0x2d, 0xef, 0xca, 0x9d,
0xee, 0x4a, 0x3b, 0x0d, 0xbb, 0xdd, 0x05, 0x39, 0xfc, 0xe0, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff,
0xf7, 0x75, 0x52, 0x01, 0xa7, 0x22, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

View File

@ -27,6 +27,8 @@ func NewChunkManagerFactoryWithParam(params *paramtable.ComponentParam) *ChunkMa
UseIAM(params.MinioCfg.UseIAM.GetAsBool()),
CloudProvider(params.MinioCfg.CloudProvider.GetValue()),
IAMEndpoint(params.MinioCfg.IAMEndpoint.GetValue()),
UseVirtualHost(params.MinioCfg.UseVirtualHost.GetAsBool()),
Region(params.MinioCfg.Region.GetValue()),
CreateBucket(true))
}

View File

@ -83,6 +83,10 @@ func newMinioChunkManagerWithConfig(ctx context.Context, c *config) (*MinioChunk
var newMinioFn = minio.New
var bucketLookupType = minio.BucketLookupAuto
if c.useVirtualHost {
bucketLookupType = minio.BucketLookupDNS
}
switch c.cloudProvider {
case CloudProviderAliyun:
// auto doesn't work for aliyun, so we set to dns deliberately
@ -108,6 +112,7 @@ func newMinioChunkManagerWithConfig(ctx context.Context, c *config) (*MinioChunk
BucketLookup: bucketLookupType,
Creds: creds,
Secure: c.useSSL,
Region: c.region,
}
minIOClient, err := newMinioFn(c.address, minioOpts)
// options nil or invalid formatted endpoint, don't need to retry

View File

@ -50,6 +50,8 @@ func newMinIOChunkManager(ctx context.Context, bucketName string, rootPath strin
CloudProvider("aws"),
IAMEndpoint(""),
CreateBucket(true),
UseVirtualHost(false),
Region(""),
)
return client, err
}

View File

@ -12,6 +12,8 @@ type config struct {
useIAM bool
cloudProvider string
iamEndpoint string
useVirtualHost bool
region string
}
func newDefaultConfig() *config {
@ -79,3 +81,15 @@ func IAMEndpoint(iamEndpoint string) Option {
c.iamEndpoint = iamEndpoint
}
}
func UseVirtualHost(useVirtualHost bool) Option {
return func(c *config) {
c.useVirtualHost = useVirtualHost
}
}
func Region(region string) Option {
return func(c *config) {
c.region = region
}
}

View File

@ -49,6 +49,7 @@ func NewBuildIndexInfo(config *indexpb.StorageConfig) (*BuildIndexInfo, error) {
cRootPath := C.CString(config.RootPath)
cStorageType := C.CString(config.StorageType)
cIamEndPoint := C.CString(config.IAMEndpoint)
cRegion := C.CString(config.Region)
defer C.free(unsafe.Pointer(cAddress))
defer C.free(unsafe.Pointer(cBucketName))
defer C.free(unsafe.Pointer(cAccessKey))
@ -56,6 +57,7 @@ func NewBuildIndexInfo(config *indexpb.StorageConfig) (*BuildIndexInfo, error) {
defer C.free(unsafe.Pointer(cRootPath))
defer C.free(unsafe.Pointer(cStorageType))
defer C.free(unsafe.Pointer(cIamEndPoint))
defer C.free(unsafe.Pointer(cRegion))
storageConfig := C.CStorageConfig{
address: cAddress,
bucket_name: cBucketName,
@ -66,6 +68,8 @@ func NewBuildIndexInfo(config *indexpb.StorageConfig) (*BuildIndexInfo, error) {
iam_endpoint: cIamEndPoint,
useSSL: C.bool(config.UseSSL),
useIAM: C.bool(config.UseIAM),
region: cRegion,
useVirtualHost: C.bool(config.UseVirtualHost),
}
status := C.NewBuildIndexInfo(&cBuildIndexInfo, storageConfig)

View File

@ -64,6 +64,7 @@ func InitRemoteChunkManager(params *paramtable.ComponentParam) error {
cStorageType := C.CString(params.CommonCfg.StorageType.GetValue())
cIamEndPoint := C.CString(params.MinioCfg.IAMEndpoint.GetValue())
cLogLevel := C.CString(params.MinioCfg.LogLevel.GetValue())
cRegion := C.CString(params.MinioCfg.Region.GetValue())
defer C.free(unsafe.Pointer(cAddress))
defer C.free(unsafe.Pointer(cBucketName))
defer C.free(unsafe.Pointer(cAccessKey))
@ -72,6 +73,7 @@ func InitRemoteChunkManager(params *paramtable.ComponentParam) error {
defer C.free(unsafe.Pointer(cStorageType))
defer C.free(unsafe.Pointer(cIamEndPoint))
defer C.free(unsafe.Pointer(cLogLevel))
defer C.free(unsafe.Pointer(cRegion))
storageConfig := C.CStorageConfig{
address: cAddress,
bucket_name: cBucketName,
@ -83,6 +85,8 @@ func InitRemoteChunkManager(params *paramtable.ComponentParam) error {
useSSL: C.bool(params.MinioCfg.UseSSL.GetAsBool()),
useIAM: C.bool(params.MinioCfg.UseIAM.GetAsBool()),
log_level: cLogLevel,
region: cRegion,
useVirtualHost: C.bool(params.MinioCfg.UseVirtualHost.GetAsBool()),
}
status := C.InitRemoteChunkManagerSingleton(storageConfig)

View File

@ -119,9 +119,6 @@ func TestGlobalMethods(t *testing.T) {
// Incorrect option
err = ZstdCompress(strings.NewReader(data), compressed, zstd.WithWindowSize(3))
assert.Error(t, err)
err = ZstdDecompress(compressed, origin, zstd.WithDecoderConcurrency(-1))
assert.Error(t, err)
}
func TestCurrencyGlobalMethods(t *testing.T) {

View File

@ -49,6 +49,8 @@ const (
DefaultRootPath = ""
DefaultMinioLogLevel = "error"
DefaultKnowhereThreadPoolNumRatioInBuild = 1
DefaultMinioRegion = ""
DefaultMinioUseVirtualHost = "false"
)
// Const of Global Config List

View File

@ -855,6 +855,8 @@ type MinioConfig struct {
CloudProvider ParamItem `refreshable:"false"`
IAMEndpoint ParamItem `refreshable:"false"`
LogLevel ParamItem `refreshable:"false"`
Region ParamItem `refreshable:"false"`
UseVirtualHost ParamItem `refreshable:"false"`
}
func (p *MinioConfig) Init(base *BaseTable) {
@ -979,4 +981,23 @@ Leave it empty if you want to use AWS default endpoint`,
Export: true,
}
p.LogLevel.Init(base.mgr)
p.Region = ParamItem{
Key: "minio.region",
DefaultValue: DefaultMinioRegion,
Version: "2.3.0",
Doc: `Specify minio storage system location region`,
Export: true,
}
p.Region.Init(base.mgr)
p.UseVirtualHost = ParamItem{
Key: "minio.useVirtualHost",
Version: "2.3.0",
DefaultValue: DefaultMinioUseVirtualHost,
PanicIfEmpty: true,
Doc: "Whether use virtual host mode for bucket",
Export: true,
}
p.UseVirtualHost.Init(base.mgr)
}