mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-04 00:42:24 -06:00 
			
		
		
		
	[chore]: Bump github.com/minio/minio-go/v7 from 7.0.85 to 7.0.89
Bumps [github.com/minio/minio-go/v7](https://github.com/minio/minio-go) from 7.0.85 to 7.0.89. - [Release notes](https://github.com/minio/minio-go/releases) - [Commits](https://github.com/minio/minio-go/compare/v7.0.85...v7.0.89) --- updated-dependencies: - dependency-name: github.com/minio/minio-go/v7 dependency-version: 7.0.89 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
		
					parent
					
						
							
								e263d23622
							
						
					
				
			
			
				commit
				
					
						1bf2b17ff9
					
				
			
		
					 46 changed files with 1337 additions and 371 deletions
				
			
		
							
								
								
									
										5
									
								
								go.mod
									
										
									
									
									
								
							
							
						
						
									
										5
									
								
								go.mod
									
										
									
									
									
								
							| 
						 | 
					@ -52,7 +52,7 @@ require (
 | 
				
			||||||
	github.com/k3a/html2text v1.2.1
 | 
						github.com/k3a/html2text v1.2.1
 | 
				
			||||||
	github.com/microcosm-cc/bluemonday v1.0.27
 | 
						github.com/microcosm-cc/bluemonday v1.0.27
 | 
				
			||||||
	github.com/miekg/dns v1.1.64
 | 
						github.com/miekg/dns v1.1.64
 | 
				
			||||||
	github.com/minio/minio-go/v7 v7.0.85
 | 
						github.com/minio/minio-go/v7 v7.0.89
 | 
				
			||||||
	github.com/mitchellh/mapstructure v1.5.0
 | 
						github.com/mitchellh/mapstructure v1.5.0
 | 
				
			||||||
	github.com/ncruces/go-sqlite3 v0.25.0
 | 
						github.com/ncruces/go-sqlite3 v0.25.0
 | 
				
			||||||
	github.com/oklog/ulid v1.3.1
 | 
						github.com/oklog/ulid v1.3.1
 | 
				
			||||||
| 
						 | 
					@ -164,12 +164,13 @@ require (
 | 
				
			||||||
	github.com/josharian/intern v1.0.0 // indirect
 | 
						github.com/josharian/intern v1.0.0 // indirect
 | 
				
			||||||
	github.com/json-iterator/go v1.1.12 // indirect
 | 
						github.com/json-iterator/go v1.1.12 // indirect
 | 
				
			||||||
	github.com/klauspost/compress v1.18.0 // indirect
 | 
						github.com/klauspost/compress v1.18.0 // indirect
 | 
				
			||||||
	github.com/klauspost/cpuid/v2 v2.2.9 // indirect
 | 
						github.com/klauspost/cpuid/v2 v2.2.10 // indirect
 | 
				
			||||||
	github.com/kr/pretty v0.3.1 // indirect
 | 
						github.com/kr/pretty v0.3.1 // indirect
 | 
				
			||||||
	github.com/kr/text v0.2.0 // indirect
 | 
						github.com/kr/text v0.2.0 // indirect
 | 
				
			||||||
	github.com/leodido/go-urn v1.4.0 // indirect
 | 
						github.com/leodido/go-urn v1.4.0 // indirect
 | 
				
			||||||
	github.com/mailru/easyjson v0.7.7 // indirect
 | 
						github.com/mailru/easyjson v0.7.7 // indirect
 | 
				
			||||||
	github.com/mattn/go-isatty v0.0.20 // indirect
 | 
						github.com/mattn/go-isatty v0.0.20 // indirect
 | 
				
			||||||
 | 
						github.com/minio/crc64nvme v1.0.1 // indirect
 | 
				
			||||||
	github.com/minio/md5-simd v1.1.2 // indirect
 | 
						github.com/minio/md5-simd v1.1.2 // indirect
 | 
				
			||||||
	github.com/mitchellh/copystructure v1.2.0 // indirect
 | 
						github.com/mitchellh/copystructure v1.2.0 // indirect
 | 
				
			||||||
	github.com/mitchellh/reflectwalk v1.0.2 // indirect
 | 
						github.com/mitchellh/reflectwalk v1.0.2 // indirect
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										10
									
								
								go.sum
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								go.sum
									
										
									
										generated
									
									
									
								
							| 
						 | 
					@ -280,8 +280,8 @@ github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zt
 | 
				
			||||||
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
 | 
					github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
 | 
				
			||||||
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
 | 
					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.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
 | 
				
			||||||
github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY=
 | 
					github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE=
 | 
				
			||||||
github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8=
 | 
					github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
 | 
				
			||||||
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
 | 
					github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
 | 
				
			||||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
					github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 | 
				
			||||||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 | 
					github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 | 
				
			||||||
| 
						 | 
					@ -299,10 +299,12 @@ github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwX
 | 
				
			||||||
github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA=
 | 
					github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA=
 | 
				
			||||||
github.com/miekg/dns v1.1.64 h1:wuZgD9wwCE6XMT05UU/mlSko71eRSXEAm2EbjQXLKnQ=
 | 
					github.com/miekg/dns v1.1.64 h1:wuZgD9wwCE6XMT05UU/mlSko71eRSXEAm2EbjQXLKnQ=
 | 
				
			||||||
github.com/miekg/dns v1.1.64/go.mod h1:Dzw9769uoKVaLuODMDZz9M6ynFU6Em65csPuoi8G0ck=
 | 
					github.com/miekg/dns v1.1.64/go.mod h1:Dzw9769uoKVaLuODMDZz9M6ynFU6Em65csPuoi8G0ck=
 | 
				
			||||||
 | 
					github.com/minio/crc64nvme v1.0.1 h1:DHQPrYPdqK7jQG/Ls5CTBZWeex/2FMS3G5XGkycuFrY=
 | 
				
			||||||
 | 
					github.com/minio/crc64nvme v1.0.1/go.mod h1:eVfm2fAzLlxMdUGc0EEBGSMmPwmXD5XiNRpnu9J3bvg=
 | 
				
			||||||
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
 | 
					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/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
 | 
				
			||||||
github.com/minio/minio-go/v7 v7.0.85 h1:9psTLS/NTvC3MWoyjhjXpwcKoNbkongaCSF3PNpSuXo=
 | 
					github.com/minio/minio-go/v7 v7.0.89 h1:hx4xV5wwTUfyv8LarhJAwNecnXpoTsj9v3f3q/ZkiJU=
 | 
				
			||||||
github.com/minio/minio-go/v7 v7.0.85/go.mod h1:57YXpvc5l3rjPdhqNrDsvVlY0qPI6UTk1bflAe+9doY=
 | 
					github.com/minio/minio-go/v7 v7.0.89/go.mod h1:2rFnGAp02p7Dddo1Fq4S2wYOfpF0MUTSeLTRC90I204=
 | 
				
			||||||
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
 | 
					github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
 | 
				
			||||||
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
 | 
					github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
 | 
				
			||||||
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
 | 
					github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										23
									
								
								vendor/github.com/klauspost/cpuid/v2/.goreleaser.yml
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								vendor/github.com/klauspost/cpuid/v2/.goreleaser.yml
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,5 +1,4 @@
 | 
				
			||||||
# This is an example goreleaser.yaml file with some sane defaults.
 | 
					version: 2
 | 
				
			||||||
# Make sure to check the documentation at http://goreleaser.com
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
builds:
 | 
					builds:
 | 
				
			||||||
  -
 | 
					  -
 | 
				
			||||||
| 
						 | 
					@ -27,16 +26,7 @@ builds:
 | 
				
			||||||
archives:
 | 
					archives:
 | 
				
			||||||
  -
 | 
					  -
 | 
				
			||||||
    id: cpuid
 | 
					    id: cpuid
 | 
				
			||||||
    name_template: "cpuid-{{ .Os }}_{{ .Arch }}_{{ .Version }}"
 | 
					    name_template: "cpuid-{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}"
 | 
				
			||||||
    replacements:
 | 
					 | 
				
			||||||
      aix: AIX
 | 
					 | 
				
			||||||
      darwin: OSX
 | 
					 | 
				
			||||||
      linux: Linux
 | 
					 | 
				
			||||||
      windows: Windows
 | 
					 | 
				
			||||||
      386: i386
 | 
					 | 
				
			||||||
      amd64: x86_64
 | 
					 | 
				
			||||||
      freebsd: FreeBSD
 | 
					 | 
				
			||||||
      netbsd: NetBSD
 | 
					 | 
				
			||||||
    format_overrides:
 | 
					    format_overrides:
 | 
				
			||||||
      - goos: windows
 | 
					      - goos: windows
 | 
				
			||||||
        format: zip
 | 
					        format: zip
 | 
				
			||||||
| 
						 | 
					@ -44,8 +34,6 @@ archives:
 | 
				
			||||||
      - LICENSE
 | 
					      - LICENSE
 | 
				
			||||||
checksum:
 | 
					checksum:
 | 
				
			||||||
  name_template: 'checksums.txt'
 | 
					  name_template: 'checksums.txt'
 | 
				
			||||||
snapshot:
 | 
					 | 
				
			||||||
  name_template: "{{ .Tag }}-next"
 | 
					 | 
				
			||||||
changelog:
 | 
					changelog:
 | 
				
			||||||
  sort: asc
 | 
					  sort: asc
 | 
				
			||||||
  filters:
 | 
					  filters:
 | 
				
			||||||
| 
						 | 
					@ -58,7 +46,7 @@ changelog:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nfpms:
 | 
					nfpms:
 | 
				
			||||||
  -
 | 
					  -
 | 
				
			||||||
    file_name_template: "cpuid_package_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
 | 
					    file_name_template: "cpuid_package_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}"
 | 
				
			||||||
    vendor: Klaus Post
 | 
					    vendor: Klaus Post
 | 
				
			||||||
    homepage: https://github.com/klauspost/cpuid
 | 
					    homepage: https://github.com/klauspost/cpuid
 | 
				
			||||||
    maintainer: Klaus Post <klauspost@gmail.com>
 | 
					    maintainer: Klaus Post <klauspost@gmail.com>
 | 
				
			||||||
| 
						 | 
					@ -67,8 +55,3 @@ nfpms:
 | 
				
			||||||
    formats:
 | 
					    formats:
 | 
				
			||||||
      - deb
 | 
					      - deb
 | 
				
			||||||
      - rpm
 | 
					      - rpm
 | 
				
			||||||
    replacements:
 | 
					 | 
				
			||||||
      darwin: Darwin
 | 
					 | 
				
			||||||
      linux: Linux
 | 
					 | 
				
			||||||
      freebsd: FreeBSD
 | 
					 | 
				
			||||||
      amd64: x86_64
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								vendor/github.com/klauspost/cpuid/v2/README.md
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/klauspost/cpuid/v2/README.md
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -282,7 +282,9 @@ Exit Code 1
 | 
				
			||||||
| AMXINT8            | Tile computational operations on 8-bit integers                                                                                                                                    |
 | 
					| AMXINT8            | Tile computational operations on 8-bit integers                                                                                                                                    |
 | 
				
			||||||
| AMXFP16            | Tile computational operations on FP16 numbers                                                                                                                                      |
 | 
					| AMXFP16            | Tile computational operations on FP16 numbers                                                                                                                                      |
 | 
				
			||||||
| AMXFP8             | Tile computational operations on FP8 numbers                                                                                                                                      |
 | 
					| AMXFP8             | Tile computational operations on FP8 numbers                                                                                                                                      |
 | 
				
			||||||
 | 
					| AMXCOMPLEX         | Tile computational operations on complex numbers                                                                                                                                   |
 | 
				
			||||||
| AMXTILE            | Tile architecture                                                                                                                                                                  |
 | 
					| AMXTILE            | Tile architecture                                                                                                                                                                  |
 | 
				
			||||||
 | 
					| AMXTF32            | Matrix Multiplication of TF32 Tiles into Packed Single Precision Tile                                                                                                              |
 | 
				
			||||||
| APX_F              | Intel APX                                                                                                                                                                          |
 | 
					| APX_F              | Intel APX                                                                                                                                                                          |
 | 
				
			||||||
| AVX                | AVX functions                                                                                                                                                                      |
 | 
					| AVX                | AVX functions                                                                                                                                                                      |
 | 
				
			||||||
| AVX10              | If set the Intel AVX10 Converged Vector ISA is supported                                                                                                                           |
 | 
					| AVX10              | If set the Intel AVX10 Converged Vector ISA is supported                                                                                                                           |
 | 
				
			||||||
| 
						 | 
					@ -480,12 +482,16 @@ Exit Code 1
 | 
				
			||||||
| DCPOP        | Data cache clean to Point of Persistence (DC CVAP)               |
 | 
					| DCPOP        | Data cache clean to Point of Persistence (DC CVAP)               |
 | 
				
			||||||
| EVTSTRM      | Generic timer                                                    |
 | 
					| EVTSTRM      | Generic timer                                                    |
 | 
				
			||||||
| FCMA         | Floatin point complex number addition and multiplication         |
 | 
					| FCMA         | Floatin point complex number addition and multiplication         |
 | 
				
			||||||
 | 
					| FHM          | FMLAL and FMLSL instructions                                     |
 | 
				
			||||||
| FP           | Single-precision and double-precision floating point             |
 | 
					| FP           | Single-precision and double-precision floating point             |
 | 
				
			||||||
| FPHP         | Half-precision floating point                                    |
 | 
					| FPHP         | Half-precision floating point                                    |
 | 
				
			||||||
| GPA          | Generic Pointer Authentication                                   |
 | 
					| GPA          | Generic Pointer Authentication                                   |
 | 
				
			||||||
| JSCVT        | Javascript-style double->int convert (FJCVTZS)                   |
 | 
					| JSCVT        | Javascript-style double->int convert (FJCVTZS)                   |
 | 
				
			||||||
| LRCPC        | Weaker release consistency (LDAPR, etc)                          |
 | 
					| LRCPC        | Weaker release consistency (LDAPR, etc)                          |
 | 
				
			||||||
| PMULL        | Polynomial Multiply instructions (PMULL/PMULL2)                  |
 | 
					| PMULL        | Polynomial Multiply instructions (PMULL/PMULL2)                  |
 | 
				
			||||||
 | 
					| RNDR         | Random Number instructions                                       |
 | 
				
			||||||
 | 
					| TLB          | Outer Shareable and TLB range maintenance instructions           |
 | 
				
			||||||
 | 
					| TS           | Flag manipulation instructions                                   |
 | 
				
			||||||
| SHA1         | SHA-1 instructions (SHA1C, etc)                                  |
 | 
					| SHA1         | SHA-1 instructions (SHA1C, etc)                                  |
 | 
				
			||||||
| SHA2         | SHA-2 instructions (SHA256H, etc)                                |
 | 
					| SHA2         | SHA-2 instructions (SHA256H, etc)                                |
 | 
				
			||||||
| SHA3         | SHA-3 instructions (EOR3, RAXI, XAR, BCAX)                       |
 | 
					| SHA3         | SHA-3 instructions (EOR3, RAXI, XAR, BCAX)                       |
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										10
									
								
								vendor/github.com/klauspost/cpuid/v2/cpuid.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/github.com/klauspost/cpuid/v2/cpuid.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -83,6 +83,8 @@ const (
 | 
				
			||||||
	AMXINT8                              // Tile computational operations on 8-bit integers
 | 
						AMXINT8                              // Tile computational operations on 8-bit integers
 | 
				
			||||||
	AMXFP8                               // Tile computational operations on FP8 numbers
 | 
						AMXFP8                               // Tile computational operations on FP8 numbers
 | 
				
			||||||
	AMXTILE                              // Tile architecture
 | 
						AMXTILE                              // Tile architecture
 | 
				
			||||||
 | 
						AMXTF32                              // Tile architecture
 | 
				
			||||||
 | 
						AMXCOMPLEX                           // Matrix Multiplication of TF32 Tiles into Packed Single Precision Tile
 | 
				
			||||||
	APX_F                                // Intel APX
 | 
						APX_F                                // Intel APX
 | 
				
			||||||
	AVX                                  // AVX functions
 | 
						AVX                                  // AVX functions
 | 
				
			||||||
	AVX10                                // If set the Intel AVX10 Converged Vector ISA is supported
 | 
						AVX10                                // If set the Intel AVX10 Converged Vector ISA is supported
 | 
				
			||||||
| 
						 | 
					@ -282,12 +284,16 @@ const (
 | 
				
			||||||
	DCPOP    // Data cache clean to Point of Persistence (DC CVAP)
 | 
						DCPOP    // Data cache clean to Point of Persistence (DC CVAP)
 | 
				
			||||||
	EVTSTRM  // Generic timer
 | 
						EVTSTRM  // Generic timer
 | 
				
			||||||
	FCMA     // Floatin point complex number addition and multiplication
 | 
						FCMA     // Floatin point complex number addition and multiplication
 | 
				
			||||||
 | 
						FHM      // FMLAL and FMLSL instructions
 | 
				
			||||||
	FP       // Single-precision and double-precision floating point
 | 
						FP       // Single-precision and double-precision floating point
 | 
				
			||||||
	FPHP     // Half-precision floating point
 | 
						FPHP     // Half-precision floating point
 | 
				
			||||||
	GPA      // Generic Pointer Authentication
 | 
						GPA      // Generic Pointer Authentication
 | 
				
			||||||
	JSCVT    // Javascript-style double->int convert (FJCVTZS)
 | 
						JSCVT    // Javascript-style double->int convert (FJCVTZS)
 | 
				
			||||||
	LRCPC    // Weaker release consistency (LDAPR, etc)
 | 
						LRCPC    // Weaker release consistency (LDAPR, etc)
 | 
				
			||||||
	PMULL    // Polynomial Multiply instructions (PMULL/PMULL2)
 | 
						PMULL    // Polynomial Multiply instructions (PMULL/PMULL2)
 | 
				
			||||||
 | 
						RNDR     // Random Number instructions
 | 
				
			||||||
 | 
						TLB      // Outer Shareable and TLB range maintenance instructions
 | 
				
			||||||
 | 
						TS       // Flag manipulation instructions
 | 
				
			||||||
	SHA1     // SHA-1 instructions (SHA1C, etc)
 | 
						SHA1     // SHA-1 instructions (SHA1C, etc)
 | 
				
			||||||
	SHA2     // SHA-2 instructions (SHA256H, etc)
 | 
						SHA2     // SHA-2 instructions (SHA256H, etc)
 | 
				
			||||||
	SHA3     // SHA-3 instructions (EOR3, RAXI, XAR, BCAX)
 | 
						SHA3     // SHA-3 instructions (EOR3, RAXI, XAR, BCAX)
 | 
				
			||||||
| 
						 | 
					@ -532,7 +538,7 @@ func (c CPUInfo) Ia32TscAux() uint32 {
 | 
				
			||||||
	return ecx
 | 
						return ecx
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// SveLengths returns arm SVE vector and predicate lengths.
 | 
					// SveLengths returns arm SVE vector and predicate lengths in bits.
 | 
				
			||||||
// Will return 0, 0 if SVE is not enabled or otherwise unable to detect.
 | 
					// Will return 0, 0 if SVE is not enabled or otherwise unable to detect.
 | 
				
			||||||
func (c CPUInfo) SveLengths() (vl, pl uint64) {
 | 
					func (c CPUInfo) SveLengths() (vl, pl uint64) {
 | 
				
			||||||
	if !c.Has(SVE) {
 | 
						if !c.Has(SVE) {
 | 
				
			||||||
| 
						 | 
					@ -1284,6 +1290,8 @@ func support() flagSet {
 | 
				
			||||||
		// CPUID.(EAX=7, ECX=1).EDX
 | 
							// CPUID.(EAX=7, ECX=1).EDX
 | 
				
			||||||
		fs.setIf(edx1&(1<<4) != 0, AVXVNNIINT8)
 | 
							fs.setIf(edx1&(1<<4) != 0, AVXVNNIINT8)
 | 
				
			||||||
		fs.setIf(edx1&(1<<5) != 0, AVXNECONVERT)
 | 
							fs.setIf(edx1&(1<<5) != 0, AVXNECONVERT)
 | 
				
			||||||
 | 
							fs.setIf(edx1&(1<<7) != 0, AMXTF32)
 | 
				
			||||||
 | 
							fs.setIf(edx1&(1<<8) != 0, AMXCOMPLEX)
 | 
				
			||||||
		fs.setIf(edx1&(1<<10) != 0, AVXVNNIINT16)
 | 
							fs.setIf(edx1&(1<<10) != 0, AVXVNNIINT16)
 | 
				
			||||||
		fs.setIf(edx1&(1<<14) != 0, PREFETCHI)
 | 
							fs.setIf(edx1&(1<<14) != 0, PREFETCHI)
 | 
				
			||||||
		fs.setIf(edx1&(1<<19) != 0, AVX10)
 | 
							fs.setIf(edx1&(1<<19) != 0, AVX10)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										14
									
								
								vendor/github.com/klauspost/cpuid/v2/detect_arm64.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/github.com/klauspost/cpuid/v2/detect_arm64.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -157,6 +157,10 @@ func addInfo(c *CPUInfo, safe bool) {
 | 
				
			||||||
	// x--------------------------------------------------x
 | 
						// x--------------------------------------------------x
 | 
				
			||||||
	// | Name                         |  bits   | visible |
 | 
						// | Name                         |  bits   | visible |
 | 
				
			||||||
	// |--------------------------------------------------|
 | 
						// |--------------------------------------------------|
 | 
				
			||||||
 | 
						// | RNDR                         | [63-60] |    y    |
 | 
				
			||||||
 | 
						// |--------------------------------------------------|
 | 
				
			||||||
 | 
						// | TLB                          | [59-56] |    y    |
 | 
				
			||||||
 | 
						// |--------------------------------------------------|
 | 
				
			||||||
	// | TS                           | [55-52] |    y    |
 | 
						// | TS                           | [55-52] |    y    |
 | 
				
			||||||
	// |--------------------------------------------------|
 | 
						// |--------------------------------------------------|
 | 
				
			||||||
	// | FHM                          | [51-48] |    y    |
 | 
						// | FHM                          | [51-48] |    y    |
 | 
				
			||||||
| 
						 | 
					@ -182,12 +186,10 @@ func addInfo(c *CPUInfo, safe bool) {
 | 
				
			||||||
	// | AES                          | [7-4]   |    y    |
 | 
						// | AES                          | [7-4]   |    y    |
 | 
				
			||||||
	// x--------------------------------------------------x
 | 
						// x--------------------------------------------------x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// if instAttrReg0&(0xf<<52) != 0 {
 | 
						f.setIf(instAttrReg0&(0xf<<60) != 0, RNDR)
 | 
				
			||||||
	// 	fmt.Println("TS")
 | 
						f.setIf(instAttrReg0&(0xf<<56) != 0, TLB)
 | 
				
			||||||
	// }
 | 
						f.setIf(instAttrReg0&(0xf<<52) != 0, TS)
 | 
				
			||||||
	// if instAttrReg0&(0xf<<48) != 0 {
 | 
						f.setIf(instAttrReg0&(0xf<<48) != 0, FHM)
 | 
				
			||||||
	// 	fmt.Println("FHM")
 | 
					 | 
				
			||||||
	// }
 | 
					 | 
				
			||||||
	f.setIf(instAttrReg0&(0xf<<44) != 0, ASIMDDP)
 | 
						f.setIf(instAttrReg0&(0xf<<44) != 0, ASIMDDP)
 | 
				
			||||||
	f.setIf(instAttrReg0&(0xf<<40) != 0, SM4)
 | 
						f.setIf(instAttrReg0&(0xf<<40) != 0, SM4)
 | 
				
			||||||
	f.setIf(instAttrReg0&(0xf<<36) != 0, SM3)
 | 
						f.setIf(instAttrReg0&(0xf<<36) != 0, SM3)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										432
									
								
								vendor/github.com/klauspost/cpuid/v2/featureid_string.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										432
									
								
								vendor/github.com/klauspost/cpuid/v2/featureid_string.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -17,223 +17,229 @@ func _() {
 | 
				
			||||||
	_ = x[AMXINT8-7]
 | 
						_ = x[AMXINT8-7]
 | 
				
			||||||
	_ = x[AMXFP8-8]
 | 
						_ = x[AMXFP8-8]
 | 
				
			||||||
	_ = x[AMXTILE-9]
 | 
						_ = x[AMXTILE-9]
 | 
				
			||||||
	_ = x[APX_F-10]
 | 
						_ = x[AMXTF32-10]
 | 
				
			||||||
	_ = x[AVX-11]
 | 
						_ = x[AMXCOMPLEX-11]
 | 
				
			||||||
	_ = x[AVX10-12]
 | 
						_ = x[APX_F-12]
 | 
				
			||||||
	_ = x[AVX10_128-13]
 | 
						_ = x[AVX-13]
 | 
				
			||||||
	_ = x[AVX10_256-14]
 | 
						_ = x[AVX10-14]
 | 
				
			||||||
	_ = x[AVX10_512-15]
 | 
						_ = x[AVX10_128-15]
 | 
				
			||||||
	_ = x[AVX2-16]
 | 
						_ = x[AVX10_256-16]
 | 
				
			||||||
	_ = x[AVX512BF16-17]
 | 
						_ = x[AVX10_512-17]
 | 
				
			||||||
	_ = x[AVX512BITALG-18]
 | 
						_ = x[AVX2-18]
 | 
				
			||||||
	_ = x[AVX512BW-19]
 | 
						_ = x[AVX512BF16-19]
 | 
				
			||||||
	_ = x[AVX512CD-20]
 | 
						_ = x[AVX512BITALG-20]
 | 
				
			||||||
	_ = x[AVX512DQ-21]
 | 
						_ = x[AVX512BW-21]
 | 
				
			||||||
	_ = x[AVX512ER-22]
 | 
						_ = x[AVX512CD-22]
 | 
				
			||||||
	_ = x[AVX512F-23]
 | 
						_ = x[AVX512DQ-23]
 | 
				
			||||||
	_ = x[AVX512FP16-24]
 | 
						_ = x[AVX512ER-24]
 | 
				
			||||||
	_ = x[AVX512IFMA-25]
 | 
						_ = x[AVX512F-25]
 | 
				
			||||||
	_ = x[AVX512PF-26]
 | 
						_ = x[AVX512FP16-26]
 | 
				
			||||||
	_ = x[AVX512VBMI-27]
 | 
						_ = x[AVX512IFMA-27]
 | 
				
			||||||
	_ = x[AVX512VBMI2-28]
 | 
						_ = x[AVX512PF-28]
 | 
				
			||||||
	_ = x[AVX512VL-29]
 | 
						_ = x[AVX512VBMI-29]
 | 
				
			||||||
	_ = x[AVX512VNNI-30]
 | 
						_ = x[AVX512VBMI2-30]
 | 
				
			||||||
	_ = x[AVX512VP2INTERSECT-31]
 | 
						_ = x[AVX512VL-31]
 | 
				
			||||||
	_ = x[AVX512VPOPCNTDQ-32]
 | 
						_ = x[AVX512VNNI-32]
 | 
				
			||||||
	_ = x[AVXIFMA-33]
 | 
						_ = x[AVX512VP2INTERSECT-33]
 | 
				
			||||||
	_ = x[AVXNECONVERT-34]
 | 
						_ = x[AVX512VPOPCNTDQ-34]
 | 
				
			||||||
	_ = x[AVXSLOW-35]
 | 
						_ = x[AVXIFMA-35]
 | 
				
			||||||
	_ = x[AVXVNNI-36]
 | 
						_ = x[AVXNECONVERT-36]
 | 
				
			||||||
	_ = x[AVXVNNIINT8-37]
 | 
						_ = x[AVXSLOW-37]
 | 
				
			||||||
	_ = x[AVXVNNIINT16-38]
 | 
						_ = x[AVXVNNI-38]
 | 
				
			||||||
	_ = x[BHI_CTRL-39]
 | 
						_ = x[AVXVNNIINT8-39]
 | 
				
			||||||
	_ = x[BMI1-40]
 | 
						_ = x[AVXVNNIINT16-40]
 | 
				
			||||||
	_ = x[BMI2-41]
 | 
						_ = x[BHI_CTRL-41]
 | 
				
			||||||
	_ = x[CETIBT-42]
 | 
						_ = x[BMI1-42]
 | 
				
			||||||
	_ = x[CETSS-43]
 | 
						_ = x[BMI2-43]
 | 
				
			||||||
	_ = x[CLDEMOTE-44]
 | 
						_ = x[CETIBT-44]
 | 
				
			||||||
	_ = x[CLMUL-45]
 | 
						_ = x[CETSS-45]
 | 
				
			||||||
	_ = x[CLZERO-46]
 | 
						_ = x[CLDEMOTE-46]
 | 
				
			||||||
	_ = x[CMOV-47]
 | 
						_ = x[CLMUL-47]
 | 
				
			||||||
	_ = x[CMPCCXADD-48]
 | 
						_ = x[CLZERO-48]
 | 
				
			||||||
	_ = x[CMPSB_SCADBS_SHORT-49]
 | 
						_ = x[CMOV-49]
 | 
				
			||||||
	_ = x[CMPXCHG8-50]
 | 
						_ = x[CMPCCXADD-50]
 | 
				
			||||||
	_ = x[CPBOOST-51]
 | 
						_ = x[CMPSB_SCADBS_SHORT-51]
 | 
				
			||||||
	_ = x[CPPC-52]
 | 
						_ = x[CMPXCHG8-52]
 | 
				
			||||||
	_ = x[CX16-53]
 | 
						_ = x[CPBOOST-53]
 | 
				
			||||||
	_ = x[EFER_LMSLE_UNS-54]
 | 
						_ = x[CPPC-54]
 | 
				
			||||||
	_ = x[ENQCMD-55]
 | 
						_ = x[CX16-55]
 | 
				
			||||||
	_ = x[ERMS-56]
 | 
						_ = x[EFER_LMSLE_UNS-56]
 | 
				
			||||||
	_ = x[F16C-57]
 | 
						_ = x[ENQCMD-57]
 | 
				
			||||||
	_ = x[FLUSH_L1D-58]
 | 
						_ = x[ERMS-58]
 | 
				
			||||||
	_ = x[FMA3-59]
 | 
						_ = x[F16C-59]
 | 
				
			||||||
	_ = x[FMA4-60]
 | 
						_ = x[FLUSH_L1D-60]
 | 
				
			||||||
	_ = x[FP128-61]
 | 
						_ = x[FMA3-61]
 | 
				
			||||||
	_ = x[FP256-62]
 | 
						_ = x[FMA4-62]
 | 
				
			||||||
	_ = x[FSRM-63]
 | 
						_ = x[FP128-63]
 | 
				
			||||||
	_ = x[FXSR-64]
 | 
						_ = x[FP256-64]
 | 
				
			||||||
	_ = x[FXSROPT-65]
 | 
						_ = x[FSRM-65]
 | 
				
			||||||
	_ = x[GFNI-66]
 | 
						_ = x[FXSR-66]
 | 
				
			||||||
	_ = x[HLE-67]
 | 
						_ = x[FXSROPT-67]
 | 
				
			||||||
	_ = x[HRESET-68]
 | 
						_ = x[GFNI-68]
 | 
				
			||||||
	_ = x[HTT-69]
 | 
						_ = x[HLE-69]
 | 
				
			||||||
	_ = x[HWA-70]
 | 
						_ = x[HRESET-70]
 | 
				
			||||||
	_ = x[HYBRID_CPU-71]
 | 
						_ = x[HTT-71]
 | 
				
			||||||
	_ = x[HYPERVISOR-72]
 | 
						_ = x[HWA-72]
 | 
				
			||||||
	_ = x[IA32_ARCH_CAP-73]
 | 
						_ = x[HYBRID_CPU-73]
 | 
				
			||||||
	_ = x[IA32_CORE_CAP-74]
 | 
						_ = x[HYPERVISOR-74]
 | 
				
			||||||
	_ = x[IBPB-75]
 | 
						_ = x[IA32_ARCH_CAP-75]
 | 
				
			||||||
	_ = x[IBPB_BRTYPE-76]
 | 
						_ = x[IA32_CORE_CAP-76]
 | 
				
			||||||
	_ = x[IBRS-77]
 | 
						_ = x[IBPB-77]
 | 
				
			||||||
	_ = x[IBRS_PREFERRED-78]
 | 
						_ = x[IBPB_BRTYPE-78]
 | 
				
			||||||
	_ = x[IBRS_PROVIDES_SMP-79]
 | 
						_ = x[IBRS-79]
 | 
				
			||||||
	_ = x[IBS-80]
 | 
						_ = x[IBRS_PREFERRED-80]
 | 
				
			||||||
	_ = x[IBSBRNTRGT-81]
 | 
						_ = x[IBRS_PROVIDES_SMP-81]
 | 
				
			||||||
	_ = x[IBSFETCHSAM-82]
 | 
						_ = x[IBS-82]
 | 
				
			||||||
	_ = x[IBSFFV-83]
 | 
						_ = x[IBSBRNTRGT-83]
 | 
				
			||||||
	_ = x[IBSOPCNT-84]
 | 
						_ = x[IBSFETCHSAM-84]
 | 
				
			||||||
	_ = x[IBSOPCNTEXT-85]
 | 
						_ = x[IBSFFV-85]
 | 
				
			||||||
	_ = x[IBSOPSAM-86]
 | 
						_ = x[IBSOPCNT-86]
 | 
				
			||||||
	_ = x[IBSRDWROPCNT-87]
 | 
						_ = x[IBSOPCNTEXT-87]
 | 
				
			||||||
	_ = x[IBSRIPINVALIDCHK-88]
 | 
						_ = x[IBSOPSAM-88]
 | 
				
			||||||
	_ = x[IBS_FETCH_CTLX-89]
 | 
						_ = x[IBSRDWROPCNT-89]
 | 
				
			||||||
	_ = x[IBS_OPDATA4-90]
 | 
						_ = x[IBSRIPINVALIDCHK-90]
 | 
				
			||||||
	_ = x[IBS_OPFUSE-91]
 | 
						_ = x[IBS_FETCH_CTLX-91]
 | 
				
			||||||
	_ = x[IBS_PREVENTHOST-92]
 | 
						_ = x[IBS_OPDATA4-92]
 | 
				
			||||||
	_ = x[IBS_ZEN4-93]
 | 
						_ = x[IBS_OPFUSE-93]
 | 
				
			||||||
	_ = x[IDPRED_CTRL-94]
 | 
						_ = x[IBS_PREVENTHOST-94]
 | 
				
			||||||
	_ = x[INT_WBINVD-95]
 | 
						_ = x[IBS_ZEN4-95]
 | 
				
			||||||
	_ = x[INVLPGB-96]
 | 
						_ = x[IDPRED_CTRL-96]
 | 
				
			||||||
	_ = x[KEYLOCKER-97]
 | 
						_ = x[INT_WBINVD-97]
 | 
				
			||||||
	_ = x[KEYLOCKERW-98]
 | 
						_ = x[INVLPGB-98]
 | 
				
			||||||
	_ = x[LAHF-99]
 | 
						_ = x[KEYLOCKER-99]
 | 
				
			||||||
	_ = x[LAM-100]
 | 
						_ = x[KEYLOCKERW-100]
 | 
				
			||||||
	_ = x[LBRVIRT-101]
 | 
						_ = x[LAHF-101]
 | 
				
			||||||
	_ = x[LZCNT-102]
 | 
						_ = x[LAM-102]
 | 
				
			||||||
	_ = x[MCAOVERFLOW-103]
 | 
						_ = x[LBRVIRT-103]
 | 
				
			||||||
	_ = x[MCDT_NO-104]
 | 
						_ = x[LZCNT-104]
 | 
				
			||||||
	_ = x[MCOMMIT-105]
 | 
						_ = x[MCAOVERFLOW-105]
 | 
				
			||||||
	_ = x[MD_CLEAR-106]
 | 
						_ = x[MCDT_NO-106]
 | 
				
			||||||
	_ = x[MMX-107]
 | 
						_ = x[MCOMMIT-107]
 | 
				
			||||||
	_ = x[MMXEXT-108]
 | 
						_ = x[MD_CLEAR-108]
 | 
				
			||||||
	_ = x[MOVBE-109]
 | 
						_ = x[MMX-109]
 | 
				
			||||||
	_ = x[MOVDIR64B-110]
 | 
						_ = x[MMXEXT-110]
 | 
				
			||||||
	_ = x[MOVDIRI-111]
 | 
						_ = x[MOVBE-111]
 | 
				
			||||||
	_ = x[MOVSB_ZL-112]
 | 
						_ = x[MOVDIR64B-112]
 | 
				
			||||||
	_ = x[MOVU-113]
 | 
						_ = x[MOVDIRI-113]
 | 
				
			||||||
	_ = x[MPX-114]
 | 
						_ = x[MOVSB_ZL-114]
 | 
				
			||||||
	_ = x[MSRIRC-115]
 | 
						_ = x[MOVU-115]
 | 
				
			||||||
	_ = x[MSRLIST-116]
 | 
						_ = x[MPX-116]
 | 
				
			||||||
	_ = x[MSR_PAGEFLUSH-117]
 | 
						_ = x[MSRIRC-117]
 | 
				
			||||||
	_ = x[NRIPS-118]
 | 
						_ = x[MSRLIST-118]
 | 
				
			||||||
	_ = x[NX-119]
 | 
						_ = x[MSR_PAGEFLUSH-119]
 | 
				
			||||||
	_ = x[OSXSAVE-120]
 | 
						_ = x[NRIPS-120]
 | 
				
			||||||
	_ = x[PCONFIG-121]
 | 
						_ = x[NX-121]
 | 
				
			||||||
	_ = x[POPCNT-122]
 | 
						_ = x[OSXSAVE-122]
 | 
				
			||||||
	_ = x[PPIN-123]
 | 
						_ = x[PCONFIG-123]
 | 
				
			||||||
	_ = x[PREFETCHI-124]
 | 
						_ = x[POPCNT-124]
 | 
				
			||||||
	_ = x[PSFD-125]
 | 
						_ = x[PPIN-125]
 | 
				
			||||||
	_ = x[RDPRU-126]
 | 
						_ = x[PREFETCHI-126]
 | 
				
			||||||
	_ = x[RDRAND-127]
 | 
						_ = x[PSFD-127]
 | 
				
			||||||
	_ = x[RDSEED-128]
 | 
						_ = x[RDPRU-128]
 | 
				
			||||||
	_ = x[RDTSCP-129]
 | 
						_ = x[RDRAND-129]
 | 
				
			||||||
	_ = x[RRSBA_CTRL-130]
 | 
						_ = x[RDSEED-130]
 | 
				
			||||||
	_ = x[RTM-131]
 | 
						_ = x[RDTSCP-131]
 | 
				
			||||||
	_ = x[RTM_ALWAYS_ABORT-132]
 | 
						_ = x[RRSBA_CTRL-132]
 | 
				
			||||||
	_ = x[SBPB-133]
 | 
						_ = x[RTM-133]
 | 
				
			||||||
	_ = x[SERIALIZE-134]
 | 
						_ = x[RTM_ALWAYS_ABORT-134]
 | 
				
			||||||
	_ = x[SEV-135]
 | 
						_ = x[SBPB-135]
 | 
				
			||||||
	_ = x[SEV_64BIT-136]
 | 
						_ = x[SERIALIZE-136]
 | 
				
			||||||
	_ = x[SEV_ALTERNATIVE-137]
 | 
						_ = x[SEV-137]
 | 
				
			||||||
	_ = x[SEV_DEBUGSWAP-138]
 | 
						_ = x[SEV_64BIT-138]
 | 
				
			||||||
	_ = x[SEV_ES-139]
 | 
						_ = x[SEV_ALTERNATIVE-139]
 | 
				
			||||||
	_ = x[SEV_RESTRICTED-140]
 | 
						_ = x[SEV_DEBUGSWAP-140]
 | 
				
			||||||
	_ = x[SEV_SNP-141]
 | 
						_ = x[SEV_ES-141]
 | 
				
			||||||
	_ = x[SGX-142]
 | 
						_ = x[SEV_RESTRICTED-142]
 | 
				
			||||||
	_ = x[SGXLC-143]
 | 
						_ = x[SEV_SNP-143]
 | 
				
			||||||
	_ = x[SHA-144]
 | 
						_ = x[SGX-144]
 | 
				
			||||||
	_ = x[SME-145]
 | 
						_ = x[SGXLC-145]
 | 
				
			||||||
	_ = x[SME_COHERENT-146]
 | 
						_ = x[SHA-146]
 | 
				
			||||||
	_ = x[SPEC_CTRL_SSBD-147]
 | 
						_ = x[SME-147]
 | 
				
			||||||
	_ = x[SRBDS_CTRL-148]
 | 
						_ = x[SME_COHERENT-148]
 | 
				
			||||||
	_ = x[SRSO_MSR_FIX-149]
 | 
						_ = x[SPEC_CTRL_SSBD-149]
 | 
				
			||||||
	_ = x[SRSO_NO-150]
 | 
						_ = x[SRBDS_CTRL-150]
 | 
				
			||||||
	_ = x[SRSO_USER_KERNEL_NO-151]
 | 
						_ = x[SRSO_MSR_FIX-151]
 | 
				
			||||||
	_ = x[SSE-152]
 | 
						_ = x[SRSO_NO-152]
 | 
				
			||||||
	_ = x[SSE2-153]
 | 
						_ = x[SRSO_USER_KERNEL_NO-153]
 | 
				
			||||||
	_ = x[SSE3-154]
 | 
						_ = x[SSE-154]
 | 
				
			||||||
	_ = x[SSE4-155]
 | 
						_ = x[SSE2-155]
 | 
				
			||||||
	_ = x[SSE42-156]
 | 
						_ = x[SSE3-156]
 | 
				
			||||||
	_ = x[SSE4A-157]
 | 
						_ = x[SSE4-157]
 | 
				
			||||||
	_ = x[SSSE3-158]
 | 
						_ = x[SSE42-158]
 | 
				
			||||||
	_ = x[STIBP-159]
 | 
						_ = x[SSE4A-159]
 | 
				
			||||||
	_ = x[STIBP_ALWAYSON-160]
 | 
						_ = x[SSSE3-160]
 | 
				
			||||||
	_ = x[STOSB_SHORT-161]
 | 
						_ = x[STIBP-161]
 | 
				
			||||||
	_ = x[SUCCOR-162]
 | 
						_ = x[STIBP_ALWAYSON-162]
 | 
				
			||||||
	_ = x[SVM-163]
 | 
						_ = x[STOSB_SHORT-163]
 | 
				
			||||||
	_ = x[SVMDA-164]
 | 
						_ = x[SUCCOR-164]
 | 
				
			||||||
	_ = x[SVMFBASID-165]
 | 
						_ = x[SVM-165]
 | 
				
			||||||
	_ = x[SVML-166]
 | 
						_ = x[SVMDA-166]
 | 
				
			||||||
	_ = x[SVMNP-167]
 | 
						_ = x[SVMFBASID-167]
 | 
				
			||||||
	_ = x[SVMPF-168]
 | 
						_ = x[SVML-168]
 | 
				
			||||||
	_ = x[SVMPFT-169]
 | 
						_ = x[SVMNP-169]
 | 
				
			||||||
	_ = x[SYSCALL-170]
 | 
						_ = x[SVMPF-170]
 | 
				
			||||||
	_ = x[SYSEE-171]
 | 
						_ = x[SVMPFT-171]
 | 
				
			||||||
	_ = x[TBM-172]
 | 
						_ = x[SYSCALL-172]
 | 
				
			||||||
	_ = x[TDX_GUEST-173]
 | 
						_ = x[SYSEE-173]
 | 
				
			||||||
	_ = x[TLB_FLUSH_NESTED-174]
 | 
						_ = x[TBM-174]
 | 
				
			||||||
	_ = x[TME-175]
 | 
						_ = x[TDX_GUEST-175]
 | 
				
			||||||
	_ = x[TOPEXT-176]
 | 
						_ = x[TLB_FLUSH_NESTED-176]
 | 
				
			||||||
	_ = x[TSCRATEMSR-177]
 | 
						_ = x[TME-177]
 | 
				
			||||||
	_ = x[TSXLDTRK-178]
 | 
						_ = x[TOPEXT-178]
 | 
				
			||||||
	_ = x[VAES-179]
 | 
						_ = x[TSCRATEMSR-179]
 | 
				
			||||||
	_ = x[VMCBCLEAN-180]
 | 
						_ = x[TSXLDTRK-180]
 | 
				
			||||||
	_ = x[VMPL-181]
 | 
						_ = x[VAES-181]
 | 
				
			||||||
	_ = x[VMSA_REGPROT-182]
 | 
						_ = x[VMCBCLEAN-182]
 | 
				
			||||||
	_ = x[VMX-183]
 | 
						_ = x[VMPL-183]
 | 
				
			||||||
	_ = x[VPCLMULQDQ-184]
 | 
						_ = x[VMSA_REGPROT-184]
 | 
				
			||||||
	_ = x[VTE-185]
 | 
						_ = x[VMX-185]
 | 
				
			||||||
	_ = x[WAITPKG-186]
 | 
						_ = x[VPCLMULQDQ-186]
 | 
				
			||||||
	_ = x[WBNOINVD-187]
 | 
						_ = x[VTE-187]
 | 
				
			||||||
	_ = x[WRMSRNS-188]
 | 
						_ = x[WAITPKG-188]
 | 
				
			||||||
	_ = x[X87-189]
 | 
						_ = x[WBNOINVD-189]
 | 
				
			||||||
	_ = x[XGETBV1-190]
 | 
						_ = x[WRMSRNS-190]
 | 
				
			||||||
	_ = x[XOP-191]
 | 
						_ = x[X87-191]
 | 
				
			||||||
	_ = x[XSAVE-192]
 | 
						_ = x[XGETBV1-192]
 | 
				
			||||||
	_ = x[XSAVEC-193]
 | 
						_ = x[XOP-193]
 | 
				
			||||||
	_ = x[XSAVEOPT-194]
 | 
						_ = x[XSAVE-194]
 | 
				
			||||||
	_ = x[XSAVES-195]
 | 
						_ = x[XSAVEC-195]
 | 
				
			||||||
	_ = x[AESARM-196]
 | 
						_ = x[XSAVEOPT-196]
 | 
				
			||||||
	_ = x[ARMCPUID-197]
 | 
						_ = x[XSAVES-197]
 | 
				
			||||||
	_ = x[ASIMD-198]
 | 
						_ = x[AESARM-198]
 | 
				
			||||||
	_ = x[ASIMDDP-199]
 | 
						_ = x[ARMCPUID-199]
 | 
				
			||||||
	_ = x[ASIMDHP-200]
 | 
						_ = x[ASIMD-200]
 | 
				
			||||||
	_ = x[ASIMDRDM-201]
 | 
						_ = x[ASIMDDP-201]
 | 
				
			||||||
	_ = x[ATOMICS-202]
 | 
						_ = x[ASIMDHP-202]
 | 
				
			||||||
	_ = x[CRC32-203]
 | 
						_ = x[ASIMDRDM-203]
 | 
				
			||||||
	_ = x[DCPOP-204]
 | 
						_ = x[ATOMICS-204]
 | 
				
			||||||
	_ = x[EVTSTRM-205]
 | 
						_ = x[CRC32-205]
 | 
				
			||||||
	_ = x[FCMA-206]
 | 
						_ = x[DCPOP-206]
 | 
				
			||||||
	_ = x[FP-207]
 | 
						_ = x[EVTSTRM-207]
 | 
				
			||||||
	_ = x[FPHP-208]
 | 
						_ = x[FCMA-208]
 | 
				
			||||||
	_ = x[GPA-209]
 | 
						_ = x[FHM-209]
 | 
				
			||||||
	_ = x[JSCVT-210]
 | 
						_ = x[FP-210]
 | 
				
			||||||
	_ = x[LRCPC-211]
 | 
						_ = x[FPHP-211]
 | 
				
			||||||
	_ = x[PMULL-212]
 | 
						_ = x[GPA-212]
 | 
				
			||||||
	_ = x[SHA1-213]
 | 
						_ = x[JSCVT-213]
 | 
				
			||||||
	_ = x[SHA2-214]
 | 
						_ = x[LRCPC-214]
 | 
				
			||||||
	_ = x[SHA3-215]
 | 
						_ = x[PMULL-215]
 | 
				
			||||||
	_ = x[SHA512-216]
 | 
						_ = x[RNDR-216]
 | 
				
			||||||
	_ = x[SM3-217]
 | 
						_ = x[TLB-217]
 | 
				
			||||||
	_ = x[SM4-218]
 | 
						_ = x[TS-218]
 | 
				
			||||||
	_ = x[SVE-219]
 | 
						_ = x[SHA1-219]
 | 
				
			||||||
	_ = x[lastID-220]
 | 
						_ = x[SHA2-220]
 | 
				
			||||||
 | 
						_ = x[SHA3-221]
 | 
				
			||||||
 | 
						_ = x[SHA512-222]
 | 
				
			||||||
 | 
						_ = x[SM3-223]
 | 
				
			||||||
 | 
						_ = x[SM4-224]
 | 
				
			||||||
 | 
						_ = x[SVE-225]
 | 
				
			||||||
 | 
						_ = x[lastID-226]
 | 
				
			||||||
	_ = x[firstID-0]
 | 
						_ = x[firstID-0]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const _FeatureID_name = "firstIDADXAESNIAMD3DNOWAMD3DNOWEXTAMXBF16AMXFP16AMXINT8AMXFP8AMXTILEAPX_FAVXAVX10AVX10_128AVX10_256AVX10_512AVX2AVX512BF16AVX512BITALGAVX512BWAVX512CDAVX512DQAVX512ERAVX512FAVX512FP16AVX512IFMAAVX512PFAVX512VBMIAVX512VBMI2AVX512VLAVX512VNNIAVX512VP2INTERSECTAVX512VPOPCNTDQAVXIFMAAVXNECONVERTAVXSLOWAVXVNNIAVXVNNIINT8AVXVNNIINT16BHI_CTRLBMI1BMI2CETIBTCETSSCLDEMOTECLMULCLZEROCMOVCMPCCXADDCMPSB_SCADBS_SHORTCMPXCHG8CPBOOSTCPPCCX16EFER_LMSLE_UNSENQCMDERMSF16CFLUSH_L1DFMA3FMA4FP128FP256FSRMFXSRFXSROPTGFNIHLEHRESETHTTHWAHYBRID_CPUHYPERVISORIA32_ARCH_CAPIA32_CORE_CAPIBPBIBPB_BRTYPEIBRSIBRS_PREFERREDIBRS_PROVIDES_SMPIBSIBSBRNTRGTIBSFETCHSAMIBSFFVIBSOPCNTIBSOPCNTEXTIBSOPSAMIBSRDWROPCNTIBSRIPINVALIDCHKIBS_FETCH_CTLXIBS_OPDATA4IBS_OPFUSEIBS_PREVENTHOSTIBS_ZEN4IDPRED_CTRLINT_WBINVDINVLPGBKEYLOCKERKEYLOCKERWLAHFLAMLBRVIRTLZCNTMCAOVERFLOWMCDT_NOMCOMMITMD_CLEARMMXMMXEXTMOVBEMOVDIR64BMOVDIRIMOVSB_ZLMOVUMPXMSRIRCMSRLISTMSR_PAGEFLUSHNRIPSNXOSXSAVEPCONFIGPOPCNTPPINPREFETCHIPSFDRDPRURDRANDRDSEEDRDTSCPRRSBA_CTRLRTMRTM_ALWAYS_ABORTSBPBSERIALIZESEVSEV_64BITSEV_ALTERNATIVESEV_DEBUGSWAPSEV_ESSEV_RESTRICTEDSEV_SNPSGXSGXLCSHASMESME_COHERENTSPEC_CTRL_SSBDSRBDS_CTRLSRSO_MSR_FIXSRSO_NOSRSO_USER_KERNEL_NOSSESSE2SSE3SSE4SSE42SSE4ASSSE3STIBPSTIBP_ALWAYSONSTOSB_SHORTSUCCORSVMSVMDASVMFBASIDSVMLSVMNPSVMPFSVMPFTSYSCALLSYSEETBMTDX_GUESTTLB_FLUSH_NESTEDTMETOPEXTTSCRATEMSRTSXLDTRKVAESVMCBCLEANVMPLVMSA_REGPROTVMXVPCLMULQDQVTEWAITPKGWBNOINVDWRMSRNSX87XGETBV1XOPXSAVEXSAVECXSAVEOPTXSAVESAESARMARMCPUIDASIMDASIMDDPASIMDHPASIMDRDMATOMICSCRC32DCPOPEVTSTRMFCMAFPFPHPGPAJSCVTLRCPCPMULLSHA1SHA2SHA3SHA512SM3SM4SVElastID"
 | 
					const _FeatureID_name = "firstIDADXAESNIAMD3DNOWAMD3DNOWEXTAMXBF16AMXFP16AMXINT8AMXFP8AMXTILEAMXTF32AMXCOMPLEXAPX_FAVXAVX10AVX10_128AVX10_256AVX10_512AVX2AVX512BF16AVX512BITALGAVX512BWAVX512CDAVX512DQAVX512ERAVX512FAVX512FP16AVX512IFMAAVX512PFAVX512VBMIAVX512VBMI2AVX512VLAVX512VNNIAVX512VP2INTERSECTAVX512VPOPCNTDQAVXIFMAAVXNECONVERTAVXSLOWAVXVNNIAVXVNNIINT8AVXVNNIINT16BHI_CTRLBMI1BMI2CETIBTCETSSCLDEMOTECLMULCLZEROCMOVCMPCCXADDCMPSB_SCADBS_SHORTCMPXCHG8CPBOOSTCPPCCX16EFER_LMSLE_UNSENQCMDERMSF16CFLUSH_L1DFMA3FMA4FP128FP256FSRMFXSRFXSROPTGFNIHLEHRESETHTTHWAHYBRID_CPUHYPERVISORIA32_ARCH_CAPIA32_CORE_CAPIBPBIBPB_BRTYPEIBRSIBRS_PREFERREDIBRS_PROVIDES_SMPIBSIBSBRNTRGTIBSFETCHSAMIBSFFVIBSOPCNTIBSOPCNTEXTIBSOPSAMIBSRDWROPCNTIBSRIPINVALIDCHKIBS_FETCH_CTLXIBS_OPDATA4IBS_OPFUSEIBS_PREVENTHOSTIBS_ZEN4IDPRED_CTRLINT_WBINVDINVLPGBKEYLOCKERKEYLOCKERWLAHFLAMLBRVIRTLZCNTMCAOVERFLOWMCDT_NOMCOMMITMD_CLEARMMXMMXEXTMOVBEMOVDIR64BMOVDIRIMOVSB_ZLMOVUMPXMSRIRCMSRLISTMSR_PAGEFLUSHNRIPSNXOSXSAVEPCONFIGPOPCNTPPINPREFETCHIPSFDRDPRURDRANDRDSEEDRDTSCPRRSBA_CTRLRTMRTM_ALWAYS_ABORTSBPBSERIALIZESEVSEV_64BITSEV_ALTERNATIVESEV_DEBUGSWAPSEV_ESSEV_RESTRICTEDSEV_SNPSGXSGXLCSHASMESME_COHERENTSPEC_CTRL_SSBDSRBDS_CTRLSRSO_MSR_FIXSRSO_NOSRSO_USER_KERNEL_NOSSESSE2SSE3SSE4SSE42SSE4ASSSE3STIBPSTIBP_ALWAYSONSTOSB_SHORTSUCCORSVMSVMDASVMFBASIDSVMLSVMNPSVMPFSVMPFTSYSCALLSYSEETBMTDX_GUESTTLB_FLUSH_NESTEDTMETOPEXTTSCRATEMSRTSXLDTRKVAESVMCBCLEANVMPLVMSA_REGPROTVMXVPCLMULQDQVTEWAITPKGWBNOINVDWRMSRNSX87XGETBV1XOPXSAVEXSAVECXSAVEOPTXSAVESAESARMARMCPUIDASIMDASIMDDPASIMDHPASIMDRDMATOMICSCRC32DCPOPEVTSTRMFCMAFHMFPFPHPGPAJSCVTLRCPCPMULLRNDRTLBTSSHA1SHA2SHA3SHA512SM3SM4SVElastID"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var _FeatureID_index = [...]uint16{0, 7, 10, 15, 23, 34, 41, 48, 55, 61, 68, 73, 76, 81, 90, 99, 108, 112, 122, 134, 142, 150, 158, 166, 173, 183, 193, 201, 211, 222, 230, 240, 258, 273, 280, 292, 299, 306, 317, 329, 337, 341, 345, 351, 356, 364, 369, 375, 379, 388, 406, 414, 421, 425, 429, 443, 449, 453, 457, 466, 470, 474, 479, 484, 488, 492, 499, 503, 506, 512, 515, 518, 528, 538, 551, 564, 568, 579, 583, 597, 614, 617, 627, 638, 644, 652, 663, 671, 683, 699, 713, 724, 734, 749, 757, 768, 778, 785, 794, 804, 808, 811, 818, 823, 834, 841, 848, 856, 859, 865, 870, 879, 886, 894, 898, 901, 907, 914, 927, 932, 934, 941, 948, 954, 958, 967, 971, 976, 982, 988, 994, 1004, 1007, 1023, 1027, 1036, 1039, 1048, 1063, 1076, 1082, 1096, 1103, 1106, 1111, 1114, 1117, 1129, 1143, 1153, 1165, 1172, 1191, 1194, 1198, 1202, 1206, 1211, 1216, 1221, 1226, 1240, 1251, 1257, 1260, 1265, 1274, 1278, 1283, 1288, 1294, 1301, 1306, 1309, 1318, 1334, 1337, 1343, 1353, 1361, 1365, 1374, 1378, 1390, 1393, 1403, 1406, 1413, 1421, 1428, 1431, 1438, 1441, 1446, 1452, 1460, 1466, 1472, 1480, 1485, 1492, 1499, 1507, 1514, 1519, 1524, 1531, 1535, 1537, 1541, 1544, 1549, 1554, 1559, 1563, 1567, 1571, 1577, 1580, 1583, 1586, 1592}
 | 
					var _FeatureID_index = [...]uint16{0, 7, 10, 15, 23, 34, 41, 48, 55, 61, 68, 75, 85, 90, 93, 98, 107, 116, 125, 129, 139, 151, 159, 167, 175, 183, 190, 200, 210, 218, 228, 239, 247, 257, 275, 290, 297, 309, 316, 323, 334, 346, 354, 358, 362, 368, 373, 381, 386, 392, 396, 405, 423, 431, 438, 442, 446, 460, 466, 470, 474, 483, 487, 491, 496, 501, 505, 509, 516, 520, 523, 529, 532, 535, 545, 555, 568, 581, 585, 596, 600, 614, 631, 634, 644, 655, 661, 669, 680, 688, 700, 716, 730, 741, 751, 766, 774, 785, 795, 802, 811, 821, 825, 828, 835, 840, 851, 858, 865, 873, 876, 882, 887, 896, 903, 911, 915, 918, 924, 931, 944, 949, 951, 958, 965, 971, 975, 984, 988, 993, 999, 1005, 1011, 1021, 1024, 1040, 1044, 1053, 1056, 1065, 1080, 1093, 1099, 1113, 1120, 1123, 1128, 1131, 1134, 1146, 1160, 1170, 1182, 1189, 1208, 1211, 1215, 1219, 1223, 1228, 1233, 1238, 1243, 1257, 1268, 1274, 1277, 1282, 1291, 1295, 1300, 1305, 1311, 1318, 1323, 1326, 1335, 1351, 1354, 1360, 1370, 1378, 1382, 1391, 1395, 1407, 1410, 1420, 1423, 1430, 1438, 1445, 1448, 1455, 1458, 1463, 1469, 1477, 1483, 1489, 1497, 1502, 1509, 1516, 1524, 1531, 1536, 1541, 1548, 1552, 1555, 1557, 1561, 1564, 1569, 1574, 1579, 1583, 1586, 1588, 1592, 1596, 1600, 1606, 1609, 1612, 1615, 1621}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (i FeatureID) String() string {
 | 
					func (i FeatureID) String() string {
 | 
				
			||||||
	if i < 0 || i >= FeatureID(len(_FeatureID_index)-1) {
 | 
						if i < 0 || i >= FeatureID(len(_FeatureID_index)-1) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								vendor/github.com/klauspost/cpuid/v2/os_darwin_arm64.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/klauspost/cpuid/v2/os_darwin_arm64.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -96,9 +96,11 @@ func tryToFillCPUInfoFomSysctl(c *CPUInfo) {
 | 
				
			||||||
	setFeature(c, "hw.optional.arm.FEAT_DPB", DCPOP)
 | 
						setFeature(c, "hw.optional.arm.FEAT_DPB", DCPOP)
 | 
				
			||||||
	// setFeature(c, "", EVTSTRM)
 | 
						// setFeature(c, "", EVTSTRM)
 | 
				
			||||||
	setFeature(c, "hw.optional.arm.FEAT_FCMA", FCMA)
 | 
						setFeature(c, "hw.optional.arm.FEAT_FCMA", FCMA)
 | 
				
			||||||
 | 
						setFeature(c, "hw.optional.arm.FEAT_FHM", FHM)
 | 
				
			||||||
	setFeature(c, "hw.optional.arm.FEAT_FP", FP)
 | 
						setFeature(c, "hw.optional.arm.FEAT_FP", FP)
 | 
				
			||||||
	setFeature(c, "hw.optional.arm.FEAT_FP16", FPHP)
 | 
						setFeature(c, "hw.optional.arm.FEAT_FP16", FPHP)
 | 
				
			||||||
	setFeature(c, "hw.optional.arm.FEAT_PAuth", GPA)
 | 
						setFeature(c, "hw.optional.arm.FEAT_PAuth", GPA)
 | 
				
			||||||
 | 
						setFeature(c, "hw.optional.arm.FEAT_RNG", RNDR)
 | 
				
			||||||
	setFeature(c, "hw.optional.arm.FEAT_JSCVT", JSCVT)
 | 
						setFeature(c, "hw.optional.arm.FEAT_JSCVT", JSCVT)
 | 
				
			||||||
	setFeature(c, "hw.optional.arm.FEAT_LRCPC", LRCPC)
 | 
						setFeature(c, "hw.optional.arm.FEAT_LRCPC", LRCPC)
 | 
				
			||||||
	setFeature(c, "hw.optional.arm.FEAT_PMULL", PMULL)
 | 
						setFeature(c, "hw.optional.arm.FEAT_PMULL", PMULL)
 | 
				
			||||||
| 
						 | 
					@ -106,6 +108,10 @@ func tryToFillCPUInfoFomSysctl(c *CPUInfo) {
 | 
				
			||||||
	setFeature(c, "hw.optional.arm.FEAT_SHA256", SHA2)
 | 
						setFeature(c, "hw.optional.arm.FEAT_SHA256", SHA2)
 | 
				
			||||||
	setFeature(c, "hw.optional.arm.FEAT_SHA3", SHA3)
 | 
						setFeature(c, "hw.optional.arm.FEAT_SHA3", SHA3)
 | 
				
			||||||
	setFeature(c, "hw.optional.arm.FEAT_SHA512", SHA512)
 | 
						setFeature(c, "hw.optional.arm.FEAT_SHA512", SHA512)
 | 
				
			||||||
 | 
						setFeature(c, "hw.optional.arm.FEAT_TLBIOS", TLB)
 | 
				
			||||||
 | 
						setFeature(c, "hw.optional.arm.FEAT_TLBIRANGE", TLB)
 | 
				
			||||||
 | 
						setFeature(c, "hw.optional.arm.FEAT_FlagM", TS)
 | 
				
			||||||
 | 
						setFeature(c, "hw.optional.arm.FEAT_FlagM2", TS)
 | 
				
			||||||
	// setFeature(c, "", SM3)
 | 
						// setFeature(c, "", SM3)
 | 
				
			||||||
	// setFeature(c, "", SM4)
 | 
						// setFeature(c, "", SM4)
 | 
				
			||||||
	setFeature(c, "hw.optional.arm.FEAT_SVE", SVE)
 | 
						setFeature(c, "hw.optional.arm.FEAT_SVE", SVE)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										78
									
								
								vendor/github.com/klauspost/cpuid/v2/os_linux_arm64.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										78
									
								
								vendor/github.com/klauspost/cpuid/v2/os_linux_arm64.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -39,6 +39,80 @@ const (
 | 
				
			||||||
	hwcap_SHA512   = 1 << 21
 | 
						hwcap_SHA512   = 1 << 21
 | 
				
			||||||
	hwcap_SVE      = 1 << 22
 | 
						hwcap_SVE      = 1 << 22
 | 
				
			||||||
	hwcap_ASIMDFHM = 1 << 23
 | 
						hwcap_ASIMDFHM = 1 << 23
 | 
				
			||||||
 | 
						hwcap_DIT      = 1 << 24
 | 
				
			||||||
 | 
						hwcap_USCAT    = 1 << 25
 | 
				
			||||||
 | 
						hwcap_ILRCPC   = 1 << 26
 | 
				
			||||||
 | 
						hwcap_FLAGM    = 1 << 27
 | 
				
			||||||
 | 
						hwcap_SSBS     = 1 << 28
 | 
				
			||||||
 | 
						hwcap_SB       = 1 << 29
 | 
				
			||||||
 | 
						hwcap_PACA     = 1 << 30
 | 
				
			||||||
 | 
						hwcap_PACG     = 1 << 31
 | 
				
			||||||
 | 
						hwcap_GCS      = 1 << 32
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						hwcap2_DCPODP      = 1 << 0
 | 
				
			||||||
 | 
						hwcap2_SVE2        = 1 << 1
 | 
				
			||||||
 | 
						hwcap2_SVEAES      = 1 << 2
 | 
				
			||||||
 | 
						hwcap2_SVEPMULL    = 1 << 3
 | 
				
			||||||
 | 
						hwcap2_SVEBITPERM  = 1 << 4
 | 
				
			||||||
 | 
						hwcap2_SVESHA3     = 1 << 5
 | 
				
			||||||
 | 
						hwcap2_SVESM4      = 1 << 6
 | 
				
			||||||
 | 
						hwcap2_FLAGM2      = 1 << 7
 | 
				
			||||||
 | 
						hwcap2_FRINT       = 1 << 8
 | 
				
			||||||
 | 
						hwcap2_SVEI8MM     = 1 << 9
 | 
				
			||||||
 | 
						hwcap2_SVEF32MM    = 1 << 10
 | 
				
			||||||
 | 
						hwcap2_SVEF64MM    = 1 << 11
 | 
				
			||||||
 | 
						hwcap2_SVEBF16     = 1 << 12
 | 
				
			||||||
 | 
						hwcap2_I8MM        = 1 << 13
 | 
				
			||||||
 | 
						hwcap2_BF16        = 1 << 14
 | 
				
			||||||
 | 
						hwcap2_DGH         = 1 << 15
 | 
				
			||||||
 | 
						hwcap2_RNG         = 1 << 16
 | 
				
			||||||
 | 
						hwcap2_BTI         = 1 << 17
 | 
				
			||||||
 | 
						hwcap2_MTE         = 1 << 18
 | 
				
			||||||
 | 
						hwcap2_ECV         = 1 << 19
 | 
				
			||||||
 | 
						hwcap2_AFP         = 1 << 20
 | 
				
			||||||
 | 
						hwcap2_RPRES       = 1 << 21
 | 
				
			||||||
 | 
						hwcap2_MTE3        = 1 << 22
 | 
				
			||||||
 | 
						hwcap2_SME         = 1 << 23
 | 
				
			||||||
 | 
						hwcap2_SME_I16I64  = 1 << 24
 | 
				
			||||||
 | 
						hwcap2_SME_F64F64  = 1 << 25
 | 
				
			||||||
 | 
						hwcap2_SME_I8I32   = 1 << 26
 | 
				
			||||||
 | 
						hwcap2_SME_F16F32  = 1 << 27
 | 
				
			||||||
 | 
						hwcap2_SME_B16F32  = 1 << 28
 | 
				
			||||||
 | 
						hwcap2_SME_F32F32  = 1 << 29
 | 
				
			||||||
 | 
						hwcap2_SME_FA64    = 1 << 30
 | 
				
			||||||
 | 
						hwcap2_WFXT        = 1 << 31
 | 
				
			||||||
 | 
						hwcap2_EBF16       = 1 << 32
 | 
				
			||||||
 | 
						hwcap2_SVE_EBF16   = 1 << 33
 | 
				
			||||||
 | 
						hwcap2_CSSC        = 1 << 34
 | 
				
			||||||
 | 
						hwcap2_RPRFM       = 1 << 35
 | 
				
			||||||
 | 
						hwcap2_SVE2P1      = 1 << 36
 | 
				
			||||||
 | 
						hwcap2_SME2        = 1 << 37
 | 
				
			||||||
 | 
						hwcap2_SME2P1      = 1 << 38
 | 
				
			||||||
 | 
						hwcap2_SME_I16I32  = 1 << 39
 | 
				
			||||||
 | 
						hwcap2_SME_BI32I32 = 1 << 40
 | 
				
			||||||
 | 
						hwcap2_SME_B16B16  = 1 << 41
 | 
				
			||||||
 | 
						hwcap2_SME_F16F16  = 1 << 42
 | 
				
			||||||
 | 
						hwcap2_MOPS        = 1 << 43
 | 
				
			||||||
 | 
						hwcap2_HBC         = 1 << 44
 | 
				
			||||||
 | 
						hwcap2_SVE_B16B16  = 1 << 45
 | 
				
			||||||
 | 
						hwcap2_LRCPC3      = 1 << 46
 | 
				
			||||||
 | 
						hwcap2_LSE128      = 1 << 47
 | 
				
			||||||
 | 
						hwcap2_FPMR        = 1 << 48
 | 
				
			||||||
 | 
						hwcap2_LUT         = 1 << 49
 | 
				
			||||||
 | 
						hwcap2_FAMINMAX    = 1 << 50
 | 
				
			||||||
 | 
						hwcap2_F8CVT       = 1 << 51
 | 
				
			||||||
 | 
						hwcap2_F8FMA       = 1 << 52
 | 
				
			||||||
 | 
						hwcap2_F8DP4       = 1 << 53
 | 
				
			||||||
 | 
						hwcap2_F8DP2       = 1 << 54
 | 
				
			||||||
 | 
						hwcap2_F8E4M3      = 1 << 55
 | 
				
			||||||
 | 
						hwcap2_F8E5M2      = 1 << 56
 | 
				
			||||||
 | 
						hwcap2_SME_LUTV2   = 1 << 57
 | 
				
			||||||
 | 
						hwcap2_SME_F8F16   = 1 << 58
 | 
				
			||||||
 | 
						hwcap2_SME_F8F32   = 1 << 59
 | 
				
			||||||
 | 
						hwcap2_SME_SF8FMA  = 1 << 60
 | 
				
			||||||
 | 
						hwcap2_SME_SF8DP4  = 1 << 61
 | 
				
			||||||
 | 
						hwcap2_SME_SF8DP2  = 1 << 62
 | 
				
			||||||
 | 
						hwcap2_POE         = 1 << 63
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func detectOS(c *CPUInfo) bool {
 | 
					func detectOS(c *CPUInfo) bool {
 | 
				
			||||||
| 
						 | 
					@ -104,11 +178,15 @@ func detectOS(c *CPUInfo) bool {
 | 
				
			||||||
	c.featureSet.setIf(isSet(hwcap, hwcap_DCPOP), DCPOP)
 | 
						c.featureSet.setIf(isSet(hwcap, hwcap_DCPOP), DCPOP)
 | 
				
			||||||
	c.featureSet.setIf(isSet(hwcap, hwcap_EVTSTRM), EVTSTRM)
 | 
						c.featureSet.setIf(isSet(hwcap, hwcap_EVTSTRM), EVTSTRM)
 | 
				
			||||||
	c.featureSet.setIf(isSet(hwcap, hwcap_FCMA), FCMA)
 | 
						c.featureSet.setIf(isSet(hwcap, hwcap_FCMA), FCMA)
 | 
				
			||||||
 | 
						c.featureSet.setIf(isSet(hwcap, hwcap_ASIMDFHM), FHM)
 | 
				
			||||||
	c.featureSet.setIf(isSet(hwcap, hwcap_FP), FP)
 | 
						c.featureSet.setIf(isSet(hwcap, hwcap_FP), FP)
 | 
				
			||||||
	c.featureSet.setIf(isSet(hwcap, hwcap_FPHP), FPHP)
 | 
						c.featureSet.setIf(isSet(hwcap, hwcap_FPHP), FPHP)
 | 
				
			||||||
	c.featureSet.setIf(isSet(hwcap, hwcap_JSCVT), JSCVT)
 | 
						c.featureSet.setIf(isSet(hwcap, hwcap_JSCVT), JSCVT)
 | 
				
			||||||
	c.featureSet.setIf(isSet(hwcap, hwcap_LRCPC), LRCPC)
 | 
						c.featureSet.setIf(isSet(hwcap, hwcap_LRCPC), LRCPC)
 | 
				
			||||||
	c.featureSet.setIf(isSet(hwcap, hwcap_PMULL), PMULL)
 | 
						c.featureSet.setIf(isSet(hwcap, hwcap_PMULL), PMULL)
 | 
				
			||||||
 | 
						c.featureSet.setIf(isSet(hwcap, hwcap2_RNG), RNDR)
 | 
				
			||||||
 | 
						// c.featureSet.setIf(isSet(hwcap, hwcap_), TLB)
 | 
				
			||||||
 | 
						// c.featureSet.setIf(isSet(hwcap, hwcap_), TS)
 | 
				
			||||||
	c.featureSet.setIf(isSet(hwcap, hwcap_SHA1), SHA1)
 | 
						c.featureSet.setIf(isSet(hwcap, hwcap_SHA1), SHA1)
 | 
				
			||||||
	c.featureSet.setIf(isSet(hwcap, hwcap_SHA2), SHA2)
 | 
						c.featureSet.setIf(isSet(hwcap, hwcap_SHA2), SHA2)
 | 
				
			||||||
	c.featureSet.setIf(isSet(hwcap, hwcap_SHA3), SHA3)
 | 
						c.featureSet.setIf(isSet(hwcap, hwcap_SHA3), SHA3)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										202
									
								
								vendor/github.com/minio/crc64nvme/LICENSE
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										202
									
								
								vendor/github.com/minio/crc64nvme/LICENSE
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,202 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                 Apache License
 | 
				
			||||||
 | 
					                           Version 2.0, January 2004
 | 
				
			||||||
 | 
					                        http://www.apache.org/licenses/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   1. Definitions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      "License" shall mean the terms and conditions for use, reproduction,
 | 
				
			||||||
 | 
					      and distribution as defined by Sections 1 through 9 of this document.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      "Licensor" shall mean the copyright owner or entity authorized by
 | 
				
			||||||
 | 
					      the copyright owner that is granting the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      "Legal Entity" shall mean the union of the acting entity and all
 | 
				
			||||||
 | 
					      other entities that control, are controlled by, or are under common
 | 
				
			||||||
 | 
					      control with that entity. For the purposes of this definition,
 | 
				
			||||||
 | 
					      "control" means (i) the power, direct or indirect, to cause the
 | 
				
			||||||
 | 
					      direction or management of such entity, whether by contract or
 | 
				
			||||||
 | 
					      otherwise, or (ii) ownership of fifty percent (50%) or more of the
 | 
				
			||||||
 | 
					      outstanding shares, or (iii) beneficial ownership of such entity.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      "You" (or "Your") shall mean an individual or Legal Entity
 | 
				
			||||||
 | 
					      exercising permissions granted by this License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      "Source" form shall mean the preferred form for making modifications,
 | 
				
			||||||
 | 
					      including but not limited to software source code, documentation
 | 
				
			||||||
 | 
					      source, and configuration files.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      "Object" form shall mean any form resulting from mechanical
 | 
				
			||||||
 | 
					      transformation or translation of a Source form, including but
 | 
				
			||||||
 | 
					      not limited to compiled object code, generated documentation,
 | 
				
			||||||
 | 
					      and conversions to other media types.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      "Work" shall mean the work of authorship, whether in Source or
 | 
				
			||||||
 | 
					      Object form, made available under the License, as indicated by a
 | 
				
			||||||
 | 
					      copyright notice that is included in or attached to the work
 | 
				
			||||||
 | 
					      (an example is provided in the Appendix below).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      "Derivative Works" shall mean any work, whether in Source or Object
 | 
				
			||||||
 | 
					      form, that is based on (or derived from) the Work and for which the
 | 
				
			||||||
 | 
					      editorial revisions, annotations, elaborations, or other modifications
 | 
				
			||||||
 | 
					      represent, as a whole, an original work of authorship. For the purposes
 | 
				
			||||||
 | 
					      of this License, Derivative Works shall not include works that remain
 | 
				
			||||||
 | 
					      separable from, or merely link (or bind by name) to the interfaces of,
 | 
				
			||||||
 | 
					      the Work and Derivative Works thereof.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      "Contribution" shall mean any work of authorship, including
 | 
				
			||||||
 | 
					      the original version of the Work and any modifications or additions
 | 
				
			||||||
 | 
					      to that Work or Derivative Works thereof, that is intentionally
 | 
				
			||||||
 | 
					      submitted to Licensor for inclusion in the Work by the copyright owner
 | 
				
			||||||
 | 
					      or by an individual or Legal Entity authorized to submit on behalf of
 | 
				
			||||||
 | 
					      the copyright owner. For the purposes of this definition, "submitted"
 | 
				
			||||||
 | 
					      means any form of electronic, verbal, or written communication sent
 | 
				
			||||||
 | 
					      to the Licensor or its representatives, including but not limited to
 | 
				
			||||||
 | 
					      communication on electronic mailing lists, source code control systems,
 | 
				
			||||||
 | 
					      and issue tracking systems that are managed by, or on behalf of, the
 | 
				
			||||||
 | 
					      Licensor for the purpose of discussing and improving the Work, but
 | 
				
			||||||
 | 
					      excluding communication that is conspicuously marked or otherwise
 | 
				
			||||||
 | 
					      designated in writing by the copyright owner as "Not a Contribution."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      "Contributor" shall mean Licensor and any individual or Legal Entity
 | 
				
			||||||
 | 
					      on behalf of whom a Contribution has been received by Licensor and
 | 
				
			||||||
 | 
					      subsequently incorporated within the Work.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   2. Grant of Copyright License. Subject to the terms and conditions of
 | 
				
			||||||
 | 
					      this License, each Contributor hereby grants to You a perpetual,
 | 
				
			||||||
 | 
					      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 | 
				
			||||||
 | 
					      copyright license to reproduce, prepare Derivative Works of,
 | 
				
			||||||
 | 
					      publicly display, publicly perform, sublicense, and distribute the
 | 
				
			||||||
 | 
					      Work and such Derivative Works in Source or Object form.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   3. Grant of Patent License. Subject to the terms and conditions of
 | 
				
			||||||
 | 
					      this License, each Contributor hereby grants to You a perpetual,
 | 
				
			||||||
 | 
					      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 | 
				
			||||||
 | 
					      (except as stated in this section) patent license to make, have made,
 | 
				
			||||||
 | 
					      use, offer to sell, sell, import, and otherwise transfer the Work,
 | 
				
			||||||
 | 
					      where such license applies only to those patent claims licensable
 | 
				
			||||||
 | 
					      by such Contributor that are necessarily infringed by their
 | 
				
			||||||
 | 
					      Contribution(s) alone or by combination of their Contribution(s)
 | 
				
			||||||
 | 
					      with the Work to which such Contribution(s) was submitted. If You
 | 
				
			||||||
 | 
					      institute patent litigation against any entity (including a
 | 
				
			||||||
 | 
					      cross-claim or counterclaim in a lawsuit) alleging that the Work
 | 
				
			||||||
 | 
					      or a Contribution incorporated within the Work constitutes direct
 | 
				
			||||||
 | 
					      or contributory patent infringement, then any patent licenses
 | 
				
			||||||
 | 
					      granted to You under this License for that Work shall terminate
 | 
				
			||||||
 | 
					      as of the date such litigation is filed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   4. Redistribution. You may reproduce and distribute copies of the
 | 
				
			||||||
 | 
					      Work or Derivative Works thereof in any medium, with or without
 | 
				
			||||||
 | 
					      modifications, and in Source or Object form, provided that You
 | 
				
			||||||
 | 
					      meet the following conditions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      (a) You must give any other recipients of the Work or
 | 
				
			||||||
 | 
					          Derivative Works a copy of this License; and
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      (b) You must cause any modified files to carry prominent notices
 | 
				
			||||||
 | 
					          stating that You changed the files; and
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      (c) You must retain, in the Source form of any Derivative Works
 | 
				
			||||||
 | 
					          that You distribute, all copyright, patent, trademark, and
 | 
				
			||||||
 | 
					          attribution notices from the Source form of the Work,
 | 
				
			||||||
 | 
					          excluding those notices that do not pertain to any part of
 | 
				
			||||||
 | 
					          the Derivative Works; and
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      (d) If the Work includes a "NOTICE" text file as part of its
 | 
				
			||||||
 | 
					          distribution, then any Derivative Works that You distribute must
 | 
				
			||||||
 | 
					          include a readable copy of the attribution notices contained
 | 
				
			||||||
 | 
					          within such NOTICE file, excluding those notices that do not
 | 
				
			||||||
 | 
					          pertain to any part of the Derivative Works, in at least one
 | 
				
			||||||
 | 
					          of the following places: within a NOTICE text file distributed
 | 
				
			||||||
 | 
					          as part of the Derivative Works; within the Source form or
 | 
				
			||||||
 | 
					          documentation, if provided along with the Derivative Works; or,
 | 
				
			||||||
 | 
					          within a display generated by the Derivative Works, if and
 | 
				
			||||||
 | 
					          wherever such third-party notices normally appear. The contents
 | 
				
			||||||
 | 
					          of the NOTICE file are for informational purposes only and
 | 
				
			||||||
 | 
					          do not modify the License. You may add Your own attribution
 | 
				
			||||||
 | 
					          notices within Derivative Works that You distribute, alongside
 | 
				
			||||||
 | 
					          or as an addendum to the NOTICE text from the Work, provided
 | 
				
			||||||
 | 
					          that such additional attribution notices cannot be construed
 | 
				
			||||||
 | 
					          as modifying the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      You may add Your own copyright statement to Your modifications and
 | 
				
			||||||
 | 
					      may provide additional or different license terms and conditions
 | 
				
			||||||
 | 
					      for use, reproduction, or distribution of Your modifications, or
 | 
				
			||||||
 | 
					      for any such Derivative Works as a whole, provided Your use,
 | 
				
			||||||
 | 
					      reproduction, and distribution of the Work otherwise complies with
 | 
				
			||||||
 | 
					      the conditions stated in this License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   5. Submission of Contributions. Unless You explicitly state otherwise,
 | 
				
			||||||
 | 
					      any Contribution intentionally submitted for inclusion in the Work
 | 
				
			||||||
 | 
					      by You to the Licensor shall be under the terms and conditions of
 | 
				
			||||||
 | 
					      this License, without any additional terms or conditions.
 | 
				
			||||||
 | 
					      Notwithstanding the above, nothing herein shall supersede or modify
 | 
				
			||||||
 | 
					      the terms of any separate license agreement you may have executed
 | 
				
			||||||
 | 
					      with Licensor regarding such Contributions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   6. Trademarks. This License does not grant permission to use the trade
 | 
				
			||||||
 | 
					      names, trademarks, service marks, or product names of the Licensor,
 | 
				
			||||||
 | 
					      except as required for reasonable and customary use in describing the
 | 
				
			||||||
 | 
					      origin of the Work and reproducing the content of the NOTICE file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   7. Disclaimer of Warranty. Unless required by applicable law or
 | 
				
			||||||
 | 
					      agreed to in writing, Licensor provides the Work (and each
 | 
				
			||||||
 | 
					      Contributor provides its Contributions) on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 | 
				
			||||||
 | 
					      implied, including, without limitation, any warranties or conditions
 | 
				
			||||||
 | 
					      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
 | 
				
			||||||
 | 
					      PARTICULAR PURPOSE. You are solely responsible for determining the
 | 
				
			||||||
 | 
					      appropriateness of using or redistributing the Work and assume any
 | 
				
			||||||
 | 
					      risks associated with Your exercise of permissions under this License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   8. Limitation of Liability. In no event and under no legal theory,
 | 
				
			||||||
 | 
					      whether in tort (including negligence), contract, or otherwise,
 | 
				
			||||||
 | 
					      unless required by applicable law (such as deliberate and grossly
 | 
				
			||||||
 | 
					      negligent acts) or agreed to in writing, shall any Contributor be
 | 
				
			||||||
 | 
					      liable to You for damages, including any direct, indirect, special,
 | 
				
			||||||
 | 
					      incidental, or consequential damages of any character arising as a
 | 
				
			||||||
 | 
					      result of this License or out of the use or inability to use the
 | 
				
			||||||
 | 
					      Work (including but not limited to damages for loss of goodwill,
 | 
				
			||||||
 | 
					      work stoppage, computer failure or malfunction, or any and all
 | 
				
			||||||
 | 
					      other commercial damages or losses), even if such Contributor
 | 
				
			||||||
 | 
					      has been advised of the possibility of such damages.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   9. Accepting Warranty or Additional Liability. While redistributing
 | 
				
			||||||
 | 
					      the Work or Derivative Works thereof, You may choose to offer,
 | 
				
			||||||
 | 
					      and charge a fee for, acceptance of support, warranty, indemnity,
 | 
				
			||||||
 | 
					      or other liability obligations and/or rights consistent with this
 | 
				
			||||||
 | 
					      License. However, in accepting such obligations, You may act only
 | 
				
			||||||
 | 
					      on Your own behalf and on Your sole responsibility, not on behalf
 | 
				
			||||||
 | 
					      of any other Contributor, and only if You agree to indemnify,
 | 
				
			||||||
 | 
					      defend, and hold each Contributor harmless for any liability
 | 
				
			||||||
 | 
					      incurred by, or claims asserted against, such Contributor by reason
 | 
				
			||||||
 | 
					      of your accepting any such warranty or additional liability.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   END OF TERMS AND CONDITIONS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   APPENDIX: How to apply the Apache License to your work.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      To apply the Apache License to your work, attach the following
 | 
				
			||||||
 | 
					      boilerplate notice, with the fields enclosed by brackets "[]"
 | 
				
			||||||
 | 
					      replaced with your own identifying information. (Don't include
 | 
				
			||||||
 | 
					      the brackets!)  The text should be enclosed in the appropriate
 | 
				
			||||||
 | 
					      comment syntax for the file format. We also recommend that a
 | 
				
			||||||
 | 
					      file or class name and description of purpose be included on the
 | 
				
			||||||
 | 
					      same "printed page" as the copyright notice for easier
 | 
				
			||||||
 | 
					      identification within third-party archives.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Copyright [yyyy] [name of copyright owner]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					   you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					   You may obtain a copy of the License at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					   distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					   See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					   limitations under the License.
 | 
				
			||||||
							
								
								
									
										20
									
								
								vendor/github.com/minio/crc64nvme/README.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								vendor/github.com/minio/crc64nvme/README.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## crc64nvme
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This Golang package calculates CRC64 checksums using carryless-multiplication accelerated with SIMD instructions for both ARM and x86. It is based on the NVME polynomial as specified in the [NVM Express® NVM Command Set Specification](https://nvmexpress.org/wp-content/uploads/NVM-Express-NVM-Command-Set-Specification-1.0d-2023.12.28-Ratified.pdf).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The code is based on the [crc64fast-nvme](https://github.com/awesomized/crc64fast-nvme.git) package in Rust and is released under the Apache 2.0 license.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For more background on the exact technique used, see this [Fast CRC Computation for Generic Polynomials Using PCLMULQDQ Instruction](https://web.archive.org/web/20131224125630/https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf) paper.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Performance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To follow.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Requirements
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					All Go versions >= 1.22 are supported.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Contributing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Contributions are welcome, please send PRs for any enhancements.
 | 
				
			||||||
							
								
								
									
										180
									
								
								vendor/github.com/minio/crc64nvme/crc64.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										180
									
								
								vendor/github.com/minio/crc64nvme/crc64.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,180 @@
 | 
				
			||||||
 | 
					// Copyright (c) 2025 Minio Inc. All rights reserved.
 | 
				
			||||||
 | 
					// Use of this source code is governed by a license that can be
 | 
				
			||||||
 | 
					// found in the LICENSE file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Package crc64nvme implements the 64-bit cyclic redundancy check with NVME polynomial.
 | 
				
			||||||
 | 
					package crc64nvme
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"encoding/binary"
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						"hash"
 | 
				
			||||||
 | 
						"sync"
 | 
				
			||||||
 | 
						"unsafe"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// The size of a CRC-64 checksum in bytes.
 | 
				
			||||||
 | 
						Size = 8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// The NVME polynoimial (reversed, as used by Go)
 | 
				
			||||||
 | 
						NVME = 0x9a6c9329ac4bc9b5
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var (
 | 
				
			||||||
 | 
						// precalculated table.
 | 
				
			||||||
 | 
						nvmeTable = makeTable(NVME)
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// table is a 256-word table representing the polynomial for efficient processing.
 | 
				
			||||||
 | 
					type table [256]uint64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var (
 | 
				
			||||||
 | 
						slicing8TablesBuildOnce sync.Once
 | 
				
			||||||
 | 
						slicing8TableNVME       *[8]table
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func buildSlicing8TablesOnce() {
 | 
				
			||||||
 | 
						slicing8TablesBuildOnce.Do(buildSlicing8Tables)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func buildSlicing8Tables() {
 | 
				
			||||||
 | 
						slicing8TableNVME = makeSlicingBy8Table(makeTable(NVME))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func makeTable(poly uint64) *table {
 | 
				
			||||||
 | 
						t := new(table)
 | 
				
			||||||
 | 
						for i := 0; i < 256; i++ {
 | 
				
			||||||
 | 
							crc := uint64(i)
 | 
				
			||||||
 | 
							for j := 0; j < 8; j++ {
 | 
				
			||||||
 | 
								if crc&1 == 1 {
 | 
				
			||||||
 | 
									crc = (crc >> 1) ^ poly
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									crc >>= 1
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							t[i] = crc
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return t
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func makeSlicingBy8Table(t *table) *[8]table {
 | 
				
			||||||
 | 
						var helperTable [8]table
 | 
				
			||||||
 | 
						helperTable[0] = *t
 | 
				
			||||||
 | 
						for i := 0; i < 256; i++ {
 | 
				
			||||||
 | 
							crc := t[i]
 | 
				
			||||||
 | 
							for j := 1; j < 8; j++ {
 | 
				
			||||||
 | 
								crc = t[crc&0xff] ^ (crc >> 8)
 | 
				
			||||||
 | 
								helperTable[j][i] = crc
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &helperTable
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// digest represents the partial evaluation of a checksum.
 | 
				
			||||||
 | 
					type digest struct {
 | 
				
			||||||
 | 
						crc uint64
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// New creates a new hash.Hash64 computing the CRC-64 checksum using the
 | 
				
			||||||
 | 
					// NVME polynomial. Its Sum method will lay the
 | 
				
			||||||
 | 
					// value out in big-endian byte order. The returned Hash64 also
 | 
				
			||||||
 | 
					// implements [encoding.BinaryMarshaler] and [encoding.BinaryUnmarshaler] to
 | 
				
			||||||
 | 
					// marshal and unmarshal the internal state of the hash.
 | 
				
			||||||
 | 
					func New() hash.Hash64 { return &digest{0} }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (d *digest) Size() int { return Size }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (d *digest) BlockSize() int { return 1 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (d *digest) Reset() { d.crc = 0 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						magic         = "crc\x02"
 | 
				
			||||||
 | 
						marshaledSize = len(magic) + 8 + 8
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (d *digest) MarshalBinary() ([]byte, error) {
 | 
				
			||||||
 | 
						b := make([]byte, 0, marshaledSize)
 | 
				
			||||||
 | 
						b = append(b, magic...)
 | 
				
			||||||
 | 
						b = binary.BigEndian.AppendUint64(b, tableSum)
 | 
				
			||||||
 | 
						b = binary.BigEndian.AppendUint64(b, d.crc)
 | 
				
			||||||
 | 
						return b, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (d *digest) UnmarshalBinary(b []byte) error {
 | 
				
			||||||
 | 
						if len(b) < len(magic) || string(b[:len(magic)]) != magic {
 | 
				
			||||||
 | 
							return errors.New("hash/crc64: invalid hash state identifier")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if len(b) != marshaledSize {
 | 
				
			||||||
 | 
							return errors.New("hash/crc64: invalid hash state size")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if tableSum != binary.BigEndian.Uint64(b[4:]) {
 | 
				
			||||||
 | 
							return errors.New("hash/crc64: tables do not match")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						d.crc = binary.BigEndian.Uint64(b[12:])
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func update(crc uint64, p []byte) uint64 {
 | 
				
			||||||
 | 
						if hasAsm && len(p) > 127 {
 | 
				
			||||||
 | 
							ptr := unsafe.Pointer(&p[0])
 | 
				
			||||||
 | 
							if align := (uintptr(ptr)+15)&^0xf - uintptr(ptr); align > 0 {
 | 
				
			||||||
 | 
								// Align to 16-byte boundary.
 | 
				
			||||||
 | 
								crc = update(crc, p[:align])
 | 
				
			||||||
 | 
								p = p[align:]
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							runs := len(p) / 128
 | 
				
			||||||
 | 
							crc = updateAsm(crc, p[:128*runs])
 | 
				
			||||||
 | 
							return update(crc, p[128*runs:])
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						buildSlicing8TablesOnce()
 | 
				
			||||||
 | 
						crc = ^crc
 | 
				
			||||||
 | 
						// table comparison is somewhat expensive, so avoid it for small sizes
 | 
				
			||||||
 | 
						for len(p) >= 64 {
 | 
				
			||||||
 | 
							var helperTable = slicing8TableNVME
 | 
				
			||||||
 | 
							// Update using slicing-by-8
 | 
				
			||||||
 | 
							for len(p) > 8 {
 | 
				
			||||||
 | 
								crc ^= binary.LittleEndian.Uint64(p)
 | 
				
			||||||
 | 
								crc = helperTable[7][crc&0xff] ^
 | 
				
			||||||
 | 
									helperTable[6][(crc>>8)&0xff] ^
 | 
				
			||||||
 | 
									helperTable[5][(crc>>16)&0xff] ^
 | 
				
			||||||
 | 
									helperTable[4][(crc>>24)&0xff] ^
 | 
				
			||||||
 | 
									helperTable[3][(crc>>32)&0xff] ^
 | 
				
			||||||
 | 
									helperTable[2][(crc>>40)&0xff] ^
 | 
				
			||||||
 | 
									helperTable[1][(crc>>48)&0xff] ^
 | 
				
			||||||
 | 
									helperTable[0][crc>>56]
 | 
				
			||||||
 | 
								p = p[8:]
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						// For reminders or small sizes
 | 
				
			||||||
 | 
						for _, v := range p {
 | 
				
			||||||
 | 
							crc = nvmeTable[byte(crc)^v] ^ (crc >> 8)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ^crc
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Update returns the result of adding the bytes in p to the crc.
 | 
				
			||||||
 | 
					func Update(crc uint64, p []byte) uint64 {
 | 
				
			||||||
 | 
						return update(crc, p)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (d *digest) Write(p []byte) (n int, err error) {
 | 
				
			||||||
 | 
						d.crc = update(d.crc, p)
 | 
				
			||||||
 | 
						return len(p), nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (d *digest) Sum64() uint64 { return d.crc }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (d *digest) Sum(in []byte) []byte {
 | 
				
			||||||
 | 
						s := d.Sum64()
 | 
				
			||||||
 | 
						return append(in, byte(s>>56), byte(s>>48), byte(s>>40), byte(s>>32), byte(s>>24), byte(s>>16), byte(s>>8), byte(s))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Checksum returns the CRC-64 checksum of data
 | 
				
			||||||
 | 
					// using the NVME polynomial.
 | 
				
			||||||
 | 
					func Checksum(data []byte) uint64 { return update(0, data) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ISO tablesum of NVME poly
 | 
				
			||||||
 | 
					const tableSum = 0x8ddd9ee4402c7163
 | 
				
			||||||
							
								
								
									
										15
									
								
								vendor/github.com/minio/crc64nvme/crc64_amd64.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/minio/crc64nvme/crc64_amd64.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					// Copyright (c) 2025 Minio Inc. All rights reserved.
 | 
				
			||||||
 | 
					// Use of this source code is governed by a license that can be
 | 
				
			||||||
 | 
					// found in the LICENSE file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//go:build !noasm && !appengine && !gccgo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package crc64nvme
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"github.com/klauspost/cpuid/v2"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var hasAsm = cpuid.CPU.Supports(cpuid.SSE2, cpuid.CLMUL, cpuid.SSE4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func updateAsm(crc uint64, p []byte) (checksum uint64)
 | 
				
			||||||
							
								
								
									
										157
									
								
								vendor/github.com/minio/crc64nvme/crc64_amd64.s
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										157
									
								
								vendor/github.com/minio/crc64nvme/crc64_amd64.s
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,157 @@
 | 
				
			||||||
 | 
					// Copyright (c) 2025 Minio Inc. All rights reserved.
 | 
				
			||||||
 | 
					// Use of this source code is governed by a license that can be
 | 
				
			||||||
 | 
					// found in the LICENSE file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//go:build !noasm && !appengine && !gccgo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "textflag.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TEXT ·updateAsm(SB), $0-40
 | 
				
			||||||
 | 
						MOVQ crc+0(FP), AX    // checksum
 | 
				
			||||||
 | 
						MOVQ p_base+8(FP), SI // start pointer
 | 
				
			||||||
 | 
						MOVQ p_len+16(FP), CX // length of buffer
 | 
				
			||||||
 | 
						NOTQ AX
 | 
				
			||||||
 | 
						SHRQ $7, CX
 | 
				
			||||||
 | 
						CMPQ CX, $1
 | 
				
			||||||
 | 
						JLT  skip128
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						VMOVDQA 0x00(SI), X0
 | 
				
			||||||
 | 
						VMOVDQA 0x10(SI), X1
 | 
				
			||||||
 | 
						VMOVDQA 0x20(SI), X2
 | 
				
			||||||
 | 
						VMOVDQA 0x30(SI), X3
 | 
				
			||||||
 | 
						VMOVDQA 0x40(SI), X4
 | 
				
			||||||
 | 
						VMOVDQA 0x50(SI), X5
 | 
				
			||||||
 | 
						VMOVDQA 0x60(SI), X6
 | 
				
			||||||
 | 
						VMOVDQA 0x70(SI), X7
 | 
				
			||||||
 | 
						MOVQ    AX, X8
 | 
				
			||||||
 | 
						PXOR    X8, X0
 | 
				
			||||||
 | 
						CMPQ    CX, $1
 | 
				
			||||||
 | 
						JE      tail128
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						MOVQ   $0xa1ca681e733f9c40, AX
 | 
				
			||||||
 | 
						MOVQ   AX, X8
 | 
				
			||||||
 | 
						MOVQ   $0x5f852fb61e8d92dc, AX
 | 
				
			||||||
 | 
						PINSRQ $0x1, AX, X9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					loop128:
 | 
				
			||||||
 | 
						ADDQ      $128, SI
 | 
				
			||||||
 | 
						SUBQ      $1, CX
 | 
				
			||||||
 | 
						VMOVDQA   X0, X10
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X8, X10
 | 
				
			||||||
 | 
						PCLMULQDQ $0x11, X9, X0
 | 
				
			||||||
 | 
						PXOR      X10, X0
 | 
				
			||||||
 | 
						PXOR      0(SI), X0
 | 
				
			||||||
 | 
						VMOVDQA   X1, X10
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X8, X10
 | 
				
			||||||
 | 
						PCLMULQDQ $0x11, X9, X1
 | 
				
			||||||
 | 
						PXOR      X10, X1
 | 
				
			||||||
 | 
						PXOR      0x10(SI), X1
 | 
				
			||||||
 | 
						VMOVDQA   X2, X10
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X8, X10
 | 
				
			||||||
 | 
						PCLMULQDQ $0x11, X9, X2
 | 
				
			||||||
 | 
						PXOR      X10, X2
 | 
				
			||||||
 | 
						PXOR      0x20(SI), X2
 | 
				
			||||||
 | 
						VMOVDQA   X3, X10
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X8, X10
 | 
				
			||||||
 | 
						PCLMULQDQ $0x11, X9, X3
 | 
				
			||||||
 | 
						PXOR      X10, X3
 | 
				
			||||||
 | 
						PXOR      0x30(SI), X3
 | 
				
			||||||
 | 
						VMOVDQA   X4, X10
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X8, X10
 | 
				
			||||||
 | 
						PCLMULQDQ $0x11, X9, X4
 | 
				
			||||||
 | 
						PXOR      X10, X4
 | 
				
			||||||
 | 
						PXOR      0x40(SI), X4
 | 
				
			||||||
 | 
						VMOVDQA   X5, X10
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X8, X10
 | 
				
			||||||
 | 
						PCLMULQDQ $0x11, X9, X5
 | 
				
			||||||
 | 
						PXOR      X10, X5
 | 
				
			||||||
 | 
						PXOR      0x50(SI), X5
 | 
				
			||||||
 | 
						VMOVDQA   X6, X10
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X8, X10
 | 
				
			||||||
 | 
						PCLMULQDQ $0x11, X9, X6
 | 
				
			||||||
 | 
						PXOR      X10, X6
 | 
				
			||||||
 | 
						PXOR      0x60(SI), X6
 | 
				
			||||||
 | 
						VMOVDQA   X7, X10
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X8, X10
 | 
				
			||||||
 | 
						PCLMULQDQ $0x11, X9, X7
 | 
				
			||||||
 | 
						PXOR      X10, X7
 | 
				
			||||||
 | 
						PXOR      0x70(SI), X7
 | 
				
			||||||
 | 
						CMPQ      CX, $1
 | 
				
			||||||
 | 
						JGT       loop128
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tail128:
 | 
				
			||||||
 | 
						MOVQ      $0xd083dd594d96319d, AX
 | 
				
			||||||
 | 
						MOVQ      AX, X11
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X0, X11
 | 
				
			||||||
 | 
						MOVQ      $0x946588403d4adcbc, AX
 | 
				
			||||||
 | 
						PINSRQ    $0x1, AX, X12
 | 
				
			||||||
 | 
						PCLMULQDQ $0x11, X12, X0
 | 
				
			||||||
 | 
						PXOR      X11, X7
 | 
				
			||||||
 | 
						PXOR      X0, X7
 | 
				
			||||||
 | 
						MOVQ      $0x3c255f5ebc414423, AX
 | 
				
			||||||
 | 
						MOVQ      AX, X11
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X1, X11
 | 
				
			||||||
 | 
						MOVQ      $0x34f5a24e22d66e90, AX
 | 
				
			||||||
 | 
						PINSRQ    $0x1, AX, X12
 | 
				
			||||||
 | 
						PCLMULQDQ $0x11, X12, X1
 | 
				
			||||||
 | 
						PXOR      X11, X1
 | 
				
			||||||
 | 
						PXOR      X7, X1
 | 
				
			||||||
 | 
						MOVQ      $0x7b0ab10dd0f809fe, AX
 | 
				
			||||||
 | 
						MOVQ      AX, X11
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X2, X11
 | 
				
			||||||
 | 
						MOVQ      $0x03363823e6e791e5, AX
 | 
				
			||||||
 | 
						PINSRQ    $0x1, AX, X12
 | 
				
			||||||
 | 
						PCLMULQDQ $0x11, X12, X2
 | 
				
			||||||
 | 
						PXOR      X11, X2
 | 
				
			||||||
 | 
						PXOR      X1, X2
 | 
				
			||||||
 | 
						MOVQ      $0x0c32cdb31e18a84a, AX
 | 
				
			||||||
 | 
						MOVQ      AX, X11
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X3, X11
 | 
				
			||||||
 | 
						MOVQ      $0x62242240ace5045a, AX
 | 
				
			||||||
 | 
						PINSRQ    $0x1, AX, X12
 | 
				
			||||||
 | 
						PCLMULQDQ $0x11, X12, X3
 | 
				
			||||||
 | 
						PXOR      X11, X3
 | 
				
			||||||
 | 
						PXOR      X2, X3
 | 
				
			||||||
 | 
						MOVQ      $0xbdd7ac0ee1a4a0f0, AX
 | 
				
			||||||
 | 
						MOVQ      AX, X11
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X4, X11
 | 
				
			||||||
 | 
						MOVQ      $0xa3ffdc1fe8e82a8b, AX
 | 
				
			||||||
 | 
						PINSRQ    $0x1, AX, X12
 | 
				
			||||||
 | 
						PCLMULQDQ $0x11, X12, X4
 | 
				
			||||||
 | 
						PXOR      X11, X4
 | 
				
			||||||
 | 
						PXOR      X3, X4
 | 
				
			||||||
 | 
						MOVQ      $0xb0bc2e589204f500, AX
 | 
				
			||||||
 | 
						MOVQ      AX, X11
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X5, X11
 | 
				
			||||||
 | 
						MOVQ      $0xe1e0bb9d45d7a44c, AX
 | 
				
			||||||
 | 
						PINSRQ    $0x1, AX, X12
 | 
				
			||||||
 | 
						PCLMULQDQ $0x11, X12, X5
 | 
				
			||||||
 | 
						PXOR      X11, X5
 | 
				
			||||||
 | 
						PXOR      X4, X5
 | 
				
			||||||
 | 
						MOVQ      $0xeadc41fd2ba3d420, AX
 | 
				
			||||||
 | 
						MOVQ      AX, X11
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X6, X11
 | 
				
			||||||
 | 
						MOVQ      $0x21e9761e252621ac, AX
 | 
				
			||||||
 | 
						PINSRQ    $0x1, AX, X12
 | 
				
			||||||
 | 
						PCLMULQDQ $0x11, X12, X6
 | 
				
			||||||
 | 
						PXOR      X11, X6
 | 
				
			||||||
 | 
						PXOR      X5, X6
 | 
				
			||||||
 | 
						MOVQ      AX, X5
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X6, X5
 | 
				
			||||||
 | 
						PSHUFD    $0xee, X6, X6
 | 
				
			||||||
 | 
						PXOR      X5, X6
 | 
				
			||||||
 | 
						MOVQ      $0x27ecfa329aef9f77, AX
 | 
				
			||||||
 | 
						MOVQ      AX, X4
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X4, X6
 | 
				
			||||||
 | 
						PEXTRQ    $0, X6, BX
 | 
				
			||||||
 | 
						MOVQ      $0x34d926535897936b, AX
 | 
				
			||||||
 | 
						MOVQ      AX, X4
 | 
				
			||||||
 | 
						PCLMULQDQ $0x00, X4, X6
 | 
				
			||||||
 | 
						PXOR      X5, X6
 | 
				
			||||||
 | 
						PEXTRQ    $1, X6, AX
 | 
				
			||||||
 | 
						XORQ      BX, AX
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					skip128:
 | 
				
			||||||
 | 
						NOTQ AX
 | 
				
			||||||
 | 
						MOVQ AX, checksum+32(FP)
 | 
				
			||||||
 | 
						RET
 | 
				
			||||||
							
								
								
									
										15
									
								
								vendor/github.com/minio/crc64nvme/crc64_arm64.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/minio/crc64nvme/crc64_arm64.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					// Copyright (c) 2025 Minio Inc. All rights reserved.
 | 
				
			||||||
 | 
					// Use of this source code is governed by a license that can be
 | 
				
			||||||
 | 
					// found in the LICENSE file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//go:build !noasm && !appengine && !gccgo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package crc64nvme
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"github.com/klauspost/cpuid/v2"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var hasAsm = cpuid.CPU.Supports(cpuid.ASIMD) && cpuid.CPU.Supports(cpuid.PMULL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func updateAsm(crc uint64, p []byte) (checksum uint64)
 | 
				
			||||||
							
								
								
									
										157
									
								
								vendor/github.com/minio/crc64nvme/crc64_arm64.s
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										157
									
								
								vendor/github.com/minio/crc64nvme/crc64_arm64.s
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,157 @@
 | 
				
			||||||
 | 
					// Copyright (c) 2025 Minio Inc. All rights reserved.
 | 
				
			||||||
 | 
					// Use of this source code is governed by a license that can be
 | 
				
			||||||
 | 
					// found in the LICENSE file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//go:build !noasm && !appengine && !gccgo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "textflag.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TEXT ·updateAsm(SB), $0-40
 | 
				
			||||||
 | 
						MOVD crc+0(FP), R0    // checksum
 | 
				
			||||||
 | 
						MOVD p_base+8(FP), R1 // start pointer
 | 
				
			||||||
 | 
						MOVD p_len+16(FP), R2 // length of buffer
 | 
				
			||||||
 | 
						MOVD  $·const(SB), R3 // constants
 | 
				
			||||||
 | 
						MVN  R0, R0
 | 
				
			||||||
 | 
						LSR  $7, R2, R2
 | 
				
			||||||
 | 
						CMP  $1, R2
 | 
				
			||||||
 | 
						BLT  skip128
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						FLDPQ (R1), (F0, F1)
 | 
				
			||||||
 | 
						FLDPQ 32(R1), (F2, F3)
 | 
				
			||||||
 | 
						FLDPQ 64(R1), (F4, F5)
 | 
				
			||||||
 | 
						FLDPQ 96(R1), (F6, F7)
 | 
				
			||||||
 | 
						FMOVD R0, F8
 | 
				
			||||||
 | 
						VMOVI $0, V9.B16
 | 
				
			||||||
 | 
						VMOV  V9.D[0], V8.D[1]
 | 
				
			||||||
 | 
						VEOR  V8.B16, V0.B16, V0.B16
 | 
				
			||||||
 | 
						CMP   $1, R2
 | 
				
			||||||
 | 
						BEQ   tail128
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						MOVD  112(R3), R4
 | 
				
			||||||
 | 
						MOVD  120(R3), R5
 | 
				
			||||||
 | 
						FMOVD R4, F8
 | 
				
			||||||
 | 
						VDUP  R5, V9.D2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					loop128:
 | 
				
			||||||
 | 
						ADD     $128, R1, R1
 | 
				
			||||||
 | 
						SUB     $1, R2, R2
 | 
				
			||||||
 | 
						VPMULL  V0.D1, V8.D1, V10.Q1
 | 
				
			||||||
 | 
						VPMULL2 V0.D2, V9.D2, V0.Q1
 | 
				
			||||||
 | 
						FLDPQ   (R1), (F11, F12)
 | 
				
			||||||
 | 
						VEOR3   V0.B16, V11.B16, V10.B16, V0.B16
 | 
				
			||||||
 | 
						VPMULL  V1.D1, V8.D1, V10.Q1
 | 
				
			||||||
 | 
						VPMULL2 V1.D2, V9.D2, V1.Q1
 | 
				
			||||||
 | 
						VEOR3   V1.B16, V12.B16, V10.B16, V1.B16
 | 
				
			||||||
 | 
						VPMULL  V2.D1, V8.D1, V10.Q1
 | 
				
			||||||
 | 
						VPMULL2 V2.D2, V9.D2, V2.Q1
 | 
				
			||||||
 | 
						FLDPQ   32(R1), (F11, F12)
 | 
				
			||||||
 | 
						VEOR3   V2.B16, V11.B16, V10.B16, V2.B16
 | 
				
			||||||
 | 
						VPMULL  V3.D1, V8.D1, V10.Q1
 | 
				
			||||||
 | 
						VPMULL2 V3.D2, V9.D2, V3.Q1
 | 
				
			||||||
 | 
						VEOR3   V3.B16, V12.B16, V10.B16, V3.B16
 | 
				
			||||||
 | 
						VPMULL  V4.D1, V8.D1, V10.Q1
 | 
				
			||||||
 | 
						VPMULL2 V4.D2, V9.D2, V4.Q1
 | 
				
			||||||
 | 
						FLDPQ   64(R1), (F11, F12)
 | 
				
			||||||
 | 
						VEOR3   V4.B16, V11.B16, V10.B16, V4.B16
 | 
				
			||||||
 | 
						VPMULL  V5.D1, V8.D1, V10.Q1
 | 
				
			||||||
 | 
						VPMULL2 V5.D2, V9.D2, V5.Q1
 | 
				
			||||||
 | 
						VEOR3   V5.B16, V12.B16, V10.B16, V5.B16
 | 
				
			||||||
 | 
						VPMULL  V6.D1, V8.D1, V10.Q1
 | 
				
			||||||
 | 
						VPMULL2 V6.D2, V9.D2, V6.Q1
 | 
				
			||||||
 | 
						FLDPQ   96(R1), (F11, F12)
 | 
				
			||||||
 | 
						VEOR3   V6.B16, V11.B16, V10.B16, V6.B16
 | 
				
			||||||
 | 
						VPMULL  V7.D1, V8.D1, V10.Q1
 | 
				
			||||||
 | 
						VPMULL2 V7.D2, V9.D2, V7.Q1
 | 
				
			||||||
 | 
						VEOR3   V7.B16, V12.B16, V10.B16, V7.B16
 | 
				
			||||||
 | 
						CMP     $1, R2
 | 
				
			||||||
 | 
						BHI     loop128
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tail128:
 | 
				
			||||||
 | 
						MOVD    (R3), R4
 | 
				
			||||||
 | 
						FMOVD   R4, F11
 | 
				
			||||||
 | 
						VPMULL  V0.D1, V11.D1, V11.Q1
 | 
				
			||||||
 | 
						MOVD    8(R3), R4
 | 
				
			||||||
 | 
						VDUP    R4, V12.D2
 | 
				
			||||||
 | 
						VPMULL2 V0.D2, V12.D2, V0.Q1
 | 
				
			||||||
 | 
						VEOR3   V0.B16, V7.B16, V11.B16, V7.B16
 | 
				
			||||||
 | 
						MOVD    16(R3), R4
 | 
				
			||||||
 | 
						FMOVD   R4, F11
 | 
				
			||||||
 | 
						VPMULL  V1.D1, V11.D1, V11.Q1
 | 
				
			||||||
 | 
						MOVD    24(R3), R4
 | 
				
			||||||
 | 
						VDUP    R4, V12.D2
 | 
				
			||||||
 | 
						VPMULL2 V1.D2, V12.D2, V1.Q1
 | 
				
			||||||
 | 
						VEOR3   V1.B16, V11.B16, V7.B16, V1.B16
 | 
				
			||||||
 | 
						MOVD    32(R3), R4
 | 
				
			||||||
 | 
						FMOVD   R4, F11
 | 
				
			||||||
 | 
						VPMULL  V2.D1, V11.D1, V11.Q1
 | 
				
			||||||
 | 
						MOVD    40(R3), R4
 | 
				
			||||||
 | 
						VDUP    R4, V12.D2
 | 
				
			||||||
 | 
						VPMULL2 V2.D2, V12.D2, V2.Q1
 | 
				
			||||||
 | 
						VEOR3   V2.B16, V11.B16, V1.B16, V2.B16
 | 
				
			||||||
 | 
						MOVD    48(R3), R4
 | 
				
			||||||
 | 
						FMOVD   R4, F11
 | 
				
			||||||
 | 
						VPMULL  V3.D1, V11.D1, V11.Q1
 | 
				
			||||||
 | 
						MOVD    56(R3), R4
 | 
				
			||||||
 | 
						VDUP    R4, V12.D2
 | 
				
			||||||
 | 
						VPMULL2 V3.D2, V12.D2, V3.Q1
 | 
				
			||||||
 | 
						VEOR3   V3.B16, V11.B16, V2.B16, V3.B16
 | 
				
			||||||
 | 
						MOVD    64(R3), R4
 | 
				
			||||||
 | 
						FMOVD   R4, F11
 | 
				
			||||||
 | 
						VPMULL  V4.D1, V11.D1, V11.Q1
 | 
				
			||||||
 | 
						MOVD    72(R3), R4
 | 
				
			||||||
 | 
						VDUP    R4, V12.D2
 | 
				
			||||||
 | 
						VPMULL2 V4.D2, V12.D2, V4.Q1
 | 
				
			||||||
 | 
						VEOR3   V4.B16, V11.B16, V3.B16, V4.B16
 | 
				
			||||||
 | 
						MOVD    80(R3), R4
 | 
				
			||||||
 | 
						FMOVD   R4, F11
 | 
				
			||||||
 | 
						VPMULL  V5.D1, V11.D1, V11.Q1
 | 
				
			||||||
 | 
						MOVD    88(R3), R4
 | 
				
			||||||
 | 
						VDUP    R4, V12.D2
 | 
				
			||||||
 | 
						VPMULL2 V5.D2, V12.D2, V5.Q1
 | 
				
			||||||
 | 
						VEOR3   V5.B16, V11.B16, V4.B16, V5.B16
 | 
				
			||||||
 | 
						MOVD    96(R3), R4
 | 
				
			||||||
 | 
						FMOVD   R4, F11
 | 
				
			||||||
 | 
						VPMULL  V6.D1, V11.D1, V11.Q1
 | 
				
			||||||
 | 
						MOVD    104(R3), R4
 | 
				
			||||||
 | 
						VDUP    R4, V12.D2
 | 
				
			||||||
 | 
						VPMULL2 V6.D2, V12.D2, V6.Q1
 | 
				
			||||||
 | 
						VEOR3   V6.B16, V11.B16, V5.B16, V6.B16
 | 
				
			||||||
 | 
						FMOVD   R4, F5
 | 
				
			||||||
 | 
						VPMULL  V6.D1, V5.D1, V5.Q1
 | 
				
			||||||
 | 
						VDUP    V6.D[1], V6.D2
 | 
				
			||||||
 | 
						VEOR    V5.B8, V6.B8, V6.B8
 | 
				
			||||||
 | 
						MOVD    128(R3), R4
 | 
				
			||||||
 | 
						FMOVD   R4, F4
 | 
				
			||||||
 | 
						VPMULL  V4.D1, V6.D1, V6.Q1
 | 
				
			||||||
 | 
						FMOVD   F6, R4
 | 
				
			||||||
 | 
						MOVD    136(R3), R5
 | 
				
			||||||
 | 
						FMOVD   R5, F4
 | 
				
			||||||
 | 
						VPMULL  V4.D1, V6.D1, V6.Q1
 | 
				
			||||||
 | 
						VEOR    V6.B16, V5.B16, V6.B16
 | 
				
			||||||
 | 
						VMOV    V6.D[1], R5
 | 
				
			||||||
 | 
						EOR     R4, R5, R0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					skip128:
 | 
				
			||||||
 | 
						MVN  R0, R0
 | 
				
			||||||
 | 
						MOVD R0, checksum+32(FP)
 | 
				
			||||||
 | 
						RET
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DATA ·const+0x000(SB)/8, $0xd083dd594d96319d // K_959
 | 
				
			||||||
 | 
					DATA ·const+0x008(SB)/8, $0x946588403d4adcbc // K_895
 | 
				
			||||||
 | 
					DATA ·const+0x010(SB)/8, $0x3c255f5ebc414423 // K_831
 | 
				
			||||||
 | 
					DATA ·const+0x018(SB)/8, $0x34f5a24e22d66e90 // K_767
 | 
				
			||||||
 | 
					DATA ·const+0x020(SB)/8, $0x7b0ab10dd0f809fe // K_703
 | 
				
			||||||
 | 
					DATA ·const+0x028(SB)/8, $0x03363823e6e791e5 // K_639
 | 
				
			||||||
 | 
					DATA ·const+0x030(SB)/8, $0x0c32cdb31e18a84a // K_575
 | 
				
			||||||
 | 
					DATA ·const+0x038(SB)/8, $0x62242240ace5045a // K_511
 | 
				
			||||||
 | 
					DATA ·const+0x040(SB)/8, $0xbdd7ac0ee1a4a0f0 // K_447
 | 
				
			||||||
 | 
					DATA ·const+0x048(SB)/8, $0xa3ffdc1fe8e82a8b // K_383
 | 
				
			||||||
 | 
					DATA ·const+0x050(SB)/8, $0xb0bc2e589204f500 // K_319
 | 
				
			||||||
 | 
					DATA ·const+0x058(SB)/8, $0xe1e0bb9d45d7a44c // K_255
 | 
				
			||||||
 | 
					DATA ·const+0x060(SB)/8, $0xeadc41fd2ba3d420 // K_191
 | 
				
			||||||
 | 
					DATA ·const+0x068(SB)/8, $0x21e9761e252621ac // K_127
 | 
				
			||||||
 | 
					DATA ·const+0x070(SB)/8, $0xa1ca681e733f9c40 // K_1087
 | 
				
			||||||
 | 
					DATA ·const+0x078(SB)/8, $0x5f852fb61e8d92dc // K_1023
 | 
				
			||||||
 | 
					DATA ·const+0x080(SB)/8, $0x27ecfa329aef9f77 // MU
 | 
				
			||||||
 | 
					DATA ·const+0x088(SB)/8, $0x34d926535897936b // POLY
 | 
				
			||||||
 | 
					GLOBL ·const(SB), (NOPTR+RODATA), $144
 | 
				
			||||||
							
								
								
									
										11
									
								
								vendor/github.com/minio/crc64nvme/crc64_other.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								vendor/github.com/minio/crc64nvme/crc64_other.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,11 @@
 | 
				
			||||||
 | 
					// Copyright (c) 2025 Minio Inc. All rights reserved.
 | 
				
			||||||
 | 
					// Use of this source code is governed by a license that can be
 | 
				
			||||||
 | 
					// found in the LICENSE file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//go:build (!amd64 || noasm || appengine || gccgo) && (!arm64 || noasm || appengine || gccgo)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package crc64nvme
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var hasAsm = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func updateAsm(crc uint64, p []byte) (checksum uint64) { panic("should not be reached") }
 | 
				
			||||||
							
								
								
									
										85
									
								
								vendor/github.com/minio/minio-go/v7/.golangci.yml
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										85
									
								
								vendor/github.com/minio/minio-go/v7/.golangci.yml
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,27 +1,72 @@
 | 
				
			||||||
linters-settings:
 | 
					version: "2"
 | 
				
			||||||
  misspell:
 | 
					 | 
				
			||||||
    locale: US
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
linters:
 | 
					linters:
 | 
				
			||||||
  disable-all: true
 | 
					  disable-all: true
 | 
				
			||||||
  enable:
 | 
					  enable:
 | 
				
			||||||
    - typecheck
 | 
					    - durationcheck
 | 
				
			||||||
    - goimports
 | 
					    - gocritic
 | 
				
			||||||
    - misspell
 | 
					    - gomodguard
 | 
				
			||||||
    - revive
 | 
					 | 
				
			||||||
    - govet
 | 
					    - govet
 | 
				
			||||||
    - ineffassign
 | 
					    - ineffassign
 | 
				
			||||||
    - gosimple
 | 
					    - misspell
 | 
				
			||||||
 | 
					    - revive
 | 
				
			||||||
 | 
					    - staticcheck
 | 
				
			||||||
 | 
					    - unconvert
 | 
				
			||||||
    - unused
 | 
					    - unused
 | 
				
			||||||
    - gocritic
 | 
					    - usetesting
 | 
				
			||||||
 | 
					    - whitespace
 | 
				
			||||||
 | 
					  settings:
 | 
				
			||||||
 | 
					    misspell:
 | 
				
			||||||
 | 
					      locale: US
 | 
				
			||||||
 | 
					    staticcheck:
 | 
				
			||||||
 | 
					      checks:
 | 
				
			||||||
 | 
					        - all
 | 
				
			||||||
 | 
					        - -SA1008
 | 
				
			||||||
 | 
					        - -SA1019
 | 
				
			||||||
 | 
					        - -SA4000
 | 
				
			||||||
 | 
					        - -SA9004
 | 
				
			||||||
 | 
					        - -ST1000
 | 
				
			||||||
 | 
					        - -ST1005
 | 
				
			||||||
 | 
					        - -ST1016
 | 
				
			||||||
 | 
					        - -ST1021
 | 
				
			||||||
 | 
					        - -ST1020
 | 
				
			||||||
 | 
					        - -U1000
 | 
				
			||||||
 | 
					  exclusions:
 | 
				
			||||||
 | 
					    generated: lax
 | 
				
			||||||
 | 
					    rules:
 | 
				
			||||||
 | 
					      - path: (.+)\.go$
 | 
				
			||||||
 | 
					        text: "empty-block:"
 | 
				
			||||||
 | 
					      - path: (.+)\.go$
 | 
				
			||||||
 | 
					        text: "unused-parameter:"
 | 
				
			||||||
 | 
					      - path: (.+)\.go$
 | 
				
			||||||
 | 
					        text: "dot-imports:"
 | 
				
			||||||
 | 
					      - path: (.+)\.go$
 | 
				
			||||||
 | 
					        text: "singleCaseSwitch: should rewrite switch statement to if statement"
 | 
				
			||||||
 | 
					      - path: (.+)\.go$
 | 
				
			||||||
 | 
					        text: "unlambda: replace"
 | 
				
			||||||
 | 
					      - path: (.+)\.go$
 | 
				
			||||||
 | 
					        text: "captLocal:"
 | 
				
			||||||
 | 
					      - path: (.+)\.go$
 | 
				
			||||||
 | 
					        text: "should have a package comment"
 | 
				
			||||||
 | 
					      - path: (.+)\.go$
 | 
				
			||||||
 | 
					        text: "ifElseChain:"
 | 
				
			||||||
 | 
					      - path: (.+)\.go$
 | 
				
			||||||
 | 
					        text: "elseif:"
 | 
				
			||||||
 | 
					      - path: (.+)\.go$
 | 
				
			||||||
 | 
					        text: "Error return value of"
 | 
				
			||||||
 | 
					      - path: (.+)\.go$
 | 
				
			||||||
 | 
					        text: "unnecessary conversion"
 | 
				
			||||||
 | 
					      - path: (.+)\.go$
 | 
				
			||||||
 | 
					        text: "Error return value is not checked"
 | 
				
			||||||
issues:
 | 
					issues:
 | 
				
			||||||
  exclude-use-default: false
 | 
					  max-issues-per-linter: 100
 | 
				
			||||||
  exclude:
 | 
					  max-same-issues: 100
 | 
				
			||||||
      # todo fix these when we get enough time.
 | 
					formatters:
 | 
				
			||||||
      - "singleCaseSwitch: should rewrite switch statement to if statement"
 | 
					  enable:
 | 
				
			||||||
      - "unlambda: replace"
 | 
					    - gofumpt
 | 
				
			||||||
      - "captLocal:"
 | 
					    - goimports
 | 
				
			||||||
      - "ifElseChain:"
 | 
					  exclusions:
 | 
				
			||||||
      - "elseif:"
 | 
					    generated: lax
 | 
				
			||||||
      - "should have a package comment"
 | 
					    paths:
 | 
				
			||||||
 | 
					      - third_party$
 | 
				
			||||||
 | 
					      - builtin$
 | 
				
			||||||
 | 
					      - examples$
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/minio/minio-go/v7/api-bucket-notification.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/minio/minio-go/v7/api-bucket-notification.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -251,7 +251,6 @@ func (c *Client) ListenBucketNotification(ctx context.Context, bucketName, prefi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			// Close current connection before looping further.
 | 
								// Close current connection before looping further.
 | 
				
			||||||
			closeResponse(resp)
 | 
								closeResponse(resp)
 | 
				
			||||||
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}(notificationInfoCh)
 | 
						}(notificationInfoCh)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/minio/minio-go/v7/api-bucket-versioning.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/minio/minio-go/v7/api-bucket-versioning.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -90,6 +90,7 @@ type BucketVersioningConfiguration struct {
 | 
				
			||||||
	// Requires versioning to be enabled
 | 
						// Requires versioning to be enabled
 | 
				
			||||||
	ExcludedPrefixes []ExcludedPrefix `xml:",omitempty"`
 | 
						ExcludedPrefixes []ExcludedPrefix `xml:",omitempty"`
 | 
				
			||||||
	ExcludeFolders   bool             `xml:",omitempty"`
 | 
						ExcludeFolders   bool             `xml:",omitempty"`
 | 
				
			||||||
 | 
						PurgeOnDelete    string           `xml:",omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Various supported states
 | 
					// Various supported states
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										9
									
								
								vendor/github.com/minio/minio-go/v7/api-compose-object.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/minio/minio-go/v7/api-compose-object.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -30,6 +30,7 @@ import (
 | 
				
			||||||
	"github.com/google/uuid"
 | 
						"github.com/google/uuid"
 | 
				
			||||||
	"github.com/minio/minio-go/v7/pkg/encrypt"
 | 
						"github.com/minio/minio-go/v7/pkg/encrypt"
 | 
				
			||||||
	"github.com/minio/minio-go/v7/pkg/s3utils"
 | 
						"github.com/minio/minio-go/v7/pkg/s3utils"
 | 
				
			||||||
 | 
						"github.com/minio/minio-go/v7/pkg/tags"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CopyDestOptions represents options specified by user for CopyObject/ComposeObject APIs
 | 
					// CopyDestOptions represents options specified by user for CopyObject/ComposeObject APIs
 | 
				
			||||||
| 
						 | 
					@ -98,8 +99,8 @@ func (opts CopyDestOptions) Marshal(header http.Header) {
 | 
				
			||||||
	const replaceDirective = "REPLACE"
 | 
						const replaceDirective = "REPLACE"
 | 
				
			||||||
	if opts.ReplaceTags {
 | 
						if opts.ReplaceTags {
 | 
				
			||||||
		header.Set(amzTaggingHeaderDirective, replaceDirective)
 | 
							header.Set(amzTaggingHeaderDirective, replaceDirective)
 | 
				
			||||||
		if tags := s3utils.TagEncode(opts.UserTags); tags != "" {
 | 
							if tags, _ := tags.NewTags(opts.UserTags, true); tags != nil {
 | 
				
			||||||
			header.Set(amzTaggingHeader, tags)
 | 
								header.Set(amzTaggingHeader, tags.String())
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -236,7 +237,9 @@ func (c *Client) copyObjectDo(ctx context.Context, srcBucket, srcObject, destBuc
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if len(dstOpts.UserTags) != 0 {
 | 
						if len(dstOpts.UserTags) != 0 {
 | 
				
			||||||
		headers.Set(amzTaggingHeader, s3utils.TagEncode(dstOpts.UserTags))
 | 
							if tags, _ := tags.NewTags(dstOpts.UserTags, true); tags != nil {
 | 
				
			||||||
 | 
								headers.Set(amzTaggingHeader, tags.String())
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	reqMetadata := requestMetadata{
 | 
						reqMetadata := requestMetadata{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/api-datatypes.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/api-datatypes.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -212,6 +212,8 @@ type ObjectInfo struct {
 | 
				
			||||||
	// not to be confused with `Expires` HTTP header.
 | 
						// not to be confused with `Expires` HTTP header.
 | 
				
			||||||
	Expiration       time.Time
 | 
						Expiration       time.Time
 | 
				
			||||||
	ExpirationRuleID string
 | 
						ExpirationRuleID string
 | 
				
			||||||
 | 
						// NumVersions is the number of versions of the object.
 | 
				
			||||||
 | 
						NumVersions int
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Restore *RestoreInfo
 | 
						Restore *RestoreInfo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										12
									
								
								vendor/github.com/minio/minio-go/v7/api-get-object-acl.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/github.com/minio/minio-go/v7/api-get-object-acl.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -135,16 +135,16 @@ func getAmzGrantACL(aCPolicy *accessControlPolicy) map[string][]string {
 | 
				
			||||||
	res := map[string][]string{}
 | 
						res := map[string][]string{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, g := range grants {
 | 
						for _, g := range grants {
 | 
				
			||||||
		switch {
 | 
							switch g.Permission {
 | 
				
			||||||
		case g.Permission == "READ":
 | 
							case "READ":
 | 
				
			||||||
			res["X-Amz-Grant-Read"] = append(res["X-Amz-Grant-Read"], "id="+g.Grantee.ID)
 | 
								res["X-Amz-Grant-Read"] = append(res["X-Amz-Grant-Read"], "id="+g.Grantee.ID)
 | 
				
			||||||
		case g.Permission == "WRITE":
 | 
							case "WRITE":
 | 
				
			||||||
			res["X-Amz-Grant-Write"] = append(res["X-Amz-Grant-Write"], "id="+g.Grantee.ID)
 | 
								res["X-Amz-Grant-Write"] = append(res["X-Amz-Grant-Write"], "id="+g.Grantee.ID)
 | 
				
			||||||
		case g.Permission == "READ_ACP":
 | 
							case "READ_ACP":
 | 
				
			||||||
			res["X-Amz-Grant-Read-Acp"] = append(res["X-Amz-Grant-Read-Acp"], "id="+g.Grantee.ID)
 | 
								res["X-Amz-Grant-Read-Acp"] = append(res["X-Amz-Grant-Read-Acp"], "id="+g.Grantee.ID)
 | 
				
			||||||
		case g.Permission == "WRITE_ACP":
 | 
							case "WRITE_ACP":
 | 
				
			||||||
			res["X-Amz-Grant-Write-Acp"] = append(res["X-Amz-Grant-Write-Acp"], "id="+g.Grantee.ID)
 | 
								res["X-Amz-Grant-Write-Acp"] = append(res["X-Amz-Grant-Write-Acp"], "id="+g.Grantee.ID)
 | 
				
			||||||
		case g.Permission == "FULL_CONTROL":
 | 
							case "FULL_CONTROL":
 | 
				
			||||||
			res["X-Amz-Grant-Full-Control"] = append(res["X-Amz-Grant-Full-Control"], "id="+g.Grantee.ID)
 | 
								res["X-Amz-Grant-Full-Control"] = append(res["X-Amz-Grant-Full-Control"], "id="+g.Grantee.ID)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										66
									
								
								vendor/github.com/minio/minio-go/v7/api-list.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										66
									
								
								vendor/github.com/minio/minio-go/v7/api-list.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -22,6 +22,7 @@ import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
 | 
						"slices"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/minio/minio-go/v7/pkg/s3utils"
 | 
						"github.com/minio/minio-go/v7/pkg/s3utils"
 | 
				
			||||||
| 
						 | 
					@ -421,20 +422,17 @@ func (c *Client) listObjectVersions(ctx context.Context, bucketName string, opts
 | 
				
			||||||
		var (
 | 
							var (
 | 
				
			||||||
			keyMarker       = ""
 | 
								keyMarker       = ""
 | 
				
			||||||
			versionIDMarker = ""
 | 
								versionIDMarker = ""
 | 
				
			||||||
 | 
								preName         = ""
 | 
				
			||||||
 | 
								preKey          = ""
 | 
				
			||||||
 | 
								perVersions     []Version
 | 
				
			||||||
 | 
								numVersions     int
 | 
				
			||||||
		)
 | 
							)
 | 
				
			||||||
 | 
							send := func(vers []Version) {
 | 
				
			||||||
		for {
 | 
								if opts.WithVersions && opts.ReverseVersions {
 | 
				
			||||||
			// Get list of objects a maximum of 1000 per request.
 | 
									slices.Reverse(vers)
 | 
				
			||||||
			result, err := c.listObjectVersionsQuery(ctx, bucketName, opts, keyMarker, versionIDMarker, delimiter)
 | 
									numVersions = len(vers)
 | 
				
			||||||
			if err != nil {
 | 
					 | 
				
			||||||
				sendObjectInfo(ObjectInfo{
 | 
					 | 
				
			||||||
					Err: err,
 | 
					 | 
				
			||||||
				})
 | 
					 | 
				
			||||||
				return
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								for _, version := range vers {
 | 
				
			||||||
			// If contents are available loop through and send over channel.
 | 
					 | 
				
			||||||
			for _, version := range result.Versions {
 | 
					 | 
				
			||||||
				info := ObjectInfo{
 | 
									info := ObjectInfo{
 | 
				
			||||||
					ETag:           trimEtag(version.ETag),
 | 
										ETag:           trimEtag(version.ETag),
 | 
				
			||||||
					Key:            version.Key,
 | 
										Key:            version.Key,
 | 
				
			||||||
| 
						 | 
					@ -448,6 +446,7 @@ func (c *Client) listObjectVersions(ctx context.Context, bucketName string, opts
 | 
				
			||||||
					UserTags:       version.UserTags,
 | 
										UserTags:       version.UserTags,
 | 
				
			||||||
					UserMetadata:   version.UserMetadata,
 | 
										UserMetadata:   version.UserMetadata,
 | 
				
			||||||
					Internal:       version.Internal,
 | 
										Internal:       version.Internal,
 | 
				
			||||||
 | 
										NumVersions:    numVersions,
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				select {
 | 
									select {
 | 
				
			||||||
				// Send object version info.
 | 
									// Send object version info.
 | 
				
			||||||
| 
						 | 
					@ -457,6 +456,38 @@ func (c *Client) listObjectVersions(ctx context.Context, bucketName string, opts
 | 
				
			||||||
					return
 | 
										return
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							for {
 | 
				
			||||||
 | 
								// Get list of objects a maximum of 1000 per request.
 | 
				
			||||||
 | 
								result, err := c.listObjectVersionsQuery(ctx, bucketName, opts, keyMarker, versionIDMarker, delimiter)
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									sendObjectInfo(ObjectInfo{
 | 
				
			||||||
 | 
										Err: err,
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
 | 
									return
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if opts.WithVersions && opts.ReverseVersions {
 | 
				
			||||||
 | 
									for _, version := range result.Versions {
 | 
				
			||||||
 | 
										if preName == "" {
 | 
				
			||||||
 | 
											preName = result.Name
 | 
				
			||||||
 | 
											preKey = version.Key
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										if result.Name == preName && preKey == version.Key {
 | 
				
			||||||
 | 
											// If the current name is same as previous name,
 | 
				
			||||||
 | 
											// we need to append the version to the previous version.
 | 
				
			||||||
 | 
											perVersions = append(perVersions, version)
 | 
				
			||||||
 | 
											continue
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										// Send the file versions.
 | 
				
			||||||
 | 
										send(perVersions)
 | 
				
			||||||
 | 
										perVersions = perVersions[:0]
 | 
				
			||||||
 | 
										perVersions = append(perVersions, version)
 | 
				
			||||||
 | 
										preName = result.Name
 | 
				
			||||||
 | 
										preKey = version.Key
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									send(result.Versions)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			// Send all common prefixes if any.
 | 
								// Send all common prefixes if any.
 | 
				
			||||||
			// NOTE: prefixes are only present if the request is delimited.
 | 
								// NOTE: prefixes are only present if the request is delimited.
 | 
				
			||||||
| 
						 | 
					@ -480,8 +511,17 @@ func (c *Client) listObjectVersions(ctx context.Context, bucketName string, opts
 | 
				
			||||||
				versionIDMarker = result.NextVersionIDMarker
 | 
									versionIDMarker = result.NextVersionIDMarker
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// If context is canceled, return here.
 | 
				
			||||||
 | 
								if contextCanceled(ctx) {
 | 
				
			||||||
 | 
									return
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			// Listing ends result is not truncated, return right here.
 | 
								// Listing ends result is not truncated, return right here.
 | 
				
			||||||
			if !result.IsTruncated {
 | 
								if !result.IsTruncated {
 | 
				
			||||||
 | 
									// sent the lasted file with versions
 | 
				
			||||||
 | 
									if opts.ReverseVersions && len(perVersions) > 0 {
 | 
				
			||||||
 | 
										send(perVersions)
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
				return
 | 
									return
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -683,6 +723,8 @@ func (c *Client) listObjectsQuery(ctx context.Context, bucketName, objectPrefix,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ListObjectsOptions holds all options of a list object request
 | 
					// ListObjectsOptions holds all options of a list object request
 | 
				
			||||||
type ListObjectsOptions struct {
 | 
					type ListObjectsOptions struct {
 | 
				
			||||||
 | 
						// ReverseVersions - reverse the order of the object versions
 | 
				
			||||||
 | 
						ReverseVersions bool
 | 
				
			||||||
	// Include objects versions in the listing
 | 
						// Include objects versions in the listing
 | 
				
			||||||
	WithVersions bool
 | 
						WithVersions bool
 | 
				
			||||||
	// Include objects metadata in the listing
 | 
						// Include objects metadata in the listing
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/minio/minio-go/v7/api-put-object-streaming.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/minio/minio-go/v7/api-put-object-streaming.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -350,7 +350,6 @@ func (c *Client) putObjectMultipartStreamOptionalChecksum(ctx context.Context, b
 | 
				
			||||||
	// Part number always starts with '1'.
 | 
						// Part number always starts with '1'.
 | 
				
			||||||
	var partNumber int
 | 
						var partNumber int
 | 
				
			||||||
	for partNumber = 1; partNumber <= totalPartsCount; partNumber++ {
 | 
						for partNumber = 1; partNumber <= totalPartsCount; partNumber++ {
 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Proceed to upload the part.
 | 
							// Proceed to upload the part.
 | 
				
			||||||
		if partNumber == totalPartsCount {
 | 
							if partNumber == totalPartsCount {
 | 
				
			||||||
			partSize = lastPartSize
 | 
								partSize = lastPartSize
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										5
									
								
								vendor/github.com/minio/minio-go/v7/api-put-object.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/minio/minio-go/v7/api-put-object.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -30,6 +30,7 @@ import (
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/minio/minio-go/v7/pkg/encrypt"
 | 
						"github.com/minio/minio-go/v7/pkg/encrypt"
 | 
				
			||||||
	"github.com/minio/minio-go/v7/pkg/s3utils"
 | 
						"github.com/minio/minio-go/v7/pkg/s3utils"
 | 
				
			||||||
 | 
						"github.com/minio/minio-go/v7/pkg/tags"
 | 
				
			||||||
	"golang.org/x/net/http/httpguts"
 | 
						"golang.org/x/net/http/httpguts"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -229,7 +230,9 @@ func (opts PutObjectOptions) Header() (header http.Header) {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if len(opts.UserTags) != 0 {
 | 
						if len(opts.UserTags) != 0 {
 | 
				
			||||||
		header.Set(amzTaggingHeader, s3utils.TagEncode(opts.UserTags))
 | 
							if tags, _ := tags.NewTags(opts.UserTags, true); tags != nil {
 | 
				
			||||||
 | 
								header.Set(amzTaggingHeader, tags.String())
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for k, v := range opts.UserMetadata {
 | 
						for k, v := range opts.UserMetadata {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										5
									
								
								vendor/github.com/minio/minio-go/v7/api-remove.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/minio/minio-go/v7/api-remove.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -392,10 +392,7 @@ func (c *Client) removeObjects(ctx context.Context, bucketName string, objectsCh
 | 
				
			||||||
	defer close(resultCh)
 | 
						defer close(resultCh)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Loop over entries by 1000 and call MultiDelete requests
 | 
						// Loop over entries by 1000 and call MultiDelete requests
 | 
				
			||||||
	for {
 | 
						for !finish {
 | 
				
			||||||
		if finish {
 | 
					 | 
				
			||||||
			break
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		count := 0
 | 
							count := 0
 | 
				
			||||||
		var batch []ObjectInfo
 | 
							var batch []ObjectInfo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/minio/minio-go/v7/api-s3-datatypes.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/minio/minio-go/v7/api-s3-datatypes.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -194,7 +194,6 @@ func (l *ListVersionsResult) UnmarshalXML(d *xml.Decoder, _ xml.StartElement) (e
 | 
				
			||||||
			default:
 | 
								default:
 | 
				
			||||||
				return errors.New("unrecognized option:" + tagName)
 | 
									return errors.New("unrecognized option:" + tagName)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/api-select.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/api-select.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -609,7 +609,6 @@ func (s *SelectResults) start(pipeWriter *io.PipeWriter) {
 | 
				
			||||||
				closeResponse(s.resp)
 | 
									closeResponse(s.resp)
 | 
				
			||||||
				return
 | 
									return
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}()
 | 
						}()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -669,7 +668,6 @@ func extractHeader(body io.Reader, myHeaders http.Header) error {
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		myHeaders.Set(headerTypeName, headerValueName)
 | 
							myHeaders.Set(headerTypeName, headerValueName)
 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										4
									
								
								vendor/github.com/minio/minio-go/v7/api.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/minio/minio-go/v7/api.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -155,7 +155,7 @@ type Options struct {
 | 
				
			||||||
// Global constants.
 | 
					// Global constants.
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
	libraryName    = "minio-go"
 | 
						libraryName    = "minio-go"
 | 
				
			||||||
	libraryVersion = "v7.0.85"
 | 
						libraryVersion = "v7.0.89"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// User Agent should always following the below style.
 | 
					// User Agent should always following the below style.
 | 
				
			||||||
| 
						 | 
					@ -598,7 +598,7 @@ func (c *Client) do(req *http.Request) (resp *http.Response, err error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// If trace is enabled, dump http request and response,
 | 
						// If trace is enabled, dump http request and response,
 | 
				
			||||||
	// except when the traceErrorsOnly enabled and the response's status code is ok
 | 
						// except when the traceErrorsOnly enabled and the response's status code is ok
 | 
				
			||||||
	if c.isTraceEnabled && !(c.traceErrorsOnly && resp.StatusCode == http.StatusOK) {
 | 
						if c.isTraceEnabled && (!c.traceErrorsOnly || resp.StatusCode != http.StatusOK) {
 | 
				
			||||||
		err = c.dumpHTTP(req, resp)
 | 
							err = c.dumpHTTP(req, resp)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return nil, err
 | 
								return nil, err
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										7
									
								
								vendor/github.com/minio/minio-go/v7/checksum.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/minio/minio-go/v7/checksum.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -30,6 +30,8 @@ import (
 | 
				
			||||||
	"math/bits"
 | 
						"math/bits"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"sort"
 | 
						"sort"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/minio/crc64nvme"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ChecksumType contains information about the checksum type.
 | 
					// ChecksumType contains information about the checksum type.
 | 
				
			||||||
| 
						 | 
					@ -152,9 +154,6 @@ func (c ChecksumType) RawByteLen() int {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const crc64NVMEPolynomial = 0xad93d23594c93659
 | 
					const crc64NVMEPolynomial = 0xad93d23594c93659
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// crc64 uses reversed polynomials.
 | 
					 | 
				
			||||||
var crc64Table = crc64.MakeTable(bits.Reverse64(crc64NVMEPolynomial))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Hasher returns a hasher corresponding to the checksum type.
 | 
					// Hasher returns a hasher corresponding to the checksum type.
 | 
				
			||||||
// Returns nil if no checksum.
 | 
					// Returns nil if no checksum.
 | 
				
			||||||
func (c ChecksumType) Hasher() hash.Hash {
 | 
					func (c ChecksumType) Hasher() hash.Hash {
 | 
				
			||||||
| 
						 | 
					@ -168,7 +167,7 @@ func (c ChecksumType) Hasher() hash.Hash {
 | 
				
			||||||
	case ChecksumSHA256:
 | 
						case ChecksumSHA256:
 | 
				
			||||||
		return sha256.New()
 | 
							return sha256.New()
 | 
				
			||||||
	case ChecksumCRC64NVME:
 | 
						case ChecksumCRC64NVME:
 | 
				
			||||||
		return crc64.New(crc64Table)
 | 
							return crc64nvme.New()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										5
									
								
								vendor/github.com/minio/minio-go/v7/pkg/credentials/assume_role.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/minio/minio-go/v7/pkg/credentials/assume_role.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -104,6 +104,8 @@ type STSAssumeRoleOptions struct {
 | 
				
			||||||
	RoleARN         string
 | 
						RoleARN         string
 | 
				
			||||||
	RoleSessionName string
 | 
						RoleSessionName string
 | 
				
			||||||
	ExternalID      string
 | 
						ExternalID      string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						TokenRevokeType string // Optional, used for token revokation (MinIO only extension)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewSTSAssumeRole returns a pointer to a new
 | 
					// NewSTSAssumeRole returns a pointer to a new
 | 
				
			||||||
| 
						 | 
					@ -161,6 +163,9 @@ func getAssumeRoleCredentials(clnt *http.Client, endpoint string, opts STSAssume
 | 
				
			||||||
	if opts.ExternalID != "" {
 | 
						if opts.ExternalID != "" {
 | 
				
			||||||
		v.Set("ExternalId", opts.ExternalID)
 | 
							v.Set("ExternalId", opts.ExternalID)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if opts.TokenRevokeType != "" {
 | 
				
			||||||
 | 
							v.Set("TokenRevokeType", opts.TokenRevokeType)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	u, err := url.Parse(endpoint)
 | 
						u, err := url.Parse(endpoint)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								vendor/github.com/minio/minio-go/v7/pkg/credentials/sts_custom_identity.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/minio/minio-go/v7/pkg/credentials/sts_custom_identity.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -69,6 +69,9 @@ type CustomTokenIdentity struct {
 | 
				
			||||||
	// RequestedExpiry is to set the validity of the generated credentials
 | 
						// RequestedExpiry is to set the validity of the generated credentials
 | 
				
			||||||
	// (this value bounded by server).
 | 
						// (this value bounded by server).
 | 
				
			||||||
	RequestedExpiry time.Duration
 | 
						RequestedExpiry time.Duration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Optional, used for token revokation
 | 
				
			||||||
 | 
						TokenRevokeType string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// RetrieveWithCredContext with Retrieve optionally cred context
 | 
					// RetrieveWithCredContext with Retrieve optionally cred context
 | 
				
			||||||
| 
						 | 
					@ -98,6 +101,9 @@ func (c *CustomTokenIdentity) RetrieveWithCredContext(cc *CredContext) (value Va
 | 
				
			||||||
	if c.RequestedExpiry != 0 {
 | 
						if c.RequestedExpiry != 0 {
 | 
				
			||||||
		v.Set("DurationSeconds", fmt.Sprintf("%d", int(c.RequestedExpiry.Seconds())))
 | 
							v.Set("DurationSeconds", fmt.Sprintf("%d", int(c.RequestedExpiry.Seconds())))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if c.TokenRevokeType != "" {
 | 
				
			||||||
 | 
							v.Set("TokenRevokeType", c.TokenRevokeType)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	u.RawQuery = v.Encode()
 | 
						u.RawQuery = v.Encode()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								vendor/github.com/minio/minio-go/v7/pkg/credentials/sts_ldap_identity.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/minio/minio-go/v7/pkg/credentials/sts_ldap_identity.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -73,6 +73,9 @@ type LDAPIdentity struct {
 | 
				
			||||||
	// RequestedExpiry is the configured expiry duration for credentials
 | 
						// RequestedExpiry is the configured expiry duration for credentials
 | 
				
			||||||
	// requested from LDAP.
 | 
						// requested from LDAP.
 | 
				
			||||||
	RequestedExpiry time.Duration
 | 
						RequestedExpiry time.Duration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Optional, used for token revokation
 | 
				
			||||||
 | 
						TokenRevokeType string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewLDAPIdentity returns new credentials object that uses LDAP
 | 
					// NewLDAPIdentity returns new credentials object that uses LDAP
 | 
				
			||||||
| 
						 | 
					@ -152,6 +155,9 @@ func (k *LDAPIdentity) RetrieveWithCredContext(cc *CredContext) (value Value, er
 | 
				
			||||||
	if k.RequestedExpiry != 0 {
 | 
						if k.RequestedExpiry != 0 {
 | 
				
			||||||
		v.Set("DurationSeconds", fmt.Sprintf("%d", int(k.RequestedExpiry.Seconds())))
 | 
							v.Set("DurationSeconds", fmt.Sprintf("%d", int(k.RequestedExpiry.Seconds())))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if k.TokenRevokeType != "" {
 | 
				
			||||||
 | 
							v.Set("TokenRevokeType", k.TokenRevokeType)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	req, err := http.NewRequest(http.MethodPost, u.String(), strings.NewReader(v.Encode()))
 | 
						req, err := http.NewRequest(http.MethodPost, u.String(), strings.NewReader(v.Encode()))
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								vendor/github.com/minio/minio-go/v7/pkg/credentials/sts_tls_identity.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/minio/minio-go/v7/pkg/credentials/sts_tls_identity.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -80,6 +80,9 @@ type STSCertificateIdentity struct {
 | 
				
			||||||
	// Certificate is the client certificate that is used for
 | 
						// Certificate is the client certificate that is used for
 | 
				
			||||||
	// STS authentication.
 | 
						// STS authentication.
 | 
				
			||||||
	Certificate tls.Certificate
 | 
						Certificate tls.Certificate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Optional, used for token revokation
 | 
				
			||||||
 | 
						TokenRevokeType string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewSTSCertificateIdentity returns a STSCertificateIdentity that authenticates
 | 
					// NewSTSCertificateIdentity returns a STSCertificateIdentity that authenticates
 | 
				
			||||||
| 
						 | 
					@ -122,6 +125,9 @@ func (i *STSCertificateIdentity) RetrieveWithCredContext(cc *CredContext) (Value
 | 
				
			||||||
	queryValues := url.Values{}
 | 
						queryValues := url.Values{}
 | 
				
			||||||
	queryValues.Set("Action", "AssumeRoleWithCertificate")
 | 
						queryValues.Set("Action", "AssumeRoleWithCertificate")
 | 
				
			||||||
	queryValues.Set("Version", STSVersion)
 | 
						queryValues.Set("Version", STSVersion)
 | 
				
			||||||
 | 
						if i.TokenRevokeType != "" {
 | 
				
			||||||
 | 
							queryValues.Set("TokenRevokeType", i.TokenRevokeType)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	endpointURL.RawQuery = queryValues.Encode()
 | 
						endpointURL.RawQuery = queryValues.Encode()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	req, err := http.NewRequest(http.MethodPost, endpointURL.String(), nil)
 | 
						req, err := http.NewRequest(http.MethodPost, endpointURL.String(), nil)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										10
									
								
								vendor/github.com/minio/minio-go/v7/pkg/credentials/sts_web_identity.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/github.com/minio/minio-go/v7/pkg/credentials/sts_web_identity.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -93,6 +93,9 @@ type STSWebIdentity struct {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// roleSessionName is the identifier for the assumed role session.
 | 
						// roleSessionName is the identifier for the assumed role session.
 | 
				
			||||||
	roleSessionName string
 | 
						roleSessionName string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Optional, used for token revokation
 | 
				
			||||||
 | 
						TokenRevokeType string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewSTSWebIdentity returns a pointer to a new
 | 
					// NewSTSWebIdentity returns a pointer to a new
 | 
				
			||||||
| 
						 | 
					@ -135,7 +138,7 @@ func WithPolicy(policy string) func(*STSWebIdentity) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getWebIdentityCredentials(clnt *http.Client, endpoint, roleARN, roleSessionName string, policy string,
 | 
					func getWebIdentityCredentials(clnt *http.Client, endpoint, roleARN, roleSessionName string, policy string,
 | 
				
			||||||
	getWebIDTokenExpiry func() (*WebIdentityToken, error),
 | 
						getWebIDTokenExpiry func() (*WebIdentityToken, error), tokenRevokeType string,
 | 
				
			||||||
) (AssumeRoleWithWebIdentityResponse, error) {
 | 
					) (AssumeRoleWithWebIdentityResponse, error) {
 | 
				
			||||||
	idToken, err := getWebIDTokenExpiry()
 | 
						idToken, err := getWebIDTokenExpiry()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
| 
						 | 
					@ -168,6 +171,9 @@ func getWebIdentityCredentials(clnt *http.Client, endpoint, roleARN, roleSession
 | 
				
			||||||
		v.Set("Policy", policy)
 | 
							v.Set("Policy", policy)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	v.Set("Version", STSVersion)
 | 
						v.Set("Version", STSVersion)
 | 
				
			||||||
 | 
						if tokenRevokeType != "" {
 | 
				
			||||||
 | 
							v.Set("TokenRevokeType", tokenRevokeType)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	u, err := url.Parse(endpoint)
 | 
						u, err := url.Parse(endpoint)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
| 
						 | 
					@ -236,7 +242,7 @@ func (m *STSWebIdentity) RetrieveWithCredContext(cc *CredContext) (Value, error)
 | 
				
			||||||
		return Value{}, errors.New("STS endpoint unknown")
 | 
							return Value{}, errors.New("STS endpoint unknown")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	a, err := getWebIdentityCredentials(client, stsEndpoint, m.RoleARN, m.roleSessionName, m.Policy, m.GetWebIDTokenExpiry)
 | 
						a, err := getWebIdentityCredentials(client, stsEndpoint, m.RoleARN, m.roleSessionName, m.Policy, m.GetWebIDTokenExpiry, m.TokenRevokeType)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return Value{}, err
 | 
							return Value{}, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								vendor/github.com/minio/minio-go/v7/pkg/lifecycle/lifecycle.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/minio/minio-go/v7/pkg/lifecycle/lifecycle.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -192,7 +192,7 @@ func (t Transition) IsDaysNull() bool {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// IsDateNull returns true if date field is null
 | 
					// IsDateNull returns true if date field is null
 | 
				
			||||||
func (t Transition) IsDateNull() bool {
 | 
					func (t Transition) IsDateNull() bool {
 | 
				
			||||||
	return t.Date.Time.IsZero()
 | 
						return t.Date.IsZero()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// IsNull returns true if no storage-class is set.
 | 
					// IsNull returns true if no storage-class is set.
 | 
				
			||||||
| 
						 | 
					@ -323,7 +323,7 @@ type ExpirationDate struct {
 | 
				
			||||||
// MarshalXML encodes expiration date if it is non-zero and encodes
 | 
					// MarshalXML encodes expiration date if it is non-zero and encodes
 | 
				
			||||||
// empty string otherwise
 | 
					// empty string otherwise
 | 
				
			||||||
func (eDate ExpirationDate) MarshalXML(e *xml.Encoder, startElement xml.StartElement) error {
 | 
					func (eDate ExpirationDate) MarshalXML(e *xml.Encoder, startElement xml.StartElement) error {
 | 
				
			||||||
	if eDate.Time.IsZero() {
 | 
						if eDate.IsZero() {
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return e.EncodeElement(eDate.Format(time.RFC3339), startElement)
 | 
						return e.EncodeElement(eDate.Format(time.RFC3339), startElement)
 | 
				
			||||||
| 
						 | 
					@ -392,7 +392,7 @@ func (e Expiration) IsDaysNull() bool {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// IsDateNull returns true if date field is null
 | 
					// IsDateNull returns true if date field is null
 | 
				
			||||||
func (e Expiration) IsDateNull() bool {
 | 
					func (e Expiration) IsDateNull() bool {
 | 
				
			||||||
	return e.Date.Time.IsZero()
 | 
						return e.Date.IsZero()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// IsDeleteMarkerExpirationEnabled returns true if the auto-expiration of delete marker is enabled
 | 
					// IsDeleteMarkerExpirationEnabled returns true if the auto-expiration of delete marker is enabled
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										9
									
								
								vendor/github.com/minio/minio-go/v7/pkg/notification/notification.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/minio/minio-go/v7/pkg/notification/notification.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -283,7 +283,6 @@ func (b *Configuration) AddTopic(topicConfig Config) bool {
 | 
				
			||||||
	for _, n := range b.TopicConfigs {
 | 
						for _, n := range b.TopicConfigs {
 | 
				
			||||||
		// If new config matches existing one
 | 
							// If new config matches existing one
 | 
				
			||||||
		if n.Topic == newTopicConfig.Arn.String() && newTopicConfig.Filter == n.Filter {
 | 
							if n.Topic == newTopicConfig.Arn.String() && newTopicConfig.Filter == n.Filter {
 | 
				
			||||||
 | 
					 | 
				
			||||||
			existingConfig := set.NewStringSet()
 | 
								existingConfig := set.NewStringSet()
 | 
				
			||||||
			for _, v := range n.Events {
 | 
								for _, v := range n.Events {
 | 
				
			||||||
				existingConfig.Add(string(v))
 | 
									existingConfig.Add(string(v))
 | 
				
			||||||
| 
						 | 
					@ -308,7 +307,6 @@ func (b *Configuration) AddQueue(queueConfig Config) bool {
 | 
				
			||||||
	newQueueConfig := QueueConfig{Config: queueConfig, Queue: queueConfig.Arn.String()}
 | 
						newQueueConfig := QueueConfig{Config: queueConfig, Queue: queueConfig.Arn.String()}
 | 
				
			||||||
	for _, n := range b.QueueConfigs {
 | 
						for _, n := range b.QueueConfigs {
 | 
				
			||||||
		if n.Queue == newQueueConfig.Arn.String() && newQueueConfig.Filter == n.Filter {
 | 
							if n.Queue == newQueueConfig.Arn.String() && newQueueConfig.Filter == n.Filter {
 | 
				
			||||||
 | 
					 | 
				
			||||||
			existingConfig := set.NewStringSet()
 | 
								existingConfig := set.NewStringSet()
 | 
				
			||||||
			for _, v := range n.Events {
 | 
								for _, v := range n.Events {
 | 
				
			||||||
				existingConfig.Add(string(v))
 | 
									existingConfig.Add(string(v))
 | 
				
			||||||
| 
						 | 
					@ -333,7 +331,6 @@ func (b *Configuration) AddLambda(lambdaConfig Config) bool {
 | 
				
			||||||
	newLambdaConfig := LambdaConfig{Config: lambdaConfig, Lambda: lambdaConfig.Arn.String()}
 | 
						newLambdaConfig := LambdaConfig{Config: lambdaConfig, Lambda: lambdaConfig.Arn.String()}
 | 
				
			||||||
	for _, n := range b.LambdaConfigs {
 | 
						for _, n := range b.LambdaConfigs {
 | 
				
			||||||
		if n.Lambda == newLambdaConfig.Arn.String() && newLambdaConfig.Filter == n.Filter {
 | 
							if n.Lambda == newLambdaConfig.Arn.String() && newLambdaConfig.Filter == n.Filter {
 | 
				
			||||||
 | 
					 | 
				
			||||||
			existingConfig := set.NewStringSet()
 | 
								existingConfig := set.NewStringSet()
 | 
				
			||||||
			for _, v := range n.Events {
 | 
								for _, v := range n.Events {
 | 
				
			||||||
				existingConfig.Add(string(v))
 | 
									existingConfig.Add(string(v))
 | 
				
			||||||
| 
						 | 
					@ -372,7 +369,7 @@ func (b *Configuration) RemoveTopicByArnEventsPrefixSuffix(arn Arn, events []Eve
 | 
				
			||||||
	removeIndex := -1
 | 
						removeIndex := -1
 | 
				
			||||||
	for i, v := range b.TopicConfigs {
 | 
						for i, v := range b.TopicConfigs {
 | 
				
			||||||
		// if it matches events and filters, mark the index for deletion
 | 
							// if it matches events and filters, mark the index for deletion
 | 
				
			||||||
		if v.Topic == arn.String() && v.Config.Equal(events, prefix, suffix) {
 | 
							if v.Topic == arn.String() && v.Equal(events, prefix, suffix) {
 | 
				
			||||||
			removeIndex = i
 | 
								removeIndex = i
 | 
				
			||||||
			break // since we have at most one matching config
 | 
								break // since we have at most one matching config
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -400,7 +397,7 @@ func (b *Configuration) RemoveQueueByArnEventsPrefixSuffix(arn Arn, events []Eve
 | 
				
			||||||
	removeIndex := -1
 | 
						removeIndex := -1
 | 
				
			||||||
	for i, v := range b.QueueConfigs {
 | 
						for i, v := range b.QueueConfigs {
 | 
				
			||||||
		// if it matches events and filters, mark the index for deletion
 | 
							// if it matches events and filters, mark the index for deletion
 | 
				
			||||||
		if v.Queue == arn.String() && v.Config.Equal(events, prefix, suffix) {
 | 
							if v.Queue == arn.String() && v.Equal(events, prefix, suffix) {
 | 
				
			||||||
			removeIndex = i
 | 
								removeIndex = i
 | 
				
			||||||
			break // since we have at most one matching config
 | 
								break // since we have at most one matching config
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -428,7 +425,7 @@ func (b *Configuration) RemoveLambdaByArnEventsPrefixSuffix(arn Arn, events []Ev
 | 
				
			||||||
	removeIndex := -1
 | 
						removeIndex := -1
 | 
				
			||||||
	for i, v := range b.LambdaConfigs {
 | 
						for i, v := range b.LambdaConfigs {
 | 
				
			||||||
		// if it matches events and filters, mark the index for deletion
 | 
							// if it matches events and filters, mark the index for deletion
 | 
				
			||||||
		if v.Lambda == arn.String() && v.Config.Equal(events, prefix, suffix) {
 | 
							if v.Lambda == arn.String() && v.Equal(events, prefix, suffix) {
 | 
				
			||||||
			removeIndex = i
 | 
								removeIndex = i
 | 
				
			||||||
			break // since we have at most one matching config
 | 
								break // since we have at most one matching config
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										48
									
								
								vendor/github.com/minio/minio-go/v7/pkg/replication/replication.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										48
									
								
								vendor/github.com/minio/minio-go/v7/pkg/replication/replication.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -868,8 +868,20 @@ type ReplQNodeStats struct {
 | 
				
			||||||
	XferStats    map[MetricName]XferStats            `json:"transferSummary"`
 | 
						XferStats    map[MetricName]XferStats            `json:"transferSummary"`
 | 
				
			||||||
	TgtXferStats map[string]map[MetricName]XferStats `json:"tgtTransferStats"`
 | 
						TgtXferStats map[string]map[MetricName]XferStats `json:"tgtTransferStats"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	QStats   InQueueMetric `json:"queueStats"`
 | 
						QStats   InQueueMetric  `json:"queueStats"`
 | 
				
			||||||
	MRFStats ReplMRFStats  `json:"mrfStats"`
 | 
						MRFStats ReplMRFStats   `json:"mrfStats"`
 | 
				
			||||||
 | 
						Retries  CounterSummary `json:"retries"`
 | 
				
			||||||
 | 
						Errors   CounterSummary `json:"errors"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// CounterSummary denotes the stats counter summary
 | 
				
			||||||
 | 
					type CounterSummary struct {
 | 
				
			||||||
 | 
						// Counted last 1hr
 | 
				
			||||||
 | 
						Last1hr uint64 `json:"last1hr"`
 | 
				
			||||||
 | 
						// Counted last 1m
 | 
				
			||||||
 | 
						Last1m uint64 `json:"last1m"`
 | 
				
			||||||
 | 
						// Total counted since uptime
 | 
				
			||||||
 | 
						Total uint64 `json:"total"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ReplQueueStats holds stats for replication queue across nodes
 | 
					// ReplQueueStats holds stats for replication queue across nodes
 | 
				
			||||||
| 
						 | 
					@ -914,8 +926,10 @@ type ReplQStats struct {
 | 
				
			||||||
	XferStats    map[MetricName]XferStats            `json:"xferStats"`
 | 
						XferStats    map[MetricName]XferStats            `json:"xferStats"`
 | 
				
			||||||
	TgtXferStats map[string]map[MetricName]XferStats `json:"tgtXferStats"`
 | 
						TgtXferStats map[string]map[MetricName]XferStats `json:"tgtXferStats"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	QStats   InQueueMetric `json:"qStats"`
 | 
						QStats   InQueueMetric  `json:"qStats"`
 | 
				
			||||||
	MRFStats ReplMRFStats  `json:"mrfStats"`
 | 
						MRFStats ReplMRFStats   `json:"mrfStats"`
 | 
				
			||||||
 | 
						Retries  CounterSummary `json:"retries"`
 | 
				
			||||||
 | 
						Errors   CounterSummary `json:"errors"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// QStats returns cluster level stats for objects in replication queue
 | 
					// QStats returns cluster level stats for objects in replication queue
 | 
				
			||||||
| 
						 | 
					@ -958,6 +972,12 @@ func (q ReplQueueStats) QStats() (r ReplQStats) {
 | 
				
			||||||
		r.MRFStats.LastFailedCount += node.MRFStats.LastFailedCount
 | 
							r.MRFStats.LastFailedCount += node.MRFStats.LastFailedCount
 | 
				
			||||||
		r.MRFStats.TotalDroppedCount += node.MRFStats.TotalDroppedCount
 | 
							r.MRFStats.TotalDroppedCount += node.MRFStats.TotalDroppedCount
 | 
				
			||||||
		r.MRFStats.TotalDroppedBytes += node.MRFStats.TotalDroppedBytes
 | 
							r.MRFStats.TotalDroppedBytes += node.MRFStats.TotalDroppedBytes
 | 
				
			||||||
 | 
							r.Retries.Last1hr += node.Retries.Last1hr
 | 
				
			||||||
 | 
							r.Retries.Last1m += node.Retries.Last1m
 | 
				
			||||||
 | 
							r.Retries.Total += node.Retries.Total
 | 
				
			||||||
 | 
							r.Errors.Last1hr += node.Errors.Last1hr
 | 
				
			||||||
 | 
							r.Errors.Last1m += node.Errors.Last1m
 | 
				
			||||||
 | 
							r.Errors.Total += node.Errors.Total
 | 
				
			||||||
		r.Uptime += node.Uptime
 | 
							r.Uptime += node.Uptime
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if len(q.Nodes) > 0 {
 | 
						if len(q.Nodes) > 0 {
 | 
				
			||||||
| 
						 | 
					@ -968,7 +988,21 @@ func (q ReplQueueStats) QStats() (r ReplQStats) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// MetricsV2 represents replication metrics for a bucket.
 | 
					// MetricsV2 represents replication metrics for a bucket.
 | 
				
			||||||
type MetricsV2 struct {
 | 
					type MetricsV2 struct {
 | 
				
			||||||
	Uptime       int64          `json:"uptime"`
 | 
						Uptime       int64                   `json:"uptime"`
 | 
				
			||||||
	CurrentStats Metrics        `json:"currStats"`
 | 
						CurrentStats Metrics                 `json:"currStats"`
 | 
				
			||||||
	QueueStats   ReplQueueStats `json:"queueStats"`
 | 
						QueueStats   ReplQueueStats          `json:"queueStats"`
 | 
				
			||||||
 | 
						DowntimeInfo map[string]DowntimeInfo `json:"downtimeInfo"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DowntimeInfo represents the downtime info
 | 
				
			||||||
 | 
					type DowntimeInfo struct {
 | 
				
			||||||
 | 
						Duration Stat `json:"duration"`
 | 
				
			||||||
 | 
						Count    Stat `json:"count"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Stat represents the aggregates
 | 
				
			||||||
 | 
					type Stat struct {
 | 
				
			||||||
 | 
						Total int64 `json:"total"`
 | 
				
			||||||
 | 
						Avg   int64 `json:"avg"`
 | 
				
			||||||
 | 
						Max   int64 `json:"max"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										40
									
								
								vendor/github.com/minio/minio-go/v7/pkg/s3utils/utils.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										40
									
								
								vendor/github.com/minio/minio-go/v7/pkg/s3utils/utils.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -218,7 +218,7 @@ func IsAmazonPrivateLinkEndpoint(endpointURL url.URL) bool {
 | 
				
			||||||
	if endpointURL == sentinelURL {
 | 
						if endpointURL == sentinelURL {
 | 
				
			||||||
		return false
 | 
							return false
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return amazonS3HostPrivateLink.MatchString(endpointURL.Host)
 | 
						return amazonS3HostPrivateLink.MatchString(endpointURL.Hostname())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// IsGoogleEndpoint - Match if it is exactly Google cloud storage endpoint.
 | 
					// IsGoogleEndpoint - Match if it is exactly Google cloud storage endpoint.
 | 
				
			||||||
| 
						 | 
					@ -261,44 +261,6 @@ func QueryEncode(v url.Values) string {
 | 
				
			||||||
	return buf.String()
 | 
						return buf.String()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TagDecode - decodes canonical tag into map of key and value.
 | 
					 | 
				
			||||||
func TagDecode(ctag string) map[string]string {
 | 
					 | 
				
			||||||
	if ctag == "" {
 | 
					 | 
				
			||||||
		return map[string]string{}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	tags := strings.Split(ctag, "&")
 | 
					 | 
				
			||||||
	tagMap := make(map[string]string, len(tags))
 | 
					 | 
				
			||||||
	var err error
 | 
					 | 
				
			||||||
	for _, tag := range tags {
 | 
					 | 
				
			||||||
		kvs := strings.SplitN(tag, "=", 2)
 | 
					 | 
				
			||||||
		if len(kvs) == 0 {
 | 
					 | 
				
			||||||
			return map[string]string{}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if len(kvs) == 1 {
 | 
					 | 
				
			||||||
			return map[string]string{}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		tagMap[kvs[0]], err = url.PathUnescape(kvs[1])
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			continue
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return tagMap
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// TagEncode - encodes tag values in their URL encoded form. In
 | 
					 | 
				
			||||||
// addition to the percent encoding performed by urlEncodePath() used
 | 
					 | 
				
			||||||
// here, it also percent encodes '/' (forward slash)
 | 
					 | 
				
			||||||
func TagEncode(tags map[string]string) string {
 | 
					 | 
				
			||||||
	if tags == nil {
 | 
					 | 
				
			||||||
		return ""
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	values := url.Values{}
 | 
					 | 
				
			||||||
	for k, v := range tags {
 | 
					 | 
				
			||||||
		values[k] = []string{v}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return QueryEncode(values)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// if object matches reserved string, no need to encode them
 | 
					// if object matches reserved string, no need to encode them
 | 
				
			||||||
var reservedObjectNames = regexp.MustCompile("^[a-zA-Z0-9-_.~/]+$")
 | 
					var reservedObjectNames = regexp.MustCompile("^[a-zA-Z0-9-_.~/]+$")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -212,7 +212,6 @@ func (s *StreamingUSReader) Read(buf []byte) (int, error) {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				return 0, err
 | 
									return 0, err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return s.buf.Read(buf)
 | 
						return s.buf.Read(buf)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/minio/minio-go/v7/pkg/signer/request-signature-streaming.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/minio/minio-go/v7/pkg/signer/request-signature-streaming.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -387,7 +387,6 @@ func (s *StreamingReader) Read(buf []byte) (int, error) {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				return 0, err
 | 
									return 0, err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return s.buf.Read(buf)
 | 
						return s.buf.Read(buf)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/pkg/signer/request-signature-v2.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/pkg/signer/request-signature-v2.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -148,7 +148,7 @@ func SignV2(req http.Request, accessKeyID, secretAccessKey string, virtualHost b
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Prepare auth header.
 | 
						// Prepare auth header.
 | 
				
			||||||
	authHeader := new(bytes.Buffer)
 | 
						authHeader := new(bytes.Buffer)
 | 
				
			||||||
	authHeader.WriteString(fmt.Sprintf("%s %s:", signV2Algorithm, accessKeyID))
 | 
						fmt.Fprintf(authHeader, "%s %s:", signV2Algorithm, accessKeyID)
 | 
				
			||||||
	encoder := base64.NewEncoder(base64.StdEncoding, authHeader)
 | 
						encoder := base64.NewEncoder(base64.StdEncoding, authHeader)
 | 
				
			||||||
	encoder.Write(hm.Sum(nil))
 | 
						encoder.Write(hm.Sum(nil))
 | 
				
			||||||
	encoder.Close()
 | 
						encoder.Close()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										4
									
								
								vendor/github.com/minio/minio-go/v7/pkg/signer/request-signature-v4.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/minio/minio-go/v7/pkg/signer/request-signature-v4.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -128,8 +128,8 @@ func getCanonicalHeaders(req http.Request, ignoredHeaders map[string]bool) strin
 | 
				
			||||||
	for _, k := range headers {
 | 
						for _, k := range headers {
 | 
				
			||||||
		buf.WriteString(k)
 | 
							buf.WriteString(k)
 | 
				
			||||||
		buf.WriteByte(':')
 | 
							buf.WriteByte(':')
 | 
				
			||||||
		switch {
 | 
							switch k {
 | 
				
			||||||
		case k == "host":
 | 
							case "host":
 | 
				
			||||||
			buf.WriteString(getHostAddr(&req))
 | 
								buf.WriteString(getHostAddr(&req))
 | 
				
			||||||
			buf.WriteByte('\n')
 | 
								buf.WriteByte('\n')
 | 
				
			||||||
		default:
 | 
							default:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										11
									
								
								vendor/github.com/minio/minio-go/v7/utils.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/github.com/minio/minio-go/v7/utils.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -41,6 +41,7 @@ import (
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	md5simd "github.com/minio/md5-simd"
 | 
						md5simd "github.com/minio/md5-simd"
 | 
				
			||||||
	"github.com/minio/minio-go/v7/pkg/s3utils"
 | 
						"github.com/minio/minio-go/v7/pkg/s3utils"
 | 
				
			||||||
 | 
						"github.com/minio/minio-go/v7/pkg/tags"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func trimEtag(etag string) string {
 | 
					func trimEtag(etag string) string {
 | 
				
			||||||
| 
						 | 
					@ -322,7 +323,13 @@ func ToObjectInfo(bucketName, objectName string, h http.Header) (ObjectInfo, err
 | 
				
			||||||
			userMetadata[strings.TrimPrefix(k, "X-Amz-Meta-")] = v[0]
 | 
								userMetadata[strings.TrimPrefix(k, "X-Amz-Meta-")] = v[0]
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	userTags := s3utils.TagDecode(h.Get(amzTaggingHeader))
 | 
					
 | 
				
			||||||
 | 
						userTags, err := tags.ParseObjectTags(h.Get(amzTaggingHeader))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return ObjectInfo{}, ErrorResponse{
 | 
				
			||||||
 | 
								Code: "InternalError",
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var tagCount int
 | 
						var tagCount int
 | 
				
			||||||
	if count := h.Get(amzTaggingCount); count != "" {
 | 
						if count := h.Get(amzTaggingCount); count != "" {
 | 
				
			||||||
| 
						 | 
					@ -373,7 +380,7 @@ func ToObjectInfo(bucketName, objectName string, h http.Header) (ObjectInfo, err
 | 
				
			||||||
		// which are not part of object metadata.
 | 
							// which are not part of object metadata.
 | 
				
			||||||
		Metadata:     metadata,
 | 
							Metadata:     metadata,
 | 
				
			||||||
		UserMetadata: userMetadata,
 | 
							UserMetadata: userMetadata,
 | 
				
			||||||
		UserTags:     userTags,
 | 
							UserTags:     userTags.ToMap(),
 | 
				
			||||||
		UserTagCount: tagCount,
 | 
							UserTagCount: tagCount,
 | 
				
			||||||
		Restore:      restore,
 | 
							Restore:      restore,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										11
									
								
								vendor/modules.txt
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/modules.txt
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -628,8 +628,8 @@ github.com/klauspost/compress/internal/snapref
 | 
				
			||||||
github.com/klauspost/compress/s2
 | 
					github.com/klauspost/compress/s2
 | 
				
			||||||
github.com/klauspost/compress/zstd
 | 
					github.com/klauspost/compress/zstd
 | 
				
			||||||
github.com/klauspost/compress/zstd/internal/xxhash
 | 
					github.com/klauspost/compress/zstd/internal/xxhash
 | 
				
			||||||
# github.com/klauspost/cpuid/v2 v2.2.9
 | 
					# github.com/klauspost/cpuid/v2 v2.2.10
 | 
				
			||||||
## explicit; go 1.20
 | 
					## explicit; go 1.22
 | 
				
			||||||
github.com/klauspost/cpuid/v2
 | 
					github.com/klauspost/cpuid/v2
 | 
				
			||||||
# github.com/kr/pretty v0.3.1
 | 
					# github.com/kr/pretty v0.3.1
 | 
				
			||||||
## explicit; go 1.12
 | 
					## explicit; go 1.12
 | 
				
			||||||
| 
						 | 
					@ -656,11 +656,14 @@ github.com/microcosm-cc/bluemonday/css
 | 
				
			||||||
# github.com/miekg/dns v1.1.64
 | 
					# github.com/miekg/dns v1.1.64
 | 
				
			||||||
## explicit; go 1.22.0
 | 
					## explicit; go 1.22.0
 | 
				
			||||||
github.com/miekg/dns
 | 
					github.com/miekg/dns
 | 
				
			||||||
 | 
					# github.com/minio/crc64nvme v1.0.1
 | 
				
			||||||
 | 
					## explicit; go 1.22
 | 
				
			||||||
 | 
					github.com/minio/crc64nvme
 | 
				
			||||||
# github.com/minio/md5-simd v1.1.2
 | 
					# github.com/minio/md5-simd v1.1.2
 | 
				
			||||||
## explicit; go 1.14
 | 
					## explicit; go 1.14
 | 
				
			||||||
github.com/minio/md5-simd
 | 
					github.com/minio/md5-simd
 | 
				
			||||||
# github.com/minio/minio-go/v7 v7.0.85
 | 
					# github.com/minio/minio-go/v7 v7.0.89
 | 
				
			||||||
## explicit; go 1.22
 | 
					## explicit; go 1.23.0
 | 
				
			||||||
github.com/minio/minio-go/v7
 | 
					github.com/minio/minio-go/v7
 | 
				
			||||||
github.com/minio/minio-go/v7/pkg/cors
 | 
					github.com/minio/minio-go/v7/pkg/cors
 | 
				
			||||||
github.com/minio/minio-go/v7/pkg/credentials
 | 
					github.com/minio/minio-go/v7/pkg/credentials
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue